Tinpro015b-les4 Klassen.

Slides:



Advertisements
Verwante presentaties

Advertisements

PROS2 Les 13 Programmeren en Software Engineering 2.



OOS Object geOrienteerd Software-ontwerp - 3
Instructie Programmeren Task 8 5JJ70. PAGE 2 Task 8: Double Linked List Het doel van deze opdracht is: Het opbouwen van een tweetal klassen, die samen.
Van domeinklasse tot implementatie
PROS2 Les 11 Programmeren en Software Engineering 2.
GESPRG Les 14 Gestructureerd programmeren in C. 174 Details! The devil is in the details.
Het ontwerpen van een klasse
Het type int Tekenen met Java operatoren
Klassen en objecten.
Greenfoot Workshop Bobby - Snake.
Hoofdstuk 4: Klassen definiëren
1 SOCS Hoofdstuk 1 Programmeertaal C. 2 Kenmerken van C Hogere programmeertaal  Grote verzameling types, strenge type controle  Zelf nieuwe types definiëren.
‘Inleiding programmeren in Java’ Derde college Maandag 22 januari 2001 drs. F. de Vries.
MICPRG Les 11 Microcontroller Programmeren in C. 112 Datastructuren in C Werkgeheugen (PC en microcontroller): Statische datastructuren (vaste grootte):
GESPRG Les 7 Gestructureerd programmeren in C. 92 Verwisselen Schrijf een functie waarmee twee int variabelen verwisseld kunnen worden. void wissel(int.
1 Inleiding Programmeren in Java Ma 29 januari 2001.
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(
JAVA -- H51 CONSTRUCTOR –- COPY-CONSTRUCTOR 1Constructor: Dezelfde naam als de klasse Wordt uitgevoerd d.m.v. new Initialisatie van de (private) attributen.
Consoletoepassing Variabelen Klassen
Algoritmiek Object-georiënteerd Programmeren
1 Datastructuren Introductie tot de programmeeropgaven in C++ Jan van Rijn
P. 1 Vakgroep Informatietechnologie Structuur Deel II C++ Classes Namespaces Type casting Reference types Constructors en Destructors Memory Management.
P. 1 Deel I: Programmeertaal C 4. Functies en Macro’s Prof.Dr.Ir. Filip De Turck.
Herhaling Java-programmatie en geautomatiseerd testen (vervolg)
C++ C++ als een verbetering van C Abstracte datatypen met classes Constructoren en destructoren Subklassen binding van functies 1.
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.
Constructoren Genesis 1:1 Aarde a1 = new Aarde(“Adam”, “Eva”);
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,
Scope. Scope van variaben/methoden Een variabele is te gebruiken binnen de { en } waarbinnen hij is aangemaakt. Hetzelfde geld voor een methode { int.
Polymorphisme en Interfaces: inleiding
Opgave 1a ncompiler: vertaalt broncode naar machine-uitvoerbare code ninterpreter: voert broncode direct uit.
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.
De laatste essentiele dingen.  Classes ◦ Syntax ◦ Constructors & Destructors  Header & Source Files ◦ Waar gebruiken we dit voor  Compiler Theorie.
Java Objectgeoriënteerd Programmeren in Java met BlueJ Hoofdstuk 8: Gebruikersinterface © 2014, Gertjan Laan, versie 2.
Studiehouding Ergens verstand van krijgen kost tijd… Uren die je alleen in je boeken doorbrengt maken het verschil. Er is niets mis met onafhankelijkheid.
 C++ heeft een inheritance mechanisme  Manier om functionaliteit te ‘erfen’ van een parrent class ◦ Polymorphisme ◦ Zoals we het ook in C# kennen.
Herhaling: He who does not learn from history, is doomed to repeat it.
Java voor beginners Doel: Een spel maken in LWJGL Door: Jim van Leeuwen.
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
Objectgeoriënteerd Programmeren
Gameprogrammeren: Objecten en geheugen
Gameprogrammeren: Overerving
Hoofdstuk 9.2 Strings.
Windows-applicatie using System.Windows.Forms; using System.Drawing;
Gameprogrammeren: Methoden
Gameprogrammeren: Overerving in Painter
Tinpro015b-les 1 C++ voor C-kenners Voor Technische Informatica.
Basis Gameprogrammeren
Tinpro015b-les3 Hfdst 3,4 Meer operatoren Functies.
C++ • C++ als een verbetering van C • Abstracte datatypen met classes • Constructoren en destructoren • Subklassen • binding van functies 1.
Tinpro015b-les6 Templates.
Gameprogrammeren: Game Basics
Syntax van opdracht opdracht naam naam ( expressie ) ; . , expressie
Voorbeeld: Simulatie van bewegende deeltjes
Voortborduren op eerder gedaan werk
Gameprogrammeren: Klassen en objecten
Arjan Egges & Paul Bergervoet
Software Development fundamentals
Software Development fundamentals
Gameprogrammeren: Arrays
Transcript van de presentatie:

tinpro015b-les4 Klassen

Abstracte datatypes in C struct stack { char info[100]; int top; }; void reset(stack *s) { s->top = -1; } void push(stack *s, char c) { s->top++; s->info[s->top] = c; // s->top = (*s).top

Abstracte datatypes in C char top(stack *s) { return s->info[s->top]; } main() { struct stack s; reset(s); push(s,’a’); /* bedoeld gebruik */ s.info[73] = ’x’; } /* onbedoeld gebruik */

Abstracte datatypes in C++ struct stack { private: char info[100]; int top; public: void reset(void) { top = -1; } void push(char c) { top++; info[top]=c; } char top(void) { return info[top]; } }; main() { stack s; s.reset(); s.push(’a’); }

Structs in C++ Bevatten naast data ook functies (memberfuncties) ( In java methodes) Declaraties zijn • private: alleen door memberfuncties te gebruiken • public: bereikbaar met punt-notatie

Classes in C++ Verschil alleen in default-protectie: Struct declaraties zijn default public Class declaraties zijn default private class stack { char info[100]; int top; public: void reset(void) { top = -1; } void push(char c) { top++; info[top]=c; } char top(void) { return info[top]; } };

Object-georienteerd programmeren Instances van classes heten objecten. Imperatief programmeren: Functies (met objecten als parameter) Object-georiënteerd programmeren: Objecten (met functies als member) Echt objectgeoriënteerde wordt het pas bij dynamische binding van memberfuncties.

Declaratie van memberfuncties Direct in de klasse-declaratie: class c { int x; public: int f(void) { return 2*x; } }; In de klasse-declaratie alleen prototype, functiedeclaratie apart: int f(void); }; int c::f(void) { return 2*x; } Notatie c::f heet scope-resolutie

Static variabelen in C static lokale variabelen van functies worden gedeeld door alle aanroepen void f(void) { static int n=0; printf("ik ben %d keer\ aangeroepen", n++); } Implementatie: globale variabele met beperkte scope

Static members in C++ static members van classes worden gedeeld door alle instanties class c { static int n; int x; int y; public: void f() { n++; } void g() { n++; } void h() { printf ("%d keer memberfuncie\gebruikt", n); } }; Implementatie alweer: globale variabele met beperkte scope

Constructor Initialisatie van een instance van een klasse door constructor functie. Heeft dezelfde naam als de klasse, en geen resultaattype De lidfunctie wordt automatisch aangeroepen als een nieuw klasseobject wordt aangemaakt. De lidfunctie heet constructor. class stack { char info[100]; int top; public: stack(void) { top = -1; } }; Constructorfunctie wordt automatisch aangeroepen bij creatie van de variabele main() { stack s, *p; ... p = new stack; }

Constructor met parameters Handig voor initialisatie Parameters worden meegegeven bij declaratie of dynamische creatie class punt { int x; int y; public: punt(int x0, int y0) { x=x0; y=y0; } }; main() { punt hier(12,5), *p; ... p = new punt(2,6); }

Constructor met this Het is mogelijk de parameters van de data-leden te gebruiken. Binnen de constructor this-> toevoegen class punt { int x; int y; public: punt(int x , int y ) { this->x =x ; this->y =y ; } }; main() { punt hier(12,5), *p; ... p = new punt(2,6); }

Operatoren definiëren (overloading) class vec { int x; int y; public: vec(int x , int y ) { this->x =x ; this->y =y ; } int getx() const { return x;} int gety() const { return y;} private: int x,y; }; vec operator+(const vec &u, const vec &v) { return vec(u.getx() + v.getx(), u.gety() + v.gety()); main() { vec a(12,5), b(3,2) ,s ; s= a+b; cout << s ; }

Friend functies De operator+ krijgt de status van friend-functie, dwz de functie krijgt toegang tot de private leden x en y class vec { int x; int y; public: vec(int x , int y ) { this->x =x ; this->y =y ; } friend vec operator+(const vec &u, const vec &v) private: int x,y; }; vec operator+(const vec &u, const vec &v) { return vec(u.x + v.x, u.y + v.y); main() { vec a (12,5), b(3,2) ,s ; s= a+b; cout << s ; }

Dynamisch geheugen als members Allocatie in constructorfunctie De-allocatie in destructorfunctie class stack { char *info; int top; public: stack(int n) { info = new char[n]; top = -1;} ~stack(void) { delete info;} }; Destructor wordt automatisch aangeroepen als het object verdwijnt. De naam van de klasse met een ~ (tilde) ervoor

Dynamisch geheugen als members Allocatie in constructorfunctie De-allocatie in destructorfunctie class stack { char *info; int top; public: stack(int n) { info = new char[n]; top = -1;} ~stack(void) { delete info;} }; Destructor wordt automatisch aangeroepen als het object verdwijnt. De naam van de klasse met een ~ (tilde) ervoor

Huiswerk les 4 Maak de opgaven 7.1, 7.2, 7.4 uit C++ boek Bestudeer Hfdst 8 uit C++-boek