By Pieter Van der Elst Samenvatting Beginselen van Objectgericht Programmeren (BOP) Hoe ziet een klasse eruit? (1) Een UML bestand! Dit is heel belangrijk bij het maken van een klasse. Hierin zet men de naam van de klasse, de instantievariabelen (of deze private/public zijn duidt men aan met een -/+), en daarna de verschillende methoden die je gaat implementeren (of deze private/public zijn, wordt ook aangeduidt d.m.v. -/+). (2) Het hoofd van de klasse “public class naam” naam = de naam van de klasse. (3) De declaratie van je instantievariabelen Meestal zijn deze private. “private int/String …2” het type (int/string) hangt natuurlijk af van wat voor instantievariabele je nodig hebt, en de … staat voor de naam van de instantievariabelen. (4) Constructoren Hiermee kan je als je bv. een klasse punt hebt, een nieuw punt aanmaken. Je hebt constructoren zonder parameters of met parameters. “public …1(){}” Dit is een constructor zonder parameters, waar bij …1 de naam v/d klasse wordt ingegeven. “public …1(int/string …2, int/string …2,…2){ This.set…2(…2); This.set…2(…2); }” Dit is een constructor met parameters, waar bij …1 de naam van de klasse wordt ingegeven. Bij …2 wordt de naam van de instantievariabele gegeven. (5) Getters Dit zijn de methoden die gebruikt worden om bepaalde waarden terug te geven. Deze hebben NOOIT parameters. “public Type getIets(){ Return this.iets; }” Het type hangt af van de instantievariabele (…2), en het bevel return geeft aan dat er een bepaalde waarde moet worden teruggegeven. By Pieter Van der Elst (6) Setters Dit zijn de methoden die gebruikt worden om bepaalde waarden aan een instantievariabele toe te kennen. Deze hebben ALTIJD parameters, anders zouden ze de waarden niet kunnen aanpassen. “public void setIets (Type iets){ This.iets = iets; }” Er wordt hier void gebruikt, omdat er niets moet worden teruggegeven. Het type hangt af van de instantievariabele. (7) Aparte methoden per klasse Er zijn bepaalde specifieke methoden die alleen bruikbaar zijn in bepaalde klasses. Zo heb je bv. MoveHorizontal voor de klasse punt, zo heb je VeranderUren voor de klasse klok, zo heb je isEvenveel (boolean) voor o.a. de klasse Breuk en de klasse OilTank. “public boolean isEvenVeel (Breuk b){ boolean OK = true; If (b != null) OK = ((double)this.getTeller()/this.getNoemer()) == ((double)b.getTeller()/b.getNoemer()); return OK; }” In deze methode wordt nagekeken of twee breuken gelijk zijn. != betekent verschillend van, == staat voor gelijk aan (= betekent dat die bepaalde waarde aan die instantievariabele wordt toegekend). (8) Print methode Dit is de eenvoudige methode om het resultaat weer te geven. Maar, als men met een link werkt tussen verschillende klassen gaat men gebruik maken van de toString methode, die in principe hetzelfde doet, maar die gebruikt kan worden in de verschillende klassen. “public void Print(){ System.out.println(“…” + this.get…2() + “…”); }” Het is een void, omdat het commando print al zegt dat er iets moet weergegeven worden. De … staat voor de tekst die moet weergegeven worden, de + zegt dat er nog iets bij moet, en het getter-commando zegt wat er nog bijmoet. By Pieter Van der Elst (9) toString methode Dit doet in principe hetzelfde als de print methode, maar kan in verschillende (gelinkte) klasses gebruikt worden. “public String toString(){ String uit = “ “; Uit += (this.get…2() <10? “0” : “ “) + this.get…2(); Uit += (this.get…2() <10? “0” : “ “) + this.get…2(); }” Zie uitleg print methode. Dit is een voorbeeld uit de klasse klok.