De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

Software Development fundamentals

Verwante presentaties


Presentatie over: "Software Development fundamentals"— Transcript van de presentatie:

1 Software Development fundamentals
Casting & polymorphism

2 inhoudsopgave Wat is polymorphism? Wat is casting? Hoe werkt het?
Wanneer kan je casten? Nog een voorbeeld Casting checking operators (is en as)

3 Polymorphism Polymorphism = polymorfisme = veelvormigheid
Lijkt op het principe dat iets meerdere dingen kan zijn. Bijvoorbeeld een persoon kan zijn: Mens, Leraar, Student, Kind, Ouder, Partner Maar het is allemaal dezelfde persoon (hetzelfde object) die in elke situatie anders wordt benaderd. Op deze manier kan een object ook in code worden aangesproken als verschillende classes, zolang deze classes maar compatible zijn met het object. Soms moeten we dit een handje helpen, dat heet ‘explicit casting’.

4 Wat is casting? Casting in film & TV: Een acteur toewijzen aan een rol
Je kunt vaak een object naar een ander type casten. Soms gaat dit automatisch, soms moet je het ‘dwingen’, met haakjes (). Dit was casting: Button b = (Button)sender; Of: Student s = (Student)somePerson; Wanneer kan je casten? Je kunt altijd casten van een child class naar een parent class Dan zijn er geen haakjes nodig. Je kunt casten van een parent class naar een child class, als je zeker weet dat het object ook echt van dat type is. Dat forceer je met de haakjes: (Classnaam). Is dit belangrijk? Ja! Casting in film & TV: Een acteur toewijzen aan een rol

5 Hoe werkt casting? Stel dat Student overerft van Persoon ( class Student : Persoon { …. } ). We maken een object: Student tom = new Student(); We plaatsen het object in een List<Persoon> personenLijst.add(tom); // dit kan, omdat leerling erft van persoon. Tom is nu een Persoon geworden, dit werkt niet: Student test1 = personenlijst[0]; // compiler error We kunnen hem gelukkig met haakjes weer casten als Leerling: Student test = (Student)personenlijst[0]; // geen error

6 Nogmaals: Wanneer kan het?
Je kunt altijd casten naar een base class/superclass zonder haakjes: Lifeform a = eenAmoebe; Je kunt expliciet (met haakjes) casten naar elke class of interface, maar je krijgt een runtime error (InvalidCastException) als het object niet echt van dat type is! Cat mijnKat = new Cat(); animalList.Add(mijnKat); Dog test = (Dog)animalList[0] // error

7 Voorbeeld Check de classes rechts Cat poekie = new Cat(); Animal beest = poekie; Ik weet de kat nu in beest zit, maar beest.Meow() werkt niet. Stel dat ik poekie kwijt ben, hoe kan ik beest laten miauwen? Oplossing: beest casten naar Cat Cat someCat = (Cat)beest; someCat.Meow(); // poekie zegt miauw, of korter: ((Cat)beest).Meow(); Dat een object kan wisselen van type, noemen we: polymorphism (polymorfisme: veelvormigheid) class Animal {….} class Cat : Animal { public void Meow() {….} }

8 Casting operators Soms weet je niet zeker of je iets kunt casten. Dit kan je oplossen met is of as. Manier 1, de is operator: if(beest is Cat) { // beest is een Cat, dus ik mag beest casten naar Cat } Manier 2, de as operator: Cat eenKat = beest as Cat if(eenKat != null) // eenKat is een Cat, nu kan ik ‘m gebruiken

9 Opdracht In de opdracht ‘Filerijden’ gaan we casting gebruiken.
Deze keer met een stuk minder uitleg dan in de OOP leven opdracht. Succes!

10 Einde Zijn er vragen?


Download ppt "Software Development fundamentals"

Verwante presentaties


Ads door Google