Algoritmiek Object-georiënteerd Programmeren Klassen en objecten; constructoren en methoden; integers: notaties. Hoorcollege 3 - Ma. 18 sept. 2006 L.M. Bosveld-de Smet Te behandelen onderwerpen Object-georiënteerd Programmeren Klassen en Objecten Constructoren en Methoden Integers Rekenen met Two’s Complement Notation Excess Notation Floating-point Notation (week 4) Wat is een object? Beschrijving kenmerken blikje Drank: pepsi Hoeveelheid: 250 ml Temperatuur: 6 0C … Wat kun je ermee? Wat kun je ermee? Beschrijving operaties uitvoerbaar door of op blikje Openen Leegdrinken Leeggieten Koelen Weggooien Ontploffen … Beschrijving van alle blikjes i.h.a Algemene kenmerken en operaties Klasse Instantievariabelen Instantiemethoden Klasse en object Voorbeeld Telonderzoek in diverse wijken van een stad Consumentenonderzoek in winkels Verkeersonderzoek Java: klasse Teller class Teller { . . . } Tellerstructuur: toestand en gedrag class Teller { int aantal; void verhoog () { … } void zetTerug () { … } int geefWaarde () { … } } Instance variable Beschrijving van het gegeven dat elk object met deze structuur bevat Methods Beschrijving van het gedrag dat elk object met deze structuur heeft Objecten van type Teller Teller teller1, teller2; int i, j; double k; char c; door Java al gedefinieerde datatypen Primitieve datatypen data type + lijst variabelen Declaratie en initialisatie primitieve variabelen int i ; i i=0; i 0 Constructoren class Teller { int aantal; Teller () { aantal = 0; } Teller (int beginWaarde) { aantal = beginWaarde; } void verhoog () { … } void zetTerug () { … } int geefWaarde () { … } } Specifieke methoden: constructoren Declaratie en initialisatie objectvariabelen: 2 staps Teller teller1; teller1 = new Teller () ; teller1 ??? aantal 0 Tellerobject Declaratie en initialisatie objectvariabelen: shortcut Teller teller1 = new Teller () ; Tellerobject teller1 aantal 0 objectvariabelen: NULL waarde teller1 = null ; Tellerobject teller1 aantal 0 Nog een teller Teller teller2 = new Teller (100) ; Tellerobject teller2 aantal 100 Let op toekenningen!!! teller1 teller2 teller1 = teller2 ; 0 100 Verdere kenmerken van OOP Inheritance = overerving Polymorphism = veelvormigheid Encapsulation = inkapseling Inkapseling class Teller { private int aantal; niet bereikbaar vanuit andere programma-eenheden public Teller () { aantal = 0; } public Teller (int beginWaarde) { aantal = beginWaarde; } public void verhoog () { wel bereikbaar vanuit andere … programma-eenheden } public void zetTerug () { … } public int geefWaarde () { … } } Klasse Teller: definitie class Teller { private int aantal; public Teller () { aantal = 0; } public Teller (int beginWaarde) { aantal = beginWaarde; } public void verhoog () { aantal = aantal + 1; } public void zetTerug () { aantal = 0; } public int geefWaarde () { return aantal; } } Meerdere klassen class Teller { private int aantal; public Teller () { aantal = 0; } public Teller (int beginWaarde) { aantal = beginWaarde; } public void verhoog () { aantal = aantal + 1; } public void zetTerug () { aantal = 0; } public int geefWaarde () { return aantal; } } class TellerStanden { public static void main (String[] args) { //creëer 2 tellers Teller t1 = new Teller (); Teller t2 = new Teller (25); //print de tellerstanden System.out.println (t1.geefWaarde ()); System.out.println (t2.geefWaarde ()); //reset t2 t2.zetTerug (); //verhoog t1 drie keer, t2 twee keer t1.verhoog (); t1.verhoog (); t1.verhoog (); t2.verhoog (); t2.verhoog (); //print de tellerstanden System.out.println (t1.geefWaarde ()); System.out.println (t2.geefWaarde ()); } } Datatypen int double, float getallen met komma: ‘floating point notatie’, bijv. 560e-1 boolean - 2.147.483.648 …. 2.147.483.647 true, false char ‘a’, ‘A’, ‘8’, ‘%’, ‘ ’ Voorbeelden int i = 2; j = 4; double k = 1.0; i = i * j; i = 17 / 4; i = 17 % 4; i = k / 2; k = i / 4; i =+ 2; Binaire optelling 00111010 + 00011011 01010101 Binaire breuken 101.101 1 x 1/8 = 1/8 0x¼=0 1x½=½ 1x1=1 0x2=0 1x4=4 5 5/8 Weergaven van integers Two’s complement notatie Excess notatie Two’s complement notatie bitpatroon weergegeven waarde 011 010 001 000 111 110 101 100 3 2 1 0 -1 -2 -3 -4 sign bit Excess four notatie bitpatroon weergegeven waarde 111 110 101 100 011 010 001 000 3 2 1 0 -1 -2 -3 -4 sign bit