Documentos de Académico
Documentos de Profesional
Documentos de Cultura
La agregación es una forma fuerte de asociación, es una clase de asociación con que se modelan
las relaciones de parte-todo entre las cosas. Al todo generalmente se le llama compuesto, en
cambio, las partes no tienen nombre estándar suele designarse simplemente como parte o
componente.
COMPOSICIÓN
Composición es una forma fuerte de composición donde la vida de la clase contenida debe
coincidir con la vida de la clase contenedor. Los componentes constituyen una parte del objeto
compuesto. De esta forma, los componentes no pueden ser compartidos por varios objetos
compuestos. La supresión del objeto compuesto conlleva la supresión de los componentes.
Por ejemplo, un dedo es parte de no más de una mano y una mano puede contener cero o más
dedos. Un dedo solo puede existir dentro de una mano, por lo que la vida del dedo estará
restringida a la vida de la mano que lo posee.
Mano Dedo
Ejemplo:
Tenemos una clase Empresa.
Un objeto Empresa está a su vez
compuesto por uno o varios objetos
del tipo empleado.
El tiempo de vida de los objetos
Empleado depende del tiempo de
vida de
Empresa, ya que si no existe una
Empresa no pueden existir sus
empleados.
El Todo
Parte El Todo
class parte class Eltodo
{ { //Atributos
//Atributos private tipo atributo;
private tipo atrib; …….
..... //Objetos
//Constructor por defecto private parte objeto = new parte ();
public garaje () .....
{ //Constructor por defecto
atrib = dato; public Eltodo()
... {
} atributo = dato;
//Constructor con argumentos }
public parte (argumentos) //Constructor con argumentos
{ public Eltodo (argumentos)
atrib = argumento; {
…… atributo =argumento;
} }
//Metodo //metodo
public tipo metodo (parametros) public tipo metodo (paramentros)
{ {
//sentencias //sentencia para atributos
}
} //sentencias para objetos
objeto.metodo();
}
}
Ejemplo 1
CuerpoHumano
using System;
using System.Collections.Generic;
namespace AC1
{
class cabeza
{
string forma;
string color;
public cabeza ()
{
forma = "REDONDA";
color = "NEGRO";
}
class extremidad
{
private int tamano;
private string tipo;
public extremidad ()
{
tamano = 80;
tipo = "superior izquierdo";
}
public extremidad ( int t, string p)
{
tamano = t;
tipo = p;
}
class cuerpohumano
{
float peso;
int talla;
cabeza A = new cabeza ();
tronco B = new tronco ();
extremidad d1 = new extremidad ();
extremidad d2 = new extremidad (80,"Superior Derecho");
extremidad d3 = new extremidad (90,"Inferior Izquierdo");
extremidad d4 = new extremidad (90,"Inferior Derecho");
public cuerpohumano ()
{
peso = 35;
talla = 154;
}
talla = int.Parse(Console.ReadLine());
}
}
class MainClass
{
public static void Main(string[] args)
{
cuerpohumano Z = new cuerpohumano ();
Z.mostrar ();
Z.leer ();
Z.mostrar ();
Console.ReadLine();
}
}
}
Ejemplo 2
Libro
tapa pagina
using System;
using System.Collections.Generic;
namespace AC2
{
class tapa
{
string tipo;
string color;
string ubic;
public tapa ()
{
tipo = "carton";
color = "blanco";
ubic = "frontal";
}
public tapa (string a, string b, string c)
{ tipo = a;
color = b;
ubic = c;
}
public void leer ()
{
Console.WriteLine ("Tipo de tapa: ");
tipo = Console.ReadLine();
Console.WriteLine ("Color de tapa: ");
color = Console.ReadLine();
Console.WriteLine ("Ubicacion Frontal o Posterior: ");
ubic = Console.ReadLine();
}
public void mostrar ()
{
Console.WriteLine ("Tipo de tapa: " + tipo);
Console.WriteLine ("Color de tapa: " + color);
Console.WriteLine ("Ubicacion de la tapa: " + ubic);
}
}
class pagina
{ private string npag;
private string tam;
public pagina ()
{ npag = "i";
tam = "27x21";
}
public pagina (string a, string b)
{ npag = a;
tam = b;
}
public void leer ()
{ npag = Console.ReadLine();
tam = Console.ReadLine();
}
public void mostrar ()
{
Console.WriteLine ("Numero de pagina: " + npag);
Console.WriteLine ("Tamano: " + tam);
}
}
class libro
{
private string titulo;
private string autor;
private int ned;//numero de edicion
private int cantpag;//cantidad de paginas
private tapa t1;
private tapa t2;
private pagina[] p = new pagina [100];
public libro ()
{
int i;
titulo = "Programacion";
autor = "Joyanes";
ned = 3;
cantpag = 5;
t1 = new tapa ();
t2 = new tapa ("Dura", "Azul", "Posterior");
for (i = 1 ; i <= cantpag ; i++)
p [i] = new pagina ("1", "24x20");
}
public libro (string a, string b, int c, int d, tapa e, tapa f, pagina g)
{
int i;
titulo = a;
autor = b;
ned = c;
cantpag = d;
t1 = e;
t2 = f;
for (i = 1 ; i <= cantpag ; i++)
p [i] = g;
}
public void leer ()
{
int i;
titulo = Console.ReadLine();
autor = Console.ReadLine();
ned = int.Parse(Console.ReadLine());
cantpag = int.Parse(Console.ReadLine());
t1.leer ();
t2.leer ();
for (i = 1 ; i <= cantpag ; i++)
p [i].leer ();
}
public void mostrar ()
{
int i;
Console.WriteLine ("Titulo : " + titulo);
Console.WriteLine ("Autor : " + autor);
Console.WriteLine ("Numero de Edicion : " + ned);
Console.WriteLine ("Cantidad de Paginas : " + cantpag);
t1.mostrar ();
t2.mostrar ();
Console.WriteLine ("Paginas del Libro ");
for (i = 1 ; i <= cantpag ; i++)
{
Console.WriteLine ("Pagina Nro : " + i);
p [i].mostrar ();
}
Console.WriteLine("---------------o---------------o--\n\n");
}
}
class MainClass
{
public static void Main(string[] args)
{
libro A = new libro ();
tapa t = new tapa ();
pagina p = new pagina ();
libro B = new libro ("fisica", "abc", 1, 20, t, t, p);
A.mostrar ();
B.mostrar ();
A.leer ();
A.mostrar ();
}
}
}
using System;
using System.Collections.Generic;
namespace AC3
{
class oficina
{
private int nof;
private int npiso;
private string tipo;
public oficina ()
{
nof = 1;
npiso = 1;
tipo = "xxx";
}
{ ndpto = 1;
npiso = 1;
nhab = 1;
}
public depart (int a, int b, int c)
{ ndpto = a;
npiso = b;
nhab = c;
}
public void leer ()
{
Console.WriteLine ("nro departamento:");
ndpto = int.Parse(Console.ReadLine());
Console.WriteLine ("Nro de piso :");
npiso = int.Parse(Console.ReadLine());
Console.WriteLine ("Nro de habitaciones :");
nhab = int.Parse(Console.ReadLine());
}
}
class Edificio
{ private string nombre;
private string dir;
private int npisos;
private int nofs;
private int ndptos;
private oficina[] o = new oficina [50];
private depart[] d = new depart [30];
private garaje g;
public Edificio ()
{ int i;
nombre = "zzzzz";
dir = "wwwww";
npisos = 25;
nofs = 15;
ndptos = 10;
for (i = 1 ; i <= npisos ; i++)
o [i] = new oficina ();
for (i = 1 ; i <= ndptos ; i++)
d [i] = new depart ();
g = new garaje (10, 100, "subterraneo");
}
public Edificio (string a, string b, int c, int f, int e, oficina x, depart y, garaje z)
{
int i;
nombre = a;
dir = b;
npisos = c;
nofs = f;
ndptos = e;
for (i = 1 ; i <= nofs ; i++)
o [i] = x;
for (i = 1 ; i <= ndptos ; i++)
d [i] = y;
g = z;
}
public void leer ()
{
int i;
Console.WriteLine ("Nombre del edificio:");
nombre = Console.ReadLine ();
Console.WriteLine ("Direccion:");
dir = Console.ReadLine ();
Console.WriteLine ("Numero de Pisos:");
npisos = int.Parse(Console.ReadLine());
Console.WriteLine ("Cantidad de oficinas:");
nofs = int.Parse(Console.ReadLine());
Console.WriteLine ("Cantidad de Dptos:");
ndptos = int.Parse(Console.ReadLine());
Console.WriteLine("OFICINAS");
for (i = 1 ; i <= nofs ; i++)
o [i].leer ();
Console.WriteLine("DEPARTAMENTOS");
for (i = 1 ; i <= ndptos ; i++)
d [i].leer ();
Console.WriteLine("GARAJE");
g.leer ();
}
public void mostrar ()
{
int i;
Console.WriteLine("Nombre: " + nombre);
Console.WriteLine("Direccion: " + dir);
Console.WriteLine("Nro.Pisos: " + npisos);
Console.WriteLine("Numero de oficinas: " + nofs);
Console.WriteLine("Numero de departamentos: " + ndptos);
Console.WriteLine("OFICINAS ");
for (i = 1 ; i <= nofs ; i++)
o [i].mostrar ();
Console.WriteLine("DEPARTAMENTOS");
for (i = 1 ; i <= ndptos ; i++)
d [i].mostrar ();
Console.WriteLine("GARAJE");
g.mostrar ();
}
}
class garaje
{
private int nest;
private int m2;
public garaje ()
{
nest = 1;
m2 = 1;
tipo = "YYY";
}
}
}
class MainClass
{
public static void Main(string[] args)
{
Edificio x, y;
x = new Edificio ();
y = new Edificio ();
x.mostrar ();
y.mostrar ();
x.leer ();
x.mostrar ();
}
}
}
AGREGACION
La agregación es un tipo de asociación que indica que una clase es parte de otra clase
(composición débil). Los componentes pueden ser compartidos por varios compuestos (de la
misma asociación de agregación o de varias asociaciones de agregación distintas). La destrucción
del compuesto no conlleva la destrucción de los componentes. Habitualmente se da con mayor
frecuencia que la composición.
Por ejemplo:
Una agregación compartida es una en las que las partes pueden ser partes en cualquier todo.
El Todo
Parte El Todo
Coche Rueda
Equipo Persona
Ejemplo 1
Computador
Lector Impresora
using System;
using System.Collections.Generic;
namespace AC4
{
class Lectora
{
private string marca;
private int vel;
private string color;
public Lectora ()
{ marca = "eeee";
vel = 52;
color = "ssss";
}
public void Leer ()
{ Console.WriteLine ("Escriba la marca del lector ");
marca = Console.ReadLine ();
Console.WriteLine ("Escriba la velocidad ");
vel = int.Parse(Console.ReadLine());
Console.WriteLine ("Escriba el color del lector ");
color = Console.ReadLine ();
}
public void Mostrar ()
{ Console.WriteLine ("La marca del lector es: " + marca);
Console.WriteLine ("La velocidad es: " + vel);
Console.WriteLine ("El color es: " + color);
}
}
class Impresora
{ private string tipo;
private string marca;
public Impresora ()
{ tipo = "aaaa";
marca = "nnnn";
}
public void Leer ()
{ Console.WriteLine ("Escriba el tipo de impresora ");
tipo = Console.ReadLine ();
Console.WriteLine ("Escriba la marca de la impresora ");
marca = Console.ReadLine ();
}
class Computador
{
private string marca;
private string color;
Impresora I = new Impresora ();
Lectora L = new Lectora ();
public Computador (Impresora a, Lectora b)
{
marca = "xxxx";
color = "zzzz";
I = a;
L = b;
}
public void Leer ()
{
Console.WriteLine ("Escriba la marca ");
marca = Console.ReadLine ();
Console.WriteLine ("Escriba el color ");
color = Console.ReadLine ();
I.Leer ();
L.Leer ();
}
public void Mostrar ()
{
Console.WriteLine ("Marca: " + marca);
Console.WriteLine ("Color: " + color);
I.Mostrar ();
L.Mostrar ();
}
}
class MainClass
{
public static void Main(string[] args)
{
Impresora X = new Impresora ();
Lectora Y = new Lectora ();
Computador Z = new Computador (X, Y);
Z.Mostrar ();
Z.Leer ();
Z.Mostrar ();
}
}
}