Skip to main content

Cos'è la composizione sull'eredità?

La composizione rispetto all'eredità è una metodologia di programmazione utilizzata nei linguaggi di programmazione orientati agli oggetti per aiutare a stabilire relazioni più dinamiche e modificabili tra gli oggetti in un'applicazione.Il formato di base per la composizione rispetto all'eredità è l'inclusione di un'istanza di un oggetto all'interno di un altro oggetto.Ciò è nettamente diverso dal metodo di eredità orientato agli oggetti, ma può servire allo stesso scopo in molti modelli.I vantaggi della composizione rispetto all'eredità includono bordi ben definiti tra gli oggetti composti e gli oggetti wrapper, la capacità di modificare l'implementazione di un oggetto senza influire su un'intera gerarchia di eredità e un quadro meno restrittivo per la progettazione del programma iniziale.Alcune delle complicazioni, tuttavia, potrebbero includere difficoltà nella serializzazione e strutture eccessivamente complesse in programmi grandi e stabiliti.

nella programmazione orientata agli oggetti, uno dei tratti che è importante da stabilire durante il design è come i diversi oggetti si relazionano tra loro.L'eredità è un meccanismo centrale nella programmazione orientata agli oggetti e consente a un oggetto di ereditare tutti i dati e i metodi del suo genitore, che può quindi aggiungere, modificare o estendersi con la propria implementazione.Un esempio di design basato sull'eredità potrebbe essere con un programma che ha una classe principale che definisce un'auto e modella alcuni attributi generici di tutte le auto.La classe per ogni singolo marchio di auto viene quindi realizzata come discendente della classe principale ma definisce informazioni specifiche, come la dimensione del motore, la capacità del carburante o altre informazioni specifiche per quel particolare marchio di auto. La composizione è espressa includendo oggettoistanze all'interno di altri oggetti.Se esiste una classe principale che definisce un'auto generica, invece di creare sottoclassi per marchi di auto specifiche, la classe principale potrebbe invece contenere istanze di altri oggetti che definiscono l'auto in modo più specifico.Ciò potrebbe significare che la classe di auto principale potrebbe contenere un oggetto per il tipo di motore e uno per la capacità del carburante, che verrebbe impostata quando la classe viene utilizzata per creare un'istanza di un marchio specifico di auto.

con composizione su eredità, ilGli oggetti contenuti nella classe principale non sono direttamente correlati alla classe principale, dando agli sviluppatori la libertà di cambiare come funzionano i singoli oggetti.Un problema che la composizione sull'eredità può aiutare a prevenire è una situazione in cui un albero ereditario può essere eccessivamente profondo, il che significa che qualsiasi modifica a una classe nell'albero potrebbe richiedere cambiamenti nella lunghezza dell'albero.Non tutte le lingue orientate agli oggetti hanno supporto per eredità multiple e la composizione rispetto all'eredità è un metodo che può essere usato per aggirare questa restrizione.