Mis on kompositsioon pärandist?

Pärimise asemel koostamine on programmeerimismetoodika, mida kasutatakse objektorienteeritud programmeerimiskeeltes, et aidata luua rakenduses olevate objektide vahel dünaamilisemaid ja muudetavamaid suhteid. Pärimise asemel kompositsiooni põhivorming on objekti eksemplari kaasamine teise objekti sisse. See erineb selgelt objektorienteeritud pärimismeetodist, kuid võib paljudes mudelites täita sama eesmärki. Kompositsiooni eelised pärimise ees hõlmavad hästi määratletud piire komposiitobjektide ja ümbrisobjektide vahel, võimalust muuta objekti rakendamist, ilma et see mõjutaks kogu pärimishierarhiat, ja vähem piirav raamistik esialgse programmi kavandamiseks. Mõned komplikatsioonid võivad aga hõlmata raskusi serialiseerimisel ja liiga keerukaid struktuure suurtes väljakujunenud programmides.

Objektorienteeritud programmeerimisel on üks tunnuseid, mis on disaini käigus oluline kindlaks teha, kuidas erinevad objektid on üksteisega seotud. Pärimine on objektorienteeritud programmeerimise keskne mehhanism, mis võimaldab ühel objektil pärida kõik oma vanema andmed ja meetodid, mida ta saab seejärel oma juurutusega lisada, muuta või laiendada. Pärimisel põhineva disaini näide võib olla programm, millel on üks põhiklass, mis määratleb auto ja modelleerib kõigi autode mõningaid üldisi atribuute. Iga automargi klass moodustatakse seejärel põhiklassi järeltulijana, kuid määratleb konkreetse teabe, näiteks mootori võimsuse, kütusemahu või muu selle konkreetse automargi spetsiifilise teabe.

Kompositsiooni väljendatakse objektieksemplaride kaasamisega teistesse objektidesse. Kui on olemas põhiklass, mis defineerib üldautot, siis selle asemel, et luua konkreetsetele automarkidele alamklasse, võiks põhiklass sisaldada hoopis teiste autot spetsiifilisemalt defineerivate objektide eksemplare. See võib tähendada, et peamine autoklass võib sisaldada objekti mootoritüübi ja ühte kütusemahu jaoks, mis määratakse siis, kui klassi kasutatakse konkreetse automargi eksemplari loomiseks.

Kui kompositsioon eelistab pärimist, ei ole põhiklassis sisalduvad objektid põhiklassiga otseselt seotud, andes arendajatele vabaduse muuta üksikute objektide tööd. Probleem, mida kompositsioon pärimise asemel võib aidata vältida, on olukord, kus pärandipuu võib olla liiga sügav, mis tähendab, et puu klassi muudatused võivad nõuda puu pikkuse muutmist. Kõik objektorienteeritud keeled ei toeta mitut pärandit ja kompositsioon pärimise asemel on meetod, mida saab kasutada sellest piirangust mööda hiilimiseks.