Programación Orientada a Objetos - Otras relaciones entre clases

8,048 views 24 slides Mar 07, 2019
Slide 1
Slide 1 of 24
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24

About This Presentation

Esta presentación es parte del contenido del curso de Programación Avanzada impartido en la Universidad Rafael Landívar durante el año 2015.

Creado por Ing. Alvaro Enrique Ruano


Slide Content

Otras relaciones en la POO Unidad 2 Ing. Alvaro Enrique Ruano

Contenido Asociaciones Bidireccionales Asociaciones Unidireccionales Clases de Asociación Agregación Composición

Asociaciones Al modelar un sistema basado en POO pueden existir relaciones entre clases, las cuales pueden ser distintas a la herencia. Esas relaciones son llamadas asociaciones. Las asociaciones deben ser modeladas para eliminar la ambigüedad del modelo. Existen cinco tipos que podemos especificar utilizando UML.

Asociaciones Bidireccionales Las dos clases están enteradas de la existencia de la relación. Es el tipo de asociación por defecto. Se utiliza una línea sólida sin indicadores en los extremos. Se puede especificar palabras para describir los roles dentro de la relación. Se puede especificar multiplicidad de la relación.

Asociaciones Bidireccionales

Asociaciones Bidireccionales Ejemplos de indicadores de multiplicidad

Asociaciones Unidireccionales Dos clases están relacionadas, pero solamente una sabe de la existencia de la relación. Estas relaciones permiten desacoplamiento de clases para ofrecer un diseño más flexible a futuros cambios. También se incluye el rol e indicador de multiplicidad, pero solo del lado conocido. Se utiliza una fecha con punta abierta para diferenciarla de las relaciones de herencia e implementación.

Asociaciones Unidireccionales

Agregación Utilizada para modelar la relación entre un todo y sus partes. Indica que una clase pertenece a otra. En este caso se asume una independencia entre el ciclo de vida de las clases relacionadas (una no depende de la otra). Se utiliza una línea sólida con una flecha abierta en un extremo (clase contenida) y un rombo vacío en el otro (clase que contiene).

Agregación

Composición Es un tipo especial de agregación. La diferencia radica en la dependencia en los ciclos de vida de las clases. El hijo no podría existir sin el padre. Se utiliza una línea sólida con una flecha abierta en un extremo (clase contenida) y un rombo lleno en el otro (clase que contiene).

Composición

Clases de Asociación Son clases que se incluyen en relaciones más complejas para incluir información valiosa sobre la relación. La nueva clase es una clase normal. Se ejemplifica por medio de una mezcla de línea sólida (clases a relacionar) unida a una línea punteada (nueva clase).

Clases de Asociación

Ejercicio Responda y explique las cuestiones que se le plantean a continuación. Mencione y explique 4 modificadores de acceso en objetos . ¿Qué es Herencia y qué tipos existen?. Explique. Menciones y explique 2 modificadores de Herencia. ¿Qué es Polimorfismo?. Explique con un ejemplo.

Ejercicio Indique cuál es el nombre del concepto que se le presenta a continuación. ¿Si un determinado atributo o método puede ser invalidado en una clase derivada se dice que es? Modificador de acceso en el cuál el atributo puede ser accedido por cualquier código que se encuentre dentro del mismo componente de software.

Ejercicio Encuentre el o los errores en el siguiente bloque de código. C# private class Contenedor { public double Volumen { get ; private set ; }   public Contenedor() { Volumen = 0; } } public class Caja : Contenedor { public Caja( double ancho, double alto, double profundidad) : base () { Volumen = ancho * alto * profundidad; } }

Ejercicio Encuentre el o los errores en el siguiente bloque de código. C# public sealed class Contenedor { public double Volumen { get ; protected set ; } public string Nombre { get ; protected set ; }   public Contenedor( double volumen) { Volumen = volumen; Nombre = "Contenedor" ; } } public class Caja : Contenedor { public Caja( double ancho, double alto, double profundidad) : this (ancho * alto * profundidad) { Nombre = "Caja" ; } }

Ejercicio Encuentre el o los errores en el siguiente bloque de código.

Ejercicio

Ejercicio

Ejercicio Indique el tipo de relación que existe entre las entidades (herencia, agregación, composición, clase de asociación, etc.) y dibuje la representación gráfica respectiva Alumno, curso universitario Tarjeta de crédito, compra, voucher País, himno nacional, diputado Persona, Hombre, Mujer , Matrimonio

Ejercicio Práctico Utilizando el lenguaje C#, en grupos de 4 personas, resuelva los problemas de archivo “Sesión 08 – Ejercicio Práctico.pdf ”. Deberá entregar una única solución de VSS incluyendo su respuesta a todos los ejercicios. Se calificará que las clases estén realizadas conforme a las especificaciones. La interfaz de usuario para probar las clases queda a su discreción (consola o Windows Forms ) y no será calificada, es solamente una ayuda para que usted pueda probar las clases.

Gracias por su atención