Forskel mellem arv og sammensætning

Anonim

Arvelance vs Composition

Arv og sammensætning to vigtige begreber fundet i OOP (Object Oriented Programming). Simpelthen beskæftiger både Sammensætning og Arv med at give yderligere egenskaber eller adfærd til en klasse. Arv er evnen for en klasse til at arve egenskaber og adfærd fra en forælder klasse ved at udvide den. På den anden side er sammensætning en klasses evne til at indeholde genstande af forskellige klasser som medlemsdata.

Hvad er arv?

Som nævnt ovenfor er arvelighed evnen for en klasse til at arve egenskaber og adfærd fra en forældersklasse ved at udvide den. Arv giver i det væsentlige kodegenbrug ved at tillade udvidelse af egenskaber og opførsel af en eksisterende klasse af en nyligt defineret klasse. Hvis klasse A udvider B, så kaldes klasse B forældersklassen (eller superklasse), og klasse A hedder barneklassen (eller afledt klasse / underklasse). I dette eksempel scenario arver klasse A alle offentlige og beskyttede attributter og metoder til superklassen (B). Underklassen kan eventuelt tilsidesætte (give ny eller udvidet funktionalitet til metoder) adfærd arvet fra forældrenes klasse.

Arv repræsenterer et "is-a" -forhold i OOP. Dette betyder i det væsentlige, at A er også en B. Med andre ord kan B være klassen med en generel beskrivelse af en bestemt virkelighed i verden, men A angiver en bestemt specialisering. I et reelt verdensprogrammeringsproblem kan Personklassen udvides til at skabe medarbejderklassen. Dette kaldes specialisering. Men du kan også først oprette medarbejderklassen og derefter generalisere den til en personklasse også (f.eks. Generalisering). I dette eksempel vil medarbejderen have alle egenskaber og adfærd hos personen (dvs. e. Medarbejder er også en person) og kan indeholde yderligere funktioner (så person er ikke en medarbejder) også.

Hvad er sammensætning?

Sammensætning er en klasses evne til at indeholde genstande af forskellige klasser som medlemsdata. For eksempel kan klasse A indeholde et objekt af klasse B som medlem. Her kan alle de offentlige metoder (eller funktioner), der er defineret i B, udføres inden for klasse A. Klasse A bliver beholderen, mens klasse B bliver den indeholdte klasse. Sammensætning kaldes også Containership. I dette eksempel kan man sige, at klasse A er sammensat af klasse B. I OOP repræsenterer sammensætning et "has-a" -forhold. Det er vigtigt at bemærke, at selv om containeren har adgang til at udføre alle de offentlige metoder i den indeholdte klasse, kan den ikke ændre eller give yderligere funktionalitet. Når det kommer til et reelt verdensprogrammeringsproblem, kan et objekt af klasse TextBox være indeholdt i klassen Form, og det kan således siges, at en Form indeholder en TextBox (eller alternativt er en Form sammensat af en TextBox).

Hvad er forskellen mellem arv og sammensætning?

Selv om arv og sammensætning er to OOP-begreber, er de helt forskellige i hvad de tillader programmereren at opnå. Arv er evnen for en klasse at arve egenskaber og adfærd fra en forælder klasse ved at udvide den, mens sammensætning er en klasses evne til at indeholde genstande af forskellige klasser som medlemsdata. Hvis en klasse forlænges, arver den alle offentlige og beskyttede egenskaber / adfærd, og disse adfærd kan overstyres 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 det indeholdte. Arv er et "is-a" -forhold i OOP, mens sammensætningen repræsenterer et "has-a" -forhold.