De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

Java Objectgeoriënteerd Programmeren in Java met BlueJ

Verwante presentaties


Presentatie over: "Java Objectgeoriënteerd Programmeren in Java met BlueJ"— Transcript van de presentatie:

1 Java Objectgeoriënteerd Programmeren in Java met BlueJ
Hoofdstuk 2: Zelf klassen maken © 2014, Gertjan Laan, versie 2

2 Objectgeoriënteerde taal
Java is een objectgeoriënteerde programmeertaal Objecten spelen een belangrijke rol In een objectgeoriënteerde taal probeer je dingen uit de werkelijkheid in software vorm te geven door middel van objecten

3 Objecten Een object kan een ding zijn dat je kunt vasthouden
Een object kan een abstract begrip zijn Voorbeelden van objecten: Een persoon Een geboortedatum Een adres Een bankrekening

4 Klassen Je kunt pas objecten maken als je een klasse hebt
Een klasse bestaat doorgaans uit drie gedeelten: Een kop, met daarin de naam van de klasse Attributen (zodat objecten gegevens kunnen onthouden) Methoden (zodat je objecten iets kunt laten doen)

5 Waaruit bestaat een klasse?
Naam van de klasse Attributen Methoden

6 Een klasse voor leerlingen
Voorbeeld: Een klasse voor objecten waarin je de gegevens van een leerling kunt opslaan Welke gegevens behoren tot de klasse? Van elke leerling bijvoorbeeld: de naam de klas het geslacht en leerlingnummer Vraag: hoe maak je zo’n klasse?

7 1. Naam van de klasse Een voor de hand liggende naam voor de klasse is Leerling In Java komt de kop van de klasse er zo uit te zien: public class Leerling Het woord public duidt erop dat deze klasse voor algemeen gebruik is

8 Body van de klasse Behalve de kop bestaat elke klasse uit een body met accolades er omheen: public class Leerling { ... }

9 2. Attributen van de klasse
In de body komen de attributen en methoden Eerst de attributen Het zijn er 4 Ik geef ze de volgende namen: naam, klas, geslacht en nummer Voordat je de attributen in de klasse kunt plaatsen moet je eerst van elk attribuut het type vaststellen

10 Type String Java kent het type String voor een rijtje tekens
En voor gehele getallen het type int naam, klas en geslacht zijn van het type String nummer is van het type int

11 Klasse met attributen public class Leerling { private String naam;
private String klas; private String geslacht; private int nummer; ... } Het woord private geeft aan dat deze gegevens niet openbaar zijn Je kunt ze niet zomaar opvragen of wijzigen

12 Broncode De klasse zoals die nu is kun je intikken in een editor (tekstverwerker) De tekst die je intikt heet de broncode van de klasse Deze broncode moet je naar bytecode laten vertalen (to compile - compileren) Broncode intikken en compileren kun je in BlueJ doen

13 Objecten maken Als je een klasse hebt ingetikt en deze gecompileerd is kun je er objecten van maken Zoveel je wilt Een nieuw object maak je met het woord new: new Leerling() In BlueJ doe je dit door uit een menu new Leerling() te kiezen

14 Namen van objecten Vaak is het handig elk object een eigen naam te geven, bijvoorbeeld: leerling1 = new Leerling() leerling2 = new Leerling() Met behulp van deze namen kun je de objecten uit elkaar houden De naam van een object heet ook wel een referentie naar dat object

15 Defaultwaarden van attributen
De twee Leerling-objecten zijn nog leeg De attributen bevatten nog geen geschikte gegevens (waarden) Wel krijgen ze automatisch een defaultwaarde Een String krijgt null als defaultwaarde Een int krijgt 0 als defaultwaarde

16 De twee objecten naam=null klas=null geslacht=null nummer=0 leerling1

17 Attributen een waarde geven
Aan zulke objecten met alleen de waarden null en 0 erin heb je niet veel De attributen moeten een zinvolle waarde krijgen Dat kan op verschillende manieren Een veel gebruikte manier is: Geef de klasse een constructor

18 Een constructor Een constructor is een soort methode die een object levert van de klasse waar hij constructor van is Een constructor heeft altijd dezelfde naam als de klasse De constructor van de klasse Leerling heet Leerling() en levert een Leerling-object Constructor van de klasse Schildpad heet Schildpad()en levert een Schildpad-object

19 Argumenten Een constructor kan argumenten hebben
Via de argumenten kun je de attributen een andere waarde dan de default-waarde geven

20 Zelf constructor maken
public class Leerling { private String naam; private String klas; private String geslacht; private int nummer; // Constructor public Leerling( String nm, String kl, String gesl, int nr ) { naam = nm; klas = kl; geslacht = gesl; nummer = nr; }

21 De constructor (kop) // Constructor public Leerling( String nm,
String kl, String gesl, int nr ) { naam = nm; klas = kl; geslacht = gesl; nummer = nr; }

22 De constructor (body) // Constructor public Leerling( String nm,
String kl, String gesl, int nr ) { naam = nm; klas = kl; geslacht = gesl; nummer = nr; }

23 Aanroep van de constructor
new Leerling( "Jaap","5B","m",101 ) 4 actuele argumenten Aanroep van constructor

24 Wat gebeurt bij aanroep?
public class Leerling { private String naam; private String klas; private String geslacht; private int nummer; // Constructor public Leerling( String nm, String kl, String gesl, int nr ) { naam = nm; klas = kl; geslacht = gesl; nummer = nr; } "Jaap" "5B" "m" 101 4 formele argumenten

25 Meer objecten maken Op dezelfde manier kun je van deze klasse meer objecten maken leerling1 = new Leerling( “Filip","5B", “v",102 ) leerling2 = new Leerling( “Mathilde","5A, "v",104 )

26 De twee objecten naam="Filip" klas="5B" geslacht="v" leerling1
nummer=102 leerling1 naam ="Mathilde" klas="5A" geslacht="v" nummer=104 leerling2

27 Methoden Ik kan nu objecten maken …
… en gegevens in de attributen opbergen Maar verder nog niets Als je wilt dat je iets met objecten kunt doen iets opvragen, iets wijzigen, een opdracht geven ... dan moet je methoden maken

28 Getters Een getter is een methode waarmee je de waarde van een attribuut opvraagt De naam van een getter begint altijd met het woord get Gevolgd door de naam van het attribuut met een hoofdletter Bijvoorbeeld: getNaam() getKlas() getGeslacht() getNummer()

29 De methode getNaam() public String getNaam() { return naam; }
De methode heeft als retourwaarde een String De retourwaarde is in dit geval de waarde van het attribuut naam

30 De methode getKlas() public String getKlas() { return klas; }
De methode heeft als retourwaarde een String De retourwaarde is in dit geval de waarde van het attribuut klas

31 De methode getGeslacht()
public String getGeslacht() { return geslacht; } De methode heeft als retourwaarde een String De retourwaarde is in dit geval de waarde van het attribuut geslacht

32 De methode getNummer()
public int getNummer() { return nummer; } De methode heeft als retourwaarde een int De retourwaarde is de waarde van het attribuut nummer

33 De klasse tot nu toe Broncode van de klasse Leerling in Word-document
Ik heb nu een klasse om gegevens van leerlingen op te bergen en deze gegevens op te vragen

34 Klassediagram van Leerling
naam klas geslacht nummer getNaam() getKlas() getGeslacht() getNummer()

35 Sportweek Tijdens de sportweek doen teams van twee leerlingen mee
Voor de leerlingen gebruik ik de klasse Leerling Voor de teams maken ik een nieuwe klasse met de naam Team Team Leerling

36 Associatie Om aan te geven dat de klasse Team en de klasse Leerling iets met elkaar te maken hebben teken je een lijn tussen de klassen We zeggen dat er een associatie is tussen de klassen Team Leerling

37 Naam van associatie Om duidelijk te maken wat de associatie inhoudt zet je een toelichting bij de lijn Een team bestaat uit leerlingen In dit geval bestaat een team uit precies twee leerlingen bestaat uit Team Leerling bestaat uit 2 Team Leerling

38 De klasse Team Ik maak een klasse voor een team van twee leerlingen
De klasse Team heeft twee attributen: de twee teamleden public class Team { private Leerling lid1; private Leerling lid2; ... }

39 Constructor public class Team { private Leerling lid1;
public Team() { lid1 = new Leerling( “Filip","5B",“v",102 ) lid2 = new Leerling( “Mathilde","5A, "v",104 ) }

40 Nadeel Deze aanpak heeft een belangrijk nadeel:
elk team dat je maakt bestaat uit precies dezelfde twee leden Dus dat moet anders Hoe?

41 Andere constructor public class Team { private Leerling lid1;
public Team( Leerling lid1, Leerling lid2 ) { this.lid1 = lid1; this.lid2 = lid2; }

42 Een nieuw team maken leerling1 = new Leerling("Filip","5B",“v",102)
new Leerling("Mathilde","5A, "v",104) team1 = new Team(leerling1, leerling2);

43 Nog een nieuw team maken
leerling3 = new Leerling("Suske","5B","m",212) leerling4 = new Leerling("Wiske","5B,"v",213) team2 = new Team(leerling3, leerling4);

44 this In deze broncode staat this.lid1 en lid1
public Team( Leerling lid1, Leerling lid2 ) { this.lid1 = lid1; this.lid2 = lid2; } In deze broncode staat this.lid1 en lid1 this.lid1 is het attribuut lid1 lid1 zonder this is het argument lid1

45 Attribuut en argument public class Team { private Leerling lid1;
public Team( Leerling lid1, Leerling lid2 ) { this.lid1 = lid1; this.lid2 = lid2; }

46 Dit alles en meer In hoofdstuk 2 van OO-programmeren in Java met BlueJ

47 Einde


Download ppt "Java Objectgeoriënteerd Programmeren in Java met BlueJ"

Verwante presentaties


Ads door Google