Skillnaden mellan arv och behållarskap

Anonim

Erfarenhet vs Containership

Arv och Containership två viktiga begrepp som finns i OOP (Object Oriented Programming Example: C ++). I enkla termer handlar både Containership 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 Containership en 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 Containership?

Containership är en klassens 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. Containership kallas även Sammansättning. I det här exemplet kan man säga att klass A består av klass B. I OOP representerar Containership 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).

Skillnad mellan arv och behållare

Även om arv och behållarskap ä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 Containership ä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 Containership representerar ett "has-a" -förhållande.