Arv kontra containerskab
Arv og container er to vigtige begreber, der findes i OOP (Object Oriented Programming Example: C ++). Enkelt sagt handler både containerskab og arv om at give en klasse yderligere egenskaber eller adfærd. Arv er en klasses evne til at arve egenskaber og adfærd fra en overordnet klasse ved at udvide den. På den anden side er containerskab en klasses evne til at indeholde objekter fra forskellige klasser som medlemsdata.
Hvad er arv?
Som nævnt ovenfor er arv evnen for en klasse til at arve egenskaber og adfærd fra en overordnet klasse ved at udvide den. Arv giver i det væsentlige kodegenbrug ved at tillade at udvide egenskaber og opførsel af en eksisterende klasse med en nyligt defineret klasse. Hvis klasse A udvider B, kaldes klasse B forældreklassen (eller superklassen), og klasse A kaldes barneklassen (eller afledt klasse / underklasse). I dette eksempel-scenarie vil klasse A arve alle offentlige og beskyttede attributter og metoder i superklassen (B). Underklassen kan eventuelt tilsidesætte (give nye eller udvidede funktionaliteter til metoder) den opførsel, der er arvet fra forældreklassen. Arv repræsenterer et "is-a" forhold i OOP. Dette betyder i det væsentlige, at A også er en B. Med andre ord kan B være klassen med en generel beskrivelse af en bestemt virkelighedens enhed, men A specificerer en bestemt specialisering. I et reelt verdensprogrammeringsproblem kan Personklassen udvides til at oprette medarbejderklassen. Dette kaldes specialisering. Men du kan også først oprette medarbejderklassen og derefter generalisere den også til en personklasse (dvs. generalisering). I dette eksempel vil medarbejderen have personens egenskaber og opførsel (dvs. medarbejder er også en person) og kan indeholde en vis yderligere funktionalitet (så person er ikke en medarbejder).
Hvad er containerskab?
Containership er en klasses evne til at indeholde objekter fra forskellige klasser som medlemsdata. For eksempel kunne klasse A indeholde et objekt af klasse B som medlem. Her kan alle de offentlige metoder (eller funktioner) defineret i B udføres i klasse A. Klasse A bliver beholderen, mens klasse B bliver den indeholdte klasse. Containership kaldes også sammensætning. I dette eksempel kan det siges, at klasse A er sammensat af klasse B. I OOP repræsenterer Containership et ”have-a” -forhold. Det er vigtigt at bemærke, at selvom containeren har adgang til at udføre alle de offentlige metoder i den indeholdte klasse, er den ikke i stand til at ændre eller give yderligere funktionalitet. Når det drejer sig om et ægte programmeringsproblem, kan et objekt af klasse TextBox være indeholdt i klasseformen, og det kan således siges, at en formular indeholder en TextBox (alternativt er en formular sammensat af en TextBox).
Forskel mellem arv og container
Selvom Arv og Containership er to OOP-koncepter, er de ganske forskellige, hvad de tillader programmøren at opnå. Arv er en klasses evne til at arve egenskaber og adfærd fra en forældreklasse ved at udvide den, mens Containership er en klasses evne til at indeholde objekter fra forskellige klasser som medlemsdata. Hvis en klasse udvides, arver den alle de offentlige og beskyttede egenskaber / adfærd, og denne adfærd kan blive tilsidesat af underklassen. Men hvis en klasse er indeholdt i en anden, får beholderen ikke evnen til at ændre eller tilføje adfærd til den indeholdte. Arv repræsenterer et "er-et" forhold i OOP, mens Containership repræsenterer et "har-et" forhold.