Differenza Tra Ereditarietà E Composizione

Differenza Tra Ereditarietà E Composizione
Differenza Tra Ereditarietà E Composizione
Anonim

Ereditarietà vs Composizione

Ereditarietà e composizione sono due concetti importanti trovati in OOP (Object Oriented Programming). In termini semplici, sia la composizione che l'ereditarietà si occupano di fornire proprietà o comportamenti aggiuntivi a una classe. L'ereditarietà è la capacità di una classe di ereditare proprietà e comportamento da una classe genitore estendendola. D'altra parte, la Composizione è la capacità di una classe di contenere oggetti di classi differenti come dati dei membri.

Cos'è l'ereditarietà?

Come accennato in precedenza, l'ereditarietà è la capacità di una classe di ereditare proprietà e comportamento da una classe genitore estendendola. L'ereditarietà fornisce essenzialmente il riutilizzo del codice consentendo l'estensione delle proprietà e del comportamento di una classe esistente da parte di una nuova classe definita. Se la classe A estende B, la classe B è chiamata classe genitore (o super classe) e la classe A è chiamata classe figlia (o classe derivata / sottoclasse). In questo scenario di esempio, la classe A erediterà tutti gli attributi e metodi pubblici e protetti della super classe (B). La sottoclasse può facoltativamente sovrascrivere (fornire funzionalità nuove o estese ai metodi) il comportamento ereditato dalla classe genitore.

L'ereditarietà rappresenta una relazione "è-un" in OOP. Ciò significa essenzialmente che A è anche B. In altre parole, B può essere la classe con una descrizione generale di una certa entità del mondo reale, ma A specifica una certa specializzazione. In un problema di programmazione del mondo reale, la classe Person potrebbe essere estesa per creare la classe Employee. Questa si chiama specializzazione. Ma potresti anche creare prima la classe Employee e poi generalizzarla anche a una classe Person (cioè generalizzazione). In questo esempio, il dipendente avrà tutte le proprietà e il comportamento della persona (cioè anche il dipendente è una persona) e potrebbe contenere alcune funzionalità aggiuntive (quindi, anche la persona non è un dipendente).

Cos'è la composizione?

La composizione è la capacità di una classe di contenere oggetti di classi differenti come dati dei membri. Ad esempio, la classe A potrebbe contenere un oggetto della classe B come membro. Qui, tutti i metodi (o funzioni) pubblici definiti in B possono essere eseguiti all'interno della classe A. La classe A diventa il contenitore, mentre la classe B diventa la classe contenuta. La composizione è anche denominata nave portacontainer. In questo esempio, si può dire che la classe A è composta dalla classe B. In OOP, Composizione rappresenta una relazione "ha-a". È importante notare che, anche se il contenitore ha accesso per eseguire tutti i metodi pubblici della classe contenuta, non è in grado di alterare o fornire funzionalità aggiuntive. Quando si tratta di un problema di programmazione nel mondo reale, un oggetto della classe TextBox può essere contenuto nella classe Form,e quindi si può dire che un Form contiene un TextBox (o in alternativa, un Form è composto da un TextBox).

Qual è la differenza tra ereditarietà e composizione?

Sebbene ereditarietà e composizione siano due concetti OOP, sono abbastanza diversi in ciò che consentono al programmatore di ottenere. L'ereditarietà è la capacità di una classe di ereditare proprietà e comportamento da una classe genitore estendendola, mentre Composizione è la capacità di una classe di contenere oggetti di classi diverse come dati membri. Se una classe viene estesa, eredita tutte le proprietà / comportamenti pubblici e protetti e tali comportamenti possono essere sovrascritti dalla sottoclasse. Ma se una classe è contenuta in un'altra, il contenitore non ha la possibilità di modificare o aggiungere comportamenti al contenuto. L'ereditarietà rappresenta una relazione "è-un" in OOP, mentre la composizione rappresenta una relazione "ha-un".

Raccomandato: