www.wikidata.uk-ua.nina.az
Mnozhi nna spadko vist vlastivist deyakih obʼyektno oriyentovanih mov programuvannya v yakih klasi mozhut uspadkuvati povedinku i vlastivosti bilsh nizh vid odnogo superklasu bezposerednogo batkivskogo klasu Ce vidriznyayetsya vid prostogo spadkuvannya u vipadku yakogo klas mozhe mati tilki odin superklas Movi programuvannya z pidtrimkoyu mnozhinnogo spadkuvannya Eiffel C Dylan Python Perl Curl Common Lisp zavdyaki CLOS OCaml Tcl zavdyaki Incremental Tcl 1 ta Object REXX zavdyaki vikoristannyu klasiv domishok Oglyad RedaguvatiMnozhinne spadkuvannya dozvolyaye klasu uspadkovuvati funkcionalnist vid dekilkoh inshih klasiv oskilki dozvolyaye klasu StreetMusician uspadkovuvatis vid klasiv Human Musician Worker Ce mozhna skorotiti yak StreetMusician Human Musician Worker Pri mnozhinnomu spadkuvanni v poperednomu prikladi mozhe viniknuti neviznachenist yaksho napriklad klas Musician pohodit vid Human i Worker a klas Worker takozh pohodit vid Human V takomu vipadku kazhut pro prisutnist rombopodibnogo spadkuvannya Takim chinom otrimuyemo Worker Human Musician Human Worker StreetMusician Human Musician Worker Yaksho kompilyator pereglyadaye klas StreetMusician jomu neobhidno znati koli ob yednuvati odnakovi vlastivosti a koli trimati yih okremo Napriklad maye sens ob yednati vlastivosti Age klasu Human v StreetMusician Vik lyudini ne zminyuyetsya nezalezhno vid togo chi mi rozglyadayemo yiyi yak muzikanta pracivnika abo yak lyudinu zagalom Z inshogo boku im ya mozhe buti yak scenichnim psevdonimom tak i spravzhnim im yam Vibir ob yednati abo vidokremiti pokladayetsya na programista yakij maye znati sho same ye pravilnim pri rozrobci pevnogo klasu Rizni movi obroblyayut povtoryuvane uspadkuvannya riznimi shlyahami Eiffel dozvolyaye programistu yavno ob yednati abo rozdiliti vlastivosti uspadkovani vid superklasiv Eiffel avtomatichno ob yednuye vlastivosti yaksho voni mayut odnakovi imena ta realizaciyi Programist maye zmogu perejmenuvati uspadkovani vlastivosti shob rozdiliti yih Eiffel takozh dozvolyaye yavne povtoryuvane spadkuvannya take yak A B B C vimagaye yavnoyi vkazivki z yakogo batkivskogo klasu treba vikoristati danu vlastivist tobto Worker Human Age C na vidminu vid Eiffel ne dozvolyaye yavnogo povtoryuvanogo spadkuvannya cherez vidsutnist mozhlivosti vkazati yakij z superklasiv treba vikoristovuvati C pidtrimuye mozhlivist uniknennya neodnoznachnosti cherez stvorennya yedinogo ekzemplyara batkivskogo klasu cherez vikoristannya mehanizmu virtualnoyi spadkovosti tobto Worker Human i Musician Human budut vkazuvati na odin i toj samij ob yekt Perl vikoristovuye spisok klasiv dlya spadkuvannya yak vporyadkovanij spisok Kompilyator vikoristovuye metod znajdenim pershim za dopomogoyu poshuku v glibinu sered spisku superklasiv abo C3 linearizaciyi iyerarhiyi klasiv Rizni rozshirennya zabezpechuyut alternativni pobudovi Python maye taku samu strukturu ale na vidminu vid Perl mistit ce yak chastinu sintaksisu samoyi movi V Perl i Python na semantiku klasu vplivaye poryadok spadkuvannya Smalltalk C Objective C Object Pascal Java Nemerle ta PHP ne pidtrimuyut mnozhinnoyi spadkovosti realizaciyi i ce dozvolyaye uniknuti bud yakoyi neodnoznachnosti Odnak vsi voni krim Smalltalk nadayut klasam mozhlivist realizuvati dekilka interfejsiv Perevirkoyu na neobhidnist mnozhinnogo spadkuvannya mozhe stati situaciya koli pislya pobudovi strukturi klasiv kincevi klasi listya mozhna zgrupuvati v nabori za riznimi ortogonalnimi oznakami i ci nabori mizh soboyu peretinayutsya sho mozhe sluguvati oznakoyu nemozhlivosti obijtisya odniyeyu strukturoyu spadkuvannya v yakij isnuvali b yakis promizhni klasi z potribnoyu povedinkoyu Almazna problema Redaguvati nbsp Diagrama rombopodibnogo uspadkuvannya Almazna problema angl diamond problem inkoli zgaduvana yak Smertonosnij diamant smerti ce neodnoznachnist yaka vinikaye koli dva klasi B i C uspadkovuyutsya vid A a klas D uspadkovuyetsya vid oboh B i C Yaksho v A ye metod yakij B i C pereviznachili a D ne zamistiv jogo todi yaku versiyu metodu uspadkovuye D metod B chi metod C Napriklad u konteksti rozrobki programnogo zabezpechennya dlya GUI klas Button mozhe uspadkuvatisya vid oboh klasiv Rectangle dlya zovnishnogo viglyadu i Clickable dlya funkcionalnosti obroblyannya vvedennya a klasi Rectangle i Clickable obidva uspadkovuyutsya vid klasu Object Teper yaksho metod equals viklikayetsya dlya ob yekta Button i takogo metodu nemaye v klasi Button ale ye zamishennya metodu equals u Rectangle abo Clickable abo v oboh yakij metod slid viklikati Ce yavishe nazivayut almaznoyu problemoyu cherez formu diagrami uspadkuvannya klasiv u cij situaciyi U comu vipadku klas A znahoditsya vgori B i C okremo pid nim a D ob yednuye obidva vnizu utvoryuyuchi formu romba Primitki Redaguvati Tcl Advocacy Arhiv originalu za 22 veresnya 2010 Procitovano 13 veresnya 2010 Otrimano z https uk wikipedia org w index php title Mnozhinne uspadkuvannya amp oldid 40165194