principios orientacion-objetos
DESCRIPTION
Tecnología Orientada a Objetos - UNEG - Profesor Mauricio PalettaTRANSCRIPT
Programación II
Ing. Mauricio Paletta, Msc
Presentación
Fundamentos de la Orientación a Objetos
UNIVERSIDAD NACIONAL EXPERIMENTAL DE GUAYANA
INGENIERÍA EN INFORMÁTICA
Programación II
Programación II
Fundamentos de la Orientación a Objetos
ABSTRACCION TIPOS
MODULARIDAD CONCURRENCIA
ENCAPSULAMIEN. PERSISTENCIA
JERARQUIA POLIMORFISMO
PRINCIPIOS
HERENCIAOBJETO CLASE
ENLACE
DINAMICO
MECANISMOS BASICOS
TERMINOS TECNICOS
Programación II
Principios de la Orientación a Objetos
Abstracción
Programación II
Principios de la Orientación a Objetos
Abstracción
• Capacidad de adquirir conceptos (idea
particular o lo que vemos y comprendemos
del mundo), construir jerarquías de
generalizaciones y componer objetos
mediante la configuración de otros.
• Es el acto o resultado de eliminar
diferencias entre los objetos, de modo que
podamos ver los aspectos comunes.
Programación II
Principios de la Orientación a Objetos
Abstracción
• Es una forma de manejar la complejidad
de los objetos.
• Enfatizar sobre los detalles importantes y
olvidar los aspectos no relevantes desde
perspectiva del usuario.
• Permite separar el comportamiento
esencial de un objeto de su
implementación.
Programación II
Principios de la Orientación a Objetos
Abstracción
• Se implementa
mediante
la identificación
de clases.
Programación II
Encapsulamiento
Principios de la Orientación a Objetos
Programación II
• Esconder todos los detalles de un objeto
que no contribuyen al entendimiento de
sus características esenciales.
Información escondida.
• Se refiere a incluir dentro de un objeto
todo lo que éste necesita y hacerlo de
forma tal que ningún otro objeto vea su
estructura interna.
Principios de la Orientación a Objetos
Encapsulamiento
Programación II
• Permite realizar cambios a los programas
con poco esfuerzo.
• La idea principal es proteger los datos de
un objeto del uso arbitrario.
• Se implementa mediante la interfaz de los
elementos que definen una clase.
Principios de la Orientación a Objetos
Encapsulamiento
Programación II
Modularidad
Principios de la Orientación a Objetos
Programación II
• Descomponer un sistema en un conjunto
de unidades discretas.
• Está asociado al concepto de
programación modular / estructurada.
• Permite empaquetar la abstracción en
pequeñas unidades.
• Está íntimamente relacionado con el
encapsulamiento.
Principios de la Orientación a Objetos
Modularidad
Programación II
• Los módulos son generalmente unidades
indivisibles.
• 5 criterios, 5 reglas y 5 principios.
• Se implementa mediante la instanciación
de objetos, la identificación de relaciones
entre clases y cómo éstas, en conjunto,
resuelven el problema tratado.
Principios de la Orientación a Objetos
Modularidad
Programación II
Criterio 1 - Descomposición modular:
Descomponer el problema de software en un
pequeño número de sub-problemas menos
complejos, interconectados mediante una
estructura sencilla y suficientemente independien-
tes para permitir que el trabajo futuro pueda
proseguir por separado en cada una de ellos.
Ejemplo: diseño top-down
Contraejemplo: inicialización global
Principios de la Orientación a Objetos
Modularidad
Programación II
Criterio 2 - Composición modular:
Favorece la producción de elementos que se
pueden combinar libremente unos con otros para
producir nuevos sistemas, posiblemente en un
entorno bastante diferente de aquél en que
fueron desarrollados inicialmente.
Ejemplo: biblioteca de subprogramas
Contraejemplo: uso de preprocesadores
Principios de la Orientación a Objetos
Modularidad
Programación II
Criterio 3 - Comprensibilidad modular:
Ayuda a producir software en el cual un lector
humano puede entender cada módulo sin tener
que conocer los otros.
Ejemplo: biblioteca de subprogramas de
índole específico
Contraejemplo: dependencias secuenciales
Principios de la Orientación a Objetos
Modularidad
Programación II
Criterio 4 - Continuidad modular:
Un pequeño cambio en la especificación de un
problema provoca sólo cambios en un solo
módulo o en un pequeño número de módulos.
Ejemplo: constantes simbólicas
Contraejemplo: estructuras estáticas
Principios de la Orientación a Objetos
Modularidad
Programación II
Criterio 5 - Protección modular:
Produce arquitecturas en las cuales el efecto de
una situación anormal que se da dentro de un
módulo durante su ejecución, queda confinado a
dicho módulo o en el peor caso, se propaga sólo
a unos módulos vecinos.
Ejemplo: verificación de los datos de entrada
en su origen
Contraejemplo: excepciones indisciplinadas
Principios de la Orientación a Objetos
Modularidad
Programación II
Regla 1 – Correspondencia directa:
La estructura modular obtenida en el proceso de
construcción de software debe seguir siendo
compatible con cualquier otra estructura modular
obtenida en el proceso de modelado del dominio
del problema.
Principios de la Orientación a Objetos
Modularidad
Programación II
Regla 2 – Pocas interfaces:
Cada módulo debe comunicarse con el menor
número de módulos posible.
Principios de la Orientación a Objetos
Modularidad
Programación II
Principios de la Orientación a Objetos
Modularidad
Regla 3 – Pequeñas interfaces:
Si dos módulos se comunican deben intercambiar
la menor información posible.
Programación II
Principios de la Orientación a Objetos
Modularidad
Regla 4 – Interfaces explícitas:
Siempre que dos módulos A y B se comuniquen,
esto debe ser obvio a partir del contexto de A, de
B o de ambos.
Programación II
Principios de la Orientación a Objetos
Modularidad
Regla 5 – Ocultamiento de información:
Cada módulo debe tener seleccionada un
subconjunto de propiedades como información
oficial del módulo para ponerla a disposición de
otros módulos.
Programación II
Principios de la Orientación a Objetos
Modularidad
Principio 1 – Unidades modulares
lingüísticas:
Los módulos deben corresponderse con las
unidades sintácticas en el lenguaje utilizado.
Programación II
Principios de la Orientación a Objetos
Modularidad
Principio 2 – Auto-documentación:
Toda la información relativa a un módulo debe
formar parte del mismo módulo.
Programación II
Principios de la Orientación a Objetos
Modularidad
Principio 3 – Acceso uniforme:
Todos los servicios ofrecidos por un módulo
deben estar disponibles a través de una
notificación uniforme sin importar la forma como
están implementados.
Programación II
Principios de la Orientación a Objetos
Modularidad
Principio 4 – Abierto / Cerrado:
Los módulos deben ser a la vez abiertos y
cerrados.
Abierto disponible para ser extendido.
Cerrado disponible para ser usado por
otros módulos.
Programación II
Principios de la Orientación a Objetos
Modularidad
Principio 5 – Elección única:
Siempre que un sistema de software deba admitir
un conjunto de alternativas, habrá un módulo del
sistema (y sólo uno) que conozca su lista
completa.
Programación II
Jerarquía
Principios de la Orientación a Objetos
Programación II
Jerarquía
• Es el acto o resultado de distinguir un
concepto que es más general que otro.
• Permite examinar si los conceptos tienen
algo en común.
• Nos ayuda a percibir que todas las
instancias de un concepto más específico
son también instancias de un concepto
general.
Principios de la Orientación a Objetos
Programación II
Jerarquía
• Permite empaquetar la abstracción en
pequeñas unidades.
• Representa la organización de una
abstracción.
• Su uso simplifica el entendimiento del
problema.
• Se implementa mediante las relaciones de
herencia y agregación entre clases.
Principios de la Orientación a Objetos
Programación II
Tipos
Principios de la Orientación a Objetos
Programación II
Tipos
• Permite agrupar o formar un conjunto de
objetos con características o
comportamientos similares.
• Dos cosas que tienen la misma forma
abstracta son análogas => son del mismo
tipo.
Principios de la Orientación a Objetos
Programación II
Tipos
• Se implementa mediante la descripción o
identificación de los elementos que
describen una clase:
datos /
información atributos
operaciones /
comportamiento métodos
Principios de la Orientación a Objetos
Programación II
Concurrencia
Principios de la Orientación a Objetos
Programación II
Concurrencia
• Es la propiedad que distingue un objeto
activo de uno que no lo es.
• Permite a diferentes objetos actuar al
mismo tiempo; cada uno de ellos tiene
autonomía.
Principios de la Orientación a Objetos
Programación II
Concurrencia
• Se implementa mediante el proceso de
creación o instanciación de objetos a
partir de su clase y las propiedades de
identidad y estado de los objetos:
clase definición / tipología del
concepto
objeto instancia / ocurrencia
cualquiera del concepto
Principios de la Orientación a Objetos
Programación II
Persistencia
Principios de la Orientación a Objetos
Programación II
Persistencia
• Es la propiedad que un objeto tiene de
existir en el tiempo y en el espacio.
• Un objeto existe hasta que no sea más
necesitado y el espacio que ocupa es
reutilizado.
Principios de la Orientación a Objetos
Programación II
Persistencia
• Tanto la necesidad de espacio para
almacenar el objeto como su recupera-
ción, involucran a los dependientes
(objetos relacionados) de dicho objeto.
• Se implementa mediante los procesos de
construcción y destrucción de los objetos
definidos como parte del comportamiento
de la clase.
Principios de la Orientación a Objetos
Programación II
Polimorfismo
Principios de la Orientación a Objetos
Programación II
• Es el fenómeno mediante el cual una
operación adopta varias formas de
implementación.
• Habilidad para usar el mismo símbolo
para propósitos diferentes cuando el
contexto es claro.
Principios de la Orientación a Objetos
Polimorfismo
Programación II
• Para el usuario, la visión del operador es
una sola, el objeto se encarga de decidir
qué hacer; los detalles de implementación
quedan ocultos.
• Dos operaciones completamente
diferentes comparten el mismo nombre.
Principios de la Orientación a Objetos
Polimorfismo
Programación II
• Ventajas: extensibilidad, código compacto,
claridad.
• Se implementa mediante la sobrecarga de
funciones y operadores.
Principios de la Orientación a Objetos
Polimorfismo
Programación II
Una abstracción simple sirve
Coacción como diferentes tipos mediante
una conversión de tipos implícita
• Específico
Un identificador simple denota
Sobrecarga muchas abstracciones
Por parámetro Una abstracción opera uniforme-
mente a través de diferentes tipos
• Universal
Por inclusión Una abstracción opera a través de
una relación de inclusión
Principios de la Orientación a Objetos
Polimorfismo
Programación II
Enlace Dinámico
Términos Técnicos
Programación II
• Enlace: conectar una llamada de función
al cuerpo de la función; enlace estático o
temprano: se lleva a cabo antes de que el
programa se ejecute; enlace dinámico
posterior: ocurre en tiempo de ejecución.
• Representa uno de los mayores avances
de la Orientación a Objetos y es una
propiedad común (no necesaria) de los
lenguajes orientados a objetos.
Términos Técnicos
Enlace Dinámico
Programación II
• Es un elemento necesario para poder
realizar el polimorfismo.
• Para su implementación, debe existir un
mecanismo que determine el tipo de
objeto en tiempo de ejecución y haga la
llamada a la función apropiada.
Términos Técnicos
Enlace Dinámico
Programación II
enlace estático
enlace dinámico
vs
Términos Técnicos
Enlace Dinámico
Programación II
Objeto
Mecanismos básicos
Programación II
• Son las unidades básicas de
construcción, para conceptualización,
diseño o programación.
• Son instancias organizadas en clases con
características comunes.
Mecanismos básicos
Objeto
Programación II
• Desde la perspectiva de un programa, los
objetos son módulos que contienen datos
(atributos) y las instrucciones u
operaciones (métodos) que operan sobre
esos datos y trabajan juntos para proveer
funcionalidad.
Mecanismos básicos
Objeto
Programación II
• La habilidad para reconocer objetos es
una herramienta que los humanos
aprenden desde muy temprana edad.
• 3 características: estado, identidad y
comportamiento.
Mecanismos básicos
Objeto
Programación II
Fórmula conceptual:
Objeto = Atributos + Métodos
Mecanismos básicos
Objeto
Programación II
Mecanismos básicos
Objeto
Atributo
Método
Mensaje
Módulo /
Paquete
Programación II
Objeto - Estado
• Contiene todas las propiedades
(usualmente estáticas), además de los
valores actuales de estas propiedades
(usualmente dinámicas).
• Hace que cada objeto sea único.
• La respuesta que un objeto puede dar,
luego de la llamada de un mensaje,
depende de su estado actual.
Mecanismos básicos
Programación II
Objeto - Estado
• Determina cómo son los nodos en un
diagrama de transición de estados del
objeto.
• Nota: principio de persistencia.
• Ejemplos: color – rojo; peso – 75.4; edad
– 24; número de ítems – 190; profesión –
“Arquitecto”.
Mecanismos básicos
Programación II
Objeto - Identidad
• Distingue a un objeto del resto.
• Es independiente del estado.
• Se conserva durante toda la vida del
objeto, aún cuando se realicen cambios
de estado.
• Es la base para construir / armar un
mensaje hacia el objeto correspondiente.
Mecanismos básicos
Programación II
Objeto - Identidad
• Es una propiedad muy importante para
las Bases de Datos Orientadas a Objetos
(OODB).
• Nota: principio de concurrencia.
• Ejemplos: X1, X2, MiVentana,
MauricioPaletta.
Mecanismos básicos
Programación II
Objeto - Comportamiento
• Indica la forma como el objeto actúa y
reacciona en término de los cambios de
estado.
• Está totalmente definido por sus acciones
u operaciones.
• 2 conceptos importantes: método y
mensaje.
Mecanismos básicos
Programación II
Objeto - Comportamiento
• Nota: principios de encapsulamiento y
polimorfismo.
• Ejemplos: ObtenerValor, AsignarValor,
Agregar, Quitar, Sumar.
Mecanismos básicos
Programación II
Objeto - Comportamiento
Método:
Procedimiento que reside en el objeto y
determinan cómo éste actuará cuando
reciba un mensaje. Su ejecución puede
cambiar el estado del objeto, crear objetos
nuevos, enviar mensajes a otros objetos,
etc.
Mecanismos básicos
Programación II
Objeto - Comportamiento
Mensaje:
Canal de comunicación que usan los
objetos para ejecutar acciones. Sólo
cuando se recibe un mensaje, el objeto
ejecuta una acción. Todo proceso es
activado por mensajes entre objetos.
Mecanismos básicos
Programación II
Objeto - Comportamiento
Mensajes
Atributos
Métodos
Asignar / Set
Obtener / Get
(Atributos)
Mecanismos básicos
Programación II
Objeto - Comportamiento
Mensaje = Identidad del Objeto + Método +
Parámetros
Mecanismos básicos
Fórmula conceptual:
Programación II
Objeto - Comportamiento
Es el conjunto de mensajes a los cuales
un objeto responde o puede responder.
Nótese que no necesariamente es igual
al conjunto de métodos del objeto
(encapsulamiento y polimorfismo).
Mecanismos básicos
Protocolo del Objeto:
Programación II
Clase
Mecanismos básicos
Programación II
Clase
• Define la estructura y el comportamiento
de una forma abstracta o concepto para
darle vida a los objetos.
• Es un patrón (plantilla) que define los
atributos y métodos a ser incluidos es un
tipo particular de objeto.
• Se dice que un objeto es una instancia
particular de una clase.
Mecanismos básicos
Programación II
Clase
• Consta de dos partes: una declaración y
una implementación. La declaración lista
o identifica los miembros de la clase
(atributos y métodos). La implementación
define el cuerpo de los métodos de la
clase.
Mecanismos básicos
Programación II
Clase
• Nota: principios de abstracción, jerarquía,
modularidad y tipos.
• Nota: principio de encapsulamiento –
interfaz de la clase.
Mecanismos básicos
Programación II
Clase - interfaz
• Determina la forma en la cual los
elementos de la clase (atributos y
métodos) pueden o no ser usados (son
visibles) por cada uno de los tres tipos
diferentes de usuarios:
· Elementos de la misma clase.
· Elementos de clases relacionadas (herencia).
· Otros elementos externos.
Mecanismos básicos
Programación II
Clase - interfaz
• Tres niveles de interfaz:
Mecanismos básicos
Privada Visibilidad sólo para la
misma clase
Protegida Visibilidad para la misma
clase y clases relacionadas
Pública Visibilidad para cualquiera
Programación II
PUBLICA
Otros usuarios externos
PROTEGIDA
Clases relacionadas
Clase - interfaz
PRIVADA
Clase actual
Mecanismos básicos
Programación II
Clase - relaciones
• Basado en el principio de jerarquía, para
la definición de una clase nueva se
pueden usar clases existentes, ya sea
incorporando un objeto como atributo de
la clase (agregación) o estableciendo una
generalización (herencia).
Mecanismos básicos
Programación II
Clase - relaciones
Para dos clases A y B:
A es una agregación de B si y sólo si
(B contiene a A)
A forma parte de B
A hereda de B si y sólo si
(B es una generalización de A)
A es un caso particular de B
Mecanismos básicos
Programación II
Clase – relaciones (ejemplo)
-Capacidad
-Longitud
Aeronave
-# Turbinas
-Modelo
Avión
-# Motores
-Tipo Motor
-Autonomía
Avioneta
-Diámetro Hélice
-Tipo Motor
HelicópteroAeropuerto
Torre
-Número
Puerta
-Número
-Estado
Plataforma
-Número
-Estado
Hangar
-Número
-Tipo
Pista
1
1
1
1..*
11..*
1
1..*
1
1..*
*
-Comunica con
1
1..*
-Embarque / Desembarque
1
1..*
-Aterriza / Despega
1..*
1..* -Usa
1..*
1..*
-Aterriza / Despega
1..*
1..*
-Aterriza / Despega
1..*
Mecanismos básicos
Programación II
Herencia
Mecanismos básicos
Programación II
Herencia
• Permite crear clases nuevas a partir de
clases ya existentes, estableciendo
niveles de jerarquía y programando sólo
las diferencias.
• Permite refinar las estructuras sin
necesidad de duplicar información.
Mecanismos básicos
Programación II
Herencia
• La clase nueva (jerarquía inferior) es
conocida como subclase o clase derivada
y la clase de mayor nivel se denomina
superclase o clase base.
• Según el número de clases base, puede
ser de dos tipos: simple (una sola clase
base) y múltiple (mas de una clase base).
Mecanismos básicos
Programación II
Herencia - ejemplo
Ge
ne
raliz
ació
n
Esp
ecia
liza
ció
nMecanismos básicos
Programación II
Herencia
Clase Derivada = Clases Base +
Otros Elementos
Mecanismos básicos
Fórmula conceptual:
Programación II
Herencia
Nota: Si el identificador de un método o
atributo de una clase cualquiera es similar
a alguno de los elementos de una posible
clase base, cualquier referencia a este
identificador estará asociado al elemento
de la clase derivada, a menos que se
indique lo contrario.
Mecanismos básicos
Programación II
Herencia
Nota: Cuando un objeto recibe un mensaje
que contiene un método que no está
definido en su clase, se busca
automáticamente hacia arriba en su
jerarquía de clases. Igual ocurre al
acceder a un atributo del objeto.
Mecanismos básicos
Programación II
Herencia – clase abstracta
Mecanismos básicos
• Clases cuya descripción es incompleta.
• Sólo sirven para ser usadas como clases
bases en una relación de herencia.
• En términos de diseño, son útiles para
permitir a un usuario refinar o
particularizar un concepto.
Programación II
Herencia – clase abstracta
Mecanismos básicos
• No es posible o no tiene sentido instanciar
objetos con ellas.
• Por lo general contienen uno o más
métodos virtuales.
Programación II
Herencia – clase abstracta
Nota: Aunque pueden haber métodos
genéricos definidos en algún nivel de la
jerarquía de clases, no está prohibido que
existan definiciones específicas o
detalladas en los niveles inferiores. En
este caso, ambos métodos pueden ser
usados (como si fuera un polimorfismo),
siempre y cuando no se trate de la
redefinición de un método virtual.
Mecanismos básicos
Programación II
Herencia – clase abstracta
Mecanismos básicos
Programación II
Herencia –método virtual
Mecanismos básicos
• Pertenece a una clase abstracta.
• Debe ser obligatoriamente redefinido en
las clases derivadas.
• Puede verse como una indicación a los
usuarios de la clase base, que parte del
trabajo a realizar en la clase derivada, es
definir estos métodos a fin de que se
complete el comportamiento del concepto.
Programación II
Herencia –método virtual
Mecanismos básicos
• Su uso tiene implicaciones en los
espacios de memoria ocupados por los
objetos instanciados.
Programación II
Herencia –método virtual
Nota: Un método no virtual de una clase
base y otro similar (polimórfico) de la
clase derivada ocupan ambos espacios
de memoria independientes. En un
método virtual sólo se tiene el espacio de
memoria ocupado por la redefinición en la
clase derivada.
Mecanismos básicos
Programación II
Herencia – interfaz
• Permite determinar qué criterio de interfaz
(público, privado ó protegido) se va a usar
para los usuarios de la clase derivada con
los elementos públicos de la clase base.
Mecanismos básicos