Skillnaden mellan arv och komposition

Anonim

Arv mot Komposition

Arv och Komposition två viktiga begrepp som finns i OOP (Object Oriented Programming). I enkla termer handlar både Sammansättning och Arv om att ge ytterligare egenskaper eller beteende till en klass. Erfarenhet är förmågan för en klass att ärva egenskaper och beteende från en föräldraklass genom att utvidga den. Å andra sidan är komposition klassens förmåga att innehålla objekt av olika klasser som medlemsdata.

Vad är arv?

Som nämnts ovan är ärftligheten förmågan för en klass att ärva egenskaper och beteende från en föräldraklass genom att utvidga den. Erfarenhet tillhandahåller i grunden kodåteranvändning genom att tillåta förlängning av egenskaper och beteende hos en befintlig klass med en ny definierad klass. Om klass A sträcker sig B, kallas klass B förälderklassen (eller superklassen) och klass A kallas barnklassen (eller härledd klass / underklass). I det här exemplet scenariet kommer A att ärva alla offentliga och skyddade attribut och metoder för superklassen (B). Underklassen kan eventuellt åsidosättas (ge ny eller utvidgad funktionalitet till metoder) beteendet som arvats från förälderklassen.

Arv representerar ett "is-a" -förhållande i OOP. Detta innebär i huvudsak att A är också en B. Med andra ord kan B vara klassen med en generell beskrivning av en viss verklig världsenhet men A anger en viss specialisering. I ett verkligt världsprogrammeringsproblem kan personklassen utökas för att skapa Medarbetarklassen. Detta kallas specialisering. Men du kan också först skapa Medarbetarklassen och sedan generalisera den till en Personklass också (i. E. Generalisering). I det här exemplet kommer medarbetaren att ha alla egenskaper och beteende hos personen (dvs. e-anställd är också en person) och kan innehålla ytterligare funktioner (så person är inte anställd) också.

Vad är komposition?

Sammansättning är en klasss förmåga att innehålla objekt av olika klasser som medlemsdata. Till exempel kunde 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 klass A. Klass A blir behållaren, medan klass B blir den innehöll klassen. Sammansättning hänvisas också till som Containership. I det här exemplet kan det sägas att klass A består av klass B. I OOP representerar komposition ett "has-a" -förhållande. Det är viktigt att notera att även om behållaren har tillgång till exekvera alla offentliga metoder i den innehöll klassen, kan den inte ändra eller tillhandahålla ytterligare funktionalitet. När det gäller ett verkligt världsprogrammeringsproblem kan ett objekt av klasstextbox vara inrymt i klassen Form, och sålunda kan man säga att en blankett innehåller en textbox (eller alternativt en form består av en textbox).

Vad är skillnaden mellan arv och sammansättning?

Även om arv och sammansättning är två OOP-begrepp, är de helt annorlunda i vad de tillåter programmeraren att uppnå. Erfarenhet är förmågan för en klass att ärva egenskaper och beteende från en föräldraklass genom att utvidga den, medan kompositionen är en klassens förmåga att innehålla objekt av olika klasser som medlemsdata. Om en klass förlängs, ärver den alla offentliga och skyddade egenskaper / beteende och dessa beteenden kan överträffas av underklassen. Men om en klass finns i en annan, får behållaren inte förmågan att ändra eller addera beteendet till det innehåll som finns. Arv representerar ett "is-a" -förhållande i OOP, medan kompositionen representerar ett "has-a" -förhållande.