La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Informática II Prof. Dr. Gustavo Patiño MJ 16- 18 24-09-2013.

Presentaciones similares


Presentación del tema: "Informática II Prof. Dr. Gustavo Patiño MJ 16- 18 24-09-2013."— Transcripción de la presentación:

1 Informática II Prof. Dr. Gustavo Patiño MJ 16- 18 24-09-2013

2 En el lenguaje C++ es perfectamente valido crear apuntadores para clases. Para ello es importante recordar que una vez una clase ha sido declarada, una clase se vuelve un nuevo tipo de dato. De este modo es posible usar el nombre de la clase como el tipo de dato para el apuntador. Por ejemplo: En este caso, prect es un apuntador para un objeto de la clase RectanguloC. RectanguloC* prect;

3 Igual que sucede con estructuras de datos, a fin de referirse directamente a un miembro de un objeto apuntado por un apuntador, es posible usar el operador flecha (->).

4 Area de a: 2 Area de *b: 12 Area de *c: 2 Area de d[0]: 30 Area de d[1]: 56 Area de a: 2 Area de *b: 12 Area de *c: 2 Area de d[0]: 30 Area de d[1]: 56

5 A continuación se presenta un resumen de la manera como se puede interpretar un apuntador y los operadores de clases (*, &,., ->, [ ]).

6 Un destructor es una función especial definida como parte de una clase. Dicha función es automáticamente llamada cuando un objeto es destruido, sea debido a que el ámbito de existencia ha terminado (por ejemplo cuando un objeto es definido como local a una función, y la función termina), o debido a que un objeto fue definido mediante asignación dinámica de memoria, y dicha memoria es liberada usando el operador delete.

7 Al definir el destructor, éste debe tener el mismo nombre de la clase, pero precedido del signo (~) y no puede ni retornar un valor, ni recibir cualquier tipo de parámetros. El uso de destructores es especialmente apropiado cuando un objeto asigna memoria dinámica durante su tiempo de vida, y al momento de dicho objeto ser destruido se desea liberar la memoria reservada para dicho objeto.

8 El objeto es creado Longitud de linea es : 6 El objeto es borrado El objeto es creado Longitud de linea es : 6 El objeto es borrado Ejemplo 1 de Destructor

9 Ejemplo 2 de Destructor

10 Una característica relevante de la OOP y de las clases en C++ es la herencia. Ella permite crear clases que son derivadas de otras clases, de modo que automáticamente incluyen algunos atributos y miembros de su ancestro, además de sus propios atributos y miembros.

11 Por ejemplo, imagínese que se desean crear las clases CPoligono, CRectangulo y CTriangulo. Dichos elementos poseen algunas propiedades en común La clase Cpoligono tendría miembros como el ancho y el largo que son comunes a los tres tipos de clases.

12 De este modo las clases que son derivadas de otras clases, heredan todos los miembros accesibles de la clase base. Esto significa que si una clase incluye un miembro A, y dicha clase es usada para derivar otra clase con otro miembro B, la clase derivada contendrá ambos miembros, A y B.

13 A fin de derivar una clase desde una anterior, se usan los dos puntos (:) en la declaración de la clase derivada, siguiendo el siguiente formato: class nombre_clase_derivada: public nombre_clase_base {...; }; class nombre_clase_derivada: public nombre_clase_base {...; };

14 El especificador de acceso public puede ser reemplazado por cualquiera de los otros dos especificadores de acceso: protected o private. Este especificador de acceso limita la accesibilidad de los miembros heredados de la clase base. Los miembros con un nivel más accesible son heredados con dicho nivel, mientras que los miembros con un nivel de acceso igual o más restringido, mantienen su nivel restrictivo en la clase derivada.

15 20 10 20 10 Ejemplo de clases derivadas

16 Los objetos de las clases Crectangulo y Ctriangulo contienen cada uno miembros y atributos heredados de la clase Cpoligono. Dichos atributos son ancho, largo, y def_valores().

17 Dado que se desea que los atributos ancho y largo sean accesibles por los miembros de las clases derivadas Crentangulo y Ctriangulo, y no solamente por los miembros de Cpoligono, dichos atributos se han definido con acceso protected, en lugar de private.

18 Accesopublicprotectedprivate Miembros de la misma clasesi Miembros de clases derivadassi no No miembrossino

19 En el ejemplo previo, los atributos heredados por las clases Crentangulo y Ctriangulo tienen los mismos permisos de acceso que dichos atributos tenian en su clase : Esto se debe a que se ha utilizado la palabra clave public para definir la relación de herencia sobre cada clase derivada: class CRectangulo: public CPoligono {... }

20 En principio, una clase derivada hereda cada miembro de una clase base, excepto: Su constructor y destructor. Sus amigos.

21 Aunque los constructores y los destructores de una clase base no son heredados en sí mismos, su constructor por defecto (esto es, el constructor sin parámetros) y su destructor, son siempre llamados cuando un nuevo objeto de una clase derivada es creado o destruido. Si la clase base no tiene constructor por defecto, o se desea que un constructor sobrescrito sea llamado cuando un nuevo objeto derivado es creado, es necesario especificar esto en cada definición de constructor de la clase derivada: derived_constructor_name (parameters) : base_constructor_name (parameters) {...}

22 madre: sin parametros! hija: con parametro int! madre: con parametro int! hijo: con parametro int! madre: sin parametros! hija: con parametro int! madre: con parametro int! hijo: con parametro int!

23 Note la diferencia entre cuál constructor de la clase madre es llamado cuando un nuevo objeto hija o hijo es creado. La diferencia entre ambos llamados se debe a la declaración del constructor de la clase hijo e la clase hija:

24 En C++ es perfectamente posible que una clase herede atributos y miembros de más de una clase. Esto se hace simplemente separando las diferentes clases base con comas en la declaración de la clase derivada. Por ejemplo, si previamente se tenia una clase específica para imprimir por pantalla un cierto resultado, y se desea que las clases CRectangulo y CTriangulo hereden sus atributos y miembros, además de aquellos heredados de la clase Cpoligono, la declaración de estas clases debe escribirse de la siguiente manera:

25 20 10 20 10 Ejemplo de herencia múltiple


Descargar ppt "Informática II Prof. Dr. Gustavo Patiño MJ 16- 18 24-09-2013."

Presentaciones similares


Anuncios Google