qual è la differenza tra inclusione ed ereditarietà [duplicato]

-1

la domanda è auto-esplicativa, voglio solo sapere quando usare l'inclusione e quando usare l'ereditarietà e quale serve per la riutilizzabilità.

in altre parole, quale dei due soddisfa maggiormente i principi di programmazione orientati agli oggetti?

    
posta younes 30.11.2014 - 03:15
fonte

2 risposte

2

In generale, acconsentirei a favorire la composizione sull'ereditarietà. Si può pensare alla composizione come ad una relazione e ad una relazione "ha-un" come una relazione "è-a". La composizione aiuta a gestire la complessità mantenendo ogni classe separata e aggregando solo ciò di cui hai bisogno.

Uno svantaggio della composizione è che potresti trovarti a dover scrivere un certo numero di metodi di "inoltro" del proxy per le tue classi composte.

Trovo che una buona regola pratica è che se una classe è realmente un tipo della classe base e ha bisogno della maggior parte o di tutte le funzionalità della classe base esposte, questi sono buoni motivi per considerare l'utilizzo dell'ereditarietà.

    
risposta data 30.11.2014 - 11:52
fonte
1

Penso che potresti confondere i termini. L'inclusione è in realtà una forma di ereditarietà, in pratica dice che se si è un tipo T, allora il sottotipo T1 e il sottotipo T2 possono essere inviati agli stessi messaggi.

Forse volevi conoscere la differenza tra aggregazione / composizione degli oggetti e ereditarietà? In tal caso, quindi, in generale, favorire l'aggregazione e la composizione rispetto all'eredità, poiché spesso impedisce la ristrutturazione delle classi base se i requisiti cambiano.

Se vuoi saperne di più, ti consiglio di leggere il libro Design Patterns: Elements of Reusable Design di GoF (Gang of Four), oppure provare i modelli Head First Design che sono un po 'più facili da leggere e capire.

    
risposta data 30.11.2014 - 03:27
fonte

Leggi altre domande sui tag