Está en la página 1de 3

Creo que si bien vos hablas del diagrama de clases y las relaciones entre clases, creo que no te referis

precisamente a la herencia en absoluto, sino que te referis a la composicin de objetos, la agregacin de objetos y al uso de objetos mediante el artifacto uml <<usage>>. Bueno como vers la agregacin y la composicin son en si parecidos, nada mas que en la composicin es la clase externa misma la que se encarga de manejar el ciclo de vida de los objetos que la componen, en cambio en la agregacin no, los objetos que componen a nuestro otro objeto pueden existir fuera del ambito de vida de este. Esto en java es muy facil de implementar, como? Facil mediante atributos de clase. Supongamos el clasico ejemplo de un auto: Tenemos un objeto auto, un auto est compuesto por un motor, cuatro ruedas, y dems. Entonces nosotros podemos definir a los objetos de la siguiente forma: (NOTA: Esto seria una composicin ya que el objeto auto no puede vivir ni funcionar sin las ruedas, entonces el mismo es el encargado de manejar el ciclo de vida de los objetos rueda) public class Car { private List<Wheel> wheels = new ArrayList<Wheel>(); private Engine engine = new Engine(); public Car() { super(); for( int counter = 0; counter < 4; counter ++) { Wheel wheel = new Wheel(2); wheels.add(wheel); }; public List<Wheel> getWheels() { return wheels; }

public Engine getEngine() { return engine; } }; Como vers ahi el objeto auto mismo creo una coleccion de objetos wheel y se encargo de crearlos el mismo, en este caso, es una composicin 1 a muchos. Y se representa mediante una lista, un vector, un array y / o dems.

En caso de una agregacin es simple, la idea seria la misma, solo que ahora los objetos agregados los recibe como parametro tanto en el constructor como en algun getter / setter. Supongamos en este caso la idea de un camion de reparto de mercadera, tenemos un camion contiene 0 o mas cajones de mercaderia. public class Truck { private List<Wheel> wheels = new ArrayList<Wheel>(): //Esta es una composicion, el //objeto camion no puede vivir sin ruedas private List<Box> boxes = null; //Esta es una agregacion, el camion no se hace //responsable de la creacion de las cajas que puede o no contener, las recibe por //parametro

public Truck(List<Box> boxes) { super(); for(int counter = 0; counter < 4; counter++) { Wheel wheel = new Wheel(2); wheels.add(wheel); }; this.boxes = boxes; } public List<Wheel> getWheels() { return wheels; } public List<Box> getBoxes() { return boxes; }; public void setBoxes(List<Box> boxes) { this.boxes = boxes; }; }: Entonces en una clase main podemos tener public class Delivery { public static void main(String[] args) {

Truck truck = new Truck(null); //Por el momento no le asigno ninguna caja de //mercaderia //Creo caja de mercaderia List<Box> boxes = new ArrayList<Box>(); boxes.add(new Box()); boxes.add(new Box()); boxes.add(new Box()); //Agrego las cajas al camion truck.setBoxes(boxes); return 0; }; };

También podría gustarte