Che cos'è l'ereditarietà ibrida in C++? Sono tipi con esempi

Pubblicato: 2021-05-27

Usiamo spesso il termine "Ereditarietà" in un contesto di programmazione. È una funzionalità praticata nella programmazione per ottenere il miglior riutilizzo dei codici. Se ricordi il concetto di "IS-A" in OOP (Object Oriented Programming), scoprirai che è basato sulla funzione Ereditarietà. L'implementazione delle eredità ti aiuterà a ottenere idee di progetto avanzate in C++.

Sommario

Cos'è l'ereditarietà?

Nel processo di Ereditarietà, gli oggetti di una classe acquisiscono le proprietà e il comportamento di un'altra classe. Qui una nuova classe viene derivata dalla classe base esistente. La classe membro derivata è generalmente chiamata classe figlia e membro della classe base della classe padre. Dopo che la classe figlia è stata derivata, eredita tutte le proprietà e i metodi dalla classe padre.

Inoltre, la classe figlio può avere proprietà e metodi esclusivi destinati a uno scopo. Le funzionalità aggiuntive aggiunte localmente a una classe esistente non influiranno sulle proprietà ereditate dalla classe padre. Pertanto, la nuova classe avrà le caratteristiche combinate di entrambe le classi.

Ereditarietà in C++

Spesso, in realtà, un programmatore ha bisogno di sviluppare un oggetto che deve:
1) possiede tutte le qualità del suo genitore e, inoltre,
2) per alcuni aspetti, la persistenza è speciale.

La codifica di tali proprietà eccezionali nella classe principale potrebbe non essere necessariamente pratica ed economica. In tal caso, una nuova classe viene derivata estendendo la classe base. Inoltre, derivandolo da un'altra classe che ha qualità aggiuntive. In questo modo è possibile riutilizzare, estendere o modificare attributi e comportamenti definiti in altre classi. Pertanto la classe figlia derivata da più classi fornisce un oggetto che è facile da mantenere e trasferire. La classe derivata è la classe specializzata per la classe base.

Tecnicamente, la parola chiave "extends" viene utilizzata per ereditare una classe. C++ usa i due punti (“ : ”) per ereditare da una classe.

Tipi di eredità

L'uso di una combinazione di eredità e implementazione differisce per uno scopo derivato dalle classi. Ci sono diversi tipi di ereditarietà disponibili in C++, come elencato di seguito:

  • L'ereditarietà singola è il punto in cui una classe derivata eredita proprietà e comportamento da una singola classe base. Esempio: Classe A → Classe B.
  • L'ereditarietà gerarchica è il punto in cui più di una classe derivata viene creata da una singola classe base. Esempio: Classe A → Classe B → Classe C.
  • L'ereditarietà multipla serve per derivare una classe da più classi di base. Qui, gli oggetti figlio creati dai programmatori avranno aspetti combinati di caratteristiche e caratteristiche di più classi padre. Questi oggetti seguono le loro gerarchie di classi base.
  • L'ereditarietà multilivello è dove una classe figlia viene derivata da un'altra classe derivata. Questa funzionalità include aspetti combinati di più classi e ne segue le gerarchie.
  • L'ereditarietà ibrida è una caratteristica eterogenea dell'utilizzo di eredità multiple. Qui una classe figlia viene derivata da una o più combinazioni di eredità singole, gerarchiche e multilivello. Questa eredità viene adottata per i programmi per mescolare diversi tipi di eredità; ad esempio, quando si mescola una singola eredità con più eredità o forse una situazione in cui più eredità vengono mescolate all'interno di un unico programma.

Esempio semplice

Qui la Classe B e la Classe C derivano entrambe dalla classe base, Classe A.

Una classificazione gerarchica di Cars mostra due classi. Sia "Auto a benzina" che "Auto elettriche" derivano dalla Classe base "Automobili".

Ereditarietà ibrida in C++

Potrebbero esserci situazioni in cui è necessario applicare due o più tipi di eredità combinati per progettare un programma. Quando un programma coinvolge più di un tipo di eredità, viene chiamato Hybrid Inheritance.

L'ereditarietà ibrida è una combinazione di eredità semplice, multipla e di eredità gerarchica. Di solito, nelle eredità multiple, una classe è derivata da due classi in cui una delle classi padre è anche una classe derivata e non una classe base.

L' ereditarietà ibrida in C++ è l'ereditarietà in cui una classe deriva da più di una forma o da combinazioni di qualsiasi ereditarietà. L' ereditarietà ibrida in C++ è anche chiamata ereditarietà multipath, in cui una classe derivata può ereditare le proprietà della classe base in percorsi diversi. A volte chiamato anche ereditarietà multipath. Ad esempio, può essere ottenuto con una combinazione di ereditarietà multilivello e gerarchica.

In breve, l'ereditarietà ibrida è una combinazione di due o più tipi di eredità. Ad esempio, implementando eredità a livello singolo e multilivello nello stesso programma.

Diagramma a blocchi dell'ereditarietà ibrida

Il diagramma rappresenta la combinazione ibrida di due eredità; l'eredità singola e le eredità multiple. Qui, in eredità singola, la classe B è derivata dalla classe A . Allo stesso modo, nelle eredità multiple, la Classe D viene ereditata da più classi. Qui classe B e classe C. Quindi, un mix di eredità singola e eredità multiple forma un'eredità ibrida.

L'ereditarietà ibrida è applicabile negli scenari in cui è necessario applicare più di un'eredità in un programma.

Sintassi dell'ereditarietà ibrida in C++

Seguiranno una sintassi e una semantica tipiche per l' ereditarietà ibrida in C++ , come illustrato di seguito:

Esempi di ereditarietà ibrida in C++

Esempio 1: Ereditarietà singola + multipla

Vediamo come vengono implementate le eredità singole e multiple.

Ogni blocco in questo diagramma rappresenta una classe e la freccia corrispondente l'ereditarietà di una classe.

Esempio 2: Ereditarietà singola + multilivello

Possiamo anche implementare altri tipi di eredità per costituire eredità ibride.

Consideriamo un esempio in tempo reale .

Deriviamo una sottoclasse auto dalla classe Veicolo. Un'altra classe caratterizza Racing. Quando deriviamo un'entità finale, sia dalla classe Car che dalla classe Racing, darà un output combinato. Questo derivato è Ferrari, l'auto da corsa.

Ecco un semplice programma per illustrare il concetto di ereditarietà ibrida in C++ .

Il codice campione

L'output

Impara i corsi di sviluppo software online dalle migliori università del mondo. Guadagna programmi Executive PG, programmi di certificazione avanzati o programmi di master per accelerare la tua carriera.

Conclusione

Spero che questo articolo ti abbia aiutato a comprendere il concetto e i tipi di ereditarietà ibrida in C++ . Gli studenti nel flusso di programmi informatici e relativi all'informatica possono migliorare le proprie capacità e credibilità tecnica, come i concetti OOP. upGrad fornisce risorse e una base di conoscenze per incoraggiare tali professionisti a acquisire competenze nella programmazione e competere nel mercato del settore. In upGrad, hai anche l'opportunità di esplorare il networking professionale e lo sviluppo delle competenze.

Ci auguriamo che avrai un'eccellente opportunità di apprendimento nell'esecuzione di questi progetti C++. Se sei interessato a saperne di più e hai bisogno del tutoraggio di esperti del settore, dai un'occhiata al programma Executive PG di upGrad & IIIT Banglore in Full-Stack Software Development .

Che cos'è l'ereditarietà nella programmazione orientata agli oggetti?

L'ereditarietà è un meccanismo di riutilizzo del codice e aiuta a simulare il mondo reale. Estende il concetto di astrazione dei dati in OOP. È il processo mediante il quale una classe acquisisce le proprietà di un'altra classe. È fondamentale in OOP che una classe possa essere definita solo in termini di un'altra classe. Ciò è dovuto al concetto di astrazione. L'ereditarietà è un meccanismo che crea nuove classi di oggetti nella stessa gerarchia di classi di altri oggetti. Il principale vantaggio dell'ereditarietà è il riutilizzo del codice. È un modo per riutilizzare il codice. Se hai una classe e fa un lavoro particolare, puoi usarla anche per un altro lavoro. Dì solo che un'auto e un camion fanno lo stesso lavoro, quindi puoi usare lo stesso codice per guidarli.

Quali sono i 3 ambiti dell'ereditarietà in C++?

Gli ambiti dell'ereditarietà in C++ sono privati, protetti e pubblici. L'ereditarietà privata è quando una classe viene ereditata da un'altra classe ma non è possibile accedere alla classe derivata al di fuori della classe. Questi tipi di ereditarietà possono essere utilizzati solo quando la classe base non è pensata per l'accesso al di fuori della classe. L'ereditarietà protetta viene utilizzata quando la classe base non è destinata all'accesso all'esterno della classe e all'accesso all'esterno della classe. L'ereditarietà pubblica viene utilizzata quando si intende accedere alla classe base all'esterno della classe.

Che cos'è l'ereditarietà multipla in C++?

L'ereditarietà multipla è la capacità di derivare una classe da più di una classe. Questa funzionalità non è disponibile in C. Questa è una delle funzionalità più importanti di C++ che supporta la programmazione orientata agli oggetti. L'implementazione dell'ereditarietà multipla in C++ si basa sul concetto di classi di ereditarietà. L'ereditarietà multipla è un meccanismo che supporta il modello di programmazione orientato agli oggetti che può essere utilizzato per risolvere alcuni problemi, come il riutilizzo comportamentale e il riutilizzo del codice. Il riutilizzo del codice è sempre stato un problema in C++, perché C++ ha solo il supporto dell'ereditarietà singola. L'ereditarietà multipla si ottiene combinando più interfacce in un oggetto.