Logo Studenta

POO1-2006 - Laura Rentería

¡Este material tiene más páginas!

Vista previa del material en texto

1
PARTE I
INTRODUCCIÓN AL 
MODELO DE OBJETOS
TECNOLOGÍA DE OBJETOS
El Modelo Basado en Objetos se ha convertido en uno de los 
impulsores de la Industria del Software durante la década de los 
noventa.
A pesar de la reciente profusión de aplicaciones, herramientas y 
lenguajes que soportan, emplean o se han construido tomando 
como base el Modelo de Objetos,los conceptos básicos del mismo 
se originaron en la década del ´60.
Por ejemplo, el lenguaje SIMULA, uno de los precursores en el 
concepto de objetos fue desarrollado en 1967.
2
MODELO DE OBJETOS
Los conceptos básicos del Modelo de Objetos se originaron 
con la definición de lenguajes que incorporan conceptos tales 
como:
Encapsulamiento
Modularidad
Abstracción
Polimorfismo
Si bien SIMULA fue el primer lenguaje en incorporar el 
Modelo de Objetos, lo más importante ha sido el 
Modelo Conceptual
que ha dejado como resultado. 
MODELO DE OBJETOS
El Modelo de Objetos ha trascendido los sistemas de información 
y/o software en general, y se está utilizando como una herramienta 
de modelado ingenieril de varios tipos de sistemas, por ej.:
distintos tipos de redes (eléctricas, de flujo, etc.)
ingeniería de organizaciones y métodos (re-ingeniería de 
empresas, etc.)
ingeniería de productos
control de tráfico
En realidad el Modelo de Objetos se originó a partir de la necesidad 
de disponer de una herramienta simple para Simular Sistemas (de 
cualquier tipo).
3
IMPLEMENTACIÓN
CICLO DE VIDA EN EL 
DESARROLLO DE SOFTWARE
ANÁLISIS
DISEÑO
. . . . . . . 
Paradigma de Objetos
Programación
Estructurada
Lenguajes de
Alto Nivel
Programación
Orientada a
Objetos
C O N O C I M I E N T O S
A
 P
 L
 I 
C
 A
 C
 I 
O
 N
 E
 S
EVOLUCIÓN DE LOS
PARADIGMAS DE PROGRAMACIÓN
4
PARADIGMAS DE PROGRAMACIÓN
Procedural
Es el paradigma de programación tradicional (y probablemente 
aún el más usado):
uso separado de los procedimientos y los datos.
enfoque sobre el diseño de los procedimientos, es decir, 
sobre el CÓMO.
Se decide qué procedimientos se necesitan, y luego se 
implementan con los mejores algoritmos que se puedan 
encontrar
• El bloque físico de los primeros lenguajes que soportaban este 
estilo de programación era el subprograma. Inicialmente se 
lo consideró como un dispositivo para ordenar el trabajo.
• Un avance en este enfoque fue el asignar a los subprogramas
la finalidad de abstraer funciones del programa. 
Se crearon lenguajes con diversos mecanismos de 
pasajes de parámetros
Se establecen los principios de la Programación 
Estructurada: anidación de programas, estructuras de 
control, ámbito y alcance de declaraciones, etc.
Surgen métodos de Diseño Estructurado
5
ENCAPSULAMIENTO
DECIDIR QUE MÓDULOS SE REQUIREN; EL 
PROGRAMA SE PARTICIONA DE FORMA TAL QUE LOS 
DATOS QUEDEN OCULTOS EN LOS MODULOS
⇒ Es la propiedad que asegura que la información de un módulo
esta oculta al mundo exterior.
⇒ Es el proceso de ocultar todos los secretos de un módulo que 
no contribuyen a sus características esenciales.
Es una técnica de diseño para 
descomponer sistemas en módulos
VENTAJAS:
⇒ Centralización de todos los datos de un cierto tipo.
⇒ Programación paralela.
⇒ Facilita el Mantenimiento y Extensión.
ENCAPSULAMIENTO
⇒ En los lenguajes de programación clásicos los módulos se 
implementan mediante subprogramas (procedimientos, 
funciones y subrutinas). 
⇒ Ésto, en general, orienta una formulación Funcional del 
problema, organizándolo mediante refinamientos sucesivos 
de los módulos.
6
Pared
Pelota
Paleta
Pantalla de video Juego
VideoJuego
Inicializar 
juego
Jugar una 
partida
Dibujar 
pared
Dibujar
lados
Inicializar
Paleta
Jugar una 
pelota
Cheq. 
Posición 
de pelota
Actualizar 
puntaje 
y pantalla
Mover 
Pelota
Mover 
Paleta
Ejemplo de refinamientos sucesivos de módulos
⇒ No se permitan extensiones en forma simple. 
⇒ Las modificaciones puedan requerir un gran esfuerzo y 
puedan introducir errores.
Cuando la descomposición se realiza considerando 
únicamente un Refinamiento Progresivo puede ocurrir que:
ENCAPSULAMIENTO
En el Diseño Clásico (estructurado) una modularización que persiga el 
principio de Encapsulamiento, deberá realizarse con criterios de
acoplamiento y cohesión.
Independencia de 
Módulos
Mono-Funcionalidad de 
Módulos
7
ABSTRACCIÓN
Denota las características esenciales de un objeto las cuales lo
distinguen de todos los otros tipos de objetos. Provee una 
definición conceptual relativa a la perspectiva del observador.
ABSTRACCIÓN
⇒ Enfocada sobre la vista externa del objeto que separa el 
comportamiento esencial del objeto de su implementación.
⇒ Decidir sobre el conjunto correcto de abstracciones para 
un dominio dado, es el problema central en Diseño 
Orientado a Objetos.
⇒ Modelo de contrato: La vista exterior de un objeto define 
un contrato sobre la cual otros objetos dependen.
Ascensor
subir
Bajar Abrir puerta
8
Cliente Servidor
Servicios
contrato
Pre
con
dic
ion
es Postcondiciones
Ordenar(unArreglo)
arregloOrdenado
Modelo de contrato
Parte del contrato que 
debe ser satisfecha 
por el cliente
Parte del contrato que 
debe ser satisfecha por 
el servidor
ABSTRACCIÓN
Principio de diseño de los lenguajes de programación capaces de 
implementar la técnica de:
Encapsulamiento y Ocultamiento de la Información
ABSTRACCIÓN DE DATOS
La abstracción de datos es la técnica de programación que 
permite definir nuevos tipos de datos, adecuados para la 
aplicación
tipos de datos abstractos ( TDA )
Un lenguaje soportará la definición de tipos de datos abstractos, 
si:
• el usuario puede definir nuevos tipos de datos asociando 
explícitamente la estructura de datos del mismo con las 
operaciones que lo manipulan
• la representación y las operaciones están ocultas en el tipo de 
dato abstracto.
9
Un TDA se compone de estructuras de datos (representación) 
y las operaciones que la manipulan
TDA = representación + operaciones
Para que un TDA pueda ser empleado, es necesario indicar 
cuáles son y cómo pueden ser usadas las operaciones por los 
clientes del mismo.
La especificación formal del TDA está compuesta por las 
siguientes secciones:
⇒ Tipos
⇒ Operaciones (funciones)
⇒ Axiomas
⇒ Precondiciones
Operaciones
push: Pila[G] x G → Pila[G]
pop: Pila[G] → Pila[G]
top: Pila[G] → G
empty: Pila[G] → Boolean
new: Pila[G]
Axiomas
∇x: G , s: Pila[G] 
A1- top(push(s,x)) = x
A2 - pop(push(s,x)) = s
A3 - empty(new)
A4 - not empty(push(s,x))
Precondiciones
pop(s: Pila[G])
requiere not empty(s)
top(s: Pila[G]) 
requiere not empty(s)
Tipos
Pila[G]
Si quisieramos construir un TDA que represente una Pila, que contenga 
elementos del tipo G, tendríamos que establecer la siguiente especificación:
Podríamos afirmar que esta especificación define la interfaz 
del TDA Pila
10
Lenguajes que permiten definir tipos de datos abstractos:
mecanismo
⇒Simula 67 → clase
⇒Modula–2 → módulo
⇒Ada → paquete (package)
⇒Smalltalk → clase
⇒C++ → clase
⇒ Java → clase
Diseñar programas empleando el concepto de TDA consiste en :
DECIDIR QUE TIPOS SE REQUIEREN; Y PROVEER UN 
CONJUNTO COMPLETO DE OPERACIONES PARA CADA 
UNO DE LOS MISMOS
El paradigma de Programación Orientada a Objetos
representa acabadamente el concepto de TDA
El Paradigma O. O. tiene como objetivo:
⇒Escribir software fácilmente modificable y extensible.
⇒Escribir software reusable.
⇒Disponer de un modelo natural para representar un dominio.
DECIDIR QUE CLASES (O TIPOS) SE REQUIEREN,
PROVEER UN CONJUNTO COMPLETO DE 
OPERACIONES PARA CADA UNA DE LAS CLASES
Y 
HACER EXPLICITAMENTE ACCESIBLE SU ESTRUCTURA 
Y COMPORTAMIENTO MEDIANTE LA HERENCIA
11
Utilizando Objetos para modelar el ejemplo
VideoJuego
Pared
Pelota
Paleta
Ladrillo
PROGRAMACION ORIENTADA A OBJETOS
Conceptos Básicos
QUE ES UN OBJETO?
Un objeto es una entidad que combina las propiedades 
de los procedimientos y de los datos.
Un objeto ejecuta operaciones (comportamiento)y mantiene su estado local (estructura)
Los procedimientos que incluye un objeto se 
denominan métodos
Los métodos describen el comportamiento del objeto.
12
Los objetos encapsulan 
datos y operaciones (o procedimientos).
DATOS
(estado)
PROCEDIMIENTOS
(comportamiento)
Los datos describen el estado del objeto.
Los procedimientos u operaciones actúan sobre los datos 
modificándolos o interrogándolos. Se denominan también 
comportamientos.
OBJETO
PROGRAMACION ORIENTADA A OBJETOS
ESTADO
Edad, Peso, Altura, Domicilio
Posición
COMPORTAMIENTO
Escala, Corre, Trabaja, ...
IDENTIDAD
Juan Pérez
Un Objeto Posee:
13
“El estado de un objeto comprende todas las 
propiedades (usualmente estáticas) del 
objeto más los valores actuales (usualmente 
dinámicos) de cada una de estas 
propiedades”.
propiedades 
estáticas
propiedades 
dinámicas
ESTADO
Pelota
Posición
Radio
Pelota
Posición= 5x10y
Radio= 1
• Es una buena práctica de ingeniería 
encapsular el estado de un Objeto.
• Ocultar la representación del estado del 
objeto a sus clientes externos.
• Ningún objeto puede modificar el estado de 
otro objeto.
ESTADO
14
“El comportamiento expresa de que forma 
el objeto actúa y reacciona en términos 
de su cambio de estado y solicitud de 
servicio”.
Representa las actividades visibles 
exteriormente.
COMPORTAMIENTO
Pila
push()
pop()
top()
push(x)
Mozo, la cuenta 
por favor.
Los métodos asociados a un objeto implementan el 
comportamiento del objeto.
rol: es una máscara que usa el objeto y define un 
contrato entre una abstracción y sus clientes.
COMPORTAMIENTO
Profesional
15
“Es aquella propiedad del objeto la cual lo distingue 
de los otros objetos.”
Identidad ≠ estado.
la identidad de un objeto (no necesariamente su 
nombre) es preservada en el tiempo aún cuando su 
estado cambie.
Juan Pérez Juan Pérez Juan Pérez
Persona
IDENTIDAD
¿Cómo interactúan los objetos entre sí?
Todas las acciones en POO resultan de enviar mensajes entre 
objetos.
Un mensaje es una solicitud para que un objeto ejecute una 
acción. Este objeto responde ejecutando métodos, es decir, 
usando sus propios procedimientos.
PROGRAMACIÓN ORIENTADA A OBJETOS
Conceptos Básicos
En el envío de mensajes interactuan dos objetos: 
el emisor del mensaje y el receptor.
Objeto Emisor Objeto ReceptorMensaje
16
La interfase pública es el 
protocolo o conjunto de mensajes a los que puede responder el objeto
(Punto de Vista del Usuario)
La representación privada son: 
• los datos necesarios para describir el estado y 
• la implementación de los métodos o procedimientos 
(Punto de Vista del Implementador)
OBJETO
PROGRAMACIÓN ORIENTADA A OBJETOS
Conceptos Básicos
Interfase 
pública
Representación Privada
Datos y Métodos
M
undo Exterior
El envío de mensajes soporta un importante principio en 
programación:
LA ABSTRACCIÓN DE DATOS
El estado interno de un objeto sólo puede modificarse 
mediante el envío de algún mensaje válido.
Puede modificarse la implementación de un objeto sin que varíe el 
comportamiento del mismo y por consiguiente, el programa que lo 
contiene.
PROGRAMACIÓN ORIENTADA A OBJETOS
Conceptos Básicos
17
Qué es POO?
En su sentido más puro se define como 
La programación que se implementa a través del envío de mensajes
entre objetos
PROGRAMACION ORIENTADA A OBJETOS
Conceptos Básicos
Cliente Registro de 
Cliente
Pedido
Catálogo
Orden de 
Embalaje
Empleado
1: Solicita item 2: ExisteCliente?
3: ConsultarPorItem
5: Iniciar
Empleado de 
Embalaje
6: Asignar
4: IncorporarItem
7: UbicaciónItem?8: Actualizar
En qué consiste la solución de problemas en POO?
Identificar los objetos del problema.
Identificar los mensajes a los cuales los objetos deberán 
responder.
Establecer una secuencia de mensajes a los objetos.
PROGRAMACION ORIENTADA A OBJETOS
Conceptos Básicos
18
Calcular la suma de dos números e imprimir el resultado.
* Identificación de los objetos
número1: el primer número sumando.
número2: el segundo número sumando.
suma: el resultado de la suma de dos números
* Identificación de los mensajes
+ número2
el mensaje + con el parámetro número2 enviado a un receptor. El resultado de este 
mensaje es un objeto suma representando la suma del objeto receptor número1 y 
número2.
imprimir
mensaje que presenta en la pantalla el valor del objeto receptor.
PROGRAMACION ORIENTADA A OBJETOS
Conceptos Básicos
(número1 + número2) imprimir
(3+4) imprimir 
tiempo t0 tiempo t1
3 77+ 4
imprimir
PROGRAMACION ORIENTADA A OBJETOS
Conceptos Básicos
Secuencia de los mensajes a los objetos
(número1 + número2) imprimir.
que equivale a:
suma = número1 + número2.
suma imprimir.
19
Implementación de Estructuras de Datos 
y sus operaciones
CLASES Y VARIABLES DE INSTANCIAS
Un lenguaje soporta abstracción de datos cuando tiene un 
mecanismo para poner juntos la totalidad de los procedimientos 
para un tipo de dato.
Prog. Procedural POO
# tipo de datos # ????
# valores # objeto
# operaciones # métodos
¿COMO ABSTRAER CONCEPTOS EN POO?
En el paradigma de objetos existen dos ejes conceptuales para abstraer 
conceptos:
⇒CLASIFICACIÓN
⇒GENERALIZACIÓN/ESPECIALIZACIÓN
CLASIFICACIÓN
Naturalmente, muchos objetos tendrán características semejantes.
Deberán ser agrupados de alguna forma.
El mecanismo que brinda la POO para representar esta agrupación es la 
CLASE
20
“Una clase es un conjunto de objetos que 
comparten estructura y comportamiento 
común”
CLASE
Persona
Nombre
Dirección
Ciudad
FechaNac
DocumentoTipo
DocumentoNum
Incorporar()
ActualizarFam()
CalcularHaber()
CLASE
Una clase contiene la descripción de las características comunes de todos 
los objetos que pertenecen a ella:
– la especificación del comportamiento
– la definición de la estructura interna
– la implementación de los métodos
Expediente
Titular
Tema
Número
Estado
FechaInicio
Ubicación
Inicio()
Transferir()
Finalizar()
Archivar()
Persona
Nombre
Dirección
Ciudad
FechaNac
DocumentoTipo
DocumentoNum
Incorporar()
ActualizarFam()
CalcularHaber()
{ | instancia |
instancia := super new.
instancia inicializar.
........
}
implementación
de métodos
{estado = ‘finalizado’
ifTrue: [self Archivar].
........
........
}
estructura
comportamiento
21
CLASES - INSTANCIAS
Un objeto se dice instancia de una clase cuando sus métodos y atributos 
están definidos en la misma. 
Tiene un estado, un comportamiento y una identidad.
Una instancia es un individuo de la clase
INSTANCIASCLASES
* define atributos.
* define métodos.
* puede generar instancias.
* tiene valores (los almacenados localmente).
* ejecuta métodos.
* -
CLASES - INSTANCIAS
Clase Persona
Persona
Nombre
Dirección
Ciudad
FechaNac
DocumentoTipo
DocumentoNum
Incorporar()
ActualizarFam()
CalcularHaber()
Id.
Nombre
Dirección
Ciudad
FechaNac
DocumentoTipo
DocumentoNum
Id.
Nombre
Dirección
Ciudad
FechaNac
DocumentoTipo
DocumentoNum
Id.
Nombre
Dirección
Ciudad
FechaNac
DocumentoTipo
DocumentoNum
Perez, Luis
San Martin 1120
Santa Fe
15/10/1958
DNI
11.304.987
Fanuchi, Joaquín
Perdriel 120
Santa Fe
01/10/1962
DNI
17.374.965
Ferrari, Luca
San Juan 235
Santa Fe
01/09/1957
DNI
13.390.456
es-instancia-de
Se b
usc
a el
 mé
tod
o
para
 res
pon
der 
al 
men
saje
reci
bido
CalcularHaber (mensaje enviado)
1x00 2x00 3x00
22
CARACTERÍSTICAS DE UN OBJETO
⇒ ATRIBUTOS (dato privado): son variables para las cuales el 
almacenamiento local está disponible en las instancias. Todos los objetos 
que son instancias de la clase comparten la misma descripción de la 
variable.
⇒ ATRIBUTOS DE CLASE (dato compartido): son variables almacenadas 
en la clase, cuyo valor es compartido por todas las instancias de esa clase.
⇒ CONJUNTO DE MÉTODOS: todos los objetos que son instancias de 
una clase dada tienen los mismos métodos, por lo tanto, responderán al 
mismo conjunto de mensajes.
Es el conjunto de mensajes a los cuales un objeto puede 
responder.
Las formasen las cuales un objeto puede actuar y reaccionar, 
constituyen la vista exterior del mismo.
PROTOCOLO DE MENSAJES
Definiciones
Clase X
Métodos: A, B, C y D
A
B
C
D
atributos
El protocolo de la clase 
X esta compuesto por los 
mensajes A, B, C y D
23
GENERALIZACIÓN/ESPECIALIZACIÓN
Relaciones entre Clases
Un conjunto de clases tendrá 
características generales (que pertenecen a más de una), y 
características particulares (que pertenecen a algunas) 
deberán estar organizadas en una estructura jerárquica
El mecanismo que brinda la POO para representarla es la 
HERENCIA DE CLASES.
HERENCIA
Definiciones
Herencia es el concepto en Lenguajes Orientados a 
Objetos (LOO) que es usado para definir objetos que son 
"casi como" otros ya existentes, con unos pocos cambios.
Una clase C definida como heredera de una clase A, tiene 
todas las características de A, a las que puede agregar las 
propias.
Herencia es la capacidad de una clase C de acceder a los 
componentes de otra más general A (nivel superior en la 
jerarquía) considerándolos como propios e inclusive 
pudiendo redefinirlos.
24
JERARQUIA de HERENCIA
Vehículo
Vehículo de pasajeros
Camión Tren de carga
Vehículo de carga
Vehículo de pasajeros con motor
Ciclomotor Colectivo
Automóvil
Deportivo Tipo 4x4 Compacto
Tren de pasajeros
Combi Larga distancia
es-un
ESPECIALIZACIÓN/GENERALIZACIÓN
Es el proceso de modificación de un concepto genérico para un uso específico.
Es la noción que una clase de objetos es un caso especial de otra. 
Por ejemplo:
B es una especialización de A
los metales preciosos son una especialización de los metales
las novelas de misterio son una especialización de los libros.
A
B C
D
Especialización Generalización
25
HERENCIA
Superclases y Subclases
Ambos conceptos son relativos a la clase que se está analizando
Regla de Herencia es-un
No hacer que una clase B sea subclase de A, 
a menos que cada instancia de B pueda ser vista 
como una instancia de A.
SUPERCLASE
Clase de la que dependen otras clases en la jerarquía
SUPERCLASE
SUBCLASE
Clase que está subordinada a otra clase en la jerarquía.
SUBCLASE
Actualmente es comúnmente aceptado como buena práctica que una 
Clase sea una Clase Abstracta (sin instancias, aunque con la 
posibilidad de tener implementaciones parciales) o Clase Concreta (o 
Final, con prohibición de tener extensiones).
Clase Abstracta
No posee instancia
Sus subclases incorporan estructura y comportamiento
Admite implementación parcial de algunas 
operaciones (métodos)
Clase Concreta
Clase más especializada
Poseen instancias
Clase
Clase Abstracta y Concreta
No se considera recomendable emplear Clases que 
posean simultáneamente Subclases e Instancias.
26
HERENCIA
Otro Enfoque
Es la propiedad de las subclases de una clase 
específica, mediante la cual heredan 
(incluyen) las propiedades de sus superclases.
Persona
nom bre
apellido
dni
direccion
Empleado
cargo
t it ulo
cui l
Herencia: cuestiones de Diseño
√ La herencia debe ser utilizada solamente para relaciones 
genuinas “es un tipo de”
√ Siempre debe ser posible sustituir un objeto de la subclase por 
uno de la superclase.
√ Todos los métodos en la superclase deben tener sentido en la 
subclase.
√ La herencia utilizada por conveniencia a corto plazo, conduce a 
problemas en el futuro.
Persona
nombre
caminar()
correr()
saltar()
Perro
caminar()
correr()
saltar()
Pila
agregar()
Eliminar()
sacarPr im ero()
agrega rP rinc ipio ()
Lista
agregar()
Eliminar()
sacarPrimero()
sacarUltimo()
agregarPrincipio()
agregarFinal()
27
HERENCIA SIMPLE
en una jerarquía, una clase es definida en términos de
una sola superclase inmediatamente superior.
HERENCIA
Tipos
HERENCIA MULTIPLE 
es el caso en que una clase hereda de dos o más clases, que no están 
relacionadas como una superclase y una subclase una de otra.
Problemas
Las superclases definen operaciones para el mismo 
mensaje.
Las superclases heredan de una superclase común
HERENCIA MULTIPLE
Ejemplo
Definir la clase Figura_Compuesta, la cual es obviamente una Figura.
Una Figura_Compuesta es una Lista de figuras (sus componentes), las 
cuales pueden ser figuras básicas o compuestas.
Figura
X
Y
Nombre
Ventana
Mover()
Dibujar()
Rotar()
Lista
Adicionar()
PrimerElemento()
Recorrer()
Figura_Compuesta
Círculo RectánguloLínea
28
POLIMORFISMO
Definiciones
Significa tener o asumir distintas formas. En el contexto de POO 
se refiere a la capacidad de las diferentes clases de objetos para 
responder al mismo protocolo. Esta característica habilita al 
programador para tratar uniformemente objetos que provienen de 
clases diferentes.
Permite enviar el mismo mensaje a objetos diferentes y que cada 
uno responda en la forma apropiada según el tipo de objeto que sea, 
ejecutando su método.
El polimorfismo está asociado a la ligadura dinámica (“dynamic 
binding”). La asociación de un método con su nombre no se 
determina hasta el momento de su ejecución.
El polimorfismo se extiende hacia abajo en la red de herencia 
porque las subclases heredan los protocolos, pero los métodos 
pueden estar especializados localmente. Usualmente requiere del 
empleo de clases abstractas.
Figura
X
Y
Nombre
Ventana
Crear()
Borrar()
Mover(x, y)
ActualizarX(x)
ActualizarY(y)
Destruir()
Dibujar()
Circulo
Radio
Dibujar()
Texto
Texto
Tipo
Tamaño
Dibujar()
Rectángulo
Alto
Ancho
Dibujar()
Línea
Xfin
Yfin
Dibujar()
POLIMORFISMO
(x,y)
self Borrar();
self Actualizar(x);
self Actualizar(y);
self Dibujar().
Clase Concreta
Método 
Abstracto
Clase Abstracta
( )
*/se define en las
subclases*/
Dibujar() tendrá una 
definición en cada clase 
concreta
29
OBJETO COMPUESTO
Definición
Es un objeto compuesto por otros objetos interconectados 
por la relación
parte-de
que son instanciados juntos.
Es una extensión recursiva de la noción de objetos.
Sistema de ArranqueSistema Elec trico
Auto
Puerta
Techo
Chasis
Cuerpo
Objetos 
Compuestos
OBJETOS COMPUESTOS
Principios
Están especificados por una clase que contiene la 
descripción que indica las clases de las partes y las 
interconexiones.
El proceso de instanciación crea las instancias 
correspondientes a todas las partes de la descripción.
El proceso de instanciación es recursivo, por lo tanto, un 
objeto compuesto puede ser usado a su vez como 
componente.
Es posible especializar una descripción por la adición de 
nuevas partes o substitución de partes existentes.
30
La jerarquía es una clasificación u ordenamiento de 
abstracciones.
La identificación de jerarquías entre las abstracciones 
que forman parte de un diseño simplifica la comprensión del 
problema.
Las dos jerarquías más importantes en un sistema complejo son 
su estructura de clases (relaciones de herencia) y
su estructura de partes (relaciones parte-de)
Para el manejo de la complejidad se utilizan:
Abstracciones (su número puede ser elevado) 
Encapsulamiento (oculta la visión interna de las abstracciones)
Modularidad (ofrece una vía para agrupar abstracciones 
relacionadas lógicamente)
JERARQUÍA
EJEMPLO DE EMPLEO DEL MODELO DE OBJETOS
Las unidades de programa deben ser:
abiertas para permitir extensiones, y
cerradas a las modificaciones del código preexistente.
Es aconsejable diseñar módulos cuyo comportamiento 
pueda ser modificado sin realizar alteraciones del código 
fuente del mismo.
Este objetivo es más sencillo de alcanzar en el Modelo de Objetos 
31
Dibujo de Formas
enum FormaType {circulo, cuadrado};
struct Forma { FormaType itsType;};
struct Circulo { FormaType itsType; double Radio; PointCentro;};
struct Cuadrado {SahepType itsType; double Lado; Point SupIzq;};
void DibujarCuadrado (struct Cuadrado*);
void DibujarCirculo(struct Circulo*);
typedef struct Forma *FormaPointer;
void DibujarTodasFormas (FormaPointer list[], int n)
{ int i;
for (i=0; i<n; i++)
{struct Forma* s = list[i];
switch (s->itsType)
{
case cuadrado: DibujarCuadrado ((struct Cuadrado*)s); break;
case circulo: DibujarCirculo((structCirculo*)s); break;
}
}
}
No respeta el Principio Abierto/Cerrado
Para dibujar una nueva 
forma es necesario 
modificar el código
class Forma {public: virtual void Dibujar() const = 0;};
class Cuadrado : public Forma {public: virtual void Dibujar() const;};
class Circulo : public Forma {public: virtual void Dibujar() const;};
typedef Forma *FormaPointer;
void DibujarTodasFormas(FormaPointer list[], int n)
{
for (int i=0; i<n; i++)
list[i]-> Dibujar();
}
Dibujo de Formas
Si respeta el Principio Abierto/Cerrado
En una aplicación compleja las estructuras switch/case se repiten 
profusamente para cada operación que se desee realizar con formas.
Estas estructuras pueden ser difíciles de hallar, y se facilita la posibilidad 
de cometer errores cuando se las modifica.
Cada forma responde al mensaje 
dibujar
32
PROGRAMACIÓN 
ORIENTADA A OBJETOS
Síntesis de las características
1- La programación consiste en el envío de mensajes.
2 – El resultado del envío de un mensaje a un objeto es un objeto.
3 – La solución del problema consiste en:
(a) identificar los objetos en el enunciado del problema
(b) identificar los mensajes asociados a cada objeto
(c) desarrollar una secuencia de mensajes a objetos que
resuelvan el problema
4 – El lenguaje orientado a objetos debe soportar encapsulamiento, 
abstracción, herencia y polimorfismo.
5 – La unidad de encapsulamiento es el objeto, el cual incluye datos 
privados, compartidos y descripciones de mensajes.
PROGRAMACIÓN 
ORIENTADA A OBJETOS
Síntesis de las características (cont.)
6 – La POO soporta la abstracción por medio de una jerarquía de clases, 
que representan diferentes clases de objetos. 
Un protocolo de descripción de clase define las propiedades de cada 
abstracción. Nuevas abstracciones son agregadas por la adición de nuevas 
clases.
7 – Las subclases heredan las propiedades de sus superclases incluyendo 
los datos privados, los compartidos y los mensajes.
8 – Los mensajes heredados pueden ser polimórficamente redefinidos por 
las subclases.
9 – La POO soporta la definición polimórfica del mismo mensaje en 
diferentes clases.
33
PROGRAMACIÓN 
ORIENTADA A OBJETOS
Síntesis de las características (cont.)
10 – En POO los datos son almacenados como objetos, los cuales son 
eliminados automáticamente de la memoria cuando no son más necesarios. 
Objetos No-Persistentes
11 – La POO provee el soporte completo para la resolución incremental del 
problema.
12 – Los objetos del sistema y los objetos definidos por el usuario son de la 
misma categoría. No existe la diferencia entre Tipos Predefinidos y 
Definidos por el Usuario.
13 – Se soporta completamente la extensibilidad.
14 – El uso de estructuras iterativas y el indexado multinivel está 
minimizado y localizado en detalles de implementación de mensajes 
simples.
LENGUAJES 
ORIENTADOS A OBJETOS
Un lenguaje soporta un estilo de programación si 
provee las facilidades que lo hacen conveniente 
(razonablemente fácil, seguro y eficiente) para usar ese 
estilo.
Un lenguaje no soporta una técnica, si se debe realizar 
un esfuerzo o tener una destreza excepcional para 
implementar la misma. 
34
LENGUAJES 
ORIENTADOS A OBJETOS
Smalltalk (basado en SIMULA)
C++ (basado en C)
Object Pascal (basado en Pascal)
ExperCommonLisp (basado en Lisp)
CLOS (basado en Lisp)
Eiffel
Flamingo
Java (basado en C++)
Delphi (basado en Object-Pascal)

Continuar navegando

Materiales relacionados

39 pag.
Análisis y Diseño Orientado a Objetos con UML

SIN SIGLA

User badge image

Materiales y Contenidos

143 pag.
is1_t08_trans

Escuela Universidad Nacional

User badge image

ROMARIO ECHAVEZ ORTIZ