relaciones entre clases composiciÓn – asociaciÓn – uso – herencia

24
RELACIONES ENTRE RELACIONES ENTRE CLASES CLASES COMPOSICIÓN – ASOCIACIÓN – USO – HERENCIA

Upload: tomas-sosa-nieto

Post on 24-Jan-2016

232 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: RELACIONES ENTRE CLASES COMPOSICIÓN – ASOCIACIÓN – USO – HERENCIA

RELACIONES ENTRE RELACIONES ENTRE CLASESCLASES

COMPOSICIÓN – ASOCIACIÓN – USO – HERENCIA

Page 2: RELACIONES ENTRE CLASES COMPOSICIÓN – ASOCIACIÓN – USO – HERENCIA

Definición de relacionesDefinició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”

Page 3: RELACIONES ENTRE CLASES COMPOSICIÓN – ASOCIACIÓN – USO – HERENCIA

Definición de relacionesDefinición de relaciones

Empresa

Pacientes

Hijos

Cuenta de Ahorro

Sueldo

Póliza de Seguro

Vehículo

Asignaturas

es madre

atiende

trabaja para

posee

es p

ropie

taria

tiene asig

nada

devenga

dirige

PERSONA

Page 4: RELACIONES ENTRE CLASES COMPOSICIÓN – ASOCIACIÓN – USO – HERENCIA

Tipos de relaciones entre clasesTipos de relaciones entre clases

Composición

Agregación

Asociación

Dependencia – Uso

Herencia

Page 5: RELACIONES ENTRE CLASES COMPOSICIÓN – ASOCIACIÓN – USO – HERENCIA

Composición (Definición)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.

Page 6: RELACIONES ENTRE CLASES COMPOSICIÓN – ASOCIACIÓN – USO – HERENCIA

Composición (Notació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

Page 7: RELACIONES ENTRE CLASES COMPOSICIÓN – ASOCIACIÓN – USO – HERENCIA

Composición (Implementación)Composición (Implementación)Public class Persona {

private int id;private String nombre;private String apellido;public Cuenta cuenta = new Cuenta();

public int getId() {return id;}public void setId(int id) {this.id=id;}public string getNombre() {return nombre;}public void setNombre(String nombre) {this.nombre=nombre;}public string getApellido() {return apellido;}public void setApellido(String apellido) {this.apellido=apellido;}public int getCuenta() {return cuenta;}public void setCuenta(Cuenta cuenta) {this.cuenta=cuenta;}

}

public class Cuenta {private int numCuenta;private double saldo;

public int getNumCuenta() {return NumCuenta;}

public void setNumCuenta(int numCuenta) {this.numCuenta=numCuenta;}

public double getSaldo() {return saldo;}

public void setSaldo(double saldo) {this.saldo=saldo;}

}

Page 8: RELACIONES ENTRE CLASES COMPOSICIÓN – ASOCIACIÓN – USO – HERENCIA

Agregación (Definición)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.

Page 9: RELACIONES ENTRE CLASES COMPOSICIÓN – ASOCIACIÓN – USO – HERENCIA

Agregación (Notació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

Page 10: RELACIONES ENTRE CLASES COMPOSICIÓN – ASOCIACIÓN – USO – HERENCIA

Agregación (Implementación)Agregación (Implementación)public class Automovil {

private String placa;private int numPuertas;private String marca;private String modelo;public Motor motor;

public String getPlaca() {}

public void setPlaca(String placa) {}

public int getNumPuertas() {}

public void setNumPuertas(int num) {}

public String getMarca() {}

public void setMarca(String marca) {}

public String getModelo() {}

public void setModelo(String modelo) {}

}

public class Motor {private int numMotor;private int revolucionesPorMin;

public int getNumMotor() {}

public void setNumMotor(int numMotor) {}

public int getRevoluciones() {}

public void setRevoluciones(int rev) {}

}

Page 11: RELACIONES ENTRE CLASES COMPOSICIÓN – ASOCIACIÓN – USO – HERENCIA

Dependencia (Definición)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

Page 12: RELACIONES ENTRE CLASES COMPOSICIÓN – ASOCIACIÓN – USO – HERENCIA

Dependencia (Notación)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:

Page 13: RELACIONES ENTRE CLASES COMPOSICIÓN – ASOCIACIÓN – USO – HERENCIA

Dependencia (Implementación)Dependencia (Implementación)

En un método de B aparece un objeto auxiliar como argumento

Page 14: RELACIONES ENTRE CLASES COMPOSICIÓN – ASOCIACIÓN – USO – HERENCIA

Dependencia (Implementación)Dependencia (Implementación)

public class Herramienta {private String nombre;private String funcionalidad;

public String getNombre() {return nombre;}

public void setNombre(String nombre) {this.nombre=nombre;}

public String getFuncionalidad() {return funcionalidad;}

public void setFuncionalidad(String funcionalidad) {this.funcionalidad=funcionalidad;}

}

public class Mecanico {…..

public void reparar() { Herramienta ob = new Herramienta()

}

…. }

Page 15: RELACIONES ENTRE CLASES COMPOSICIÓN – ASOCIACIÓN – USO – HERENCIA

Asociación (Definición)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

Page 16: RELACIONES ENTRE CLASES COMPOSICIÓN – ASOCIACIÓN – USO – HERENCIA

Asociación(Notación)Asociación(Notación)Esta relación se representa en UML mediante una línea que une ambas clases

Page 17: RELACIONES ENTRE CLASES COMPOSICIÓN – ASOCIACIÓN – USO – HERENCIA

Asociación (Implementación)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 getIdentificacion() {}

public void setIdentificacion(int identificacion) {}

public String getNombre() {}

public void setNombre(String nombre) {}

}

Page 18: RELACIONES ENTRE CLASES COMPOSICIÓN – ASOCIACIÓN – USO – HERENCIA

Herencia (Definición)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 - SuperClase

• Clase B = clase Derivada – Clase hija – subclase

Page 19: RELACIONES ENTRE CLASES COMPOSICIÓN – ASOCIACIÓN – USO – HERENCIA

Herencia (Definición)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

Page 20: RELACIONES ENTRE CLASES COMPOSICIÓN – ASOCIACIÓN – USO – HERENCIA

Herencia (Notación e implementación)Herencia (Notación e implementación)In

genie

ría D

irecta

public class Estudiante{

}public class EstudianteGraduado extends Estudiante{

}public class EstudianteActivo extends Estudiante{

}

Page 21: RELACIONES ENTRE CLASES COMPOSICIÓN – ASOCIACIÓN – USO – HERENCIA

Herencia (Notación e implementación)Herencia (Notación e implementación)

Page 22: RELACIONES ENTRE CLASES COMPOSICIÓN – ASOCIACIÓN – USO – HERENCIA

Herencia - EjerciciosHerencia - EjerciciosConstruya 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).

Page 23: RELACIONES ENTRE CLASES COMPOSICIÓN – ASOCIACIÓN – USO – HERENCIA

Herencia - EjerciciosHerencia - 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 -)

Page 24: RELACIONES ENTRE CLASES COMPOSICIÓN – ASOCIACIÓN – USO – HERENCIA

Herencia - EjerciciosHerencia - EjerciciosConstruya 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