Композиција класе¶
Појам „композиција класе” односи се на принцип пројектовања софтвера где класа садржи један или више објеката других класа, како би се постигла комплекснија функционалност. Композиција класе је различита од наслеђивања класе, где изведена класа наслеђује својства и методе базне класе.
Када се користи композиција класе, објекти других класа су уграђени као чланови класе. Овај принцип се често користи да би се промовисала поновна употреба кода и смањила зависност између класа. Кључна предност композиције је та што омогућава флексибилнији и модуларан дизајн софтвера.
Нека је дефинисана класа Proizvod…
class Proizvod
{
public void Ispis()
{
Console.WriteLine("Proizvod...");
}
}
…и класа Racun:
class Racun
{
private Proizvod proizvod;
public Racun()
{
proizvod = new Proizvod();
}
public void Ispis()
{
proizvod.Ispis();
Console.WriteLine("Kupio si proizvod...");
}
}
Класа Racun не наслеђује класу Proizvod, већ користи објекат класе Proizvod
да би остварила део своје функционалности - објекат класе Proizvod уграђен је
као члан у класу Racun.
Нека је дефинисана и класа Program…
class Program
{
static void Main()
{
Racun racun = new Racun();
racun.Ispis();
}
}
…у којој је инстанциран објекат racun класе Racun и позвана метода
racun.Ispis(). Шта ће се исписати у конзоли?
Proizvod...
Kupio si proizvod...
Значи, композиција омогућава класи да користи функционалност других класа тако што ће имати инстанце тих класа као чланове. Ово води до слабије повезаности, а већег степена флексибилности, јер промене у једној класи не морају нужно утицати на друге класе које је користе. Код композиције, када се обрише објекат који садржи друге објекте, бришу се сви објекти.
Композиција је веома важан принцип у дизајну софтвера. У одређеним случајевима се препоручује као боља алтернатива наслеђивању, посебно када је флексибилност и поновна употреба кода приоритет.