Diapositivas sobre Relaciones & Co. Este documento presenta los conceptos fundamentales de la programación orientada a objetos, definiendo objetos y mensajes. El Pdf, óptimo para estudiantes universitarios de Informática, profundiza en las relaciones entre objetos como agregación, composición, generalización y asociación, con ejemplos visuales para facilitar la comprensión.
Ver más21 páginas


Visualiza gratis el PDF completo
Regístrate para acceder al documento completo y transformarlo con la IA.
1 Resumen . Un objeto es una "cosa" o "entidad", algo que podemos encontrar en el vocabulario del sistema y que existe en el espacio del problema o en el espacio de la solución Parada de bus Tarjeta de crédito Fichero Cliente Figura geom.
2 1¿Que es un objeto? · Un objeto representa una entidad cualquiera, física, conceptual, o software. · Entidad física Camion . Entidad Conceptual Bank account Proceso quimico · Entidad Software . > Linked List
3 Objeto: mensaje i Un objeto NO es una estructura de datos ! · No se manipula, se le piden servicios Rectángulo Cámbiate de color Base Altura Color Posición Desplázate Orientación Dime de que color eres Cambiar color Desplazar Rotar Color Área Dime cual es tu área
4 2Resumen · Un objeto es "algo" extraído del espacio del problema o de la solución. Tiene identidad, estado, y comportamiento . Un atributo es una propiedad del objeto · Una operación (o método) es una función que puede ser llevado a cabo por el objeto . Las operaciones "visibles" forman su interfaz · Un mensaje causa la ejecución de un método · Un objeto es la instancia del una clase · Principio de encapsulación
5 Relaciones entre clases
6 3Relaciones entre clases 1. Asociación 2. Agregación (caso particular de asociación) • Composición (caso particular de agregación) 3. Generalización / especialización 4. Dependencia Los mensajes "viajan" a través de las relaciones => i Si no hay relación no puede haber mensaje !
7 Asociación · Una asociación es una relación bidireccional entre pares existente entre dos clases · Se caracteriza por su "multiplicidad" (o sea, cuantos objetos participan en ella), puede tener nombre, sentido preferente (y más "adornos") Clase 1 Clase 2 Una asociación
8 4Asociación · Ejemplo: Director Escuela
9 Asociación · Ejemplo: Director Escuela · (UML: lenguaje visual de modelado)
10 5Asociación · Ejemplo: Director Escuela
11 Asociación · Ejemplos: Dirige Director Escuela Dirige Director Escuela 1 n Dirige -> Director V Escuela 1 n
12 6Agregación · Es un caso especial de asociación · Más "fuerte" · Representa una relación "parte de" entre clases Todo Parte
13 Asociación · Ejemplo: MOTOR PISTON
14 7Asociación · Ejemplo: MOTOR PISTON 1 4 MOTOR PISTON
15 Asociación · ¿ qué diferencia hay entre asociación y agregación? · Depende de que/como queremos expresar (modelar) la relación CUERPO BRAZOS CUERPO BRAZOS 1 1 1 2 MARIDO MUJER PAREJA PERSONA 1 n MUJER PAREJA 1 1 MUJER 1 1 MARIDO MARIDO
16 8Agregación/composición . Es un caso especial de agregación: composición · Más "fuerte": · Una parte puede ser incluida en máximo un "todo" · Si el todo deja de existir, también dejan de existir las partes. Todo Parte Pared Ventana · Representa una relación de "existencia"
17 Agregación/composición · Es un caso especial de agregación: composición 1 2 PAREJA PERSONA o 1 2 PAREJA PERSONA
18 9Generalización · Es una relación "tipo de" Clase 1 atributo1 atributo2 operacion2() operacion 1() Generalization Clase 2
19 Asociación · Ejemplo: Animal Gato Perro
20 10Generalización · La Generalización consiste en factorizar las propiedades comunes de un conjunto de clases en una clase más general Super-clase · Op. inversa: especialización Animal edad ... comer … · Permite gestionar la complejidad mediante un ordenamiento taxonómico de clases (jerarquía) Gato Perro
21 Sub-clases Generalización · Sinónimos: · clase padre - clase hija · superclase - subclase · clase base - clase derivada
22 11Generalización · Las subclases heredan propiedades de sus clases padre . es decir, atributos y operaciones (y relaciones) de la clase padre están disponibles en sus clases hijas · Las clases hijas podrán tener más atributos y métodos · Las clases hijas podrán cambiar atributos y métodos (polimorfismo) Animal · Generalización y especialización son transitivas Perro · > puede haber varios "niveles" de sub- clases, o sea una jerarquia de clases Labrador
23 Generalización · Puede haber herencia múltipla (un objeto hereda de varias clases = es "tipo-de" varias clases) · Debe manejarse con precaución (posible conflictos e nombres y prioridades) · No todos los lenguajes la permiten (Java y Ada por ejemplo no la permiten, C++ sí) Flying Thing Animal Herencia Multiple Airplane Helicopter Bird Wolf Horse
24 12Generalización · Se puede especializar añadiendo/cambiando atributos o métodos Figura · Punto, Circulo y Rectangulo tienen posicion y color, y se pueden mover posicion color ... · Circulo tiene, además, un atributo "radio" mover() ... · Rectangulo tiene, además, atributos base, altura y orientación, y puede rotar Punto dibujar() resize() Circulo radio dibujar() resize() Rectangulo base altura orientación dibujar() rotar() resize() · Una Figura no se puede dibujar ni cambiar de tamaño (¿por qué?)
25 · Las funciónes "dibujar" y "resize" en Punto, Circulo y Rectangulo hace cosas diferentes Polimorfismo
26 13Polimorfismo · Una característica de una clase puede tomar varias formas · Cada subclase hereda las operaciones y atributos, pero tiene la posibilidad de modificarlos localmente Figura resize() Ejemplo: -resize (cambiar tamaño) Punto resize() Circulo resize() Rectang. resize() No hace nada Cambia el radio Cambia base y altura
27 Como afecta a la interfaz? Punto Figura Rectangulo dibujar() mover() resize() rotar() Circulo … La interfaz de la clase base no cambia! "Todas las sub-clases hablan el mismo lenguaje (entienden los mismos mensajes)"
28 14Generalización · El Principio de Sustitución de Liskow (1987) afirma que: "Debe ser posible utilizar cualquier objeto instancia de una subclase en el lugar de cualquier objeto instancia de su superclase sin que la semántica del programa escrito en los términos de la superclase se vea afectado." > cada vez que espero una Figura, puedo usar un Circulo: un Circulo es una Figura ! · El polimorfismo permite redefinir las operaciones en las subclases. · >Es posible introducir involuntariamente incoherencias que violen el principio de sustitución · El polimorfismo que hemos visto siempre debe implementarse teniendo en cuenta este principio
29 Generalización Array mixto? (de entero, floats, etc ... ) ? int char float double int
30 15Generalización Ejemplo: Array mixto de círculos, rectángulos etc .? Figura Figura Figura Figura Figura
31 Estructuras Dinámicas · Video juego mundo ¿cómo se hace? Programación de Sistemas
32 16Estructuras Dinámicas · Video juego mundo Game_Object
33 Programación de Sistemas Dependencia · Dependencia: una propiedad de una clase afecta a otra A V B
34 17Dependencia · Dependencia: una propiedad de una clase afecta a otra EstiloDeLinea Figura grosor discontinua ... dibujar() mover() resize() rotar() .. …
35 Dependencia · Dependencia: una propiedad de una clase afecta a otra Ejemplo: EstiloDeLinea Figura grosor discontinua … .. .. dibujar(e: Estilo de Linea) mover() resize() rotar() …
36 18Dependencia · Dependencia: una propiedad de una clase afecta a otra Ejemplo: declarar una clase "friend" permite a esta acceder a la implementación de la primera, tanto a los atributos y métodos "protegidos" como a los "privados" Friend class: B A B #x:int
37 Relaciones entre clases 1. Asociación 2. Agregación (caso particular de asociación) 3. Composición (caso part. de agregación ) 4. Generalización / especialización 5. Dependencia Los mensajes "viajan" a través de las relaciones
38 19¿Por qué la Orientación a Objetos?
39 ¿Por qué la Orientación a Objetos? . Conceptos comunes de modelado durante el análisis, diseño e implementación (*) · Facilita la transición entre distintas fases · Favorece el desarrollo iterativo del sistema (*) Siempre y cuando su utilice la OO tanto en el modelado como en la implementación
40 20¿Por qué la Orientación a Objetos? · Proximidad de los conceptos de modelado respecto de las entidades del mundo real Siempre y cuando su utilice la OO tanto en el modelado · Mejora captura y validación de requisitos · Acerca el "espacio del problema" y el "espacio de la solución" como en la implementación § Modelado integrado de propiedades estáticas y dinámicas del ámbito del problema Los objetos engloban tanto prop. estáticas como dinámicas . Facilita construcción, mantenimiento y reutilización Gracias a la encapsluación
41 Principios Básicos de la OO Abstracción Abstraer es encontrar las características esenciales de una entidad · las que la distinguen de todos los demás tipos de entidades Jerarquizar es clasificar en diferentes niveles de abstracción: Jerarquía · elementos con el mismo nivel de abstracción deben estar en el mismo nivel de jerarquía Objetos Modularidad · Modular es romper algo complejo en piezas mas manejables. Encapsular es ocultar los detalles de implementación Encapsulación · Los clientes dependen del interfaz. · Aumenta la flexibilidad