Overloading My name is overloading, cause we are many.

Slides:



Advertisements
Verwante presentaties
Van domeinklasse tot implementatie
Advertisements

Het ontwerpen van een klasse
Het type int Tekenen met Java operatoren
Klassen en objecten.
Hoofdstuk 4: Klassen definiëren
Hoofdstuk 2 Hallo, C# !.
Opg.1a: substring } String substring(int a) { int t; for (t=a; t
Hoofdstuk 8 Objecten en klassen.
Static Keyword static voor functieleden functie niet voor een object aangeroepen class K {... static int minimum( int i, int j); } aanroep: K::minimum(
CONTROLESTRUCTUREN (DEEL 1)
CONTROLESTRUCTUREN (DEEL 2)
JAVA -- H51 CONSTRUCTOR –- COPY-CONSTRUCTOR 1Constructor: Dezelfde naam als de klasse Wordt uitgevoerd d.m.v. new Initialisatie van de (private) attributen.
Oefeningen Hoofdstuk 3.
PHP functies.
Consoletoepassing Variabelen Klassen
Algoritmiek Object-georiënteerd Programmeren
6.1 Inleiding HOOFDSTUK 6 METHODEN
1 HOOFDSTUK 5 CONTROLESTRUCTUREN (DEEL 2) 5.1. INTRODUCTIE  Vervolg discussie omtrent gestructureerd programmeren  Introductie van de overblijvende controlestructuren.
Hoofdstuk 3: Inleiding tot Java Applets
LauwersCollege Buitenpost Java Applet programma dat op een website zichtbaar is Java Application programma dat zelfstandig werkt Javascript Scripttaal.
Opgave 1a: void nvoid staat in de header van een methode die geen resultaatwaarde heeft nde aanroep van een void-methode is dan een opdracht i.p.v. een.
Hoofdstuk 2 Java. Soorten Java-programma’s nJava Applet programma “leeft” op een WWW-pagina nJava Application programma heeft een eigen window nJavascript.
Opgave 2a nMet een InputStream lees je bytes uit een binare file nMet een Reader lees je characters uit een tekstfile.
Hoorcollege 2 Basis gameprogrammeren. Soorten programma’s Console- applicatie.
Overerving: It’s a kind of magic…. Principes van OO: 1) Overerving 2) Encapsulatie 3) Polymorphisme = (deel van het) OO. paradigma.
Tircms03-p les 6 Templates. Functietemplates void verwissel(int &x, int &y); { int w=x;x=y;y=w;} Dezelfde functie voor meerdere types heet een functietemplate.
Variabelen Part deux.. Variabelen week 3 0. Herhaling 1. De NullPointerException (p101) 2. Primitieven 3. Scope en levensduur van variabelen 4. Meerdere.
Constructoren Genesis 1:1 Aarde a1 = new Aarde(“Adam”, “Eva”);
CONTROLESTRUCTUREN (DEEL 1)
Tircms02-p les 3 Functies Strings Structuren. Functies 1. main() 2. { int k; k = 10 ; printf(“%d\n”,fac(k)); } 3. int fac(n) int n; 4. { int f; f= 1;
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,
Hoofdstuk 8.5 Subklassen. versie-management problematiek Voortborduren op eerder gedaan werk nEerste poging: “knip&plak” class Twee { int x, y; int oud.
Hoofdstuk 14.1 Algoritmen: Zoeken in een netwerk.
Scope. Scope van variaben/methoden Een variabele is te gebruiken binnen de { en } waarbinnen hij is aangemaakt. Hetzelfde geld voor een methode { int.
Encapsulatie: Every man is an island upon himself.
Polymorphisme en Interfaces: inleiding
Hoofdstuk 3 Methoden om te tekenen.
Opgave 1a ncompiler: vertaalt broncode naar machine-uitvoerbare code ninterpreter: voert broncode direct uit.
Hoofdstuk 3 Tekenen en rekenen.
Hoofdstuk 4 Nieuwe methoden. Tekenen g.drawRect(20,60,40,40); g.drawLine(20,60,40,40); g.drawLine(40,40,60,60); g.drawRect(70,60,40,40); g.drawLine(70,60,90,40);
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.
Java Objectgeoriënteerd Programmeren in Java met BlueJ Hoofdstuk 8: Gebruikersinterface © 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.
Klasse uit library Android.App Activity Bij het starten van een app: nOperating system maakt een Activity -object aan… n…en neemt dat onderhanden met de.
Klasse uit library Android.App Activity Bij het starten van een app: nOperating system maakt een Activity -object aan… n…en neemt dat onderhanden met de.
Soorten programma’s nConsole- applicatie. Soorten programma’s nConsole- applicatie nWindows- applicatie.
1e Deeltentamen nNagekeken werk ligt voor in de zaal (alfabetisch op achternaam) nNeem het even mee, de uitwerking wordt in het college besproken nDiscussies.
Aangepaste timing nTheorie (16 colleges + 2 deeltentamens) nPraktijk (16 keer, 3 inleveropdrachten) college Tent. 1 Tent. 3 college prakt. 1 prakt. 3 prakt.
Herhaling: He who does not learn from history, is doomed to repeat it.
Eigen klassen maken A new way of thinking.. Wat? Zie voorbeeld. Zie voorbeeld.
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)
Windows-applicatie using System.Windows.Forms; using System.Drawing;
Objectgeoriënteerd Programmeren (2)
Aanroep van een methode voert opdrachten uit in de body daarvan
Gameprogrammeren: Objecten en geheugen
Gameprogrammeren: Overerving
Hoofdstuk 9.2 Strings.
Windows-applicatie using System.Windows.Forms; using System.Drawing;
vandaag èn vrijdag deadline maandag 12 dec.
Basis Gameprogrammeren
1. Een klasse is… Een groepje opdrachten Een groepje variabelen
Tinpro015b-les6 Templates.
Tinpro015b-les4 Klassen.
Voorbeeld: Simulatie van bewegende deeltjes
Voortborduren op eerder gedaan werk
Aanroep van een methode voert opdrachten uit in de body daarvan
Gameprogrammeren: Klassen en objecten
Exceptions Exception:
Transcript van de presentatie:

Overloading My name is overloading, cause we are many.

Achterliggende concepten 1) Het begrip overloading 2) Signatuur van een methode 3) Het begrip ambiguïteit

Overloading: wat? Mensentaal: het “overladen” van een methode betekent: in één klasse meerdere methoden met dezelfde naam hebben. Mensentaal: het “overladen” van een methode betekent: in één klasse meerdere methoden met dezelfde naam hebben. Probleem: hoe weet de Java compiler welke methode te kiezen? (illustreren) Probleem: hoe weet de Java compiler welke methode te kiezen? (illustreren)

Antwoord: signatuur Bij aanroepen van een methode kan Java de volgende eigenschappen automatisch zien: Bij aanroepen van een methode kan Java de volgende eigenschappen automatisch zien:

Antwoord: signatuur Bij aanroepen van een methode kan Java de volgende eigenschappen automatisch zien: Bij aanroepen van een methode kan Java de volgende eigenschappen automatisch zien: - naam van de methode

Antwoord: signatuur Bij aanroepen van een methode kan Java de volgende eigenschappen automatisch zien: Bij aanroepen van een methode kan Java de volgende eigenschappen automatisch zien: - naam van de methode - aantal parameters - aantal parameters

Antwoord: signatuur Bij aanroepen van een methode kan Java de volgende eigenschappen automatisch zien: Bij aanroepen van een methode kan Java de volgende eigenschappen automatisch zien: - naam van de methode - aantal parameters - aantal parameters - type van de parameters - type van de parameters

Antwoord: signatuur Bij aanroepen van een methode kan Java de volgende eigenschappen automatisch zien: Bij aanroepen van een methode kan Java de volgende eigenschappen automatisch zien: - naam van de methode - aantal parameters - aantal parameters - type van de parameters - type van de parameters De combinatie van deze drie eigenschappen vormt de signatuur van de methode. De combinatie van deze drie eigenschappen vormt de signatuur van de methode.

Antwoord: signatuur Om een onderscheid te kunnen maken tussen twee methoden, moet de signatuur van om het even welke twee methoden in dezelfde klasse in minstens 1 punt van de signatuur verschillen. Om een onderscheid te kunnen maken tussen twee methoden, moet de signatuur van om het even welke twee methoden in dezelfde klasse in minstens 1 punt van de signatuur verschillen. Bemerk dat het type van de terugkeerwaarde geen verschil uitmaakt (!) Bemerk dat het type van de terugkeerwaarde geen verschil uitmaakt (!)

Voorbeelden De signatuur van de methode: De signatuur van de methode: public void paint(Graphics g) { …}

Voorbeelden De signatuur van de methode: De signatuur van de methode: public void paint(Graphics g) { …} is is

Voorbeelden De signatuur van de methode: De signatuur van de methode: public void paint(Graphics g) { …} is ispaint(Graphics)

Voorbeelden De signatuur van de methode: De signatuur van de methode: public void init( ) { … }

Voorbeelden De signatuur van de methode: De signatuur van de methode: public void init( ) { … } is

Voorbeelden De signatuur van de methode: De signatuur van de methode: public void init( ) { … } is init( )

Voorbeelden De signatuur van de methode: De signatuur van de methode: public Button maakKnop(String txt, int x, int y) { … }

Voorbeelden De signatuur van de methode: De signatuur van de methode: public Button maakKnop(String txt, int x, int y) { … } is

Voorbeelden De signatuur van de methode: De signatuur van de methode: public Button maakKnop(String txt, int x, int y) { … } is maakKnop( String, int, int )

Ambiguïteit Wat is het? Wat is het?

Ambiguïteit Oorsprong: Latijn: “vatbaar voor meerdere interpretaties”. Oorsprong: Latijn: “vatbaar voor meerdere interpretaties”.

Ambiguïteit Wat is het? Wat is het? Oorsprong: Latijn: “vatbaar voor meerdere interpretaties”. Oorsprong: Latijn: “vatbaar voor meerdere interpretaties”. Met andere woorden: 2 methoden met dezelfde signatuur zijn ambigu. Met andere woorden: 2 methoden met dezelfde signatuur zijn ambigu.

Ambiguïteit Wat is het? Wat is het? Oorsprong: Latijn: “vatbaar voor meerdere interpretaties”. Oorsprong: Latijn: “vatbaar voor meerdere interpretaties”. Met andere woorden: 2 methoden met dezelfde signatuur zijn ambigu. Met andere woorden: 2 methoden met dezelfde signatuur zijn ambigu. Ambiguë methoden zorgen voor een compilatiefout (vertaling: niet doen dus). Ambiguë methoden zorgen voor een compilatiefout (vertaling: niet doen dus).

Oefeningen Zijn de methoden, waarvan de methodehoofdingen hieronder gegeven zijn, overloade versies van dezelfde methode, of ambigu? Zijn de methoden, waarvan de methodehoofdingen hieronder gegeven zijn, overloade versies van dezelfde methode, of ambigu?

public int berekenSom( int getal1, int getal2 ) public int berekenSom( int getal1, int getal2, int getal3)

public int berekenSom( int getal1, int getal2 ) public int berekenSom( int getal1, int getal2, int getal3) Signaturen:berekenSom( int, int ) berekenSom( int, int, int )

public void schrijfDatum( int maandNummer ) public void schrijfDatum( int jaarNummer )

public void schrijfDatum( int maandNummer ) public void schrijfDatum( int jaarNummer ) Signaturen: schrijfDatum( int ) schrijfDatum( int )

public int schrijfDatum( int maandNummer ) public void schrijfDatum( int jaarNummer )

public int schrijfDatum( int maandNummer ) public void schrijfDatum( int jaarNummer ) Signaturen: schrijfDatum( int ) schrijfDatum( int )

public int verschil( int getal1, int getal2 ) public double verschil( double getal1, double getal2 )

public int verschil( int getal1, int getal2 ) public double verschil( double getal1, double getal2 ) Signaturen: verschil( int, int ) verschil( double, double )

public void paint( Graphics g) public void paint( )

public void paint( Graphics g) public void paint( ) Signaturen: paint( Graphics ) paint( )

public int product(int getal1, int getal2 ) public double product(int getal1, int getal2 )

public int product(int getal1, int getal2 ) public double product(int getal1, int getal2 ) Signaturen: product( int, int ) product( int, int )

public void init( ) public void Init( )

public void init( ) public void Init( ) Signaturen: init( ) Init( )

public void maakKnop(String txt, int x, int y) public void maakKnop(String txt, int x, int y, Color voorgrond, Color achtergrond )

public void maakKnop(String txt, int x, int y) public void maakKnop(String txt, int x, int y, Color voorgrond, Color achtergrond ) Signaturen:maakKnop( String, int, int ) maakKnop( String, int, int, Color, Color )

public void maakKnop(String txt, int x, int y) public void maakKnop(int x, int y, String txt)

public void maakKnop(String txt, int x, int y) public void maakKnop(int x, int y, String txt) Signaturen: maakKnop( String, int, int ) maakKnop( int, int, String )

public int drukAf( String maand, String jaar) public int drukAf( String maand )

public int drukAf( String maand, String jaar) public int drukAf( String maand ) Signaturen: drukAf( String, String ) drukAf( String )