Wat is klassenhiërarchie?

Een klassenhiërarchie, ook wel een klassentaxonomie genoemd, is een groep verwante klassen die via overerving zijn verbonden om soortgelijke dingen te doen. De bovenkant van de hiërarchie kan een enkele basisklasse zijn waarvan alle andere onderliggende klassen zijn afgeleid, of de hiërarchie kan meerdere basisklassen hebben waarvan de functionaliteiten later samenvoegen in een of meer afgeleide klassen. De relaties tussen de klassen kunnen worden geïllustreerd als bomen, en elke kleinere boom binnen de grote taxonomie kan ook als een hiërarchie worden beschouwd.

Niet alle klassenhiërarchieën kunnen meerdere wortels hebben en de structuur van elke klassenhiërarchie hangt grotendeels af van de taal waarin het is geschreven. C ++ staat meerdere overerving toe, zodat complexe hiërarchieën kunnen worden gebouwd met meerdere wortels en meerdere bomen die in elkaar overgaan. Java® daarentegen is beperkt tot een enkele overerving, dus zijn klassenrelaties zijn meestal eenvoudiger, gebouwd als relatief onafhankelijke bomen met een enkele wortel. Overerving van interfaces kan enige complexiteit toevoegen aan een klassenhiërarchie in Java®, maar interfaces worden bijna nooit aangeroepen in zo'n complex raamwerk dat het zou lijken op het samenvoegen van bomen.

De componenten van een klassenhiërarchie kunnen variëren in type en functie, zolang de regels van de taal altijd worden gevolgd met betrekking tot overerving. Klassen in een hiërarchie kunnen openbaar, beschermd, abstract, concreet of virtueel zijn. Interfaces, algemene functies en vrienden kunnen ook worden gebruikt. Afhankelijk van de computertaal kunnen sommige van deze typen zich beter lenen voor overerving dan andere. Over het algemeen zijn hiërarchieën zeer flexibel en kunnen ze op vele manieren voor vele doeleinden worden gebruikt.

Er zijn geen harde regels over waar bepaalde soorten klassen in een hiërarchie moeten worden geplaatst. Elke klasse kan een van de hierboven genoemde typen zijn. Over het algemeen moeten de laatste klassen in de hiërarchie zonder onderliggende afgeleide klassen openbaar en concreet zijn. Aangezien er ook zuiver abstracte klassenhiërarchieën kunnen bestaan, is dit slechts een vuistregel.

Hoewel een klassenhiërarchie een handig hulpmiddel kan zijn om code te ordenen en functionaliteit in te kapselen, kunnen er momenten zijn dat te diep ingrijpen in een hiërarchie de code juist kan verwarren in plaats van deze te verduidelijken en eenvoudiger te maken. Het opbouwen van een robuuste relatie tussen veel klassen vereist een zekere vooruitziende blik; terwijl het in eerste instantie misschien gemakkelijker is om code in veel kleine stukjes te breken, kunnen die kleine stukjes later moeilijker te hanteren zijn. Wanneer correct gebouwd, helpt een klassenhiërarchie zowel ontwikkelaars als gebruikers bij het bepalen hoe klassen werken. Als het is gebouwd zonder onderhoud en duidelijkheid in het achterhoofd, kunnen de vele niveaus van overerving verwarrend zijn om op terug te kijken en te begrijpen.

ANDERE TALEN

heeft dit artikel jou geholpen? bedankt voor de feedback bedankt voor de feedback

Hoe kunnen we helpen? Hoe kunnen we helpen?