Objecten

Object georiënteerd programmeren legt objecten als basis, essentie in een programma. Softwareobjecten zijn te vergelijken met reële objecten en voorwerpen in het dagelijkse leven. Ze zullen gebruikt worden om voorwerpen te representeren, zoals de auto waarmee ik rij.

Een auto heeft een aantal eigenschappen/kenmerken die het object beschrijven zoals kleur, bouwjaar, model, maximum-snelheid, brandstof-type, enzovoort.

Daarnaast heeft een auto ook een bepaald gedrag. Als ik op de gaspedaal duw, dan gaat hij sneller; als ik op de rempedaal duw, dan vertraagt hij. Als ik aan het stuur draai, dan verandert mijn auto van richting.

Met softwareobjecten is dat net hetzelfde. De kenmerken noemt men in de programmeerwereld graag eigenschappen (properties), en de gedragingen noemt men functies of methoden (functions/methods).

De eigenschappen worden ondergebracht in variabelen die verbonden zijn aan het object. Als we verder in de cursus spreken van eigenschappen kan dit aldus bekeken worden als variabelen en vice versa.

Methoden zijn codeblokken die verbonden zijn aan het object, functionaliteiten. De methoden bepalen de manier waarop ik met een object kan omgaan.

Definitie: Een object is een groepering van variabelen (eigenschappen) en methoden (gedrag/functies).

Men kan een object als volgt visueel voorstellen:

Private en publieke variabelen

Eigenschappen zijn variabelen die de kern van het object vormen, terwijl dat de methoden zich aan de buitenkant bevinden. Als men correct objectgeoriënteerd programmeert dan dient men de eigenschappen van een object af te schermen van de buitenwereld – ook bekend als inkapseling (encapsulation).

Er kan dan van buitenaf niet zomaar geïnterageerd worden met de eigenschappen, dus er moet steeds één of ander methode benaderd worden om de inhoud van een eigenschap op te vragen of aan te passen. Als inkapseling op dit manier mooi is toegepast, dan hebben wij het over private eigenschappen.

Af en toe wordt wijkt men hier van af, en zijn eigenschappen toch rechtstreeks benaderbaar. In dit geval hebben wij het over publieke eigenschappen.

Het onderscheid tussen private en publieke variabelen is hier te vinden. Publieke eigenschappen zijn wel van buitenaf rechtstreeks benaderbaar, terwijl dat private eigenschappen alleen intern in het object gebruikt kunnen worden.

In een auto is het brandstofpeil een publieke eigenschap omdat iedere gebruiker op het dashbord deze eigenschap rechtstreeks kan raadplegen.

Het oliepeil, daarentegen, zou men kunnen beschouwen als een private eigenschap, omdat die niet zo eenvoudig te achterhalen is. Hiervoor moeten wij meestal de motorkap openmaken en met een peilstok het niveau van de olie meten. Intern wordt de eigenschap oliepeil wel zelf gebruikt door de auto.

Java syntax om variabelen van een object te benaderen:

    objectNaam.eigenschap

Voorbeeld:

Private en publieke methoden

Je mag methoden voorstellen als een soort beschermende, omhullende laag rond de eigenschappen. Via de methoden kan de buitenwereld met het object omgaan. Bij de methoden kan men ook onderscheid maken tussen de publieke en de private methoden.

Aan de hand van publieke methoden gaat de buitenwereld omgaan met het object.

Het draaien aan het sturen van een auto is een publieke methode, terwijl de werking van het differentieel daarentegen beschouwt kan worden als private methode.

Java syntax rondom methoden:

    objectNaam.methode();

Voorbeeld:

Meer hierover in het volgende onderwerp.

Enkele voordelen van OOP

Tegenover procedurele programmeertalen hebben OOP talen (zoals Java) een aantal voordelen

  1. Modulariteit: De software wordt keurig opgedeeld in afzonderlijke data structuren of modules (de objecten) met hun eigen variabelen en methoden. Een object is herbruikbaar voor andere toepassingen en kunnen in verschillende contexts en programma’s gebruikt worden.
  2. Afscherming van informatie: Ieder object heeft een interne structuur die afgeschermd is van de buitenwereld. Men kan vrij, via een publieke interface (de methoden), de interne zaken, opbouw of implementatie veranderen of opvragen.