Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Introducción A La Orientación A Objetos: Fernando Bellas Permuy
Introducción A La Orientación A Objetos: Fernando Bellas Permuy
Objetos
Fernando Bellas Permuy
Departamento de Tecnologas de la Informacin y las Comunicaciones (TIC)
Universidad de A Corua
http://www.tic.udc.es/~fbellas
fbellas@udc.es
Programacin funcional.
Lisp, Cammel.
Programacin lgica.
Prolog.
Proceso ()
{
SubProceso1();
SubProcesoN();
}
Dibujar
Cuadrado
Barra de Seleccin
Circulo
Linea
Descomposicin funcional
Orientacin a objetos
Concepto de clase (y 2)
Nombre
Rectangulo
Interfaz
void Dibujar ()
void Ocultar ()
void Mover (float nuevaCoordX, float nuevaCoordY)
void CambiarDeTamanho (float nuevoAncho, float nuevoAlto)
float Area ()
float DameCoordX ()
float DameCoordY ()
float DameAncho ()
float DameAlto ()
Atributos
Prototipo
(signature)
Concepto de objeto
Objeto (instancia): cada uno de los ejemplares de una clase.
Desde el punto de vista de la programacin, un objeto es una variable.
X
Tipos de operaciones
Constructor: crea una instancia de la clase.
Destructor: destruye una instancia.
Selector: selecciona una parte del estado o devuelve una propiedad
resultante de la combinacin de algunos atributos.
Ejs.: DameCoordX, DameCoordY, DameAncho , DameAlto, Area , etc.
Envo de mensajes
Un objeto de una clase responde a cualquiera de los mensajes
definidos en la clase.
float coordX = unRectangulo.DameCoordX();
unRectangulo.Mover(0, 20);
unRectangulo.Dibujar();
Encapsulacin
NumeroComplejo
float DameModulo ()
float DameArgumento ()
float DameParteReal ()
float DameParteImaginaria ()
float DameModulo ()
float DameArgumento ()
float DameParteReal ()
float DameParteImaginaria ()
Visibilidad
Los atributos y operaciones pueden tener los siguientes tipos de acceso
(visibilidad):
Pblico
Se pueden acceder desde cualquier clase.
Privado
Slo se pueden acceder desde operaciones de la clase.
Protegido
Slo se pueden acceder desde operaciones de la clase o de clases
derivadas.
Norma general:
El estado debe ser privado.
Las operaciones que definen la funcionalidad deben ser pblicas.
Las operaciones que ayudan a implementar parte de la funcionalidad
deben ser privadas (si no se utilizan desde clases derivadas) o protegidas
(si se utilizan desde clases derivadas).
Animal
aci
Sentir ()
aliz
Vegetal
eci
Esp
n
e
en
iz
al
i
ac
Mamifero
Ave
Volar ()
Texto
Cargar ()
Grabar ()
Presentar ()
PostScript
Presentar ()
Presentar ASCII
HTML
Procesar PostScript
Presentar ()
Procesar HTML
Clase concreta
Una clase que no es abstracta, es decir, que no define operaciones
abstractas y define las operaciones abstractas que hereda.
Figura
Insertar (Figura)
Dibujar ()
Area ()
Mover ()
Ocultar ()
Dibujar ()
Area ()
Mover ()
Ocultar ()
Rectangulo
Circulo
Triangulo
Dibujar ()
Area ()
Mover ()
Ocultar ()
Dibujar ()
Area ()
Mover ()
Ocultar ()
Dibujar ()
Area ()
Mover ()
Ocultar ()
Texto
Cargar ()
Grabar ()
Presentar ()
forall t in Textos
t.Presentar()
ASCII
Presentar ()
Presentar ASCII
PostScript
Presentar ()
Procesar PostScript
HTML
Presentar ()
Procesar HTML
Aplicacion
AnhadirDoc ()
AbrirDoc ()
CrearDoc ()
PuedoAbrirDoc ()
ApuntoDeAbrirDoc ()
MiDocumento
Leer ()
MiAplicacion
CrearDoc ()
PuedoAbrirDoc ()
ApuntoDeAbrirDoc ()
if (! PuedoAbrirDoc(nombre)) {
return;
}
Documento* doc = CrearDoc();
if (doc) {
docs->AnhadirDoc(doc);
ApuntoDeAbrirDoc(doc);
doc->Abrir();
doc->Leer();
}
VehiculoTerrestre
VehiculoAcuatico
DesplazarsePorTierra ()
DesplazarsePorAgua ()
VehiculoAnfibio
VehiculoAcuatico
Desplazarse ()
Desplazarse ()
VehiculoAnfibio
Figura
Insertar (Figura)
Dibujar ()
Area ()
Mover ()
Ocultar ()
Dibujar ()
Area ()
Mover ()
Ocultar ()
forall f in Figuras
f.Dibujar ();
Rectangulo
Circulo
Triangulo
Dibujar ()
Area ()
Mover ()
Ocultar ()
Dibujar ()
Area ()
Mover ()
Ocultar ()
Dibujar ()
Area ()
Mover ()
Ocultar ()
Relacin de composicin/agregacin (y 2)
El cdigo de los mtodos del agregado (Grafico) delega parte de su
implementacin en mtodos de sus partes (Figura).
El agregado puede tener la responsabilidad de liberar la memoria de
sus partes (ejemplo anterior) o no (siguiente ejemplo).
Figura
Ventana
Area ()
DarForma (Figura)
Area ()
Figura forma
Ventana
forma.Area()
Rectangulo
Circulo
Area ()
Area ()
float ancho
float alto
float radio
return ancho*alto;
return PI * radio 2;
Desventaja
Herencia
Fcil de utilizar.
Fcil de modificar la
implementacin heredada.
Establece relaciones
estticas.
Se rompe la
encapsulacin.
Composicin
Mayor nmero de
objetos.
El comportamiento del
sistema depende de las
relaciones entre objetos,
en vez de estar
concentrado en una
clase.
Recursos
Libros
E. Gamma, R. Helm, R. Johnson, J. Vlissides, Design Patterns: Elements
of Reusable Object-Oriented Software, Addisson-Wesley, 1994.