0% encontró este documento útil (0 votos)
336 vistas11 páginas

Relaciones Entre - Clases C# Y UML

Descargar como pdf o txt
Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1/ 11

C# Y UML

DEPENDENCIA

Definición: Es una relación de uso entre dos clases (una usa a la otra). Esta relación es la más básica entre clases y comparada con los demás tipos de
relación, la más débil. Es una relación de uso, es decir que una clase utiliza a otra. Y si esta ultima se altera, la anterior se puede ver afectada.

En código se suelen traducir principalmente como las clases donde se hace la instanciación de un objeto. En nuestro ejemplo l a clase viaje realiza los new de
los distintos objetos. En este momento puede que te preguntes como puede hacer un new de una clase abstracta, jeje. No realiz a los new de la clase
abstracta, si no de sus hijas. Seria algo así como
MedioDeTransporte medio = new Auto();

También se sostiene que este tipo de relación hace referencias, a los parámetros que se pasan en un método, bajo este concept o, en java, podría ser algo
así como:
public void crearViaje(MedioDeTransporte medio) {}
Por ultimo también se sostiene que podemos codificar esta relación realizando un return del tipo de dato en algún método.
Representación UML

Se representa con una flecha discontinua que parte desde una clase y apunta a otra. El sentido de la flecha nos indica quien usa a quien.

Interpretación

 La ClaseA usa a la ClaseB.


 La ClaseA depende de la ClaseB.
 Dada la dependencia, todo cambio en la ClaseB podrá afectar a la ClaseA.
 La ClaseA conoce la existencia de la ClaseB pero la ClaseB desconoce que existe la ClaseA.
En la práctica este tipo de relación se interpreta como que la ClaseA hace uso de la ClaseB ya sea instanciandola directamente, o
bien, recibiéndola como parámetro de entrada en uno de sus métodos.

Implementación

 Tenemos una clase Impresora..


 Tenemos una clase Documento con un atributo texto.
 La clase Impresora se encarga de imprimir los Documentos

Traduciendo a código:

class Impresora {
Traduciendo a código:
public Impresora() {
Class Documento {
private String texto; }

public void imprimir(Documento documento) {


public Documento(String texto) {
String texto = documento.getTexto();
this.texto = texto;
System.out.println(texto);
}
}
En funcionamiento
public String getTexto() {
return this.texto; }
Documento
} miDocumento = new Documento("Hello World!");
Impresora
} miImpresora = new Impresora();
miImpresora.imprimir(miDocumento);
ASOCIACION

Definición: Es una relación uni direccional de estructura entre clases en la que una entidad se construye a partir de otra u otras. Se representa con una flecha continua qu e
parte desde una clase y apunta a otra. El sentido de la flecha nos indica la clase que se compone (base de la flecha) y sus c omponentes (punta de la flecha).

Representación UML

Interpretación

 La ClaseA depende de la ClaseB.


 La ClaseA está asociada a la ClaseB.
 La ClaseA conoce la existencia de la ClaseB pero la ClaseB desconoce que existe la ClaseA.
 Todo cambio en la ClaseB podrá afectar a la ClaseA.

Esto significa que la ClaseA tendrá como atributo un objeto o instancia de la ClaseB (su componente). La ClaseA podrá acceder a las funcionalidades o atributos de su
componente usando sus métodos.

Implementación

1. Tenemos una clase Taxi con un atributo matricula.


2. Tenemos una clase Chofer con un atributo nombre.
3. Cada Taxi necesita ser conducido por un Chofer.
4. Taxi necesita acceder a algunos de los atributos de su Chofer (por ejemplo, su nombre).
Traduciendo a código (Direccional):
Traduciendo a código (Bidireccional):
class Chofer {
private String nombre; class Chofer {
} private String nombre;
private Taxi taxi;
public Chofer(String nombre) { }
class Taxi {
this.nombre = nombre; private Chofer chofer;
}
private String matricula;
class Taxi {
private Chofer chofer; }
private String matricula;
}
En funcionamiento
Chofer miChofer = new Chofer("Pedro");
Taxi miTaxi = new Taxi(miChofer, "AHJ-1050");
miTaxi.printChofer();
miTaxi.printMatricula();
AGREGACION
Definición: Es muy similar a la relación de Asociación solo varía en la multiplicidad ya que en lugar de ser una relación "uno a uno" es de "uno a muchos".

Representación UML

Se representa con una flecha que parte de una clase a otra en cuya base hay un rombo de color blanco.

Interpretación

 La ClaseA agrupa varios elementos del tipo ClaseB

 La forma de traducir ambos tipos de relación a código es tener un atributo en la clase compuesta donde almacenaremos una colección
de los objetos que la componen. Dependiendo del lenguaje podremos utilizar diferentes estructuras de datos que nos permitan almacenar
la colección de objetos, aunque generalmente se utilizan arreglos para este fin. Además, debemos de proporcionar un método para agregar
elementos a la colección.

Implementación

 Tenemos una clase Agenda.


 Tenemos una clase Contacto.
 Una Agenda agrupa varios Contactos.
Traduciendo a Código

Traduciendo a código:

class Agenda
{
Traduciendo a código: private Contactos contactos[];

Class Contacto public Construct() {


{ }
private nombre;
private $_telefono; public addContacto(Contacto contacto)
{
public Construct(nombre, telefono) { This.contactos[] = contacto;
this.nombre = nombre; }
this.telefono = telefono; }
}
}

En funcionamiento
/* Creamos una instancia de Agenda */
$miAgenda = new Agenda();

/* Agregamos algunos Contactos*/


$miAgenda->addContacto(new Contacto("Pepe", "3-21-54-87"));
$miAgenda->addContacto(new Contacto("Juan", "3-32-65-98"));
$miAgenda->addContacto(new Contacto("Luis", "3-78-13-46"));
COMPOSICION

Definición: Similar a la relación de Agregación solo que la Composición es una relación mas fuerte. Aporta documentación conceptual ya que es una "relación
de vida", es decir, el tiempo de vida de un objeto está condicionado por el tiempo de vida del objeto que lo incluye.
Representación: Se representa con una flecha que parte de una clase a otra en cuya base hay un rombo de color negro.

Interpretación

 La ClaseA agrupa varios elementos del tipo ClaseB.


 El tiempo de vida de los objetos de tipo ClaseB está condicionado por el tiempo de vida del objeto de tipo ClaseA.
 Se crea un objeto de la claseA, el cual estra compuesto por uno o mas objetos de la claseB, ClaseC, tec.

Implementación

 Tenemos un objeto automovil clase Automovil.


 Un objeto Automovil está a su vez compuesto por un motor objetos del tipo Motor y un obejto estereo de tipo Estero.
 El tiempo de vida de los objetos automóvil y estéreo dependen del tiempo de vida del objeto automovil, ya que si no existe un automovil
no pueden existir su motor, ni su estereo.
Traduciendo a Código

public class Automovil{


public Motor motor; // Referencias a la clase Motor
public Estereo estéreo; // Referencia a la clase Estero
public Automovil (){ // Se define el Constructor
motor = new Motor () // Se instancia un obejeto de la clase Motor

estereo = new Estereo () // Se instancia un obejeto de la clase Estereo


}
}
Por tanto, al crear un objeto Automovil, se crea (estará compuesto) con los objetos motor y estéreo.

REALIZACIÓN (Interface)

Definición: Es una relación de contrato con otra clase. Se la utiliza para implementar una interfaz. En lenguajes como java o php utilizamos la
palabra reservada implements, pero en C# se implementa igual que la herencia.
Traduciendo a Código en Java

public interface ICascador {


public void cascarNueces();
}
class Zapato implements ICascador {
private int talla;
private String color;
public void cascarNueces() {
System.out.println("Crick Crack");
}
}

Traduciendo a Código en C#
public interface ICascador {
public void cascarNueces();
}
class Zapato:ICascador {
private int talla;
private String color;
public void cascarNueces() {
System.out.println("Crick Crack");
}
}

También podría gustarte