Download de presentatie
De presentatie wordt gedownload. Even geduld aub
GepubliceerdRoeland Hermans Laatst gewijzigd meer dan 10 jaar geleden
1
December 2001Eiffel sessie 21 Gestructureerd programmeren selecties en iteraties oefening met Eiffelbench 4.5 Voorkeursopbouw van systemen informatie-, bedrijfs- en systeemklassen uitwerking voorbeeld productensysteem oefening met Eiffelbench 4.5
2
December 2001Eiffel sessie 22 Gestructureerd programmeren : - sequentie instructie_1 instructie_2 instructie_3 - selectie als voorwaarde voldaan dan sequentie_1 anders sequentie_2 - iteratie zolang voorwaarde niet voldaan sequentie
3
December 2001Eiffel sessie 23 1. Selectie if conditie then actie end -- if if conditie then actie_1 else actie_2 end -- if C? JN JN actie actie_1actie_2
4
December 2001Eiffel sessie 24 if conditie_1 then actie_1 elseif conditie_2 then actie_2 elseif conditie_3 then actie_3 … else actie_n end -- if C1? C2? C3? C…? J J J J N N N N actie_1 actie_2 actie_3 actie_…actie_n geneste selectie :
5
December 2001Eiffel sessie 25 Voorbeeld : feature zing (keuze : INTEGER) is do if keuze = 1 then io.putstring(“knor-knor”) elseif keuze = 2 then io.putstring(“woef-woef”) else io.putstring(“miauw-miauw”) end -- if end -- zing Exhaustiviteit Exclusiviteit
6
December 2001Eiffel sessie 26 2. Iteratie from initialisatie until stop_ conditie loop actie end -- loop initialisatie C? N J actie
7
December 2001Eiffel sessie 27 voorspelbare iteratie : het aantal keer dat de actie moet worden uitgevoerd is gekend vóór de uitvoering van de iteratie vb. maak de som van 10 getallen from i := 1 until i > 10 loop io.readint som := som + io.lastint i := i + 1 end -- loop
8
December 2001Eiffel sessie 28 onvoorspelbare iteratie : het aantal keer dat de actie moet worden uitgevoerd is niet op voorhand gekend vb. maak de som van een willekeurig aantal getallen; om de invoer te stoppen, voer je het getal 0 in from io.readint until io.lastint = 0 loop som := som + io.lastint io.readint end -- loop
9
December 2001Eiffel sessie 29 Geneste iteratie : from initialisatie_1 until stop_conditie_1 loop from initialisatie_2 until stop_conditie_2 loop actie end -- loop_2 end -- loop_1 init_1 C1? N J init_2 C2? actie J N
10
December 2001Eiffel sessie 210 condities : expansie-objecten : =,, =, /= vb.getal > 10 pi = 3.1415 aantal /= 0 aanwezig referentie-objecten : is_equal of equal is_deep_equal of deep_equal vb. rek1.is_equal(rek2) deep_equal(rek1,rek2) samenvoegen van condities :and, or, xor negatie van condities :not
11
December 2001Eiffel sessie 211 Oefening (variant op oefening 1 p. 92) : Vervolledig de klassetekst voor een klasse FIGUUR. Bij de creatie van de figuur, moet de gebruiker kunnen kiezen tussen volgende opties: 1. * 2. - 3. o De figuur moet als volgt op het scherm gebracht worden : s ss sss ssss sssss ssssss sssssss ssssssss sssssssss ssssssssss waarbij s het gekozen teken voorstelt (vb. als de gebruiker het getal 1 invoert, zal s = *, enz.). Je mag ervan uitgaan dat de invoer correct gebeurt.
12
December 2001Eiffel sessie 212 feature -- declaratie van één attribuut feature make is local x : INTEGER do io.putstring("Kies een van de volgende opties :") io.new_line io.putstring("%N 1. *") io.putstring("%N 2. -") io.putstring("%N 3. o") io.new_line io.putstring("%N Uw keuze : ") -- inlezen van de keuze -- geef het attribuut de waarde *, - of o teken_figuur end -- make
13
December 2001Eiffel sessie 213 feature teken_figuur is -- instructies voor het tonen van de figuur -- met om het even welk teken (opgeslagen in het -- attribuut)
14
December 2001Eiffel sessie 214 feature teken : CHARACTER feature make is local x : INTEGER do -- io.readint x := io.lastint if x = 1 then teken := '*' elseif x = 2 then teken := '-' else teken := 'o' end -- if teken_figuur end -- make
15
December 2001Eiffel sessie 215 feature teken_figuur is local i,j : INTEGER do from i:=1 until i > 10 loop fromj := 1 until j > i loop io.putchar(teken) j:=j+1 end -- binnenlus io.new_line i := i + 1 end -- buitenlus end -- teken_figuur
16
December 2001Eiffel sessie 216 Uitbreiding : zorg er expliciet voor dat de invoer correct gebeurt.
17
December 2001Eiffel sessie 217 KLASSEN voor INVOER, UITVOER en CONTROLE Voorkeursopbouw van programma’s In een programma modelleren en beïnvloeden we een deel van de werkelijkheid op basis van een systeem BEDRIJFSKLASSEN die de werkelijkheid voorstellen SYSTEEM KLASSE
18
December 2001Eiffel sessie 218 Bedrijfsklassen : stellen bedrijfswerkelijkheid voor ; bevatten geen invoer / uitvoeropdrachten Informatieklassen * invoerklassen : capteren van exogene gebeurtenissen * uitvoerklassen : informatie gevraagd door de gebruiker voorstellen * controleklassen : goede werking systeem waarborgen Systeemklasse * coördinator van het systeem
19
December 2001Eiffel sessie 219 De klasse PRODUCT met “make-is-run” classPRODUCT creation maken feature productnr, voorraad : INTEGER feature maken is do lees_invoer bestellen toon_voorraad end -- maken Bevat invoer en uitvoer instructies
20
December 2001Eiffel sessie 220 feature toon_voorraad is do io.putstring(“%NDe voorraad voor produkt ” ) io.putint(prodnr) io.putstring(“ bedraagt ”) io.putint(voorraad) end -- toon_voorraad feature bestellen is do io. putstring(“%NGeef hoeveelheid in : ”) io. readint voorraad := voorraad + io.lastint end -- bestellen
21
December 2001Eiffel sessie 221 feature lees_invoer is do io. putstring(“%NGeef produktnummer in : ”) io. readint prodnr := io.lastint putstring(“%NGeef beginvoorraad in : ”) io. readint voorraad := io.lastint end -- lees_invoer end -- class PRODUCT
22
December 2001Eiffel sessie 222 PRODUCT UITVOER PRODUCT SYS PRODUCT SYS INVOER Het PRODUCT voorbeeld herbekeken
23
December 2001Eiffel sessie 223 De nieuwe klasse PRODUCT class PRODUCT creation maken feature productnr, voorraad : INTEGER feature maken (productnr_in, vr_in : INTEGER) is do productnr := productnr_in voorraad := vr_in end -- maken feature bestellen (hoeveelheid : INTEGER) is do voorraad := voorraad + hoeveelheid end -- bestellen end -- class PRODUCT
24
December 2001Eiffel sessie 224 De klasse INVOER class INVOER creation maken feature een_product : PRODUCT feature maken is do lees_invoer end -- maken feature lees_bestelling is do io.putstring(“%NGeef hoeveelheid in : ”) io.readint een_product.bestellen(io.lastint) end -- bestelling
25
December 2001Eiffel sessie 225 De klasse INVOER (vervolg) feature lees_invoer is local productnr_in, vr_in : INTEGER do io.putstring(“Geef productnummer in : ”) io.readint productnr_in := io.lastint io.putstring(“%NGeef voorraad in : ”) io.readint vr_in := io.lastint create een_product.maken(productnr_in, vr_in) end -- lees_invoer end -- class INVOER
26
December 2001Eiffel sessie 226 De klasse PRODUCTSYS class PRODUCTSYS creation maken feature product1 : PRODUCT invoer1 : INVOER feature maken is do create invoer1.maken product1 := invoer1.een_product invoer1.lees_bestelling end -- maken end -- class PRODUCTSYS
27
December 2001Eiffel sessie 227 Overzicht van de belangrijkste instructies Systeemklasse PRODUCTSYS declaratie van product1 en invoer1 create invoer1.maken product1 := invoer1.een_product Invoerklasse INVOER declaratie van een_product : PRODUCT create een_product.maken(productnr_in, vr_in)
28
December 2001Eiffel sessie 228 De klasse UITVOER class UITVOER creation maken feature -- een productobject declareren feature maken (product_in : PRODUCT) is do -- dit productobject koppelen aan product_in end -- maken
29
December 2001Eiffel sessie 229 feature toon_voorraad is do io.putstring(“%NDe voorraad voor produkt ”) io.putint(een_product.productnr) io.putstring(“ bedraagt ”) io.putint(een_product.voorraad) end -- toon_voorraad end -- class UITVOER
30
December 2001Eiffel sessie 230 De klasse PRODUCTSYS class PRODUCTSYS creation maken feature product1 : PRODUCT invoer1 : INVOER -- een uitvoerobject declareren feature maken is do create invoer1.maken product1 := invoer1.een_product invoer1.lees_bestelling -- het uitvoerobject creëren -- de voorraad tonen end -- maken end -- class PRODUCTSYS
31
December 2001Eiffel sessie 231 product1 invoer1 uitvoer1 productsys productnr voorraad een_product
32
December 2001Eiffel sessie 232 De klasse UITVOER class UITVOER creation maken feature een_product : PRODUCT feature maken (product_in : PRODUCT) is do een_product := product_in end -- maken
33
December 2001Eiffel sessie 233 De klasse PRODUCTSYS Class PRODUCTSYS creation maken feature product1 : PRODUCT invoer1 : INVOER uitvoer1 : UITVOER feature maken is do create invoer1.maken product1 := invoer1.een_product create uitvoer1.maken(product1) uitvoer1.toon_voorraad end --maken end -- class PRODUCTSYS
34
December 2001Eiffel sessie 234 Overzicht van de belangrijkste instructies Systeemklasse PRODUCTSYS declaratie van product1, invoer1 en uitvoer1 create invoer1.maken product1 := invoer1.een_product create uitvoer1.maken(product1) Invoerklasse INVOER declaratie van een_product : PRODUCT create een_product.maken(productnr_in, vr_in)
35
December 2001Eiffel sessie 235 Overzicht van de belangrijkste instructies Uitvoerklasse UITVOER declaratie van een_product : PRODUCT een_product := product_in
Verwante presentaties
© 2024 SlidePlayer.nl Inc.
All rights reserved.