Software Development fundamentals

Slides:



Advertisements
Verwante presentaties
Door belonen, negeren en corrigeren.
Advertisements

Instructie Programmeren Debuggen 5JJ70. Debuggen: Wat is het probleem Je programma compileert, maar werkt niet zoals verwacht, wat nu? Vraag je af: wat.
De koektrommel of de grabbelton
1 Voorwaarden hergebruik Modulair ontwerp Low coupling High cohesion.
Static Keyword static voor functieleden functie niet voor een object aangeroepen class K {... static int minimum( int i, int j); } aanroep: K::minimum(
JAVA -- H51 CONSTRUCTOR –- COPY-CONSTRUCTOR 1Constructor: Dezelfde naam als de klasse Wordt uitgevoerd d.m.v. new Initialisatie van de (private) attributen.
Hogeschool HZ Zeeland 19 augustus 2003augustus 2003 Data Structuren & Algoritmen Week 3.
Visual Basic 2005/2008 OOP in praktijk André Obelink - MCSD, MVP Web: Web: -
Overerving: It’s a kind of magic…. Principes van OO: 1) Overerving 2) Encapsulatie 3) Polymorphisme = (deel van het) OO. paradigma.
Hoorcollege 14 Vijanden, excepties. Overzicht programmaconstructies Opdrachten Toekenning Aanroep void-methode return-opdracht while-opdracht for(each)-opdracht.
Polymorfisme: inleiding Hello me, meet the real me…
Animatie nAnimatie: “tekenfilm” programma toont automatisch veranderende beelden nGemakkelijk te programmeren met gebruik van de klasse Thread “draadje”
Medialessen groep 8.
Tircms03-p les 4 Klassen. Abstracte datatypes in C struct stack { char info[100]; int top; }; void reset(stack *s) { s->top = -1; } void push(stack *s,
Herhalingscombinaties
Java Objectgeoriënteerd Programmeren in Java met BlueJ
Java Objectgeoriënteerd Programmeren in Java met BlueJ Hoofdstuk 7 Polymorfie en overerving © 2014, Gertjan Laan, versie 2.
 C++ heeft een inheritance mechanisme  Manier om functionaliteit te ‘erfen’ van een parrent class ◦ Polymorphisme ◦ Zoals we het ook in C# kennen.
Java & het Web Programma: Contexts Listeners Scope/Attributes Thread safety.
Shake Song Fort van de Verbeelding Bovenbouw Groep 7 en 8 (en soms ook groep 6)
Variabelen. Wat zijn variabelen? In een programmeertaal zijn er “dingen” nodig die ervoor zorgen dat het programma informatie voor korte of langere tijd.
Eigen klassen maken A new way of thinking.. Wat? Zie voorbeeld. Zie voorbeeld.
Codetuts Academy Les 2 Module 2a Php Fundamentals 1.
Ouderavond Slim Fit unit 5 t/m 8. Inhoud / programma van deze ouderavond Hoe zag onze proefweek eruit? Wat houdt Slim Fit in voor unit 5 t/m 8? Enkele.
OOP en.NET. Objecten Is geen ‘nieuw’ mysterieus woord Overal om ons heen zien we objecten: – TV – Computer – Auto – Wasmachine – ….
Je kunt kiezen uit 4 categorieën muziek Raad welke muziek je hoort Bij een goed antwoord krijg je het aantal punten dat bij de vraag hoort Op het eind.
Het internet Sociale media MailBlogChattenVirussen.
GUI & classes Een Gui in een class steken en het object gebruiken.
De definitie van een object. Een object is een verzameling van eigenschappen en bewerkingen. Veel voorkomende objecten zijn: D (display) Gui (user interface)
Uitleg bij de vragenlijst Veiligheidsbeleving
Windows applicatieontwikkeling
Gameprogrammeren: Objecten en geheugen
Gameprogrammeren: Lists en interfaces
Gameprogrammeren: Overerving
Object georiënteerd programmeren
Gameprogrammeren: Afsluiting
Gameprogrammeren: Herhalingen
Gameprogrammeren: Properties
Informatie verdraaien
Nee Zeggen!.
Gameprogrammeren: Abstracte klassen
Gameprogrammeren: Interfaces
Gameprogrammeren: Klassen en objecten
Software Development fundamentals
GAME MAKER ONLINE Les 3 / Pac-Man Michel Fiege.
ASP.NET MVC Web Development
JULLIE WETEN DAT IK HET HEB, MAAR WAT IS HET?
Eigenschappen van het vermenigvuldigen van gehele getallen en handig rekenen © André Snijers.
Slim tellen.
Software Development fundamentals
Software Development fundamentals
Slim tellen.
ASP.NET MVC Web Development
Communiceren met knipperen
Software Development fundamentals
Gameprogrammeren: Enemies in Tick Tick
– Software development fundamentals
Software Development fundamentals
Software Development fundamentals
Software Development fundamentals
– Software development fundamentals
Windows applicatieontwikkeling
Software Development fundamentals
Software Development fundamentals
Software Development fundamentals
Software Development fundamentals
Software Development fundamentals
Software Development fundamentals
Software Development fundamentals
Transcript van de presentatie:

Software Development fundamentals Casting & polymorphism

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

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’.

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

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

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

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() {….} }

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

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

Einde Zijn er vragen?