Hoofdstuk 9 Objecten en klassen.

Slides:



Advertisements
Verwante presentaties
MagentaPurpleTeal PinkOrangeBlue LimeBrown RedGreen Introductie C# /.NET
Advertisements

automatische garbage collection klein object georiënteerd betrouwbaar
Het type int Tekenen met Java operatoren
JAVA -- H101 Menu: enkel voor applicaties, niet voor applets soorten: hoofdmenu shortcut popupmenu MENU’S 1. Menu Hoofdmenu’s Shortcuts Popupmenu’s 2.
OOS Object geOrienteerd Software-ontwerp - 4 Codeerperikelen Singleton Specificeren Scheiding GUI en Domein Facade.
Klassen en objecten.
Omgevingen zijn dan geïmplementeerd als Symbol Tables. Symbol Table mapt een symbool met een Binding Meerdere noties van binding –Meerdere manieren te.
Computervaardigheden en Programmatie Universiteit AntwerpenObjecten 4.1 Computervaardigheden en Programmatie 1rste BAC Toegepaste Biologische Wetenschappen.
Modula vs Java MODULE Show; CONST PI = ; TYPE PointRc = RECORD x,y : INTEGER; speed : REAL; angle : REAL; END; VAR a,b : PointRc; BEGIN.
Hoofdstuk 6: Controle structuren
Hoofdstuk 2 Hallo, C# !.
Hoofdstuk 10 Overerving.
Opgave 1a: afronden int n=5; double a, b, c, d; a = n * 1.5; b = n * 3 / 2; c = n / 2 * 3; d = 3 / 2 * n; a b c d
Array nDeclaratie nCreatie nOpvragen nWijzigen nLengte String [ ] a; a = new String[10]; ……a[5]…… a[5] = ……; …a.Length… …is eigenlijk overbodig! List a;
Hoorcollege 8 Game object structuren. Arrays in games Grid-gebaseerd speelveld (zoals Tetris) Lijst van spelers Lijst van inventory items Lijst van alle.
Hoofdstuk 8.5 Subklassen. versie-management problematiek Voortborduren op eerder gedaan werk nEerste poging: “knip&plak” class Twee { int x, y; int oud.
Eerste deeltoets Uitwerking. Resultaten Gemiddeld: 6,01 Tips voor de volgende keer: – Werk in klad uit, schrijf duidelijk – Oefenen met loops en tellertjes.
Hoofdstuk 8 Objecten en klassen.
Hoorcollege 7 Collections, arrays. Programma ‘Snowflakes’ Sneeuwvlok object.
JAVA -- H81 Exception: ongewone of foutieve situatie->prog. mislukt kan onderschept en afgehandeld worden. = een object van de klasse Throwable, gegenereerd.
Checked exceptions: FileNotFoundException, IOException, …
JAVA --- H71 thread= draad in het programma (pad) gewone applets = één thread, volgt één pad multithreading = er worden twee of meer paden gestart, die.
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.
JAVA1 H 1. KENNISMAKING MET JAVA EN DE ONTWIKKELOMGEVINGEN 1. ONTSTAANSGESCHIEDENIS VAN JAVA Java: ontworpen in 1990 door Sun Microsystems voor de programmering.
Oefeningen Hoofdstuk 3.
Methods of Development #3: Objecten. * Staat op USAT weblog.
Algoritmiek Strings & Stringmanipulaties; Controle Structuren; Floating-point notation. Hoorcollege 4 - Ma. 25 sept L.M. Bosveld-de Smet.
Algoritmiek Java GUIs, AWT en Swing API Overzicht te bestuderen stof, voorbeeldtentamen Hoorcollege 15 - Ma. 11 dec L.M. Bosveld-de Smet.
JAVA1 H 22. COLLECTIONS FRAMEWORK. 1. INLEIDING. Collections framework Is een verzameling van data structuren, interfaces en algoritmen Meest voorkomende.
1 HOOFDSTUK 5 CONTROLESTRUCTUREN (DEEL 2) 5.1. INTRODUCTIE  Vervolg discussie omtrent gestructureerd programmeren  Introductie van de overblijvende controlestructuren.
HOOFDSTUK 7 ARRAYS 7.1.     INLEIDING Array
LauwersCollege Buitenpost Java Applet programma dat op een website zichtbaar is Java Application programma dat zelfstandig werkt Javascript Scripttaal.
Hoofdstuk 2 Java. Soorten Java-programma’s nJava Applet programma “leeft” op een WWW-pagina nJava Application programma heeft een eigen window nJavascript.
Hoorcollege 9 Jewel Jam The revenge. Hierarchie van game objecten Game object (lijst) Game object (grid) Game object (lijst) Game object.
Hoofdstuk 10.1 Toepassing: Bitmap-editor. nKlik punten op scherm nPlaatje verschuiven left, right, up, down nPlaatje bewerken clear, invert, bold, outline.
Hoofdstuk 5 Interactie. Controls Form Label Button Label TextBox.
Hoorcollege 5 Herhaling, game object interactie. Ball class class Ball { Texture2D colorRed, colorGreen, colorBlue; Texture2D currentColor; Vector2 position,
C++ C++ als een verbetering van C Abstracte datatypen met classes Constructoren en destructoren Subklassen binding van functies 1.
The beast has been released! 4 arcade-style games Interviews with famous people in the game industry Develop browsers games for any device (phone, tablet,
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 C programmeren voor niet-C programmeurs les 2 definitie.
Hoorcollege 4 Objecten en methoden. Eigen methode toevoegen class Painter : Game { public void HandleInput() { … } protected override void Update(GameTime.
Constructoren Genesis 1:1 Aarde a1 = new Aarde(“Adam”, “Eva”);
Animatie nAnimatie: “tekenfilm” programma toont automatisch veranderende beelden nGemakkelijk te programmeren met gebruik van de klasse Thread “draadje”
Hoofdstuk 11.3 Algoritmen: Zoeken in een netwerk.
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.
Beslissingen. Inhoud: Booleaanse expressies: wat? Booleaanse expressies: wat? Relationele en logische operatoren Relationele en logische operatoren De.
Hoofdstuk 3 Methoden om te tekenen.
Hoofdstuk 8 Keuze verplicht…. Opdrachten voorwaardelijk uitvoeren opdracht wordt alleen uitgevoerd als voorwaarde geldt if (temperatuur
Hoofdstuk 12 Ontwerp van programma’s. Ontwerp van de GUI nStandaard in Applets: alle met add toegevoegde componenten komen naast elkaar (totdat de regel.
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);
Eerste deeltentamen nNagekeken werk ligt voor in de zaal nNeem je eigen werk mee: in het college wordt het besproken nVragen over de beoordeling: in de.
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.
Exceptions Exception: nUitzonderlijke toestand die door een methode wordt opgeworpen nDe situatie moet door de aanroeper van de methode worden opgevangen.
Objectgeoriënteerd Programmeren (2)
Gameprogrammeren: Objecten en geheugen
Gameprogrammeren: Overerving
Windows-applicatie using System.Windows.Forms; using System.Drawing;
Declaratie Declaratie reserveert geheugenruimte
1. Een klasse is… Een groepje opdrachten Een groepje variabelen
Voorbeeld: Simulatie van bewegende deeltjes
Voortborduren op eerder gedaan werk
Gameprogrammeren: Klassen en objecten
Digitale beeldverwerking
Arjan Egges & Paul Bergervoet
Exceptions Exception:
Transcript van de presentatie:

Hoofdstuk 9 Objecten en klassen

Programma en Geheugen opdrachten variabelen methoden objecten klasse veranderen zijn gegroepeerd in zijn gegroepeerd in methoden objecten bewerken zijn gegroepeerd in hebben als type klasse klasse klasse

Klasse-definitie Opsomming van methoden ieder bestaand uit opdrachten class Teller ... { Button b; int t; Opsomming van methoden ieder bestaand uit opdrachten ... init() { } b = new Button(); t = 0; ... bewerken ... paint(...) { } g.drawString(t...); Beschrijving van objecten door declaraties van variabelen ... actionPerformed(...) { } t = t+1; this.repaint(); }

Declaratie Declaratie reserveert geheugenruimte Voor een primitieve waarde zoals be- schreven in klasse Scrollbar int x; x 5 x = 5; Voor een object-verwijzing Scrollbar s; s s = new Scrollbar(...);

Creatie van nieuwe objecten Objecten met als type een library-klasse type van het gewenste object Scrollbar s; s = new Scrollbar(...); Objecten met als type een zelfgemaakte klasse Thermo t; t = new Thermo( ); dit doet de browser t . init ( ); t . paint (...);

Creatie van objecten Opbouw van object is gespecificeerd in de klasse browser’s current applet class Thermo { } extends Applet Thermo Scrollbar meter; int min, max; // methoden... geërfd meter min max zelf gede- clareerd

Aanroep van init public void init ( ) { Button reset; } min = 0; max = 0; meter = new Scrollbar(...); reset = new Button(...); Button reset meter min max Thermo browser’s current applet this Scrollbar

Aanroep van init } reset = new Button(...); this . add(meter); this . add(reset); reset . addActionListener(this); meter . addAdjListener(this); meter min max Thermo browser’s current applet reset this Scrollbar Button actListener added adjListener value

Na afloop van Aanroep van init Button actListener meter min max Thermo browser’s current applet added Scrollbar adjListener value

Klassen en objecten Klasse-definitie in programma Object-creatie door browser Thermo Klasse-definitie in library Object-creatie met new Scrollbar Klasse-definitie in programma Object-creatie met new Ruimte

Voorbeeld: Simulatie van bewegende deeltjes Simulatie - object Ruimte - objecten Deeltje - objecten Button - objecten

De klasse Simulatie public class Simulatie extends Applet { Button stap, auto; Ruimte r1, r2, r3; public void init ( ) { stap = new Button (“stap”); auto = new Button (“start”); r1 = new Ruimte(...); r2 = new Ruimte(...); r3 = new Ruimte(...); ... } Klasse Ruimte gaan we zelf maken!

heeft drie eigen Deeltje - objecten De klasse Ruimte Ruimte is een uitbreiding van een bestaand interactie-object private class Ruimte { } extends Canvas Deeltje d1, d2, d3; ieder Ruimte -object heeft drie eigen Deeltje - objecten // methoden nog toevoegen

De klasse Deeltje Deeltje is helemaal zelfgemaakt private class Deeltje { } positie van het Deeltje int x, y; int dx, dy; snelheid van het Deeltje Color kleur; // methoden nog toevoegen

Samenhang van objecten Simulatie Samenhang van objecten Button geërfd van Applet zelf gedeclareerd r1 r2 r3 stap auto browser’s current applet Button d1 d2 d3 Ruimte d1 d2 d3 Ruimte d1 d2 d3 Ruimte geërfd van Canvas x y dx dy kleur Deeltje x y dx dy kleur Deeltje x y dx dy kleur Deeltje

Constructie van nieuw object new-expressie doet twee dingen: r1 = new Ruimte ( ... ) ; r1 Geheugenruimte klaarzetten d1 d2 d3 Ruimte 100 196 Constructormethode aanroepen waarde is pijl naar het nieuwe object die je kunt opslaan

naam is hetzelfde als van de klasse Constructormethode naam is hetzelfde als van de klasse private class Ruimte { Deeltje d1, d2, d3; } private Ruimte ( ) { } int breed, int hoog this . setSize (breed,hoog); geen resultaat- type! this . setBackground (Color.YELLOW); d1 = new Deeltje (...); d2 = new Deeltje (...); d3 = new Deeltje (...); geërfd van Canvas

De klasse Deeltje private class Deeltje { } int x, y, dx, dy; Color kleur; public Deeltje (...) {...} public void doeStap (...) {...} public void teken (Graphics g ) {...}

Methoden van klasse Deeltje private class Deeltje { } int x, y, dx, dy; Color kleur; public void teken ( Graphics gr) { gr . setColor (kleur); gr . fillOval( x-3, y-3, 7, 7 ); }

Methoden van klasse Deeltje private class Deeltje { } int x, y, dx, dy; Color kleur; public void doeStap ( ... ) { x += dx; y += dy; if (x<0) { } x = -x; dx = -dx; if (y<0) { ... } if (x>maxX) { ... } if (y>maxY) { ... }

Overzicht van klassen class Simulatie extends Applet impl ActList init actionPerformed class Ruimte extends Canvas Ruimte paint class Deeltje Deeltje doeStap, teken

Methoden van klasse Simulatie public class Simulatie extends Applet impl ActionListener { } Button stap, auto; Ruimte r1, r2, r3; public void init ( ) { stap = new Button (“stap”); auto = new Button (“start”); r1 = new Ruimte (100, 196); r2 = new Ruimte (196, 150); r3 = new Ruimte ( 60, 75); } this.add(stap); this.add(auto); this.add(r1); this.add(r2); this.add(r3); stap.addActionListener(this); auto.addActionListener(this);

Methoden van klasse Simulatie public class Simulatie extends Applet impl ActionListener { } Button stap, auto; Ruimte r1, r2, r3; public void actionPerformed (ActionEvent e ) { if (e.getSource() == stap) this.doeStap( ); else ... } private void doeStap ( ) { } r1.doeStap(); r2.doeStap(); r3.doeStap(); r1.repaint (); r2.repaint (); r3.repaint ();

Methoden van klasse Ruimte private class Ruimte extends Canvas { } Deeltje d1, d2, d3; public Ruimte (int breed, int hoog) { this.setSize (breed, hoog); this.setBackground (Color.gray); d1 = new Deeltje(Color.RED, 30, 40, 10, 10); d2 = new Deeltje(Color.GREEN, 100, 80, 5, -10); d3 = new Deeltje(Color.BLUE, 200, 60, 8, 2); }

Methoden van klasse Ruimte private class Ruimte extends Canvas { } Deeltje d1, d2, d3; public void doeStap ( ) { d1 . doeStap (this.getSize()); d2 . doeStap (this.getSize()); d3 . doeStap (this.getSize()); } public void paint (Graphics gr) { d1 . teken (gr); d2 . teken (gr); d3 . teken (gr); }

zich zelfstandig ontwikkelende lijn van gebeurtenissen Animatie Animatie: “tekenfilm” programma toont automatisch veranderende beelden Gemakkelijk te programmeren met gebruik van de klasse “draadje” Thread zich zelfstandig ontwikkelende lijn van gebeurtenissen

Maak een animatie Thread animatie; animatie = new Thread ( this ); animatie . start ( ); this . run ( ); roept run aan van object dat bij constructor is meegegeven en keert dan direct terug (terwijl run nog bezig is)

De methode run class Simulatie extends Applet { } implements Runnable oneindige herhaling! public void run ( ) { } while (true) Thread . sleep (50); milliseconden milliseconden { } this . doeStap ( ); try { Thread . sleep (50); } catch (Exception e) { }

Starten van de animatie public void actionPerformed (ActionEvent e) { } if (e.getSource ( )==auto) { } if (beweging) { auto . setLabel (“Start”); beweging = false; } else { animatie = new Thread(this); animatie . start ( ); auto . setLabel (“Stop”); beweging = true; else this . doeStap ( );

De methode run nogmaals class Simulatie extends Applet { } implements Runnable oneindige herhaling! while (true) eindige herhaling. public void run ( ) { } while (beweging) { } this . doeStap ( ); try { Thread . sleep (50); } catch (Exception e) { }

Handiger Starten van de animatie public void actionPerformed (ActionEvent e) { } if (e.getSource ( )==auto) { } if (beweging) { auto . setLabel (“Start”); beweging = false; } else { (animatie != null ) animatie = null; animatie = new Thread(this); animatie . start ( ); auto . setLabel (“Stop”); beweging = true; else this . doeStap ( );

De waarde null null : verwijzing naar niks x null : verwijzing naar niks x = null; null is een geldige waarde voor elk object-verwijzings-type

Samenvatting Button actListener meter min max Thermo browser’s current applet added Scrollbar adjListener value

Samenvatting Maak objecten van een zelfbedachte klasse variabelen: wat is het object methoden: wat kan het object

Simulatie Button geërfd van Applet zelf gedeclareerd r1 r2 r3 stap auto browser’s current applet Button d1 d2 d3 Ruimte d1 d2 d3 Ruimte d1 d2 d3 Ruimte geërfd van Canvas x y dx dy kleur Deeltje x y dx dy kleur Deeltje x y dx dy kleur Deeltje