0% encontró este documento útil (0 votos)
135 vistas5 páginas

Composición Poo Java

El documento explica las relaciones de composición y asociación en programación orientada a objetos. La composición implica que un objeto está compuesto de otros objetos más pequeños, como una laptop que tiene un teclado. La asociación significa que dos objetos trabajan juntos pero son independientes, como un cliente y una tarjeta de crédito. El documento proporciona ejemplos de código en Pascal y Java para implementar estas relaciones.

Cargado por

Loys Pramiso
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
135 vistas5 páginas

Composición Poo Java

El documento explica las relaciones de composición y asociación en programación orientada a objetos. La composición implica que un objeto está compuesto de otros objetos más pequeños, como una laptop que tiene un teclado. La asociación significa que dos objetos trabajan juntos pero son independientes, como un cliente y una tarjeta de crédito. El documento proporciona ejemplos de código en Pascal y Java para implementar estas relaciones.

Cargado por

Loys Pramiso
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 5

Lección 1.

1: La Programación orientada a objetos


Ha obtenido 70 punto(s) sobre 70 hasta ahora.
1.5 Composición

Un sistema orientado a objetos está caracterizado por objetos que interactúan entre sí.
Estas interacciones suponen ciertos tipos de relaciones entre los objetos del sistema. La
semántica que expresa un objeto en el sistema está determinada, en primer lugar, por las
relaciones que éste establece con otros objetos o conjuntos de objetos. Tomemos como
ejemplo un objeto fecha, del que sin establecer ningún tipo de relación, podría decirse que
significa un día del año particular. Pero si relacionamos ese objeto fecha con un
objeto Persona de manera que represente la fecha en que esa persona nació, en ese
contexto dado, el mismo objeto fecha adoptaría un significado diferente, el de
un cumpleaños; aunque sigue siendo una fecha, ahora tiene otra idea asociada. Las
relaciones entre objetos no solo están definidas por los objetos que participan y la
circunstancia que los relaciona, sino también por la cantidad de objetos (cardinalidad de la
relación) y la dirección de la misma. Una relación puede tener cardinalidad:

·         uno a uno, ejemplo: un auto tiene un motor.

·         uno a muchos, ejemplo: un auto tiene muchas ruedas.

·         muchos a muchos, ejemplo: un auto se puede servir en muchas gasolineras y


una gasolinera puede servir a muchos autos.

y direccionalidad:

·         unidireccional, ejemplo: un auto tiene cuatro ruedas.

·         bidireccional

Composición
La composición (también conocida como relación asociativa) es un tipo de relación que se
establece entre dos objetos que tienen comunicación persistente. Se utiliza para expresar
que un par de objetos tienen una relación de dependencia para llevar a cabo su función,
de modo que uno de los objetos involucrados está compuesto por el otro.
De manera práctica, es posible reconocer asociatividad entre dos objetos A y B si la
proposición "A tiene un B" (o viceversa) es verdadera. Por ejemplo: "una computador
tiene un disco duro" es verdadero; por tanto, un objeto computador tiene una relación de
composición con al menos un objeto disco duro.
Los dos conceptos que debes conocer cómo mínimo cuando intentas descifrar la forma en
que tus objetos deben interactuar son Asociación y Composición.
Asociación
La asociación se podría definir como el momento en que dos objetos se unen para
trabajar juntos y así, alcanzar una meta. 
Un punto a tomar muy en cuenta es que ambos objetos son independientes entre sí,
veremos un poco más adelante qué implicación tiene esto. Para validar la asociación, la
frase “Usa un”, debe tener sentido:

·         El ingeniero usa una computadora

·         El cliente usa tarjeta de crédito.

Composición
En caso contrario, la composición es un tipo de relación dependiente en dónde un objeto
más complejo es conformado por objetos más pequeños. En esta situación, la frase
“Tiene un”, debe tener sentido:

·         El auto tiene llantas

·         La portátil tiene un teclado.

Y como ésta mini guía no va a mencionar nada de UML. Vamos a ver directamente en
código cómo se verían representadas ambos tipos de relaciones.

El código es Java, pero funciona para cualquier lenguaje de programación orientado a


objetos.

Cómo implementar Asociación
Representaremos la relación: El cliente usa tarjeta de crédito.
Código pascal :
type
 Customer = Class
   private
     id:integer;
     fistName,lastName:String;
     creditCard: CreditCard;
   public
     constructor Customer();
     procedure setCreditCard(creditCards:CreditCard);
 end;
constructor Customer.Customer();
begin
  //Lo que sea que el construtor haga
end;

procedure Customer.setCreditCard(creditCards: CreditCard);
begin
   creditCard = creditCards;
end;

Código java :
public class Customer {

    private int id;


    private String firstName;
    private String lastName;
    private CreditCard creditCard;

    public Customer() {
        //Lo que sea que el construtor haga
    }

    public void setCreditCard(CreditCard creditCard) {


        this.creditCard = creditCard;
    }

    // Más código aquí


}
La explicación viene más adelante para darles oportunidad que hagan sus propias
comparaciones.
Cómo implementar Composición
Representaremos la relación: La portátil tiene un teclado.
Código Pascal:
type
 Laptop = Class
   private
     manufacturer,model,serviceTag:String;
     keyBoard:KeyBoard;
   public
     constructor Laptop();  
 end;

constructor Laptop.Laptop();
begin
  //Lo que sea que el construtor haga

 keyBoard := KeyBoard.create();

end;
Código Java:

public class Laptop {
    private String manufacturer;
    private String model;
    private String serviceTag;
    private KeyBoard keyBoard = new KeyBoard();

    public Laptop() {
        //Lo que sea que el constructor haga
    }

Muy similar, pero hay una gran diferencia: Podemos crear un objeto de tipo Customer
y asignarle un CreditCard más tarde mediante el método setCreditCard. 

Pero si creamos un objeto Laptop, de entrada sabremos que tendrá un teclado ya creado,


puesto que la variable de referencia keyBoad es declarada e inicializada al mismo
tiempo.

Llamaremos a las clases Customer y Laptop, clases contenedoras.

De ambos casos podemos deducir que:

En la asociación:

1.    Customer es independiente de CreditCard, puesto que el cliente puede existir


sin necesidad de tener asignada una tarjeta de crédito. Démosle tiempo para
que la tramite, ¡Pero no lo dejemos ir!

2.    Se puede asignar o retirar la tarjeta de crédito, sin que la existencia del Cliente
se vea afectada (No debería verse afectada, esto significa que Customer no
debe tronar si no hay un CreditCard presente).

En la composición:
1. Los objetos que componen a la clase contenedora, deben existir desde el principio.
(También pueden ser creados en el constructor, no sólo al momento de declarar las
variables como se muestra en el ejemplo).
2. No hay momento (No debería) en que la clase contenedora pueda existir sin alguno de
sus objetos componentes. Por lo que la existencia de estos objetos no debe ser
abiertamente manipulada desde el exterior de la clase.

También podría gustarte