Forskjell mellom arv og beholderskap

Anonim

Arv / Containership

Arv og Containership er to viktige begreper funnet i OOP (Objektorientert programmeringseksempel: C ++). Enkelt sagt, både Containership og Arv håndterer med å gi ytterligere egenskaper eller oppførsel til en klasse. Arv er evnen for en klasse til å arve egenskaper og oppførsel fra en foreldersklasse ved å utvide den. På den annen side er Containership en klasses evne til å inneholde objekter av forskjellige klasser som medlemsdata.

Hva er arvelighet?

Som nevnt ovenfor er arvelighet evnen for en klasse å arve egenskaper og oppførsel fra en foreldersklasse ved å utvide den. Arv gir i hovedsak kodeutnyttelse ved å tillate utvidelse av egenskaper og oppførsel av en eksisterende klasse med en nylig definert klasse. Hvis klasse A strekker seg B, blir klasse B kalt foreldreklassen (eller superklassen) og klasse A kalles barneklassen (eller avledet klasse / underklasse). I dette eksempelbildet vil klasse A arve alle offentlige og beskyttede attributter og metoder for superklassen (B). Underklassen kan eventuelt overstyre (gi ny eller utvidet funksjonalitet til metoder) atferden arvet fra foreldreklassen. Arv representerer et "is-a" forhold i OOP. Dette betyr i hovedsak at A er også en B. Med andre ord, B kan være klassen med en generell beskrivelse av en bestemt virkelige verden enhet, men A angir en bestemt spesialisering. I et ekte verdensprogrammeringsproblem kan Person-klassen utvides for å skape Medarbeider-klassen. Dette kalles spesialisering. Men du kan også først lage Medarbeider-klassen og deretter generalisere den til en Person-klasse også (i. E. Generalisering). I dette eksemplet vil Medarbeider ha alle egenskapene og oppførselen til personen (e. Medarbeider er også en person) og kan inneholde noen tilleggsfunksjonalitet (slik at Person ikke er en Medarbeider) også.

Hva er Containership?

Containership er en klasses evne til å inneholde objekter av forskjellige klasser som medlemsdata. For eksempel kan klasse A inneholde et objekt av klasse B som et medlem. Her kan alle offentlige metoder (eller funksjoner) definert i B utføres innenfor klasse A. Klasse A blir beholderen, mens klasse B blir den inneholdt klassen. Beholderskap er også referert til som sammensetning. I dette eksemplet kan det sies at klasse A består av klasse B. I OOP representerer Containership et "has-a" forhold. Det er viktig å merke seg at selv om beholderen har tilgang til å utføre alle offentlige metoder for den inneholdte klassen, kan den ikke endre eller gi ytterligere funksjonalitet. Når det gjelder et ekte verdensprogrammeringsproblem, kan et objekt av klasse TextBox være inneholdt i klassen Form, og det kan således sies at et skjema inneholder en tekstboks (eller et skjema består av en tekstboks).

Forskjell mellom arv og containere

Selv om arv og containerskap er to OOP-konsepter, er de ganske forskjellige i hva de tillater programmereren å oppnå. Arv er evnen for en klasse til å arve egenskaper og oppførsel fra en foreldersklasse ved å utvide den, mens Containership er en klasses evne til å inneholde objekter av forskjellige klasser som medlemsdata. Hvis en klasse utvides, arver den alle de offentlige og beskyttede egenskapene / atferdene, og disse atferdene kan overstyres av underklassen. Men hvis en klasse er inneholdt i en annen, får beholderen ikke evnen til å endre eller legge til adferd til det inneholdte. Arv representerer et "is-a" forhold i OOP, mens Containership representerer et "has-a" forhold.