Java Objectgeoriënteerd Programmeren in Java met BlueJ

Slides:



Advertisements
Verwante presentaties
Inleiding in de statistiek voor de gedragswetenschappen Met ondersteuning van SPSS Guido Valkeneers.
Advertisements

Het doen van eigen onderzoek
KINN 2010 •OOP •O Object •O Georiënteerd •P Programmeren.
Programmeren in Java met BlueJ
Veilig Internet Geef antwoord op de vragen en ontdek of jij veilig gebruik maakt van het internet!
Databases via internet
DE HELP-FUNCTIE Diverse manieren om tijdens het werk gebruik te maken van het hulpsysteem H van BreugelA van der Coelen.
Hoog Leer noten lezen! Deel 1 Laag A - B - C - D - E - F - G
Instructie Programmeren Task 8 5JJ70. PAGE 2 Task 8: Double Linked List Het doel van deze opdracht is: Het opbouwen van een tweetal klassen, die samen.
Van domeinklasse tot implementatie
Base: bewerkingen 2 soorten - Oplopend- Aflopend.
Het ontwerpen van een klasse
Het type int Tekenen met Java operatoren
Klassen en objecten.
Greenfoot Workshop Bobby - Snake.
Hoofdstuk 6: Controle structuren
Hoofdstuk 4: Klassen definiëren
Hoofdstuk 2 Hallo, C# !.
De koektrommel of de grabbelton
Hoofdstuk 8 Objecten en klassen.
Static Keyword static voor functieleden functie niet voor een object aangeroepen class K {... static int minimum( int i, int j); } aanroep: K::minimum(
JAVA -- H51 CONSTRUCTOR –- COPY-CONSTRUCTOR 1Constructor: Dezelfde naam als de klasse Wordt uitgevoerd d.m.v. new Initialisatie van de (private) attributen.
1 Datastructuren Introductie tot de programmeeropgaven in C++ Jan van Rijn
Hoofdstuk 2 Objectgeoriënteerde basisbegrippen. Accessors en polymorfie zGoede gewoonte voor objectgeoriënteerde programma -> voor alle eigenschappen:
LauwersCollege Buitenpost Java Applet programma dat op een website zichtbaar is Java Application programma dat zelfstandig werkt Javascript Scripttaal.
Opgave 1a: void nvoid staat in de header van een methode die geen resultaatwaarde heeft nde aanroep van een void-methode is dan een opdracht i.p.v. een.
Opgave 2a nMet een InputStream lees je bytes uit een binare file nMet een Reader lees je characters uit een tekstfile.
Arrays.
Versie 1: 1306; v2: 1308 ….
OO Analyse in de praktijk OO Analyse in de praktijk IV OO basisregels.
Herhaling Java-programmatie en geautomatiseerd testen (vervolg)
Inleiding tot programmeren
Overerving: It’s a kind of magic…. Principes van OO: 1) Overerving 2) Encapsulatie 3) Polymorphisme = (deel van het) OO. paradigma.
Overloading My name is overloading, cause we are many.
Inleiding in de statistiek voor de gedragswetenschappen
Variabelen Part deux.. Variabelen week 3 0. Herhaling 1. De NullPointerException (p101) 2. Primitieven 3. Scope en levensduur van variabelen 4. Meerdere.
Constructoren Genesis 1:1 Aarde a1 = new Aarde(“Adam”, “Eva”);
Tircms03-p les 4 Klassen. Abstracte datatypes in C struct stack { char info[100]; int top; }; void reset(stack *s) { s->top = -1; } void push(stack *s,
Encapsulatie: Every man is an island upon himself.
Polymorphisme en Interfaces: inleiding
Onze doelen en visie in beeld
Hoofdstuk 4 Nieuwe methoden. Tekenen g.drawRect(20,60,40,40); g.drawLine(20,60,40,40); g.drawLine(40,40,60,60); g.drawRect(70,60,40,40); g.drawLine(70,60,90,40);
Docentinstructie: Het is aan te bevelen de eerste dia’s klassikaal te tonen en met uitleg te bespreken. Als na zes dia’s een korte demo van Celsius/Fahrenheit.
Java Objectgeoriënteerd Programmeren in Java met BlueJ Hoofdstuk 7 Polymorfie en overerving © 2014, Gertjan Laan, versie 2.
Java Objectgeoriënteerd Programmeren in Java met BlueJ Hoofdstuk 8: Gebruikersinterface © 2014, Gertjan Laan, versie 2.
 C++ heeft een inheritance mechanisme  Manier om functionaliteit te ‘erfen’ van een parrent class ◦ Polymorphisme ◦ Zoals we het ook in C# kennen.
Soorten programma’s nConsole- applicatie. Soorten programma’s nConsole- applicatie nWindows- applicatie.
Herhaling: He who does not learn from history, is doomed to repeat it.
Variabelen. Wat zijn variabelen? In een programmeertaal zijn er “dingen” nodig die ervoor zorgen dat het programma informatie voor korte of langere tijd.
Hoe maak ik een PowerPoint presentatie?
Eigen klassen maken A new way of thinking.. Wat? Zie voorbeeld. Zie voorbeeld.
Woordjes leren.
Hoe maak je een werkstuk? Begin op tijd!!. Kies een leuk onderwerp  Denk aan een hobby, sport, beroep, stad of onderwerp uit een van de lesboeken van.
Trimester 2. Hfdst 1: e-Presentatie, master! e-Presentatie Met de hulp van Powerpoint gaan we leren hoe we een elektronische presentatie kan maken.
GEGEVENSSTRUCTUREN IN.NET. Inleiding  Enumerated type  Structure  Collecties  Typed collections  Untyped collections.
De definitie van een object. Een object is een verzameling van eigenschappen en bewerkingen. Veel voorkomende objecten zijn: D (display) Gui (user interface)
Grafieken in de natuurkunde Ga verder Dia’s worden stap voor stap automatisch ingevuld Ga verder Pas als rechtsonder verschijnt, klik dan voor de volgende.
Objectgeoriënteerd Programmeren (2)
Objectgeoriënteerd Programmeren
Gameprogrammeren: Objecten en geheugen
Gameprogrammeren: Lists en interfaces
Windows-applicatie using System.Windows.Forms; using System.Drawing;
Gameprogrammeren: Properties
Tinpro015b-les4 Klassen.
Modelleren en Programmeren voor KI Practicumopdracht 4: SAT Solver
Gameprogrammeren: Abstracte klassen
Unified Modeling Language
ASP.NET MVC Web Development
Software Development fundamentals
Software Development fundamentals
Transcript van de presentatie:

Java Objectgeoriënteerd Programmeren in Java met BlueJ Hoofdstuk 2: Zelf klassen maken © 2014, Gertjan Laan, versie 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

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

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)

Waaruit bestaat een klasse? Naam van de klasse Attributen Methoden

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?

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

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

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

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

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

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

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

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

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

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

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

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

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

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; }

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

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

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

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

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 )

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

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

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()

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

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

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

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

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

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

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

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

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

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; ... }

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

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

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

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

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

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

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

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

Einde