Java les 5 2022

Deze les:
  • Inheritance
  • Object maken
  • Casting
  • Returnwaarde/type
  • State
1 / 30
volgende
Slide 1: Tekstslide
InformaticaMiddelbare schoolhavo, vwoLeerjaar 4

In deze les zitten 30 slides, met interactieve quizzen, tekstslides en 1 video.

time-iconLesduur is: 70 min

Onderdelen in deze les

Deze les:
  • Inheritance
  • Object maken
  • Casting
  • Returnwaarde/type
  • State

Slide 1 - Tekstslide

Inheritance
Het komt vaak voor dat er een object nodig is dat erg lijkt op een ander. In plaats van de class volledig opnieuw te schrijven, kan je van een class ook erven (Inherit) in een nieuwe class. Een kopie waar je vervolgens extra dingen aan toe kan voegen. Je hebt dan dus een nieuwe class met alle functies en variabelen die gedefinieerd zijn in de oorspronkelijk class, waar je vervolgens nieuwe functies en variabelen aan kan toevoegen en zelfs ook bestaande methods vervangen. .

Slide 2 - Tekstslide

Erven doe je dus specifiek als je een specialisatie van een bestaande class wilt. Stel je hebt een class Schip, en je wilt daar een extra class aan toevoegen voor vrachtschepen. Door de class VrachtSchip te laten erven van Schip heb je automatisch alle eigenschappen van een Schip in je class Vrachtschip

Slide 3 - Tekstslide

Als een class erft van een andere class, bv. een Vrachtschip erft van Schip, dan is er een “is-een” relatie tussen de superclass(de class waarvan wordt gererft) en de subclass (de class die erft). Namelijk de Vrachtschip is een Schip. Dit zien we ook veel buiten het programmeren.

Slide 4 - Tekstslide

bv. een Persoon en een Leerling. De Leerling is een Persoon. Hetzelfde geldt ook voor een Docent. Zou je dit willen programmeren, dan erven zowel Leerling als Docent van Persoon.
Het gevolg hiervan is dat een Vrachtschip ook als Schip gezien kan worden (of een Leerling als een Persoon). Immers alle functies van een Schip zijn ook aanwezig in het VrachtSchip.

Slide 5 - Tekstslide

Object maken
Objecten aanmaken doe je met behulp van het keyword new. Dus een leerling object maak je zo aan:
Leerling nieuweLeerling = new Leerling(“Piet”);
Wat ook kan, is het volgende:
Persoon nieuwePersoon = new Leerling(“Jan”);

Slide 6 - Tekstslide

Omdat leerling van Persoon erft, is een leerling automatisch een persoon (zie inheritance). Andersom is echter niet automatisch waar.
Leerling nogEenNieuweLeerling = new Persoon(“Karel”);
Een persoon is niet automatisch een leerling, maar kan ook bv. een docent zijn. Mocht je toch zeker weten dat een variabele een verwijzing naar een Leerling bevat, dan kan je dat oplossen door middel van casting:

Slide 7 - Tekstslide

Leerling eenBestaandeLeerling = (Leerling)persoonObjectVariabele;
In bovenstaand voorbeeld maken we een nieuwe variabele aan van het type Leerling, en daarin stoppen we een verwijzing naar een leerlingObject dat het systeem kent als een Persoon. Door het (Leerling) stukje vertellen we het systeem dat het toch echt een Leerling object is. Mocht dit niet zo zijn, dan geeft het systeem een foutmelding

Slide 8 - Tekstslide

DUS
Objecten aanmaken doe je met behulp van het keyword new. Een leerling object maak je dus zo aan:
Leerling nieuweLeerling = new Leerling(“Piet”);
Wat ook kan, is het volgende:
Persoon nieuwePersoon = new Leerling(“Jan”);

Slide 9 - Tekstslide

Maken van Objecten en Casting
Vorige les hadden we al gezien dat er een is-een relatie bestaat tussen leerling en persoon. Elke leerling is een persoon. Dat wil zeggen elke Leerling heeft alle eigenschappen van een Persoon zoals methods en variabelen (deze zijn immers geërfd, zie inheritance). Een object Leerling kan dus gezien en behandeld worden als een persoon. Of anders, een object Leerling past in een variabele van het type Persoon, zoals in dit voorbeeld gebeurt.

Slide 10 - Tekstslide

Implicit Casting
Zodra een Leerling object in een variabele van het type persoon zit, wordt het gezien als een object Persoon. Het programma ‘vergeet’ dat het eigenlijk een object Leerling is en kan niet anders dan het als een object Persoon zien.  

Een object ‘verandert’ van type zonder dat de programmeur dat nadrukkelijk (expliciet) aangeeft.

Slide 11 - Tekstslide

Explicit Casting
Er zijn situaties waarin je als programmeur weet dat een object Persoon eigenlijk een object Leerling is en je het object ook als een Leerling object wil kunnen aanspreken.
Dit kan niet zolang het object een typering heeft als Persoon. Zomaar terugstoppen in een Leerling type kan niet. Immers je kan niet zomaar stellen dat een persoon is-een Leerling. Je zal dan het object nadrukkelijk moeten casten naar het Leerling type.

Slide 12 - Tekstslide

Hiermee zeg je eigenlijk tegen het programma dat jij als programmeur weet dat het object ooit een Leerlingtype had en dat je dat terug wilt hebben. Dit nadrukkelijk vertellen noemen we ook wel explicit casting. Dit gebeurt hieronder:

Leerling eenLeerling = (Leerling)nieuwePersoon;

Slide 13 - Tekstslide

Hier wordt een nieuwe variabele gemaakt van type Leerling (gebruik van een bestaande variabele van type Leerling kan ook). In de variabele een Leerling wordt een verwijzing naar het object nieuwePersoon gestopt. Maar omdat nieuwePersoon een typering Persoon heeft, moet het programma expliciet verteld worden dat jij als programmeur wilt dat er een Leerling typering gebruikt wordt.
.

Slide 14 - Tekstslide

Het expliciet casten gebeurt door het stukje (Leerling). Hier is wat tussen haakjes staat het gewenste type.

Expliciet casten kan alleen als het object inderdaad van dat type is, ongeacht welk supertype (supertype, is een type van een van de classes waarvan geërfd wordt) dat het programma gebruikt

Slide 15 - Tekstslide

Returnwaarde/type:
Methoden kunnen iets teruggeven als resultaat van de functie. Dit kan het resultaat van een berekening zijn, of een lijst met namen. Het is belangrijk voor de code die de method aanroept om te weten wat voor resultaat er terug kan komen. Bijvoorbeeld als een method die aan een object vraagt om een naam, dient een tekst (type String) terug te geven met die naam. 

Slide 16 - Tekstslide

Returntypes kunnen getallen zijn (Gehele of komma getallen), tekst of een object.
In het geval van een object, geef je als returntype de klassenaam.
Het type van de returnwaarde gebruikt dezelfde indeling als variabelen typen.
Als een method iets teruggeeft, dan dient dit te gebeuren door het keyword return.

Slide 17 - Tekstslide

Voorbeeld Returntype

public String getName()
{
     return name;
}

Slide 18 - Tekstslide

Als een method niks terug geeft dan kan dat aangegeven worden door void in de method declaratie te schrijven.

  • Methods met void als het returntype kan je zien als opdrachten.
  • Methods met iets anders dan void kan je zien als vragen

Slide 19 - Tekstslide

State (Toestand)
Een toestand of beter een state van een object is de verzameling (globale) variabelen van dat object. Elke verandering in een van deze variabelen verandert de state van het object. Omdat methods vaak de inhoud van deze variabelen nodig hebben, kan elke verandering van de state ook een verandering in gedrag van het object betekenen. Het terugbrengen van het hijsvermogen naar 0, zal betekenen dat het object Kraan niks meer kan tillen.

Slide 20 - Tekstslide

Slide 21 - Video

Slide 22 - Tekstslide

een PSD bevat altijd
A
tekst, vierkanten en driehoeken
B
cirkels en tekst
C
rechthoeken, driehoeken en tekst

Slide 23 - Quizvraag

Hoe declareer je een variabele in Java?
A
eerst naam daarna type
B
eerst type daarna naam
C
kan allebei
D
is niet verplicht

Slide 24 - Quizvraag

Wanneer de programmeur essentiële zaken vergeet te benoemen, noemen we dat een
A
Simulatie fout
B
Syntactische fout
C
Simulatie fout
D
Stomme fout

Slide 25 - Quizvraag

Hoe kan je aangeven of een Method niets terug geeft?
A
Void
B
Return
C
New

Slide 26 - Quizvraag

Met welk keywoord maak je een nieuw object aan?
A
nieuw
B
new
C
geen

Slide 27 - Quizvraag

Wanneer een object ‘verandert’ van type zonder dat de programmeur dat aangeeft, is het
A
implicit casting
B
Explicit casting

Slide 28 - Quizvraag

Als je void gebruikt als returntype, hoe kan je de Method zien dan?
A
Vraag
B
Opdracht
C
Onbelangrijk

Slide 29 - Quizvraag

Wat zijn de bouwstenen van programmeren?
A
Sequentie, Keuze en Commentaar
B
Sequentie, Herhalen en Taal
C
Sequentie, Keuze en Herhalen

Slide 30 - Quizvraag