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,

Slides:



Advertisements
Verwante presentaties

Advertisements




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.
Het type int Tekenen met Java operatoren
Klassen en objecten.
Greenfoot Workshop Bobby - Snake.
Modula vs Java MODULE Show; CONST PI = ; TYPE PointRc = RECORD x,y : INTEGER; speed : REAL; angle : REAL; END; VAR a,b : PointRc; BEGIN.
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.
Hoofdstuk 2 Hallo, C# !.
‘Inleiding programmeren in Java’ Derde college Maandag 22 januari 2001 drs. F. de Vries.
Inleidend probleem Data structuur (hiërarchie van classes)
Algoritmen en Datastructuren (ALDAT) EVMINX4 Dagdeel 2.
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)
Deel XIV Eerste echte e-commerce applicatie Implementatie (vervolg) 1 Internetapplicaties Deel 15: Herhaling Java-programmatie en geautomatiseerd testen.
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;
Scope. Scope van variaben/methoden Een variabele is te gebruiken binnen de { en } waarbinnen hij is aangemaakt. Hetzelfde geld voor een methode { int.
Tircms03-p les 1 C++ voor C-kenners Voor Technische Informatica.
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)
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
Basis Gameprogrammeren
C++ • C++ als een verbetering van C • Abstracte datatypen met classes • Constructoren en destructoren • Subklassen • binding van functies 1.
OOS Object geOrienteerd Software-ontwerp - 5
Tinpro015b-les6 Templates.
Tinpro015b-les4 Klassen.
Voorbeeld: Simulatie van bewegende deeltjes
Voortborduren op eerder gedaan werk
Unified Modeling Language
Gameprogrammeren: Klassen en objecten
Arjan Egges & Paul Bergervoet
Software Development fundamentals
Software Development fundamentals
Gameprogrammeren: Arrays
Transcript van de presentatie:

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, 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: class c { int x; public: 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