RELACIONES ENTRE CLASES COMPOSICIN ASOCIACIN USO HERENCIA Definicin
- Slides: 24
RELACIONES ENTRE CLASES COMPOSICIÓN – ASOCIACIÓN – USO – HERENCIA
Definición de relaciones Una relación es un vinculo entre dos objetos, este vinculo, se presenta por que, ambos objetos, se necesitan mutuamente para lograr la realización de una actividad o la realización de unos servicios. Estas relaciones nacen por la misma dinámica social o por que la naturaleza así lo estableció. Que nunca se me olvide: LAS RELACIONES DEPENDEN DEL CONTEXTO “Dominio del Problema”
Definición de relaciones Vehículo Hijos es ia i p ro m r ad es ati en d e Pacientes e Empresa Cuenta de Ahorro p n tie trabaja para ee pos ar et e a d na ig as devenga Póliza de Seguro Sueldo diri ge PERSONA Asignaturas
Tipos de relaciones entre clases q Composición q Agregación q Asociación q Dependencia – Uso q Herencia
Composición (Definición) • Se constituye entre el todo y la parte. • La clase todo controla la existencia de las clases parte. Mientras existe el todo=existe la parte. • Al crear un objeto del todo se crea un objeto de la parte • Objeto A tiene un/posee un/contiene un objeto de la clase B • Los objetos suelen estar compuestos de conjuntos de objetos más pequeños; un coche es un conjunto de motor y carrocería, un motor es un conjunto de piezas, y así sucesivamente. • Si se elimina el todo se eliminan las partes. • Contiene un atributo, que puede ser una colección y además de ello la clase que contiene la colección debe tener un método que agregue los elementos a la colección.
Composición (Notación) o La notación para representar las composiciones, es una línea con un rombo lleno en el extremo apuntando a la clase todo
Composición (Implementación) Public class Persona { private int id; private String nombre; private String apellido; public Cuenta cuenta = new Cuenta(); public int get. Id() { return id; } public void set. Id(int id) { this. id=id; } public string get. Nombre() { return nombre; } public void set. Nombre(String nombre) { this. nombre=nombre; } public string get. Apellido() { return apellido; } public void set. Apellido(String apellido) { this. apellido=apellido; } public int get. Cuenta() { return cuenta; } public void set. Cuenta(Cuenta cuenta) { this. cuenta=cuenta; } } public class Cuenta { private int num. Cuenta; private double saldo; public int get. Num. Cuenta() { return Num. Cuenta; } public void set. Num. Cuenta(int num. Cuenta) { this. num. Cuenta=num. Cuenta; } public double get. Saldo() { return saldo; } public void set. Saldo(double saldo) { this. saldo=saldo; } }
Agregación (Definición) • Existe una relación de agregación si en el enunciado del problema hay expresiones de la forma "tiene_un", "es_parte_de". . . • Se constituye entre el todo y la parte. • La existencia del todo no condiciona la existencia de la parte. • Si se elimina el todo NO se eliminan las partes. • Contiene un atributo, que puede ser una colección, es decir un array, vector, etc, y además de ello la clase que contiene la colección debe tener un método que agregue los elementos a la colección.
Agregación (Notación) o La notación para representar las agregaciones, es una línea con un rombo vacío en el extremo apuntando a la clase todo
Agregación (Implementación) public class Automovil { private String placa; private int num. Puertas; private String marca; private String modelo; public Motor motor; public class Motor { private int num. Motor; private int revoluciones. Por. Min; public int get. Num. Motor() { } public void set. Num. Motor(int num. Motor) { } public String get. Placa() { } public int get. Revoluciones() { } public void set. Placa(String placa) { } public int get. Num. Puertas() { } public void set. Num. Puertas(int num) { } public String get. Marca() { } public void set. Marca(String marca) { } public String get. Modelo() { } public void set. Modelo(String modelo) { } } public void set. Revoluciones(int rev) { } }
Dependencia (Definición) • Es una relación de uso, es decir que una clase utiliza a otra. Y si esta última se altera, la anterior se puede ver afectada. • Una clase depende de otra para llevar a cabo una tarea o para realizar su funcionamiento. • es una relación momentánea que se establece entre un “cliente” y un “servidor”. • La relación Dependencia también se conoce con el nombre uso • Se pasa la creación del objeto como parámetro • Este tipo de relación hace referencia, a los parámetros que se pasan en un método
Dependencia (Notación) o La notación para representar la dependencia, es una línea discontinua o Ej) La clase B necesita de un objeto de la clase A para llevar a cabo una funcionalidad, entonces la notación es:
Dependencia (Implementación) En un método de B aparece un objeto auxiliar como argumento
Dependencia (Implementación) public class Herramienta { private String nombre; private String funcionalidad; public String get. Nombre() { return nombre; } public class Mecanico { …. . public void reparar() { Herramienta ob = new Herramienta() public void set. Nombre(String nombre) { this. nombre=nombre; } public String get. Funcionalidad() { return funcionalidad; } public void set. Funcionalidad(String funcionalidad) { this. funcionalidad=funcionalidad; } } } …. }
Asociación (Definición) • Son relaciones del tipo "pertenece_a" o "está_asociado_con". Una asociación representa una relación entre clases. Las asociaciones son los mecanismos que permite a los objetos comunicarse entre sí. • se implementa ya sea declarando un atributo de tipo A en la clase B o haciendo un array de objetos de tipo A en la clase B. • Normalmente la conexión entre los objetos se realiza recibiendo la referencia de uno de ellos en el constructor u otro método. • Al menos un atributo de la clase B es una referencia a un objeto de la clase A • Se deben indicar las cardinalidades
Asociación(Notación) Esta relación se representa en UML mediante una línea que une ambas clases
Asociación (Implementación) • Se implementa introduciendo referencias a objetos de la clase destino de la relación como atributos de la clase origen • Si la relación tiene cardinalidad superior a 1, será necesario utilizar una colección. public class Alcalde { private int identificacion; private String nombre; private String apellido; public Municipio gobierna; public int get. Identificacion() { } public void set. Identificacion(int identificacion) { } public String get. Nombre() { } public void set. Nombre(String nombre) { } }
Herencia (Definición) • Relaciones del tipo es un/ es una • Permite que una clase obtenga la funcionalidad de otra añadiendo nuevos atributos y métodos (o modificando el comportamiento de los existentes) • Clase A = Clase Base – Clase Padre - Super. Clase • Clase B = clase Derivada – Clase hija – subclase
Herencia (Definición) • Un objeto de una subclase hereda todos los atributos y métodos de la superclase • Una subclase es una forma restringida de una superclase
Herencia (Notación e implementación) Ingeniería Directa public class Estudiante{ } public class Estudiante. Graduado extends Estudiante{ } public class Estudiante. Activo extends Estudiante{ }
Herencia (Notación e implementación)
Herencia - Ejercicios Construya un diagrama de clase para la siguiente situación: 1. Una empresa dedicada a la venta de vehículos tiene a disposición de los clientes varias clases (camión, automóvil, buces para servicio municipal y buces para servicio intermunicipal). La empresa maneja información común para todas estas clases de vehículos, tales como: marca del vehículo, color del vehículo, placa del vehículo y modelo del vehículo. Para cada clase de vehículo maneja la siguiente información especifica: camión (capacidad y tipo de carga), automóvil (numero de puertas, disposición –particular, servicio público -, buces municipales (empresa, chofer, ruta), buces intermunicpales (empresa, chofer, ciudad origen, ciudad destino).
Herencia - Ejercicios Construya un diagrama de clase para la siguiente situación: 2. Una empresa maneja dos líneas de productos perecederos y no perecederos. La información que utiliza para llevar un registro de dichos productos es: IVA, nombre del producto, fecha de emisión (compuesta por subatributos – día/mes/año -) y precio del producto. Adicionalmente los productos perecederos manejan la siguiente información: fecha de vencimiento (compuesta por subatributos – día/mes/año -)
Herencia - Ejercicios Construya un diagrama de clase para la siguiente situación: 3. Un hospital necesita que se le organice la información que maneja en cuanto al personal que diariamente labora dentro de él y los pacientes que son atendidos. En cuanto a los empleados maneja la información como el Nombre, Dirección, Teléfono, Edad y los divide en dos categorías Médicos y Enfermeras, con respecto a estos maneja información como la fecha de ingreso, fecha de terminación del contrato (ambos compuesto de día/mes/año), hora de entrada, hora de salida y salario. Adicionalmente para los médicos maneja la siguiente información especialidad, nivel (1 menos de dos años, 2 entre 1 y 4 años y 3 más de tres años). En cuanto a las enfermeras se maneja la categoría (auxiliar, instrumentadora, profesional). Para los pacientes maneja la siguiente información: Nombre, Dirección, Teléfono, Edad, Fecha de ingreso, fecho de alta (ambos compuesto de día/mes/año), motivo de consulta, medicamentos
- Relaciones entre clases
- La composicion asimetrica consiste en
- Composicion de color
- Objetivo de uml
- Partición de un conjunto ejemplos
- Nbenchmarking
- Suponga que se tiene que medir la longitud de un puente
- Definicion de monemas
- Cultura aprendida
- Definicin de estado
- Sexo definicin
- Definicin de cultura
- Definicin de estado
- Definicion de amor francisco de quevedo
- Definicin de derecho
- Definicin
- Definicin
- Campo semantico de bailarinas
- Dispersigrama
- Textos formados por un solo enunciado
- Cadena trofica en el mar
- Relaciones entre la fotosíntesis y la respiración celular
- Relaciones entre iguales
- Estomas
- Marx