Volgehouden inkapseling

Pieter Wisse

Wie met geautomatiseerde informatievoorziening te maken heeft, krijgt het gevraagd en ongevraagd te horen. Objecten. Objectgerichtheid. Dat zijn de modewoorden. Maar wat betekenen ze? Weet iemand ècht voor welke informatievoorziening objectgerichtheid geschikt is? En voor welke niet? Bestaat er verschil tussen wat er weliswaar theoretisch mee denkbaar, maar praktisch (nog) niet mogelijk is?

 

 

onderzoek

Ikzelf heb geen absoluut geldige antwoorden op dergelijke vragen. Wat ik de laatste tijd probeer, is om objectgerichte informatietechnologie stukje bij beetje te begrijpen. En dat is helaas helemaal niet zo eenvoudig. Want wat zogenaamde specialisten er in woord en geschrift over zeggen, blijkt bij nader inzien vaak eenzijdig en te simpel. Of zelfs niet te kloppen. Welnu, ik ben geen specialist. Ik ben alleen maar koppig. En als ik meen dat iemand mij valse informatie geeft, wordt ik opstandig. Dan ga ik er zèlf achteraan. Zo raakte ik verzeild in onderzoek naar wat objectgerichtheid eigenlijk is. Dat onderzoek is inclusief experimenten met concrete toepassingen.

 

 

wat is een object?

Nu ben ik zover dat ik (denk dat ik) ongeveer weet wat wezenlijk voor objectgerichtheid is. Daarvoor moet echter allereerst het begrip 'object' zo ongeveer gedefinieerd zijn. Een — informatieverwerkend — object is mi een eenheid met een autonoom gedragsrepertoire. Let wel, ik zeg dat zijn repertoire autonoom ofwel helemaal van hemzelf is. Dat wil niet zeggen dat het gehele object totaal autonoom is. Dat is zelfs meestal niet zo. Een object wordt vrijwel altijd van buitenaf aangesproken met een boodschap. Indien het object zo'n bepaalde boodschap ontvangt èn herkent, reageert het ook verder met overeenkomstig gedrag uit zijn repertoire. Het is zijn reactie waarin de autonomie schuilt. Niet voor niets worden objecten in informatievoorziening met levende cellen vergeleken (zie oa publicaties van D.A. Taylor).

Aldus verwerkt een object een boodschap met een passend gedeelte van zijn gedragsrepertoire. Voor zover er tijdens de verwerking informatie nodig is, wordt die informatie òf door de boodschap méégeleverd, en dan heten ze argumenten, òf zijn ze in de vorm van zgn. variabelen in het object zèlf besloten. Dankzij zijn gedragsregels inclusief variabelen gedraagt het object zich zo autonoom.

 

 

inkapseling

Dat beginsel van het beheer van repertoire en variabelen binnen het object in kwestie heeft een naam. Het heet inkapseling. En het is dit beginsel, inkapseling dus, dat ik wezenlijk voor objectgerichte informatievoorziening vind.

 

 

geen klasse, maar object!

Andere kenmerken, waarmee voorstanders van objectgerichtheid doorgaans schermen, acht ik dus niet wezenlijk. Neem bijvoorbeeld de indeling van meerdere objecten in een klasse. Zo'n klasse is niet noodzakelijk, want ook zonder die verzameling blijven de afzondelijke objecten ..., precies, objecten. En als ik klassen al niet wezenlijk vind, is een structuur van klassen, zoals bijvoorbeeld een hiërarchie, dat al helemaal niet.

 

 

eigen belang van ontwikkelaars

Maar waar komt het toch vandaan, dat juist klassen en klassenstructuur zo hardnekkig als dè kenmerken van object-gerichtheid gepresenteerd worden? Dat raadsel is snel opgelost door te kijken naar wie die kenmerken als voordelen roemt. Dat zijn altijd de ontwikkelaars van programmatuur. Zij stellen dankzij objectgerichtheid een hogere produktiviteit van programmatuurontwikkeling in het vooruitzicht. Via hun klasse delen objecten de definitie van repertoire inclusief variabelen. Via klassenstructuur kunnen objecten zelfs definitie van repertoire inclusief variabelen erven van zgn. hoger geplaatste klasse(n). Dergelijke gemeenschappelijke definities staan bekend als hergebruikte code. Dat middel vertalen ontwikkelaars uiteraard het meest in hun eigen voordeel, te weten in hogere marges op gedane arbeid. Zo eenvoudig is dat helaas. Maar dat heeft alles te maken met klassegerichtheid (dat wil vaak zeggen: de klant is géén koning) en nog nauwelijks iets met èchte objectgerichtheid.
Wie wil begrijpen wat objectgerichtheid is, moet zich dus op objecten sèc richten.

 

 

nogmaals inkapseling

Ik wil overigens met mijn kritiek op klassen en klassenstructuur niet tever doorslaan. Dat kunnen en zullen best zinnige en praktisch welhaast onvermijdelijke constructies zijn. Zij zijn echter altijd middel voor implementatie van objectgerichtheid. De inkapseling van repertoire en variabelen in een object is daarentegen méér dan een middel van object-gerichtheid; inkapseling is hèt wezenlijke kenmerk van die benadering van informatievoorziening.

 

 

risico's met klassen(structuur)

Ik ga hier verder niet in op voor- en nadelen van objecten in klassen en van klassen in een structuur. Ik beperk me tot een terloopse verwijzing naar constructie- en architectuurprincipes. Die gelden evenzogoed voor de objectgerichte informatietechnologie. Vergeet niet dat de mogelijkheid tot hergebruik van code tegelijk constructies en architectuur kan ondermijnen. Nu is architectuur enzovoort een erkende liefhebberij van J.R. van Rees. Voor enkele van zijn ideeën daarover verwijs ik naar het vierde hoofdstuk in deze bundel.

 

 

meetlat voor objectgerichtheid

Over inkapseling wil ik hier nog wel iets kwijt. Dat heeft te maken met de talloze verschijningsvormen van objectgerichtheid. Hoe valt daar een lijn in te ontdekken? Voor de ene toepassing blijkt immers slechts een objectgericht ontwikkelmiddel gebruikt te zijn, terwijl de operationele informatie apart relationeel opgeslagen is. En dan zijn er soms toepassingen waarvoor de informatie tot en met operationeel gebruik als variabelen van èchte objecten verschijnen. Zijn dergelijke toepassingen nu allemaal objectgericht? Wat is echter onderling het kenmerkende verschil?

Mijn voorstel is om verschillen aan de gerealiseerde inkapseling af te meten. Dat is natuurlijk logisch op grond van de aanwijzing van inkapseling als wezenlijk kenmerk van objectgerichtheid.

 

 

de maat: volgehouden inkapseling

Het is dus altijd de vraag hoever de inkapseling consequent volgehouden is. In het eerste geval dat ik hierboven voorstelde, dat van aparte informatieopslag in een relationele verzameling, vind ik het zelfs onzindelijk om van een objectgerichte toepassing te spreken. Dat het ontwikkelgereedschap (enigszins) objectgericht is, zegt immers nog niets over eigenschappen van het resultaat. Als ik een plank met een electrische zaag op maat maak, is toch die plank nog niet electrisch? Helaas zaaien de leveranciers van gereedschappen veel verwarring over objectgerichtheid.

Dan zijn er voor informatievoorziening de toepassingen waarin inkapseling tot en met de gedetailleerdste gedragsregels en variabelen volgehouden is. Dat is ècht objectgericht. Alles waar inkapseling minder volgehouden is, moet één of andere mengvorm zijn.

 

 

experimenten

Tot slot waarschuw ik ervoor om die èchte objectgerichtheid, dus in de zin van compleet volgehouden inkapseling, altijd maar positief (of negatief) te waarderen. Wat ik hier voorstel, is allereerst maar eens een zo neutraal mogelijk criterium. Dat helpt inzicht. Afhankelijk van informatiebehoeften moet vervolgens de keuze op een bepaalde technologie vallen.

Over volgehouden objectgerichtheid, zeker voor allerlei administratieve toepassingen met groot volume informatie, is kennis thans nog uiterst beperkt. Ikzelf weet er tenminste het fijne nog niet vanaf. Daarom, zoals ik zei, experimenteer ik ermee. Dat noem ik verkenning van de praktische grenzen van èchte objectgerichtheid. En wie weet gooi ik die prototypes wel weg. Hoewel, ... ik vind ze wel mooi en zeker interessant. Voorlopig gaat het er echter vooral om méér te weten. Zie ook hoofdstuk 7. Ik raad daarom iedereen aan ook zèlf te experimenteren, ook met objectgerichtheid. Er zijn voor wie volhoudt stellig kansen. Dat mag dus best iets kosten. Maar welke kansen dat zijn, moeten we grotendeels nog ontdekken. Zo gaat het toch met iedere nieuwe technologie?

 

© 1993, webeditie 2001.
Eerder gepubliceerd in: Infomeel, verstuurd orgaan van adviesbureau Van Rees, januari 1994, nr 14.