Cos'è la composizione rispetto all'ereditarietà?

La composizione rispetto all'ereditarietà è 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 sull'ereditarietà è l'inclusione di un'istanza di un oggetto all'interno di un altro oggetto. Ciò è nettamente diverso dal metodo di ereditarietà orientato agli oggetti, ma può servire allo stesso scopo in molti modelli. I vantaggi della composizione rispetto all'ereditarietà comprendono 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 ereditaria e un quadro meno restrittivo per la progettazione iniziale del programma. Alcune delle complicazioni, tuttavia, potrebbero includere difficoltà nella serializzazione e strutture eccessivamente complesse in programmi di grandi dimensioni.

Nella programmazione orientata agli oggetti, uno dei tratti che è importante stabilire durante la progettazione è il modo in cui i diversi oggetti si relazionano tra loro. L'ereditarietà è 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 estendere con la propria implementazione. Un esempio di progettazione 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 singola marca di auto viene quindi creata come discendente della classe principale, ma definisce informazioni specifiche, come le dimensioni del motore, la capacità del carburante o altre informazioni specifiche per quella particolare marca di auto.

La composizione è espressa includendo istanze di oggetti all'interno di altri oggetti. Se esiste una classe principale che definisce un'auto generica, quindi invece di creare sottoclassi per specifici marchi automobilistici, la classe principale potrebbe invece contenere istanze di altri oggetti che definiscono l'auto in modo più specifico. Ciò potrebbe significare che la classe principale dell'auto potrebbe contenere un oggetto per il tipo di motore e uno per la capacità del carburante, che verrebbe impostato quando la classe viene utilizzata per creare un'istanza di una specifica marca di auto.

Con la composizione sull'ereditarietà, gli oggetti contenuti nella classe principale non sono direttamente correlati alla classe principale, dando agli sviluppatori la libertà di cambiare il modo in cui funzionano i singoli oggetti. Un problema che la composizione sull'ereditarietà può aiutare a prevenire è una situazione in cui un albero ereditario può essere eccessivamente profondo, il che significa che qualsiasi modifica a una classe dell'albero potrebbe richiedere cambiamenti lungo la lunghezza dell'albero. Non tutti i linguaggi orientati agli oggetti hanno il supporto per eredità multiple e la composizione sull'ereditarietà è un metodo che può essere utilizzato per aggirare questa restrizione.

ALTRE LINGUE

Questo articolo è stato utile? Grazie per il feedback Grazie per il feedback

Come possiamo aiutare? Come possiamo aiutare?