November 2001Eiffel sessie 1p. 1 OBJECTGERICHT PROGRAMMEREN Elk object behoort tot een klasse REKENING rek01 rek02 PRODUCT prod01 prod02 prod03.

Slides:



Advertisements
Verwante presentaties
De gemiddelde leerling
Advertisements

Bij een herhaald experiment, met telkens dezelfde kans op succes gebruiken we de binomiale kansverdeling Een binomiale kansverdeling wordt gekenmerkt door.
PSD Basisstructuren programmeren.
KINN 2010 •OOP •O Object •O Georiënteerd •P Programmeren.
Hoe werkt een rekenmachine?
groei met TTW witlof uien aardappelen granen bloembollen chicory

H1 Basis Rekenvaardigheden
November 2013 Opinieonderzoek Vlaanderen – oktober 2013 Opiniepeiling Vlaanderen uitgevoerd op het iVOXpanel.
Personalisatie van de Archis website Naam: Sing Hsu Student nr: Datum: 24 Juni 2004.
ADOBE PRESENTER Willem vanden Berg Dienst Onderwijsondersteuning en –ontwikkeling KaHo Sint-Lieven 1.
Weddeschalen & Weddebijslagen
Ronde (Sport & Spel) Quiz Night !
Natuurlijke Werkloosheid en de Phillipscurve
HOOFDSTUK 12 Media.
prNBN D addendum 1 Deel 2: PLT
De Kalender en De Seizoenen Ellen Adriansens Gegradueerde in de ergotherapie BuSo – OV 2 – 2 e graad Algemene en Sociale Vorming Raamplan BuSo.
Van Nul naar Drie Normaliseren.
Kb.1 Ik leer op een goede manier optellen en aftrekken
Het ontwerpen van een klasse
Datastructuren Analyse van Algoritmen en O
© GfK 2012 | Title of presentation | DD. Month

Als de som en het verschil gegeven zijn.
Hoofdstuk 6: Controle structuren
December 2001Eiffel sessie 21 Gestructureerd programmeren selecties en iteraties oefening met Eiffelbench 4.5 Voorkeursopbouw van systemen informatie-,
Oefeningen F-toetsen ANOVA.
1Ben Bruidegom Hoe werkt een rekenmachine? Ben Bruidegom AMSTEL Instituut Universiteit van Amsterdam.
Wat levert de tweede pensioenpijler op voor het personeelslid? 1 Enkele simulaties op basis van de weddeschaal B1-B3.
Frank Stalpers en Ad Baars
Bewegen Hoofdstuk 3 Beweging Ing. J. van de Worp.
Bewegen Hoofdstuk 3 Beweging Ing. J. van de Worp.
Van de eerste graad in één onbekende
Sparen, Kapitaalaccumulatie, en Productie - De Lange Termijn
Oefeningen Hoofdstuk 3.
Werken aan Intergenerationele Samenwerking en Expertise.
Inkomen Begrippen + 6 t/m 10 Werkboek 6. 2 Begrippen Arbeidsverdeling Verdeling van het werk in een land.
User management voor ondernemingen en organisaties
2009 Tevredenheidsenquête Resultaten Opleidingsinstellingen.
PLAYBOY Kalender 2006 Dit is wat mannen boeit!.
ribwis1 Toegepaste wiskunde Lesweek 01 – Deel B
ribwis1 Toegepaste wiskunde, ribPWI Lesweek 01
Consoletoepassing Variabelen Klassen
Algoritmiek Object-georiënteerd Programmeren
6.1 Inleiding HOOFDSTUK 6 METHODEN
LauwersCollege Buitenpost Java Applet programma dat op een website zichtbaar is Java Application programma dat zelfstandig werkt Javascript Scripttaal.
Vergelijkingen oplossen
ELEKTRICITEIT Start pagina.
1 Controleplan 2005 Raadgevend comité Hotel President – donderdag 21 april 2005.
 Doel  Doelgroep  Aanloop  Userstudy  Resultaten  Ervaringen van de gebruiker  Besluit 1.
ZijActief Koningslust 10 jaar Truusje Trap
Versie 1: ; v2: ; v3: ; v4:… ca. 50 minuten met maken van tekening (vraag 12) ca. 40 minuten zonder maken van tekening (vraag.
ECHT ONGELOOFLIJK. Lees alle getallen. langzaam en rij voor rij
KINN 2010 OOP O Object O Georiënteerd P Programmeren.
Fractale en Wavelet Beeldcompressie
Opleiding CMS website Gent Bart Nelis Gent: #239/ docentengang Brussel: /naast bibliotheek
Gebruik grafische rekenmachine bij M&O via de TVM-solver
De financiële functie: Integrale bedrijfsanalyse©
Oefeningen Workshop RIE Gemeenten
Centrummaten en Boxplot
Even voorstellen : Groep 3b
Voorraadbeheer en bestellen
1 Zie ook identiteit.pdf willen denkenvoelen 5 Zie ook identiteit.pdf.
ZijActief Koningslust
Voorraadbeheer en bestellen
Voorraadbeheer en bestellen
Gameprogrammeren: Keuzeopdrachten
Transcript van de presentatie:

November 2001Eiffel sessie 1p. 1 OBJECTGERICHT PROGRAMMEREN Elk object behoort tot een klasse REKENING rek01 rek02 PRODUCT prod01 prod02 prod03

November 2001Eiffel sessie 1p. 2 class TELLER creation maken feature waarde : INTEGER feature maken is … feature verhogen is … feature verlagen is … feature terugzetten is … end -- class TELLER klassetekst naam van de klasse hoe wordt een object gecreëerd? attributen : wat onthouden? (statisch) diensten : wat doen? (dynamisch)

November 2001Eiffel sessie 1p. 3 Attributen (variabelen) feature nummer : INTEGER bedrag : REAL resultaat : DOUBLE letter : CHARACTER aanwezig : BOOLEAN naam : STRING student1 : STUDENT aantal : INTEGER is 8 voorgedefineerde klassen constante

November 2001Eiffel sessie 1p. 4 Diensten (procedures) feature naam is do instructies end -- naam feature naam (parameter : CLASS) is do instructies end -- naam

November 2001Eiffel sessie 1p. 5 feature naam (parameter : CLASS1) : CLASS2 is do … Result := instructie end -- naam Functie !! Result is van de klasse CLASS2

November 2001Eiffel sessie 1p. 6 Instructies: invoer/uitvoer io.readint, io.readreal, io.readchar, io.readline io.putint( ), io.putreal( ), io.putchar( ), io.putstring( ), io.putdouble( ) !!tussen haakjes staat object of waarde van het type integer, real, character of string vb. io.putint(45) io.putreal(bedrag) io.lastint, io.lastreal, io.lastcharacter, io.laststring

November 2001Eiffel sessie 1p. 7 io.new_line vb. io.putstring(“Geef je naam : ”) io.readline io.new_line io.putstring(io.laststring)

November 2001Eiffel sessie 1p. 8 Instructies : verwerking toewijzingsopdracht := vb. nummer := 3 nummer1 := nummer2 bewerkingen : afhankelijk van het type (klasse) van de variabele rekenkundige bewerkingen : integer : +, -, *, //, \\ real : +, -, *, /, ^ boolean : and, or, xor, not vb. nummer := nummer * 8

November 2001Eiffel sessie 1p. 9 vergelijkingsoperatoren : =,, =, /= vb. aanwezig := teller /= 0 Vergelijk met := voor toewijzing

November 2001Eiffel sessie 1p. 10 Oefening : Stel een klassetekst op voor REKENING. Een rekening moet kunnen worden geopend, waarbij ze een nummer krijgt toegewezen. Het saldo moet bij het openen uiteraard gelijk zijn aan nul. Van de rekening moet geld kunnen worden afgehaald en er moet geld kunnen worden op gestort. Bij het afsluiten van de rekening wordt het saldo weer op nul gezet.

November 2001Eiffel sessie 1p. 11 class REKENING creation open feature … feature open (nr_in : INTEGER) is do … end -- open feature … end -- class REKENING waarde wordt bij het aanroepen van de procedure doorgegeven

November 2001Eiffel sessie 1p. 12 class REKENING creation open feature nummer : INTEGER saldo : REAL feature open (nr_in : INTEGER) is do nummer := nr_in end -- open feature afhalen (bedrag : REAL) is do saldo := saldo - bedrag end -- afhalen feature storten (bedrag : REAL) is do saldo := saldo + bedrag end -- storten feature afsluiten is do saldo := 0 end -- afsluiten end -- class REKENING class BANK creation open feature rek1, rek2 : REKENING feature open is do create rek1.open(11111) create rek2.open(22222) rek1.storten(10000) rek2.storten(5000) rek1.afhalen(4000) toon_saldo(rek1) toon_saldo(rek2) end -- open feature toon_saldo (rek_in : REKENING) is do io.putstring(“het saldo van rekening ”) io.putint(rek_in.nummer) io.putstring(“ bedraagt ”) io.putreal(rek_in.saldo) end -- toon_saldo end -- class BANK -- Uitvoerlogica -- in een aparte dienst --Objecten van REKENING creëren --Diensten van deze objecten aanspreken

November 2001Eiffel sessie 1p. 13 Expansieklassen en -objecten (enkelvoudige klassen) - gebruiker moet geen klassetekst schrijven - automatische creatie met default- waarde - inhoud van expansie-object kan door elk ander object gewijzigd worden zonder te “vragen” - expansie-object bevat een waarde; elke copie dmv toewijzing resulteert in een fysische copie - INTEGER, REAL, DOUBLE, BOOLEAN, CHARACTER Referentieklassen en -objecten (samengestelde klassen) - gebruiker moet zelf klassetekst schrijven (uitz. STRING) - creatie moet expliciet gebeuren - inhoud van expansie-object kan niet rechtstreeks door ander object gewijzigd worden; het andere object moet beroep doen op de diensten van het referentie-object - expansie-object bevat een ‘referentie’ (pointer); een copie dmv toewijzing bevat enkel de referentie naar eenzelfde fysische plaats - STRING, alle zelf ontworpen klassen

November 2001Eiffel sessie 1p. 14 expansieklasse referentieklasse declaratie en creatie van objecten i, j : INTEGER i : j : 0 0 rek1 : REKENING void rek1 : create rek1.open(11111) nummer saldo rek1 :

November 2001Eiffel sessie 1p. 15 expansieklasse referentieklasse toewijzing i, j : INTEGER i := 10 j := i i : j : 0 0 i : j : 10 rek1, rek2 : REKENING create rek1.open(11111) create rek2.open(22222) rek1 : rek2 : nummer saldo nummer saldo rek2 := rek1

November 2001Eiffel sessie 1p. 16 Kloneren (clone) rek2 := clone(rek1) rek1 : rek2 : nummer saldo nummer saldo ! geen voorafgaande create nodig rek2 := rek1

November 2001Eiffel sessie 1p. 17 rek1 : rek2 : nummer saldo nummer saldo datum dag maand jaar datum dag maand jaar deep_clone rek2 := clone(rek1)rek2 := deep_clone(rek1)

November 2001Eiffel sessie 1p. 18 Vergelijken van objecten rek1 = rek2rek1.is_equal(rek2)rek1.is_deep_equal(rek2) equal(rek1,rek2)deep_equal(rek1,rek2) rek1 : rek2 : nummer saldo nummer saldo datum dag maand jaar datum dag maand jaar FALSE TRUE

November 2001Eiffel sessie 1p. 19 Oefening 4 p Schrijf een klassetekst voor de klasse PRODUCT. Producten hebben een productnummer (geheel getal), en een voorraad (geheel getal). Bij de creatie van een product moet het nummer en de beginvoorraad worden aangegeven. Als een product wordt besteld, stijgt de voorraad; als een product wordt geleverd, daalt de voorraad. 2. Schrijf de instructies om prod01 (met productnr 110 en beginvoorraad 500 stuks) te maken, en prod02 (met productnr 215 en beginvoorraad 1500 stuks). Bestel vervolgens 200 stuks van product 1 en lever 500 stuks van product 2. Toon van beide producten de nieuwe voorraad.

November 2001Eiffel sessie 1p. 20 classPRODUCT creation make feature prodnr : INTEGER voorraad : INTEGER feature make (nr_in, vr_in : INTEGER) is do prodnr := nr_in voorraad := vr_in end -- make feature bestellen (hoeveelheid : INTEGER) is do voorraad := voorraad + hoeveelheid end -- bestellen feature leveren (hoeveelheid : INTEGER) is do voorraad := voorraad - hoeveelheid end -- leveren end -- class PRODUCT

November 2001Eiffel sessie 1p. 21 class PRODUCTBEHEER creation make feature prod01, prod02 : PRODUCT feature make is do create prod01.make(110, 500) create prod02.make(215, 1500) prod01.bestellen(200) prod02.leveren(500) io.putstring("Van produkt 110 bedraagt de voorraad ") io.putint(prod01.voorraad) io.putstring(" stuks.") io.new_line io.putstring("Van produkt 215 bedraagt de voorraad ") io.putint(prod02.voorraad) io.putstring(" stuks.") end -- make end -- class PRODUCTBEHEER

November 2001Eiffel sessie 1p. 22 Oefening 4 p Maak een systeempje aan voor het beheer van een boerderij met 3 varkens. Een varken krijgt bij aanschaf een naam, een gewicht en een leeftijd toegekend. Wanneer een varken gevoederd wordt, neemt zijn gewicht toe met 1/10de van de hoeveelheid voer. Elke maand wordt de leeftijd van het varken (in maanden uitgedrukt) aangepast. Een varken kan bovendien een willekeurig geluid produceren (toon op het scherm). Schrijf de tekst voor de klasse VARKEN. 2. In de coördinatorklasse worden eerst 3 varkens gecreëerd. Het beheer van de boerderij houdt in dat we varkens voederen, en de leeftijd ervan aanpassen. De klasse moet toelaten een bepaald geluid te kiezen en dit door een varken te laten produceren. Tenslotte wordt ook de gemiddelde leeftijd en het gemiddelde gewicht van de varkens getoond.

November 2001Eiffel sessie 1p. 23 Class VARKEN creation aanschaf feature naam : STRING leeftijd : INTEGER gewicht : REAL feature aanschaf (naam_in : STRING; lt_in : INTEGER; gew_in : REAL) is do naam := clone(naam_in) leeftijd := lt_in gewicht := gew_in end -- aanschaf 1/2

November 2001Eiffel sessie 1p. 24 feature jarig is do leeftijd := leeftijd + 1 end -- jarig feature voederen (kilo : REAL) is do gewicht := gewicht + kilo/10 end -- voederen feature zing (lawaai : STRING) is do io.new_line io.putstring(lawaai) io.putstring(" -- ") io.putstring(lawaai) io.putstring(" !!") io.new_line end -- zing end -- class VARKEN 2/2

November 2001Eiffel sessie 1p. 25 Class BOERDERIJ1/3 creation ________ feature _____, _____, _____ : ______ geluid : _____ feature ______ is do io.putstring("Welkom op de boerderij !") io.new_line create __________________________________ beheer toon_gegevens end -- _______

November 2001Eiffel sessie 1p. 26 Class BOERDERIJ creation maken feature vark1, vark2, vark3 : VARKEN geluid : STRING feature maken is do io.putstring("Welkom op de boerderij !") io.new_line create vark1.aanschaf("Babe",0,5.2) create vark2.aanschaf("Pigglet",2,15) create vark3.aanschaf("Miss Piggy",10,80) beheer toon_gegevens end -- maken 1/4

November 2001Eiffel sessie 1p. 27 feature beheer is2/3 do vark1.jarig --varken 1 is jarig kies_geluid _________________ --varken 1 maakt gekozen geluid _________________ --varken 2 krijgt 2 kg voer _________________ --varken 3 krijgt 10 kg voer end -- beheer feature kies_geluid is do io.new_line io.putstring(_____________________) io.readline geluid := ______________________ end -- kies_geluid

November 2001Eiffel sessie 1p. 28 feature beheer is do vark1.jarig kies_geluid vark1.zing(geluid) vark2.voederen(2) vark3.voederen(10) end -- beheer feature kies_geluid is do io.new_line io.putstring("Wat zegt het varken ? ") io.readline geluid := clone(io.laststring) end -- kies_geluid 2/4

November 2001Eiffel sessie 1p. 29 feature toon_gegevens is3/3 do io.new_line io.putstring("De varkens zijn gemiddeld ") io.putreal(________) io.putstring(" maanden oud.") io.new_line io.putstring("De varkens wegen gemiddeld ") io.putreal(________) io.putstring(" kilo.") io.readline end -- toon_gegevens feature gem_lt : REAL is do ________ := ____________________________________________ end -- gem_lt feature gem_gew : REAL is do ________ := ____________________________________________ end -- gem_gew end -- class BOERDERIJ

November 2001Eiffel sessie 1p. 30 feature toon_gegevens is do io.new_line io.putstring("De varkens zijn gemiddeld ") io.putreal(gem_lt) io.putstring(" maanden oud.") io.new_line io.putstring("De varkens wegen gemiddeld ") io.putreal(gem_gew) io.putstring(" kilo.") io.readline end -- toon_gegevens feature gem_lt : REAL is do Result := (vark1.leeftijd + vark2.leeftijd + vark3.leeftijd)/3 end -- gem_lt 3/4

November 2001Eiffel sessie 1p. 31 feature gem_gew : REAL is do Result := (vark1.gewicht + vark2.gewicht + vark3.gewicht)/3 end -- gem_gew end -- class BOERDERIJ 4/4