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.

Slides:



Advertisements
Verwante presentaties

Advertisements




Instructie Programmeren Task 1 5JJ70. Task 1.1: Hello World •Klik naast de laatste accolade in de grijze kantlijn om een breakpoint neer te zetten, anders.
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Een programma opbouwen.
EVMINX4 Week 3 Algoritmen en Datastructuren (ALDAT)
Gestructureerd programmeren in C
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.
Instructie Programmeren Task 1 5JJ70. Task 1.1: Hello World Klik naast de laatste accolade in de grijze kantlijn om een breakpoint neer te zetten, anders.
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
Instructie Programmeren Task 5
Numerieke Natuurkunde
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.
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
Hogeschool HZ Zeeland 19 augustus 2003augustus 2003 Data Structuren & Algoritmen Week 3.
LauwersCollege Buitenpost Java Applet programma dat op een website zichtbaar is Java Application programma dat zelfstandig werkt Javascript Scripttaal.
1 Datastructuren Een informele inleiding tot Skiplists Onderwerp 13.
OO Analyse in de praktijk OO Analyse in de praktijk V Enkele Design Patterns.
Variabelen Part deux.. Variabelen week 3 0. Herhaling 1. De NullPointerException (p101) 2. Primitieven 3. Scope en levensduur van variabelen 4. Meerdere.
Programmeren met If This Then That (IFTTT)
C++ C++ als een verbetering van C Abstracte datatypen met classes Constructoren en destructoren Subklassen binding van functies 1.
Mijn Restaurant Opdracht ICT.
Variabelen Part deux.. Variabelen week 3 0. Herhaling 1. De NullPointerException (p101) 2. Primitieven 3. Scope en levensduur van variabelen 4. Meerdere.
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,
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 C programmeren voor niet-C programmeurs les 3 redirection,
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Onderwerpen voor vandaag top-down decompositie Opdrachten:
Instructie Programmeren Task 4 5JJ70. Task 4.1: Iteratief proces Het doel van de opdracht is de uitgangsspanning van een transistor te bepalen met de.
Instructie Programmeren Task 7
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.
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.
Na de praktijk, de theorie.. Zoals een gehaktmolen 1.Je stopt er iets in. 2.Je hoeft niet te weten wat er binnenin gebeurt. 3.Het resultaat verschijnt.
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)
Milo van der Zee
Objectgeoriënteerd Programmeren (2)
Berekening van de Orde Van een Algoritme
Objectgeoriënteerd Programmeren
Gameprogrammeren: Objecten en geheugen
Gameprogrammeren: Lists en interfaces
Object georiënteerd programmeren
Gameprogrammeren: Overerving in Painter
Gameprogrammeren: Herhalingen
Tinpro015b-les6 Templates.
Tinpro015b-les4 Klassen.
Voorbeeld: Simulatie van bewegende deeltjes
Nee Zeggen!.
Gameprogrammeren: Abstracte klassen
5 tips om eenvoudiger te werken
Gameprogrammeren: Klassen en objecten
beslist geen rocket science
Titel van wetenschappelijk project
Software Development fundamentals
Object Communication (Jewel Jam)
Software Development fundamentals
Python – For loop + strings
Transcript van de presentatie:

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 een linked list implementeren. De opdracht begeleid je door alle stappen die je moet nemen, probeer dus niet te veel in 1x te implementeren. Gebruik de opdracht om in kleine stapjes naar een oplossing toe te werken. Stap 1 tot 5 zijn al gedaan in het skeleton! Natuurlijk kan het geen kwaad om even te kijken hoe het in elkaar zit, voor je met stap 6 verder gaat.

Task 8: Double Linked List: Id counter Een variabele met het keyword static heeft de volgende eigenschappen: De variabele wordt 1x geïnitialiseerd: Als er een static variabele in een memberfunctie van een klasse voorkomt, wordt deze gedeeld door alle initializaties van de klasse. PAGE 3 void myTest(void){ static int myStatic = 0; printf("myStatic: %d\n", myStatic); myStatic++; } void main(void) { for(int i=0; i<10; i++) myTest(); }

Task 8: Double Linked List: Stack objecten Objecten die op de stack staan, roepen automatisch hun destructor aan wanneer hun stuk van de stack wordt opgeruimd: PAGE 4 void main(void) { MyClass myObject; MyClass* myObject2 = new MyClass; // Do stuff here // Cleanup: delete myObject2; // End of main function, implicitly calls myObject.~MyClass(), so // the destructor function is run }

Task 8: Double Linked List: Items itereren Door de items in je lijst lopen kan je handig doen met een do…while loop: PAGE 5 Item* ptr = _top_of_ring; if(ptr){ // If we get here, the list is not empty do { // Do stuff with you Item pointer here // Advance to next item ptr = ptr->_next; } while(ptr != _top_of_ring); }

Task 8: Double Linked List: Append/Insert Bedenk goed met welke verschillende situaties je rekening moet houden: Een lege lijst Een lijst met 1 of meer items Maak tekeningen, dit levert vaak veel duidelijkheid op Wanneer er maar 1 item in de lijst zit, wijzen de _next en _prev van dat item naar zichzelf! (Hint: Is het nodig om Append en Insert allebei “volledig” te implementeren?) PAGE 6

Task 8: Double Linked List: Delete Het deleten van een item kun je zien als het “doorknippen” van de ring bij de stippellijnen: Er zijn dus 4 pointers die je moet aanpassen Wat gebeurt er als je het _top_of_ring item weggooit? De procedure die je bij het deleten gebruikt om een item los te koppelen, is ook nuttig bij het verplaatsen van items in de ring PAGE 7

Task 8: Double Linked List: Inheritance De printfunctie uit de opdracht print het _id van je item vanuit de Person klasse, dat kan alleen als je van _id een protected variabele maakt: Een protected variabele kan worden benaderd vanuit de klasse zelf, en alle klassen die erven van deze klasse PAGE 8

Task 8: Double Linked List: Inheritance Als je de opdracht letterlijk volgt, zul je merken dat er iets niet kan: De append functie van je Dlist klasse maakt een nieuw Item object, terwijl je een Person object nodig hebt Je ontkomt er dus niet aan om iets aan te passen aan de originele Dlist klasse Maak bijvoorbeeld een versie van de append functie die een pointer naar het toe te voegen Item als argument heeft: In de append functie van je boek kun je een nieuw Person object maken (en de naam doorgeven aan de constructor van Person) Vervolgens geef je het nieuwe Person object vanuit je Book append functie door aan de append functie van Dlist Dit kan door specifiek te vragen naar de append functie van Dlist: PAGE 9 void Dlist::append(Item* newitem); void Book::append(char* name); Dlist::append(myNewPerson);