Professional Documents
Culture Documents
! Abstraccin
! Definicin de clases e interfaces
Tcnicas de POO ! Mensajes y mtodos
! Herencia de clases
Programacin Orientada a Objetos ! Composicin de objetos
Facultad de Informtica
Abstraccin Abstraccin
private:
! Dos visiones del software:
Palos valorPalo;
! Externa: lo que hace un objeto
int valorNumero;
Visin de servicio: interfaz
};
! Interna: cmo lo hace
Visin de implementacin
! C# ! Java
! En C++, C# y Java se pueden definir clases anidadas ! Una interfaz (interface en Java) slo puede definir la
dentro de otras signatura de mtodos y constantes
! Varias clases pueden implementar la misma interfaz
class ListaEnlazada { ! Se puede definir una variable del tipo de interfaz que
//... referencie a objetos de cualquiera de esas clases
private class Enlace { // clase anidada
public int valor; interface
interfaceAutomovil
Automovil{{
public Enlace siguiente; public
publicvoid
voidarrancar();
arrancar();
} public
publicvoid
voidacelerar(double
acelerar(double
a);
a);
} class
//
//...
... classCoche
Cocheimplements
implementsAutomovil
Automovil{{
};}; public
publicvoidvoidarrancar()
arrancar(){{
! Tienen acceso a los miembros de la clase que las contiene /*
/*implementacin
implementacin*/ */ }}
public
public void acelerar(doublea)
void acelerar(double a){{
! Se pueden esconder de otras clases
/*
/*implementacin
implementacin*/ */ }}
//
//...
...
};};
Juan Pavn Mestras Juan Pavn Mestras
Facultad de Informtica UCM, 2004-05 9 Facultad de Informtica UCM, 2004-05 10
Curiosidades Ejemplo
TYPE
CartaBaraja = POINTER TO DescripcionCartaBaraja;
DescripcionCartaBaraja = RECORD
palo : INTEGER;
numero : INTEGER;
visible: BOOLEAN;
END
! Para referirse a un mtodo de la clase padre ! Especializacin: los hijos sobreescriben un mtodo del padre para
especializar la clase de alguna manera
! En C++ y Java: super ! Ejemplo: los componentes del Java AWT
! En C#: base ! Especificacin: si la clase padre es abstracta est dando una
especificacin de cmo tienen que ser las hijas
! Al crear un objeto se llama a los constructores de las ! Ejemplo: eventos en Java: ActionListener, MouseListener
clases a las que pertenece, del primero al ms particular: ! Construccin: Se utiliza una clase para construir otra, que no respeta la
! En el ejemplo: Automovil(), Coche(), Taxi() relacin es un
! Derivar una clase Conjunto de una clase Lista
! Para el destructor en sentido inverso: ! No respeta el principio de sustituibilidad
Automovil
! Taxi(), Coche(), Automovil() ! Generalizacin o extensin: la clase hija no sobreescribe ningn
mtodo de la clase padre, slo aade otros nuevos
! Ejemplo: En java.util Properties extends Hashtable
! Limitacin: la clase hija restringe el uso de algn mtodo de la clase
Coche Camion padre (sobreescribindolo, por ejemplo, para que genere un mensaje de
error)
! Con el ejemplo de la Lista, para crear una Pila se suprime el mtodo de
insertar donde no sea el extremo de la pila
! Varianza: Cuando varias clases estn relacionadas, crear una que tenga
los aspectos comunes de ambas
Particular Taxi Patrulla
! Combinacin: Una clase hija hereda de varias (herencia mtliple)
Juan Pavn Mestras Juan Pavn Mestras
Facultad de Informtica UCM, 2004-05 19 Facultad de Informtica UCM, 2004-05 20
Composicin de objetos Herencia vs. Composicin
! Agregar o componer varios objetos para obtener una ! Herencia: permite definir una clase a partir de otra
mayor funcionalidad ! Reutilizacin de caja blanca: los aspectos internos de la
! Un objeto se puede construir a partir de otros objetos superclase son visibles a las subclases
! Soportada por el lenguaje de programacin
! Esttica: se define en tiempo de compilacin
VentanaGUI return rectangulo.area() return ancho * ! Agustn Froufe. Java 2. Manual de usuario y tutorial. Ed. Ra-Ma
alto
! J. Snchez, G. Huecas, B. Fernndez y P. Moreno, Iniciacin y
area() referencia: Java 2. Osborne McGraw-Hill, 2001.
! B. Meyer, Object-Oriented Software Construction (Second Edition).
Prentice Hall, 1997