Overleg:Klasse (informatica)

Pagina-inhoud wordt niet ondersteund in andere talen.
Uit Wikipedia, de vrije encyclopedie

Opmerking 1:

"Klasse-gebaseerde talen scheiden het concept van de definitie van de vorm van objecten en het eigenlijke gebruik van objecten. In klasse-gebaseerde talen vormt een klasse de definitie van een hele verzameling objecten: hun toestand, hun operaties, hun interface worden vastgelegd door de klasse. Een klasse van deze soort is, bij wijze van spreken, het origineel dat op een kopierapparaat gelegd wordt. Objecten zijn de kopiën die van dit origineel gemaakt worden -- ze beschikken over een eigen kopie van dezelfde toestandsruimte en dezelfde operaties. Ze voldoen ook aan dezelfde interface als vastgelegd door de klasse."

De bovenstaande vergelijking is wat ongelukkig gekozen volgens mij. Het gaat niet over een kopie! Een klasse is veeleer een (blueprint) bouwplan dan een gemaakt prototype. Bij "het nemen van een kopie" ga je er van uit dat er al een exemplaar bestaat, dat is niet het geval. Enkel een omschrijving is voor handen. Wat in de bovenstaande tekst wordt geïllustreerd lijkt mij eerder het clonen van objecten.

Heel het gedoe over de "toestandsruimte" lijkt me ook nikszeggend. Ik weet niet zeker waar het over gaat, hoewel ik vermoed dat het over de omvatte variabelen gaat? Ik vind het allemaal nogal cryptisch en poëtisch gedefinieerd terwijl het volgens mij veel concreter kan:

"Een klasse is een logische component in objectgeörienteerde programmatie. Een klasse is de blauwdruk van een object. Ieder object wordt geïnstantieerd van een klasse. Bij het instantiëren wordt een nieuw object gemaakt volgens de omschrijving die door de klasse wordt vooropgesteld. Concreet beschrijft de klasse welke variabelen het object zal bevatten en welke functies ze kan gebruiken."

--- Opmerking 2:

"Het onderscheid klasse versus object is een formalisatie van het onderscheid tussen het statische karakter van de definitie van objecten en het dynamische karakter van hun gebruik. Ditzelfde onderscheid komt overigens terug in de verschillende typen diagrammen binnen de Unified Modeling Language. Omdat klassen het statische karakter van objecten vastleggen, worden ze binnen de object-georiënteerde talen meestal niet beschouwd als actieve entiteiten die in de werking van het programma deelnemen (de zogenaamde first-class citizens)."

Ik weet niet zeker wat je bedoeld met het onderscheid binnen UML. Is het niet evident dat er een onderscheid is? En ik zie niet hoe dit relevant is. Ook zijn de termen "actieve entiteiten" en "first-class citizens" mij niet gekend. Ik stel me vragen of het hier niet veel te veel over de verdraaide kijk van een individueel persoon gaat. Ik zie hier echt de essentie niet van in.

---

Algemene opmerking:

Als ik de Engelstalige versie van dit onderwerp lees dan weet ik van begin tot einde waarover het gaat en stem ik met alles in. Alle onderwerpen lijken ook behandeld zoals interfaces en abstracte classes. Maar bij de Nederlandse versie wordt ik overvallen door poëtische vertalingen en zeer persoonlijke interpretaties.

De uitzonderingen worden soms als regel aangehaald waarop de hangbare manier als uitzondering wordt beschouwd (zie type vs class). Ik zou bij de algemene voorstelling van het concept klassen niet in strijd gaan met Java, C++ en C#, immers zijn zij de standaard en worden ze in veel boeken als de grondslag beschoud. Het lijkt me logischer om deze uitzonderingen in een appart hoofdstuk te beschouwen.