Dedene_samenvatting_JDK_Hoofdstuk_3

advertisement
Grondslagen v/d beleidsinformatica
Hoofdstuk 3: Opbouw klassenteksten
3.1 OVERZICHT
Klassen zijn opgebouwd uit elementaire gegevenstypes met bewerkingen
3.2 GEGEVENS EN GEGEVENSBEWERKINGEN
Objecten vragen eigenlijk “wat kan ik voor u doen?”
De klassenbeschrijving bestaat uit: attributen (ingrediënten)
features (statische eigenschappen – ingrediënten)
--> attributen zeggen wat het object moet onthouden
Attributen zijn variabelen die inhoud kunnen bevatten (moeten voldoen aan klasse definitie)
3.2.1 Basistypes
Computersystemen coderen alles via reeksen van 1- en 0-en (bitrij)
--> computer moet weten dat het om numerieke alfabetische gegevens gaat
Eiffel bevat vijf verschillende basistypes:
INTEGER
GEHELE GETALLEN
REAL
KOMMA GETALLEN MET ENKELE PRECISIE
DOUBLE
KOMMA GETALLEN MET DUBBELE PRECISIE
CHARACTER ALFANUMERIEKE KARAKTERS, TEKENS
BOOLEAN
TRUE/FALSE
De types laten toe om bewerkingen door te voeren (getallen optellen en dergelijke)
3.2.2 Variabelen
Gegevens kan men manipuleren via variabelen (soort container)
--> niets anders dan geheugencel of reeks geheugencellen met tijdelijke bewaarcapaciteit
Men moet variabelen declareren
--> men koppelt de naam v/d variabele aan een type
! Declaratie via een dubbelpunt
Voorbeelden:
teller, som: INTEGER
pi, BTW: REAL
klaar, hoger, lager: BOOLEAN
letter, cijfer: CHARACTER
Per voorbeeld geldt dat de declaratie som: INTEGER wijst op het feit dat een geheugencel de naam
“som” toegewezen wordt en de inhoud een geheel getal is
--> de inhoud zal een bitrij zijn
Voorbeeld: 0100 0001 is het getal 65
Wanneer de variabele een character zou zijn, dan interpreteert men deze bitrij als de letter A
1
Jeroen De Koninck – HIRB – 2012-2013
De naam v/e variabele bestaat uit letters en cijfers
! Een naam begint steeds met een letter
! GEEN onderscheidt tussen hoofdletters en kleine letters
! De naam moet verschillen v/e sleutelwoord (INTEGER, REAL, DOUBLE, CREATION, END, …)
3.2.3 Uitdrukkingen voor bewerkingen
Het type bepaald dat men gebruik kan maken v/e aantal bewerkingen of operatoren voor bewerking
Unaire operator: vragen slechts één operand
Binaire operator: vragen twee operanden
Ternaire operator: vragen drie operanden
…
Infix notatie: operator tussen de twee operanden (x , y)
Prefix: operator voor de operand ( y)
Postfix: operator achter de operand (x )
Eiffel-operatoren
REKENKUNDIGE OPERATOREN
+
som
verschil
*
product
/
deling
^
machtverheffing
//
gehele deling
\\
rest bij gehele deling (modulo)
BOOLEAANSE OPERATOREN
- and
- or
- not
- xor
- and then
- or else
- implies
VERGELIJKINGSOPERATOREN
<
kleiner dan
>
groter dan
<=
kleiner dan of gelijk aan
>=
groter dan of gelijk aan
/=
niet gelijk aan
2
Jeroen De Koninck – HIRB – 2012-2013
Voorbeelden:
Infix, binair
X+Y of X*3
(twee operanden en operator staat in het midden)
Prefix, unair
-Y of cos(x)
(één operand en operator staat ervoor)
Postfix, unair x!
(één operand, operator staat erachter)
Men kan via deze operatoren/bewerkingen complexe uitdrukkingen maken
Uitdrukkingen bestaan uit constanten, bewerkingen en namen van variabelen
Interpretatie van uitdrukking is bepaalde waarde en is van bepaald type
Voorbeeld:
De uitdrukking 2 + (3 * 5) heeft de waarde 17 en is van het type INTEGER
Zie andere voorbeelden pagina 49
Men kan in een uitdrukking gebruik maken van andere variabelen
--> variabele komt overeen met inhoud van overeenkomstige geheugencel
! Dit op het moment dat de uitdrukking geëvalueerd wordt
Voorbeeld:
De inhoud van een variabele som is 65
--> de uitdrukking som + 3 zal bijgevolg geëvalueerd worden op 68 (INTEGER)
Zie andere voorbeelden pagina 49
! Men moet aantal regels volgen bij bewerkingen
- Letters met elkaar bewerken gaat niet
- Getallen met letters bewerken gaat niet
- Het type v/d uitdrukking is meestal een algemeen type
double > real > integer
Voorbeelden:
1+5=6
1 + 0.3 = 1,3
1+a=/
INTEGER + INTEGER = INTEGER
INTEGER + REAL = REAL
INTEGER + CHARACTER = UNDEFINED! (foutmelding)
Net zoals in de wiskunde geldt er een voorrang voor bepaalde bewerkingen
--> haakjes hebben altijd prioriteit
Zie opsomming volgorde pagina 50
3
Jeroen De Koninck – HIRB – 2012-2013
3.3 HET OPSTELLEN VAN PROCEDURES EN FUNCTIES
Procedure bestaat uit aantal opdrachten
--> bevatten drie structuurverbanden
- sequentie: volgordeverband
- selectie: keuzeverband
- iteratie: herhalingsverband
Sequentie
--> opeenvolging van opdrachten
We kunnen de opdrachten nog eens onderverdelen
3.3.1 Toewijzingsopdrachten
Een variabele kan inhoud hebben, inhoud verwijderen, nieuwe inhoud krijgen
--> men kan ze bijgevolg een waarde toekennen
= declareren v/d variabele (de inhoud is vaak nog onbekend)
We kennen een waarde toe via een toewijzingsopdracht
Naam_variabele := uitdrukking
Wanneer men de opdracht uitvoert zal men volgende zaken doen
- Berekenen v/d waarde v/d uitdrukking
- Vernietigen v/d huidige waarde v/d variabele (leegmaken)
- Waarde v/d variabele gelijk maken aan waarde uitdrukking
! Het type v/d uitdrukking moet gelijk zijn aan die v/d variabele
! Conversies van INTEGER & REAL naar respectievelijk REAL & DOUBLE gebeuren automatisch
Voorbeeld:
som : INTEGER
som := 5
Het proces dat daarop volgt:
SOM
?
5
ZIE VOORBEELD 2 PAGINA 52-53
Initialisatie: allereeste toewijzing aan de variabele
! Soms meteen initialisatie bij het gedecladeerd worden (gebeurd via compiler)
4
Jeroen De Koninck – HIRB – 2012-2013
Een speciaal geval van toewijzingsopdrachten
--> zowel links als rechts komt het toewijzingstekenvor
Voorbeeld:
teller := teller +1
Men evalueert eerst het rechterlid
--> gebruik v/d oude waarde v/h rechterlid
! Het resultaat is bijgevolg de nieuwe waarde v/d uitdrukking
Stel de teller heeft waarde 3 (oplossing is bijgevolg 4)
Teller
3
+1
4
! Men mag nooit bijvoorbeeld INTEGER gelijk stellen aan een kommagetal (REAL)
Voorbeeld:
Waarborg : INTEGER
Waarborg := 100.5
--> kan niet, 100.5 is REAL
! Het linkerlid moet steeds een variabele zijn
Voorbeeld:
3 := X
--> kan niet, variabele staat rechts
De grafische weergave is niet zo handig
--> men gebruikt een waardetabel om zulke evoluties weer te geen
5
Jeroen De Koninck – HIRB – 2012-2013
3.3.2 Een procedure of functie opstellen
Instructies worden gegroepeerd tot een routine
--> routines worden nog eens opgedeeld in procedures en functies
We geven een routine een naam gevolgd door het woord “is”
De eigenlijke inhoud (body) begint met het woord “do”
We sluiten de routine af met het woord “end”
We geven eventueel een toelichting via “--“
Voorbeeld:
feature twee_en_vijf_optellen is
do
x := 2
y := 5
z := x + y
end – twee_en_vijf_optellen
Er zijn enkele regels rond opmaak:
- Namen van types in hoofdletters
- Namen van variabelen in kleine letters
- Nieuwe lijn voor elke nieuwe instructie
- Sleutelwoorden springen in
- Instructies springen in t.o.v. de sleutelwoorden
- Toelichting kan men toevoegen via “--“
3.4 INHOUD VAN VARIABELEN EN RESULTATEN VAN FUNCTIES
3.4.1 Initialisatie van elementaire gegevenstypes
Voor elementaire klassen zoals INTEGER, REAL, DOUBLE, BOOLEAN en CHARACTER voorziet men:
- default-waarde of startwaarde
! Er is geen expliciete creatieopdracht nodig, eenvoudige declaratie volstaat
Voorbeeld:
X : INTEGER
Het object krijgt meteen de startwaarde
(in bovenstaand voorbeeld is dit 0)
Voor andere elementaire objecten zijn de startwaarden:
INTEGER
0
REAL
0.0
DOUBLE
0.0
BOOLEAN
false (alles is nl. onwaar tot men het tegendeel bewijst)
CHARACTER
blanco, spatie
De startwaarden worden via de routine ingevuld op later tijdstip
6
Jeroen De Koninck – HIRB – 2012-2013
3.4.2 Resultaten van functies
Functies manipuleren gegevens (inhoud variabelen) voor een resultaat
--> wordt gedefinieerd via het woord result
Voorbeeld:
feature beschikbaar_krediet : REAL is
do
Result := krediet_limiet + saldo
end -- beschikbaar_krediet
Beschikbaar krediet zal uiteindelijk waarde hebben v/d optelsom
3.5 EENVOUDIGE SYSTEMEN MET 1 KLASSE
3.5.1 Een product van twee getallen berekenen
3.5.2 Een eenvoudige “groeter”
ZIE PAGINA 57-58 VOOR DE VOORBEELDEN
7
Jeroen De Koninck – HIRB – 2012-2013
Download