nnnnf

Páginas: 8 (1912 palabras) Publicado: 29 de diciembre de 2013
Programación orientada a objetos
Tema 5



Inmaculada Moreno Roldán
Programación II

Salto de página

class Punto2D
{
// Parte privada
private:
int x;
int y;
// Parte pública
public:
Point2D(int a,int b) // Constructor
{
x=a;
y=b;
}
Point2D() // Constructor
{
x=0;
y=0;
}
........
.........
};


En el ejemplo anterior sedeclaran dos constructores, uno que recibe dos argumentos y otro sin argumentos. C++ permite la sobrecarga de funciones, pudiéndose así tener varias funciones con el mismo nombre y que se diferencien en la cantidad de argumentos y/o el tipo de estos.


Point2D p; //se crea un punto con sus coordenadas inicializadas a 0
Point2D p1 (3,5); // se crea un punto (3,5)
Point2D p2(5); // error, no existe un constructor con un solo argumento
Point2D *p3, *p4;
p3=new Point2D (2,3);
p4=new Point2D ();


Otros lenguajes como Object Pascal requieren la inicialización explícita.

Por último restaría tratar la destrucción de los objetos. Los objetos almacenados en la pila son destruidos y su espacio liberado automáticamente. En cuanto a los objetos creadosdinámicamente, algunos lenguajes como C++ requieren que el programador explícitamente provoque la liberación de memoria. También dispone de la posibilidad de crear métodos que se llaman automáticamente al destruir el objeto: destructores. En otros lenguajes como Smalltalk y Java la liberación del espacio utilizado por un objeto se realiza de forma automáticamente mediante un recolector de basura. Este,de forma transparente al programador, se encarga de liberar la memoria utilizada por un objeto a partir de que este ya no pueda ser utilizado.

Los destructores en C++ son métodos que tienen el nombre de la clase precedido por el símbolo ~ y son llamados de forma automática cuando se destruye un objeto, ya sea dinámico o estático. Para el ejemplo que se está tratando, el destructor sedeclararía como: ~Point2D. La llamada al destructor se realizaría de forma automática para objetos estáticos y cuando se utiliza el operador delete para objetos dinámicos. En este caso no sería necesario utilizar un destructor, pero resulta fundamental cuando por el ejemplo un objeto reserva memoria dinámicamente para sus variables de instancia, ya que es necesario liberar explícitamente esta memoria.5.5. Herencia

La herencia es la propiedad de que instancias u objetos de una clase dispongan también de los atributos y métodos de los objetos de otra clase (clase padre). La herencia establece una relación entre las clases, de forma que estas se puedan organizar en una estructura jerárquica.

Una clase hija puede verse como una especialización de la clase padre. Supongamos laclase que representa a los mamíferos. La clase perro podría derivarse de la clase anterior. Claramente un perro es una denominación más específica de un animal que mamífero. Por otro lado un perro tiene todas las características y comportamiento comunes de los mamíferos y además otras características y comportamiento adicionales específicos de los perros. De esta forma, la clase perro extiende a laclase mamífero. Así, una clase derivada es tanto una especialización como una extensión de la clase padre, dependiendo del punto de vista utilizado. Una forma habitual de ver la relación entre una clase padre A y una clase derivada B es como una relación “es-un” (B es un A).


Imagen







Figura 2: Herencia

La herencia proporciona un mecanismo potente para lareutilización. Si se dispone de un conjunto de clases, se pueden construir aplicaciones utilizando estas clases y otras nuevas derivadas. Así además de utilizar las clases existentes podemos diseñar otras que se adapten mejor a nuestras necesidades derivándolas de las ya desarrolladas sin tener que diseñarlas partiendo desde cero.

El uso de la herencia normalmente implicará un ahorro de código...
Leer documento completo

Regístrate para leer el documento completo.

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS