25.jan2021. Kompozicija klasa
Completion requirements
Klasa, koja predstavlja celinu, sadrži objekat druge klase kao svoj deo. U ovom slučaju, objekat te druge klase ne može postojati bez objekta klase u kojoj se nalazi.
Drugim rečima, jedan objekat sadrži drugi objekat.
Kompozicijom klasa se predstavlja odnos: ... je deo od ...
Na primer, u školi postoji učionica sa računarima. Ukoliko izgori škola, i učionica sa računarima će biti uništena.
U primeru koji sledi, kreirane su klase Doktor i Pacijent:
using System;
namespace kompozicijaKlasa
{
public class Doktor
{
public string ImeDoktora { get; set; }
public string Specijalizacija { get; set; }
public string ZdravstvenaUstanova { get; set; }
}
public class Pacijent
{
public string Ime;
public string DatumPrijema;
public string DatumOtpusta;
public Doktor PacijentovDoktor { get; set; }
public Pacijent(string ime, string datumPrijema, string datumOtpusta, string imeDoktora, string specijalizacija, string zdravstvenaUstanova)
{
Ime = ime;
DatumPrijema = datumPrijema;
DatumOtpusta = datumOtpusta;
//Sledi kompozicija klasa
//Kada konstruisemo objekat klase Pacijent, istovremeno konstruisemo onjekat klase Doktor
//Oblast vazenja objekta klase Doktor zavisi od objekta klase Pacijent
PacijentovDoktor = new Doktor
{
ImeDoktora = imeDoktora,
Specijalizacija = specijalizacija,
ZdravstvenaUstanova = zdravstvenaUstanova,
};
}
public string ispis()
{
string podaci = "";
podaci += "Podaci o pacijentu: Ime:" + Ime + "\ndatum prijema:" + DatumPrijema + "\ndatum otpusta:" + DatumOtpusta;
if (PacijentovDoktor != null)
{
podaci += "\n\nLekar:" + PacijentovDoktor.ImeDoktora + "\nspecijalista:"
+ PacijentovDoktor.Specijalizacija + "\nZdravstvena ustanova: "
+ PacijentovDoktor.ZdravstvenaUstanova;
}
return podaci;
}
}
class Program
{
static void Main(string[] args)
{
Pacijent patient = new Pacijent("Perica Peric", "15.02.2020", "03.03.2020", "Marko Markovic", "Hirurg", "Klinicki centar Vojvodine");
Console.WriteLine(patient.ispis());
Console.ReadKey();
}
}
}
Kao što možemo videti iz gore navedenog koda, kada bismo obrisali objekat klase Pacijent Doktor, nestao bi i objekat klase doktor (PacijentovDoktor), jer je kreiran prilikom kreiranja objekta klase Pacijent.
Izvor - > https://myview.rahulnivi.net/aggregation-composition-c/Last modified: Tuesday, 26 January 2021, 8:16 AM