1 Miembros Estáticos (Static) de Clases y Funciones Amigas (Friend) Agustín J. González Versión Original de Kip Irvine ELO326: Seminario II 2do. Sem. 2001.

Slides:



Advertisements
Presentaciones similares
Curso de java básico (scjp)
Advertisements

Programación Gráfica 8. Clases y objetos.
Definición de Clases y Variables de referencia.
Herencia en C#.
Lenguaje de programación Java
Clases Extendidas La clase extendida hereda los campos y métodos de la clase de la cual extiende. La clase original se conoce como superclase y la clase.
© Lic. Fernando Campos Camacho
POO en C++: Sintaxis En el .h debe aparecer la declaración de la clase: class NombreClase { private: // atributos y métodos privados public: // atributos.
Informática II Prof. Dr. Gustavo Patiño MJ
Informática II Prof. Dr. Gustavo Patiño MJ
Informática II 1 Diego Fernando Serna RestrepoSemestre 2011/2.
Aplicación del paradigma orientado a objetos
Informática II 1 Diego Fernando Serna RestrepoSemestre 2011/2.
Algoritmos y Estructuras de Datos
Informática II 1 Diego Fernando Serna RestrepoSemestre 2011/2.
Abstracción de Datos La abstracción es un recurso fundamental en la programación orientada a objetos y está además fuertemente ligado a reusabilidad.
Estructuras de Datos Cont. C++ y Tipos de Datos. Ejemplo: Vector de Objetos #include class estudiante { private: int aCarne; char aNombre[20]; float aNota;
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
Programación Orientada a Objetos usando C++
Modificadores.
Introducción a clases Programación Orientada a Objetos.
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
Universidad Autónoma del Estado de Hidalgo Instituto de Ciencias Básicas e Ingeniería Área Académica de Computación y Electrónica Licenciatura en Ciencias.
1 Herencia en Java Agustín J. González Diseño y Programación Orientados a Objetos.
POO en C++ Programación Orientada a Objetos. Declaración de clases con struct Las clases en C++ pueden definirse utilizando la construcción struct Ejemplo:
SCJP Sun Certified Programmer for Java 6
ELO3201 Vectores (Vector) Agustín J. González ELO320.
Programación Orientada a Objetos usando CONSTRUCTORES DESTRUCTORES.
1 Polimorfismo y Métodos Virtuales Agustín J. González ELO329.
1 Asignación Dinámica de Memoria Agustín J. González Versión original de Kip Irvine ELO 329.
1 Polimorfismo y Funciones Virtuales Agustín J. González ELO329.
Manejo de Punteros y objetos en memoria dinámica en C++
Dinamismo y Contenedores Facultad de Ciencias Exactas y Naturales Universidad de Buenos Aires (C++ Avanzado) Depto. de Computación Algoritmos y Estructuras.
UNIDAD VI Recursos esenciales de Java LSC. Natalia Rodríguez Castellón.
Metodología de Programación Ayudantía 5 lelagos.ublog.cl 2009.
1 Herencia Agustín J. González ELO Motor ElectricMotor Motor y ElectricMotor Consideremos dos clases que tienen algo en común.
1 Miembros Estáticos (Static) de Clases y Funciones Amigas (Friend) Agustín J. González ELO329.
1 Introducción a Clases Agustín J. González Versión original de Kip Irvine ELO329.
1 Herencia en Java Agustín J. González Diseño y Programación Orientados a Objetos.
1 Definición y Conversión de datos Agustín J. González ELO-329.
1 Herencia Agustín J. González Versión original de Kip Irvine ELO320: Seminario II 2do. Sem 2001.
1 Polimorfismo y Funciones Virtuales Agustín J. González Versión original de Kip Irvine ELO329.
1 Miembros Estáticos (Static) de Clases y Funciones Amigas (Friend) Agustín J. González Versión Original de Kip Irvine ELO329.
Herencia. Introducción La idea básica es poder crear clases basadas en clases ya existentes. Cuando heredamos de una clase existente, estamos re-usando.
Funciones y Clases Amigas (Friend)‏ Miembros Estáticos (Static)
1 Asignación Dinámica de Memoria Agustín J. González ELO 329.
/** * Write a description of class General here. */ public class General { // instance variables - replace the example below with your own private int.
1 Miembros Estáticos (Static) de Clases y Funciones Amigas (Friend)‏ Agustín J. González ELO329.
Listas. Utilización de un TAD Lista. Interfaz del TAD LISTA public interface Lista { void crearNodo (); /*Crea un nuevo nodo en el TadLista*/ int devolverClave.
Informática II 1 Diego Fernando Serna RestrepoSemestre 2011/2.
Patrones de Diseño Agustín J. González ElO329.
Ing. Esp. Ricardo Cujar. Permite la ejecución de una sentencia, dada una determinada condición. If(condición){ sentencia(s) a ejecutar en caso de que.
1 Herencia Agustín J. González ELO padre hijo Como en biología, los niños heredan características de su padre Clasificación de Objetos En un intento.
1 Definición y Conversión de datos Agustín J. González ELO-329.
Algunas Características de C++ no presentes en C Agustín J. González ELO-329.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Arreglo.
Herencia en C++ Agustín J. González ELO329. Diseño y Programación Orientados a Objetos 2 Motor ElectricMotor Motor y ElectricMotor Consideremos dos clases.
Estructuras de control selectivas Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión Práctica 3.
This y static. This Normalmente, dentro del cuerpo de un método de un objeto se puede referir directamente a las variables miembros del objeto. Sin embargo,
Programación I Clases. Paradigma POO La programación Orientada a objetos (POO) es una forma programar, más cercana a como expresaríamos las cosas en la.
Funciones y Clases Amigas (Friend)‏ Miembros Estáticos (Static)
Funciones y Clases Amigas (Friend)‏ Miembros Estáticos (Static)
Funciones y Clases Amigas (Friend)‏ Miembros Estáticos (Static)
Manejo de Punteros y objetos en memoria dinámica en C++
Funciones y Clases Amigas (Friend)‏ Miembros Estáticos (Static)
Manejo de Punteros y objetos en memoria dinámica en C++
Funciones y Clases Amigas (Friend)‏ Miembros Estáticos (Static)
Asignación Dinámica de Memoria
Funciones y Clases Amigas (Friend)‏ Miembros Estáticos (Static)
Funciones y Clases Amigas (Friend)‏ Miembros Estáticos (Static)
Transcripción de la presentación:

1 Miembros Estáticos (Static) de Clases y Funciones Amigas (Friend) Agustín J. González Versión Original de Kip Irvine ELO326: Seminario II 2do. Sem. 2001

2 Miembros Estáticos de una Clase Estas variables tiene existencia desde que el programa se inicia hasta que termina. Miembros de datos estáticos –Una instancia de la variable es compartida por todas las instancias de la clase Funciones miembro Estáticas –indica que la función sólo puede acceder miembros estáticos de la clase

3 Declaración de Datos Estáticos La palabra clave static debe ser usada. class Student { //... private: static int m_snCount; // instance count };

4 Creación de un contador de instancias Un miembro estático puede contar el número de instancias de una clase. // student.cpp int Student::m_snCount = 0; Asigna memoria e inica el valor de partida

5 Creación de un Contador de Instancias Usamos el constructor y destructor para incrementar y decrementar el contador: Student::Student() { m_snCount++; } Student::~Student() { m_snCount--; }

6 Miembros de Función Estáticos Usamos miembros de función estáticos para permitir el acceso público a miembros de datos estáticos. class Student { public: static int get_InstanceCount(); private: static int m_snCount; // instance count };

7 Llamando a Funciones Estáticas Usamos ya sea el nombre de la case o una instancia de la clase como calificador: cout << Student::get_InstanceCount(); // 0 Student S1; Student S2; cout << Student::get_InstanceCount(); // 2 cout << S1.get_InstanceCount(); // 2

8 Funciones Friend Una función Friend es una función que no es miembro de una clase pero tiene acceso a los miembros privados y protegidos de la clase. class Course { public: friend bool ValidateCourseData( const Course & C); //... }; Función global No de exclusiva de la clase!!

9 ValidateCourseData() bool ValidateCourseData(const Course & C) { if( C.m_nCredits 5 ) return false; } return true; } El calificador friend no aparece en la implementación de la función Notar el acceso a miembros privados de la clase

10 Llamado a ValidateCourseData() void Transcript::ReadFromFile(ifstream &infile) { Course aCourse; int count; infile >> count; for(int i = 0; i < count; i++) { aCourse.ReadFromFile( infile ); if( ValidateCourseData( aCourse )) m_vCourses.push_back( aCourse ); else { cout << "Invalid course data encountered: "; aCourse.Display(); }

11 Funciones Friend, otro ejemplo Ejemplo 1: class Complex { public: Complex( float re, float im ); friend Complex operator+( Complex first, Complex second ); private: float real, imag; }; Complex operator+( Complex first, Complex second ) { return Complex( first.real + second.real, first.imag + second.imag ); } En este Ejemplo, la función friend operator+ tiene acceso a los miembros privados de Complex

12 // Example of the friend class class YourClass { friend class YourOtherClass; // Declare a friend class private: int topSecret; }; class YourOtherClass { public: void change( YourClass yc ); }; void YourOtherClass::change( YourClass yc ) { yc.topSecret++; // Can access private data } Clases Friend (1) Una clase amiga (friend) es una clase cuyas funciones miembros son funciones miembros de la clase; esto es, cuyas funciones miembros tienen acceso a otros miembros privados y protegidos de la clase. Ejemplo:

13 Clases Friend (2) La “Amistad” no es mutua a menos que explícitamente sea especificada. En el ejemplo previo, los miembros función de YourClass no pueden acceder a miembros privados de YourOtherClass. La “Amistad” no se hereda; esto es clases derivadas de YourOtherClass no pueden acceder a miembros probados de YourClass. Tampoco es transitiva; esto es clases que son “friends” de YourOtherClass no pueden acceder a miembros privados de YourClass.

14 Fin