Delen via


Objecten hergebruiken

Een belangrijk doel van elk objectmodel is om objectauteurs in staat te stellen objecten van anderen opnieuw te gebruiken en uit te breiden als onderdelen van hun eigen implementaties. Een manier om dit in Microsoft Visual C++ en andere talen te doen, is door gebruik te maken van overname van implementaties, waardoor een object sommige functies van een ander object kan overnemen ('subklasse') terwijl andere functies worden overschreven.

Het probleem voor systeemomvattende objectinteractie met behulp van traditionele overname van implementaties is dat het contract (de interface) tussen objecten in een implementatiehiërarchie niet duidelijk is gedefinieerd. Het is in feite impliciet en dubbelzinnig. Wanneer het bovenliggende of onderliggende object wijzigingen in de implementatie doorvoert, kan het gedrag van gerelateerde onderdelen mogelijk niet-gedefinieerd of onstabiel geïmplementeerd worden. In elke toepassing, waarbij de implementatie kan worden beheerd door één technisch team dat alle onderdelen tegelijkertijd bijwerken, is dit niet altijd een belangrijk probleem. In een omgeving waarin de onderdelen van het ene team worden gebouwd door middel van het opnieuw gebruiken van andere onderdelen die door andere teams zijn gebouwd, brengt dit type instabiliteit hergebruik in gevaar. Daarnaast werkt de overname van implementaties meestal alleen binnen procesgrenzen. Dit maakt traditionele implementatieovername onpraktisch voor grote, veranderende systemen die bestaan uit softwareonderdelen die zijn gebouwd door veel technische teams.

De sleutel voor het bouwen van herbruikbare onderdelen is om het object te kunnen behandelen als een ondoorzichtig vak. Dit betekent dat het stukje code dat probeert een ander object opnieuw te gebruiken niets weet en niets hoeft te weten, over de interne structuur of implementatie van het onderdeel dat wordt gebruikt. Met andere woorden, de code die probeert een onderdeel opnieuw te gebruiken, is afhankelijk van het gedrag van het object en niet de exacte implementatie.

Om de herbruikbaarheid van zwarte doos te bereiken, gebruikt COM andere vastgestelde mechanismen voor hergebruik, zoals insluiting/delegatie en aggregatie.

Notitie

Voor het gemak wordt het object dat opnieuw wordt gebruikt het binnenste object genoemd en is het object dat gebruikmaakt van dat binnenste object het buitenste object.

 

In beide mechanismen is het belangrijk om te onthouden hoe het buitenste object voor de klanten lijkt. Wat de clients betreft, implementeren beide objecten alle interfaces waarop de client een aanwijzer kan krijgen. De klant behandelt het buitenste object als een ondoorzichtig vak en maakt zich daarom niet druk, evenmin hoeft het zich zorgen te maken over de interne structuur van het buitenste object; de klant is alleen geïnteresseerd in het gedrag.

Zie de volgende onderwerpen voor meer informatie: