Objecten in BlueJ

Leerdoelen

Na het bestuderen van dit hoofdstuk wordt van je verwacht dat je de volgende begrippen kent en kunt gebruiken:

  • klasse
  • object of instantie
  • constructor
  • methode
  • parameter
  • attribuut
  • int (integer)
  • boolean
  • terugkeerwaarde
  • void

Studeeraanwijzingen

Op de CD ROM van het leerboek of hier kun je de antwoorden op de vragen in het boek vinden.

Klassen en objecten

In het eerste hoofdstuk ga je aan de slag met de klasse Lamp. Deze kun je vinden in de voorbeelden. Lamp is een klasse. Een klasse is een soort bouwtekening. Van een klasse kun je een concreet object maken door de constructor aan te roepen.

constructor
/**
  * Constructor voor objecten van klasse Lamp
  * Maakt een lamp op default positie (100)
 */
  public Lamp() {
    this( 100 ); //roept andere constructor aan
  }
  
/**
  * Constructor 2 incl positie
  * @param positie lamp
 */  
 public Lamp(int positie) {
    this.positie = positie;
  }
  
//objecten (of instanties) maken
Lamp lamp1 = new Lamp();
Lamp lamp2 = new Lamp(200);

Een constructor is een speciale methode waarmee je een concreet object van een klasse aan kunt maken. Een klasse kan meerdere constructors hebben. Lamp bijvoorbeeld heeft twee constructors. De eerste maakt een lamp zonder dat je hoeft aan te geven waar deze op het scherm verschijnt. Als je een lamp op deze manier maakt krijgt hij een default positie (in dit geval 100). Bij de andere constructor kun je wel aangeven waar hij op het scherm moet komen. Bij deze constructor moet je de gewenste positie als parameter meegeven.

/**
  * Constructor voor objecten van klasse Lamp
  * Maakt een lamp op de plaats aangegeven door positie
  * bij creatie is lamp onzichtbaar
  */
  public Lamp( int positie ) {
    this.positie = positie;
    this.isZichtbaar = false;
  }
Lamp lamp2 = new Lamp(400);
// zet de lamp aan
lamp2.aan();

De naam van een constructor is altijd hetzelfde als de naam van de klasse, inclusief hoofdletter.

Attributen

Een klasse heeft bepaalde eigenschappen - de attributen. De klasse Lamp bijvoorbeeld heeft drie attributen:

Attributen zijn - uitzonderingen daargelaten - private. Dit betekent dat ze niet direct aangeroepen kunnen worden. Om de toestand van attributen op te vragen worden methoden gebruikt.

Methoden

Naast eigenschappen kent een klasse zogenaamde methoden. Grofweg zijn er twee soorten:

Terugkeerwaarde

Methoden die iets teruggeven als ze worden aangeroepen. Vaak is dit de toestand van een attribuut. De terugkeerwaarde van de methode isAan() van de klasse Lamp geeft de toestand van het attribuut isAan terug als true of false, afhankelijk van de toestand van dat moment. Bij het schrijven van een methode moet de programmeur aangeven wat voor type de methode terug geeft.

// Methode om te checken of lamp aan of uit is
public boolean isAan() {
    return isAan;
}

Methoden kunnen worden aangeroepen op objecten van de klasse.

boolean b = lamp1.isAan();

Void

Methoden zonder terugkeerwaarde. Deze veranderen vaak iets aan de toestand van een attribuut. De methoden aan() en uit() bijvoorbeeld veranderen de toestand van het attribuut isAan in respectievelijk true en false. Methoden zonder terugkeerwaarde krijgen als terugkeerwaarde void.

// Methode om lamp aan te zetten
public void aan() {
    isAan = true;
}

// Methode om lamp uit te zetten
public void uit() {
    isAan = false;
}
//aanroep van methode op object
lamp1.aan();
lamp1.uit();

Methoden kunnen, mits ze toegankelijk (public) zijn worden aangeroepen op objecten van een klasse. Op een instantie van de klasse Lamp kun je dus public methoden aanroepen. In BlueJ kun je een overzicht van public methoden krijgen door met de rechter muisknop op het object te klikken (zie screenshot).

screenshot klasse lamp