Skillnaden mellan arv och sammansättning

Skillnaden mellan arv och sammansättning
Skillnaden mellan arv och sammansättning

Video: Skillnaden mellan arv och sammansättning

Video: Skillnaden mellan arv och sammansättning
Video: БЕСПЛАТНАЯ настройка анимированных оверлеев Twitch с Streamelements и OBS Studio 2024, November
Anonim

Arv vs sammansättning

Arv och sammansättning är två viktiga begrepp som finns i OOP (Object Oriented Programming). Enkelt uttryckt handlar både komposition och arv om att tillhandahålla ytterligare egenskaper eller beteende till en klass. Arv är förmågan för en klass att ärva egenskaper och beteende från en överordnad klass genom att utöka den. Å andra sidan är komposition en klasss förmåga att innehålla objekt av olika klasser som medlemsdata.

Vad är arv?

Som nämnts ovan är Arv förmågan för en klass att ärva egenskaper och beteende från en överordnad klass genom att utöka den. Arv ger i huvudsak kodåteranvändning genom att tillåta utvidgning av egenskaper och beteende hos en befintlig klass med en nydefinierad klass. Om klass A förlänger B, kallas klass B förälderklassen (eller superklassen) och klass A kallas barnklassen (eller härledd klass/underklass). I det här exemplet kommer klass A att ärva alla offentliga och skyddade attribut och metoder för superklassen (B). Underklassen kan valfritt åsidosätta (tillhandahålla ny eller utökad funktionalitet till metoder) beteendet som ärvts från den överordnade klassen.

Arv representerar ett "är-ett"-förhållande i OOP. Detta betyder i huvudsak att A också är ett B. Med andra ord kan B vara klassen med en allmän beskrivning av en viss verklig värld men A specificerar en viss specialisering. I ett verkligt programmeringsproblem kan klassen Person utökas för att skapa klassen Employee. Detta kallas för specialisering. Men du kan också först skapa klassen Employee och sedan generalisera den till en personklass också (dvs.e. generalisering). I det här exemplet kommer den anställde att ha alla egenskaper och beteende hos personen (dvs. anställd är också en person) och kan även innehålla ytterligare funktioner (så att personen inte är en anställd).

Vad är komposition?

Komposition är en klasss förmåga att innehålla objekt av olika klasser som medlemsdata. Till exempel kan klass A innehålla ett objekt av klass B som medlem. Här kan alla offentliga metoder (eller funktioner) som definieras i B exekveras inom klassen A. Klass A blir behållaren, medan klass B blir den inneslutna klassen. Sammansättning kallas också för Containership. I det här exemplet kan man säga att klass A är sammansatt av klass B. I OOP representerar Komposition ett "har-ett"-förhållande. Det är viktigt att notera att även om behållaren har tillgång till att köra alla offentliga metoder för den inneslutna klassen, kan den inte ändra eller tillhandahålla ytterligare funktionalitet. När det kommer till ett programmeringsproblem i den verkliga världen kan ett objekt av klassen TextBox finnas i klassen Form, och därför kan man säga att en Form innehåller en TextBox (eller alternativt är en Form sammansatt av en TextBox).

Vad är skillnaden mellan arv och sammansättning?

Även om arv och sammansättning är två OOP-koncept, är de ganska olika i vad de tillåter programmeraren att uppnå. Arv är förmågan för en klass att ärva egenskaper och beteende från en överordnad klass genom att utöka den, medan Composition är förmågan för en klass att innehålla objekt av olika klasser som medlemsdata. Om en klass utökas, ärver den alla offentliga och skyddade egenskaper/beteende och dessa beteenden kan åsidosättas av underklassen. Men om en klass finns i en annan får behållaren inte möjligheten att ändra eller lägga till beteende till innehållet. Arv representerar ett "är-ett"-förhållande i OOP, medan komposition representerar ett "har-ett"-förhållande.

Rekommenderad: