Herhaling Java-programmatie en geautomatiseerd testen (vervolg)

Slides:



Advertisements
Verwante presentaties
KINN 2010 •OOP •O Object •O Georiënteerd •P Programmeren.
Advertisements

Hoofdstuk 8: Recursie.
Van domeinklasse tot implementatie
Het ontwerpen van een klasse
Het type int Tekenen met Java operatoren
Klassen en objecten.
Omgevingen zijn dan geïmplementeerd als Symbol Tables. Symbol Table mapt een symbool met een Binding Meerdere noties van binding –Meerdere manieren te.
Computervaardigheden en Programmatie Universiteit AntwerpenObjecten 4.1 Computervaardigheden en Programmatie 1rste BAC Toegepaste Biologische Wetenschappen.
Modula vs Java MODULE Show; CONST PI = ; TYPE PointRc = RECORD x,y : INTEGER; speed : REAL; angle : REAL; END; VAR a,b : PointRc; BEGIN.
Hoofdstuk 5: Bestanden.
Hoofdstuk 6: Controle structuren
Hoofdstuk 4: Klassen definiëren
Inleiding Informatica Prof. Dr. O. De Troyer Hoofdstuk 10: Omgaan met problemen.
Hoofdstuk 2 Hallo, C# !.
‘Inleiding programmeren in Java’ Derde college Maandag 22 januari 2001 drs. F. de Vries.
1 Voorwaarden hergebruik Modulair ontwerp Low coupling High cohesion.
Inleidend probleem Data structuur (hiërarchie van classes)
Array nDeclaratie nCreatie nOpvragen nWijzigen nLengte String [ ] a; a = new String[10]; ……a[5]…… a[5] = ……; …a.Length… …is eigenlijk overbodig! List a;
Static Keyword static voor functieleden functie niet voor een object aangeroepen class K {... static int minimum( int i, int j); } aanroep: K::minimum(
CONTROLESTRUCTUREN (DEEL 2)
JAVA -- H51 CONSTRUCTOR –- COPY-CONSTRUCTOR 1Constructor: Dezelfde naam als de klasse Wordt uitgevoerd d.m.v. new Initialisatie van de (private) attributen.
Oefeningen Hoofdstuk 3.
Consoletoepassing Variabelen Klassen
Algoritmiek Object-georiënteerd Programmeren
1 Datastructuren Introductie tot de programmeeropgaven in C++ Jan van Rijn
JAVA1 H 22. COLLECTIONS FRAMEWORK. 1. INLEIDING. Collections framework Is een verzameling van data structuren, interfaces en algoritmen Meest voorkomende.
6.1 Inleiding HOOFDSTUK 6 METHODEN
1 HOOFDSTUK 5 CONTROLESTRUCTUREN (DEEL 2) 5.1. INTRODUCTIE  Vervolg discussie omtrent gestructureerd programmeren  Introductie van de overblijvende controlestructuren.
JAVA1 H 9. OBJECTGEORIENTEERD PROGRAMMEREN: OVERERVING 1. INLEIDING Wat is overerving (inheritance)? Overerving is een mechanisme waarbij software opnieuw.
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.
Deel XIII Eerste echte e-commerce applicatie (iteraties + impl ) 1 Internetapplicaties Deel 13: Eerste echte e-commerce applicatie: Enkele iteraties met.
OO Analyse in de praktijk OO Analyse in de praktijk V Enkele Design Patterns.
Internetapplicaties - VI Herhaling 1 Internetapplicaties Deel 6: Herhaling.
OO Analyse in de praktijk OO Analyse in de praktijk IV OO basisregels.
Deel XIV Eerste echte e-commerce applicatie Implementatie (vervolg) 1 Internetapplicaties Deel 15: Herhaling Java-programmatie en geautomatiseerd testen.
Deel X: JSP + Java + database 1 Internetapplicaties Deel 10: JSP + Java + database: Client Server via http.
1 Syntax JavaLogo. 2 Hoofdstuk 1 Tekenen in Java.
Hoofdstuk 5 Interactie. Controls Form Label Button Label TextBox.
Overerving: It’s a kind of magic…. Principes van OO: 1) Overerving 2) Encapsulatie 3) Polymorphisme = (deel van het) OO. paradigma.
Constructoren Genesis 1:1 Aarde a1 = new Aarde(“Adam”, “Eva”);
Datacommunicatie en netwerken
Hoofdstuk 11.3 Algoritmen: Zoeken in een netwerk.
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,
Hoofdstuk 14.1 Algoritmen: Zoeken in een netwerk.
Encapsulatie: Every man is an island upon himself.
Polymorphisme en Interfaces: inleiding
Java Objectgeoriënteerd Programmeren in Java met BlueJ
Java Objectgeoriënteerd Programmeren in Java met BlueJ Hoofdstuk 7 Polymorfie en overerving © 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.
Herhaling: He who does not learn from history, is doomed to repeat it.
Java voor beginners Doel: Een spel maken in LWJGL Door: Jim van Leeuwen.
Objectgeoriënteerd Programmeren (2)
Gameprogrammeren: Objecten en geheugen
Gameprogrammeren: Overerving
Windows-applicatie using System.Windows.Forms; using System.Drawing;
Gameprogrammeren: Methoden
Gameprogrammeren: Overerving in Painter
Gameprogrammeren: Herhalingen
OOS Object geOrienteerd Software-ontwerp - 5
Tinpro015b-les6 Templates.
Tinpro015b-les4 Klassen.
Voortborduren op eerder gedaan werk
Gameprogrammeren: Abstracte klassen
Gameprogrammeren: Tiles en File I/O in Tick Tick
Unified Modeling Language
Gameprogrammeren: Klassen en objecten
Gameprogrammeren: Sprite sheets
Software Development fundamentals
Transcript van de presentatie:

Herhaling Java-programmatie en geautomatiseerd testen (vervolg) Internetapplicaties Deel 16: Herhaling Java-programmatie en geautomatiseerd testen (vervolg) Deel XVI: Herhaling java-programmatie en geautomatiseerd testen (vervolg) Deel XVI: Herhaling java-programmatie en geautomatiseerd testen (vervolg)

Opgave met inheritance Een kaartclub kan gewone leden en ereleden hebben. Ereleden betalen een jaarbijdrage in EUR van 200 min 10 keer hun aantal kleinkinderen. Gewone leden betalen een jaarbijdrage in EUR van 100 min hun aantal kleinkinderen (+/-Use case) De totale som van de jaarbijdragen van alle leden van een club moet kunnen opgevraagd worden. Deel XVI: Herhaling java-programmatie en geautomatiseerd testen (vervolg)

Opmerkingen Hier en daar hebben we in de oplossing een attribuut toegevoegd om de betekenis van de klasse te verduidelijken: vb clubNaam van de Kaartclub-klasse. Het is een goed idee om vooraf een UML-klassediagram van de oplossing te tekenen. Maar dit hoef je echt niet met een case-tool te doen. Bovendien hoeft het niet al de attributen en al de methoden te bevatten. Deel XVI: Herhaling java-programmatie en geautomatiseerd testen (vervolg)

Klassendiagram Deel XVI: Herhaling java-programmatie en geautomatiseerd testen (vervolg)

Wijziging van het design Een pakket (zoals kaartclubApp) moet kunnen getest worden vanuit een ander pakket. Client-klassen gaan namelijk i.h.a. niet tot het pakket kaartclubApp zelf behoren ! Daarom verhuizen we de testklasse KaartclubAppTest.java naar zijn eigen pakket Deel XVI: Herhaling java-programmatie en geautomatiseerd testen (vervolg)

Wijziging van het design (We tonen hier maar 1 parameter) Deel XVI: Herhaling java-programmatie en geautomatiseerd testen (vervolg)

Bestandsorganisatie Directorystructuur met bestanden: c:\ javaoef test (directory EN package) Test.java (dient als superclass voor eigen testklase) kaartclubAppTest (directory EN package) KaartclubAppTest.java (eigen testklasse) kaartclubApp (directory EN package) Kaartclub.java Lid.java GewoonLid.java Erelid.java Deel XVI: Herhaling java-programmatie en geautomatiseerd testen (vervolg)

KaartclubAppTest.java package kaartclubAppTest; import test.*; import kaartclubApp.*; public class KaartclubAppTest extends Test{ public static void main(String[] args){ (new KaartclubAppTest()).run(); } protected void compareAll(){ // Tests go here Deel XVI: Herhaling java-programmatie en geautomatiseerd testen (vervolg)

We schrijven de tests eerst // In plaats van Tests go here schrijven we: // Het is normaal dat je eerst de constructor test // Dat doen wij hier niet omdat dat nogal triviaal is // en we niet de indruk willen geven dat er // alleen triviale tests bestaan Kaartclub club1; club1 = new Kaartclub("De Goede Ouden Tijd."); club1.voegErelidToe(1,"Janssens","Peerke",10); club1.voegGewoonLidToe(2,"Vandeperre","Florke",12); club1.voegGewoonLidToe(3,"Vandendriesse","Charel",7); compareAndReport(“totale jaarbijdrage", club1.getTotJaarbijdrage()+"", (200.0-10*10 + 100.0-12 + 100.0-7) + "" ); Deel XVI: Herhaling java-programmatie en geautomatiseerd testen (vervolg)

Kaartclub.java Bevat juist genoeg om te compileren. Alle tests falen uiteraard: package kaartclubApp; import java.util.ArrayList; public class Kaartclub{ public Kaartclub(String clubNaam){} public void voegGewoonLidToe(int lidnr, String naam, String voornaam, int aantKleinkinderen){ } public void voegErelidToe(int lidnr, String naam, String voornaam, public double getTotJaarbijdrage(){ return 0.0; Deel XVI: Herhaling java-programmatie en geautomatiseerd testen (vervolg)

Compilatie C:\javaoef>javac kaartclubAppTest\KaartClubAppTest.java De andere klassen worden mee gecompileerd want KaartclubAppTest gebruikt ze. Deel XVI: Herhaling java-programmatie en geautomatiseerd testen (vervolg)

De test wordt uitgevoerd C:\javaoef>java kaartclubAppTest.KaartclubAppTest FOUT! club1.getTotJaarbijdrage() | berekend=0.0, verwacht=281.0 Totaal aantal fouten (fouten/tests): 1/1 Deel XVI: Herhaling java-programmatie en geautomatiseerd testen (vervolg)

Code aanvullen: Kaartclub.java package kaartclubApp; import java.util.ArrayList; public class Kaartclub{ public Kaartclub(String clubNaam){ this.clubNaam = clubNaam; } private String clubNaam; private ArrayList leden = new ArrayList(); public void voegGewoonLidToe(int lidnr, String naam, String voornaam, int aantKleinkinderen){ leden.add(new GewoonLid(lidnr, naam, voornaam, aantKleinkinderen)); public void voegErelidToe(int lidnr, String naam, String voornaam, int aantKleinkinderen){ leden.add(new Erelid(lidnr, naam, voornaam, aantKleinkinderen)); public double getTotJaarbijdrage(){ double totJaarbijdrage = 0.0; for (int i=0; i < leden.size(); i++){ Lid lid = (Lid) leden.get(i); totJaarbijdrage += lid.getJaarbijdrage(); return totJaarbijdrage; Deel XVI: Herhaling java-programmatie en geautomatiseerd testen (vervolg)

Lid.java package kaartclubApp; public abstract class Lid{ public Lid(int lidnr, String naam,String voornaam, int aantKleinkinderen){ this.aantKleinkinderen = aantKleinkinderen; } private int aantKleinkinderen; protected int getAantKleinkinderen(){ return aantKleinkinderen; public abstract double getJaarbijdrage(); Deel XVI: Herhaling java-programmatie en geautomatiseerd testen (vervolg)

GewoonLid.java package kaartclubApp; public class GewoonLid extends Lid{ public GewoonLid(int lidnr, String naam, String voornaam, int aantKleinkinderen){ super(lidnr, naam, voornaam, aantKleinkinderen); } public double getJaarbijdrage(){ return 100 - getAantKleinkinderen(); Deel XVI: Herhaling java-programmatie en geautomatiseerd testen (vervolg)

EreLid.java package kaartclubApp; public class Erelid extends Lid{ public Erelid(int lidnr, String naam, String voornaam, int aantKleinkinderen){ super(lidnr, naam, voornaam, aantKleinkinderen); } public double getJaarbijdrage(){ return 200 - 10*getAantKleinkinderen(); Deel XVI: Herhaling java-programmatie en geautomatiseerd testen (vervolg)

Compilatie en test-run C:\javaoef>javac kaartclubAppTest\KaartClubAppTest.java C:\javaoef>java kaartclubAppTest.KaartclubAppTest Alles werkt prima (1 tests uitgevoerd) Deel XVI: Herhaling java-programmatie en geautomatiseerd testen (vervolg)