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óptero
Aeropuerto
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
Generalización
Especialización
Mecanismos 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

Principios orientacion-objetos

  • 1.
    Programación II Ing. MauricioPaletta, Msc Presentación Fundamentos de la Orientación a Objetos UNIVERSIDAD NACIONAL EXPERIMENTAL DE GUAYANA INGENIERÍA EN INFORMÁTICA Programación II
  • 2.
    Programación II Fundamentos dela Orientación a Objetos ABSTRACCION TIPOS MODULARIDAD CONCURRENCIA ENCAPSULAMIEN. PERSISTENCIA JERARQUIA POLIMORFISMO PRINCIPIOS HERENCIAOBJETO CLASE ENLACE DINAMICO MECANISMOS BASICOS TERMINOS TECNICOS
  • 3.
    Programación II Principios dela Orientación a Objetos Abstracción
  • 4.
    Programación II Principios dela 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.
  • 5.
    Programación II Principios dela 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.
  • 6.
    Programación II Principios dela Orientación a Objetos Abstracción • Se implementa mediante la identificación de clases.
  • 7.
  • 8.
    Programación II • Escondertodos 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
  • 9.
    Programación II • Permiterealizar 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
  • 10.
  • 11.
    Programación II • Descomponerun 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
  • 12.
    Programación II • Losmó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
  • 13.
    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
  • 14.
    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
  • 15.
    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
  • 16.
    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
  • 17.
    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
  • 18.
    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
  • 19.
    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
  • 20.
    Programación II Principios dela Orientación a Objetos Modularidad Regla 3 – Pequeñas interfaces: Si dos módulos se comunican deben intercambiar la menor información posible.
  • 21.
    Programación II Principios dela 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.
  • 22.
    Programación II Principios dela 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.
  • 23.
    Programación II Principios dela 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.
  • 24.
    Programación II Principios dela 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.
  • 25.
    Programación II Principios dela 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.
  • 26.
    Programación II Principios dela 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.
  • 27.
    Programación II Principios dela 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.
  • 28.
  • 29.
    Programación II Jerarquía • Esel 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
  • 30.
    Programación II Jerarquía • Permiteempaquetar 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
  • 31.
    Programación II Tipos Principios dela Orientación a Objetos
  • 32.
    Programación II Tipos • Permiteagrupar 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
  • 33.
    Programación II Tipos • Seimplementa 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
  • 34.
  • 35.
    Programación II Concurrencia • Esla 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
  • 36.
    Programación II Concurrencia • Seimplementa 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
  • 37.
  • 38.
    Programación II Persistencia • Esla 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
  • 39.
    Programación II Persistencia • Tantola 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
  • 40.
  • 41.
    Programación II • Esel 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
  • 42.
    Programación II • Parael 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
  • 43.
    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
  • 44.
    Programación II Una abstracciónsimple 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
  • 45.
  • 46.
    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
  • 47.
    Programación II • Esun 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
  • 48.
    Programación II enlace estático enlacedinámico vs Términos Técnicos Enlace Dinámico
  • 49.
  • 50.
    Programación II • Sonlas 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
  • 51.
    Programación II • Desdela 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
  • 52.
    Programación II • Lahabilidad 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
  • 53.
    Programación II Fórmula conceptual: Objeto= Atributos + Métodos Mecanismos básicos Objeto
  • 54.
  • 55.
    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
  • 56.
    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
  • 57.
    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
  • 58.
    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
  • 59.
    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
  • 60.
    Programación II Objeto -Comportamiento • Nota: principios de encapsulamiento y polimorfismo. • Ejemplos: ObtenerValor, AsignarValor, Agregar, Quitar, Sumar. Mecanismos básicos
  • 61.
    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
  • 62.
    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
  • 63.
    Programación II Objeto -Comportamiento Mensajes Atributos Métodos Asignar / Set Obtener / Get (Atributos) Mecanismos básicos
  • 64.
    Programación II Objeto -Comportamiento Mensaje = Identidad del Objeto + Método + Parámetros Mecanismos básicos Fórmula conceptual:
  • 65.
    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:
  • 66.
  • 67.
    Programación II Clase • Definela 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
  • 68.
    Programación II Clase • Constade 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
  • 69.
    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
  • 70.
    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
  • 71.
    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
  • 72.
    Programación II PUBLICA Otros usuariosexternos PROTEGIDA Clases relacionadas Clase - interfaz PRIVADA Clase actual Mecanismos básicos
  • 73.
    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
  • 74.
    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
  • 75.
    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óptero Aeropuerto 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
  • 76.
  • 77.
    Programación II Herencia • Permitecrear 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
  • 78.
    Programación II Herencia • Laclase 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
  • 79.
    Programación II Herencia -ejemplo Generalización Especialización Mecanismos básicos
  • 80.
    Programación II Herencia Clase Derivada= Clases Base + Otros Elementos Mecanismos básicos Fórmula conceptual:
  • 81.
    Programación II Herencia Nota: Siel 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
  • 82.
    Programación II Herencia Nota: Cuandoun 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
  • 83.
    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.
  • 84.
    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.
  • 85.
    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
  • 86.
    Programación II Herencia –clase abstracta Mecanismos básicos
  • 87.
    Programación II Herencia –métodovirtual 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.
  • 88.
    Programación II Herencia –métodovirtual Mecanismos básicos • Su uso tiene implicaciones en los espacios de memoria ocupados por los objetos instanciados.
  • 89.
    Programación II Herencia –métodovirtual 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
  • 90.
    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