Ereditarietà multipla

Alcuni linguaggi di programmazione permettono di utilizzare l'ereditarietà multipla, in cui una classe può ereditare funzionalità e caratteristiche da più di una classe base. Questa tecnica si contrappone all'ereditarietà singola, in cui una classe può ereditare da una, e solo una, classe base.

Nella programmazione orientata agli oggetti, l'ereditarietà descrive una relazione gerarchica fra due classi, nella quale una (quella che eredita) è chiamata "classe derivata" (o "classe figlia", o "sottotipo"), e l'altra (quella da cui si eredita) è chiamata "classe genitrice" (o "classe base", o "superclasse"). Le funzionalità ereditate dalla "figlia" permettono agli oggetti istanziati su di essa di condividere le funzionalità della "genitrice", cioè della classe base.

Per esempio: supponiamo di aver creato una classe:

Mammifero dotata di funzionalità come mangiare, respirare, riprodursi, ecc. Possiamo definire un'altra classe:

Topo che eredita tutte le funzionalità di Mammifero senza doverle ridefinire, in quanto, essendo il topo un mammifero, ne condivide tutte le caratteristiche. A queste funzionalità la nuova classe ne aggiunge altre, possedute dai "topi" e non comuni a tutti i mammiferi, come, ad esempio raccogliere spazzatura. Oltre che avere le caratteristiche comuni a tutti i mammiferi, tuttavia, i topi condividono altre caratteristiche e funzionalità con altre "classi" di oggetti, come, ad esempio:

Personaggi di Ratatouille oppure Vettori di malattie mortali Quindi è molto comodo, per la classe Topo, poter ereditare anche le caratteristiche e le funzionalità di queste classi, senza doverle ridefinire.

Problema del diamante

Diagramma del "problema del diamante"

L'ereditarietà multipla può essere causa, in alcuni contesti, di qualche confusione, tanto che alcuni ritengono che gli inconvenienti siano maggiori dei benefici.

Una possibile causa di ambiguità è la seguente: se due classi B e C ereditano dalla classe A e la classe D eredita sia da B che da C, se un metodo in D chiama un metodo definito in A, da quale classe viene ereditato?

Tale ambiguità prende il nome di problema del diamante (in inglese diamond problem), a causa della forma del diagramma di ereditarietà delle classi, simile ad un diamante.

Differenti linguaggi di programmazione hanno risolto quest'inconveniente in modi diversi.

Implementazione in alcuni linguaggi

Java e .NET

In Java si è adottato questo compromesso: una classe può ereditare le interfacce da più di una classe base – cioè esporre all'esterno gli stessi metodi delle interfacce delle classi base – ma può ereditare i dati ed i metodi effettivi da una sola classe base. Anche i linguaggi della piattaforma Microsoft .NET, come C# e Visual Basic utilizzano lo stesso approccio.

Dalla versione Java 8, tuttavia, si sono introdotti i modificatori "default" che se associati a metodi di interfacce permettono (al contrario dei metodi senza questo modificatore) non solo di dichiarare ma anche di implementare in modo differente gli stessi metodi nelle interfacce. È comunque d'obbligo l'override dei metodi nelle sottoclassi che implementano entrambe le interfacce, ma tramite un'istruzione ben definita si può invocare un preciso metodo implementato di una specifica interfaccia genitrice. Così nel caso del problema del diamante la classe D effettua l'override del metodo in comune a B e C definito in A e invoca lo specifico metodo di B o C.

C++

C++ per default segue ogni percorso di ereditarietà separatamente, quindi l'oggetto D contiene due separati oggetti di A e gli usi dei membri di A devono essere opportunamente qualificati. Se l'ereditarietà da A a B e l'ereditarietà da A a C sono entrambe segnate come "virtual" ("class B : virtual A"), C++ si prende particolare cura di creare solo un oggetto A, l'utilizzo dei membri di A funziona correttamente. Se l'ereditarietà virtuale e l'ereditarietà non virtuale sono mischiate, esiste solo un A virtuale e un A non virtuale per ogni percorso di ereditarietà non virtuale a A.

Eiffel

In Eiffel le classi derivate adattano le funzionalità ereditate rinominandole o definendo anticipatamente le regole per risolvere le ambiguità e decidere quale versione applicare (quella ereditata o quella della classe base).

REALbasic

Analogamente a Java anche in REALbasic si possono ereditare metodi e dati da una sola classe base, e, in più, sono previsti metodi aggiuntivi per "estendere" le funzionalità di una classe senza dover ricorrere all'ereditarietà.

Perl

In Perl le classi da cui ereditare sono disposte in una lista ordinata, e viene poi chiamato il primo metodo trovato in ordine gerarchico di profondità della prima classe della lista, e così di seguito per le classi successive e per le loro rispettive classi base.

Python

Python supporta una forma di ereditarietà multipla, e viene chiamato un metodo attraverso la regola prima-in-profondità, da-sinistra-a-destra. Perciò, se un attributo non viene trovato nella classe derivata, viene cercato nella prima classe base, poi (ricorsivamente) nelle classi base di quest'ultima e, solo se non vi è stato trovato, viene ricercato nella seconda classe base della classe derivata, e così via.

Esempio

Ecco un esempio di ereditarietà multipla in C++:

class A
{
 protected:
  int i;
 public:
  int get_i() {return i;}
  void set_i(int n) {i=n;}
};

class B
{
 protected:
  int j;
 public:
  int get_j() {return j;}
  void set_j(int n) {j=n;}
};

class C : public A, public B
{
 protected:
  int k;
 public:
  int get_k() {return k;}
  void set_k(int n) {k=n;}
};

In questo caso, C erediterà sia da A che da B, ed avrà quindi le variabili d'istanza i e j e le funzioni get_i, set_i, get_j e set_j, oltre che a k ed a get_k ed a set_k.

Voci correlate

Collegamenti esterni

  Portale Informatica: accedi alle voci di Wikipedia che trattano di Informatica

Read other articles:

Tirta Publikasi2022GenreAksi-penjelajahan, puzzleKarakteristik teknisPlatformNintendo Switch, PlayStation 5, PlayStation 4 dan Windows MesinUnreal Engine[1]Format kode Daftar 30 Informasi pengembangPengembang PT Agate International PT Telekomunikasi Indonesia Tbk PenerbitAgate Portal permainan videoSunting di Wikidata • L • B • PWBantuan penggunaan templat ini Tirta adalah permainan video aksi-penjelajahan mendatang yang dikembangkan oleh Agate, sebuah pengembang ...

 

 

Bratwurst adalah salah satu sosis yang terkenal di Jerman. Bratwurst adalah salah satu sosis khas Jerman yang terkenal kelezatannya, karena hanya menggunakan daging untuk bahan isinya. Pada umumnya jenis sosis ini menggunakan daging sapi muda tapi lebih sering digunakan daging babi oleh sebagian orang khususnya di Amerika Utara.[1] Setiap daerah di Jerman mempunyai sosis khasnya masing-masing karena sosis adalah salah satu produk terbesar dari olahan daging di Jerman. Ada sekitar 1500...

 

 

Baung layar Bagrichthys hypselopterus Status konservasiRisiko rendahIUCN91178442 TaksonomiKerajaanAnimaliaFilumChordataKelasActinopteriOrdoSiluriformesFamiliBagridaeGenusBagrichthysSpesiesBagrichthys hypselopterus Bleeker, 1852 lbs Bagrichthys hypselopterus atau baung layar adalah spesies ikan lele bagrid yang ditemukan di Thailand, Indonesia dan Malaysia . Spesies ini mencapai panjang 40,0 cm dan ditangkap secara komersial untuk konsumsi manusia. Referensi

NO WAY MAN (2018)Singel oleh AKB48Dirilis28 November 2018 (2018-11-28)FormatUnduhan digital, CDGenreK-popLabelKing RecordsPenciptaYasushi AkimotoProduserJunya Maesako, Yasutaka.IshioKronologi singel AKB48 Sentimental Train (2018) NO WAY MAN (2018) (2018) Jiwaru Days (2019) NO WAY MAN adalah singel ke-54 (kedua terakhir pada Zaman Heisei) karya grup vokal perempuan idola Jepang, AKB48. Singel tersebut dirilis di Jepang oleh King Records pada 28 November 2018. Singel tersebut menampilkan S...

 

 

This article includes a list of references, related reading, or external links, but its sources remain unclear because it lacks inline citations. Please help improve this article by introducing more precise citations. (November 2019) (Learn how and when to remove this template message) Hachioji Velodrome (八王子自転車競技場, Hachiōji Jitenshakyōgijō) was a temporary velodrome located in the Hachiōji, Tokyo area. Constructed between March and August 1964, it hosted the track cycli...

 

 

For other uses, see Pinamar (disambiguation). City in Buenos Aires, ArgentinaPinamarCityAvenida Bunge in 2008PinamarLocation in ArgentinaCoordinates: 37°06′S 56°51′W / 37.100°S 56.850°W / -37.100; -56.850Country ArgentinaProvince Buenos AiresPartidoPinamarFoundedFebruary 14, 1943Government • MayorMartín Yeza (PRO)Elevation17 m (56 ft)Population (2020) • Total45,000CPA BaseB 7167Area code+54 2254Websitepinamar.gov.ar ...

العلاقات النرويجية الفنلندية النرويج فنلندا   النرويج   فنلندا تعديل مصدري - تعديل   العلاقات النرويجية الفنلندية هي العلاقات الثنائية التي تجمع بين النرويج وفنلندا.[1][2][3][4][5] مقارنة بين البلدين هذه مقارنة عامة ومرجعية للدولتين: وجه المقا...

 

 

Professional basketball team This article relies excessively on references to primary sources. Please improve this article by adding secondary or tertiary sources. Find sources: Harlem Wizards – news · newspapers · books · scholar · JSTOR (September 2012) (Learn how and when to remove this template message) Harlem WizardsLeaguesIndependentFounded1962History1962–presentHarlem WizardsArenaWorldwideLocationMoonachie, NJTeam colorsPurple, Red, Gold  ...

 

 

Danish-British ballet dancer Genée in her original ballet,La Camargo Dame Adeline Genée DBE (born Anina Kirstina Margarete Petra Jensen; 6 January 1878  – 23 April 1970) was a Danish-British ballet dancer. Early years Anina Kirstina Margarete Petra Jensen was born in Hinnerup north of Aarhus, Denmark. Her uncle, Alexandre Genée, gave her dancing lessons from the age of three. When she was eight, Alexandre and his wife, the former Antonia Zimmerman, adopted her. As well as changing h...

Синелобый амазон Научная классификация Домен:ЭукариотыЦарство:ЖивотныеПодцарство:ЭуметазоиБез ранга:Двусторонне-симметричныеБез ранга:ВторичноротыеТип:ХордовыеПодтип:ПозвоночныеИнфратип:ЧелюстноротыеНадкласс:ЧетвероногиеКлада:АмниотыКлада:ЗавропсидыКласс:Пт�...

 

 

Service provided by a bank Part of a series on financial servicesBanking Types of banks Advising Banq Bulge bracket Central Commercial Community development Cooperative Credit union Custodian Depository Development Direct Export credit agency Investment Industrial Merchant Middle market Mutual savings Neobank Offshore Participation Payments Postal savings Private Public Retail Savings Savings and loan Universal Wholesale Bank holding company Lists of banks Accounts · Cards Accounts Chri...

 

 

Yamaha MT-25ProdusenYamahaPerusahaan indukYamaha CorporationTahun Produksi2015-sekarangKelasMotor sport[1]Mesin249 cc (15,2 cu in) 2-silinder segaris, 4-langkah, berpendingin cairan, DOHC, 8-katupDaya kuda36 hp (27 kW) @ 12.000 rpm (di mesin)Torsi226 N⋅m (167 lb⋅ft) @ 10.000 rpm (di mesin)Sistem transmisi6-percepatan Constant MeshSuspensiDepan: Upside downBelakang: Lengan ayun dengan peredam kejut tunggalRemDepan: Cakram hidrolik dengan piston ga...

Catholic women's college in Omaha, Nebraska, US For the constituent college of the University of Oxford, see New College, Oxford. College of Saint MaryTypePrivate women's universityEstablished1923Religious affiliationCatholic (Sisters of Mercy)Academic affiliationsSpace-grantPresidentHeather A. SmithStudents857 (539 undergraduate) Fall 2023[1]LocationOmaha, Nebraska, United StatesCampusUrbanColors     Navy Blue, Sky Blue & GoldNicknameFlamesSporting affiliationsNAIA...

 

 

Syrian-Palestinian blogger Razan Ghazzawiرزان غزاويRazan Ghazzawi during a conference in Lebanon in 2008Born1980 (age 43–44)NationalitySyrian-Palestinian[1]Alma materDamascus University, University of BalamandOccupation(s)Assistant Professor, teacher-activist; Media Officer; BloggerWebsiterazanghazzawi.org Dr. Razan Ghazzawi, (Arabic: رزان غزاوي; born 1980) is a Syrian-Palestinian blogger, campaigner, teacher, and activist, originally from Gaza in Pal...

 

 

1968 song by the Kinks PollyWest German picture sleeve (reverse)Single by the KinksA-sideWonderboyReleased5 April 1968RecordedMarch 1968StudioPye, LondonGenreMusic hallLabel Pye (UK) Reprise (US) Songwriter(s)Ray DaviesProducer(s)Ray DaviesThe Kinks singles chronology Autumn Almanac (1967) Wonderboy / Polly (1968) Days (1968) Official audioPolly on YouTube Polly (titled Pretty Polly on early singles)[1] is a song by the English rock band the Kinks. It was released on a non-album sing...

See also: List of census-designated places in Washington and List of unincorporated communities in Washington Map of the United States with Washington highlighted Washington is a state located in the Pacific Northwest region of the United States. As of the 2020 U.S. census, Washington is the 13th most populous state, with 7,705,281 inhabitants, and the 18th largest by land area, spanning 66,455.52 square miles (172,119.0 km2) of land. Washington is divided into 39 counties and contains ...

 

 

American college basketball season 1948–49 Duke Blue Devils men's basketballConferenceSouthern ConferenceRecord13–9 (5–7 Southern)Head coachGerry GerardHome arenaDuke Indoor StadiumSeasons← 1947–481949–50 → 1948–49 Southern Conference men's basketball standings vte Conf Overall Team W   L   PCT W   L   PCT North Carolina State † 14 – 1   .933 25 – 8   .758 William & Mary 10 – 3   .769 24 ...

 

 

Nana Sutresna Duta Besar Indonesia untuk Britania Raya ke-15Masa jabatan1999–2002PresidenB.J. HabibieAbdurrahman WahidMegawati Soekarno PutriPendahuluRahardjo JamtomoPenggantiJuwono Sudarsono[[Utusan Tetap Indonesia untuk Perserikatan Bangsa-Bangsa dan Otoritas Dasar Laut Internasional]] ke-11Masa jabatan1988–1992PresidenSoehartoPendahuluAli AlatasPenggantiNugroho Wisnumurti Informasi pribadiLahir(1933-10-21)21 Oktober 1933Ciamis, Hindia BelandaMeninggal27 Januari 2011(2011-01-27)...

Batu RosettaBatu RosettaBahan bakuGranodioritUkuran1.123 mm x 757 mm x 284 mm(45 in × 28.5 in × 11 in)Sistem penulisanHieroglif Mesir kuno, aksara Demotik, dan YunaniDibuat196 SMDitemukan15 Juli 1799 di kota Rashid (Rosetta), MesirLokasi sekarangMuseum Britania Batu Rosetta (bahasa Inggris: Rosetta Stone, bahasa Arab: حجر رشيد , translit. ḥajar rasyīd) adalah sebuah prasasti batu granodiorit yang ditemukan pada tahun 1799. Prasasti ini berukirkan tiga versi dari sebua...

 

 

ستوارت بارنابي (بالإنجليزية: Stuart Parnaby)‏  معلومات شخصية الميلاد 19 يوليو 1982 (العمر 41 سنة)[1]درهام الطول 5 قدم 11 بوصة (1.80 م)[2][2] مركز اللعب مدافع الجنسية المملكة المتحدة  معلومات النادي النادي الحالي سبنيمور تاون [الإنجليزية]‏ (assistant manager) مسيرة الشب�...