Abstracte klassen & Interfaces

Vergelijkbare documenten
Overerving & Polymorfisme

IMP Uitwerking week 13

Tentamen Object Georiënteerd Programmeren TI oktober 2014, Afdeling SCT, Faculteit EWI, TU Delft

Datatypes Een datatype is de sort van van een waarde van een variabele, veel gebruikte datatypes zijn: String, int, Bool, char en double.

NAAM: Programmeren 1 Examen 21/01/2011

Objectgericht programmeren 1.

public Paneel() { knop = new JButton( Klik ); knop.addactionlistener( new KnopHandler() ); tekstvak = new JTextField(10); add(knop); add(tekstvak);

VI. Klassen en objecten

Kwis (3) class X { public void a() { System.out.println("x"); public static void main(string[] args) { X x = new X();

Objectgeorïenteerd werken is gebaseerd op de objecten die door het systeem gemanipuleerd worden.

Design patterns Startbijeenkomst

Ingebouwde klassen & methodes

Beginselen van programmeren Practicum 1 (Doolhof) : Oplossing

Zelftest Programmeren in Java

Hoofdstuk 1: Inleiding. Hoofdstuk 2: Klassen en objecten Datahiding: afschermen van implementatiedetails. Naar de buitenwereld toe enkel interfaces.

Tentamen in2705 Software Engineering

Objectgericht programmeren 1.

Tentamen Object Georiënteerd Programmeren TI januari 2013, Afdeling SCT, Faculteit EWI, TU Delft

Informatica. Objectgeörienteerd leren programmeren. Van de theorie met BlueJ tot een spelletje met Greenfoot... Bert Van den Abbeele

TENTAMEN Programmeren 1

In BlueJ. Doe onderstaande met muis/menu s:

Kleine cursus PHP5. Auteur: Raymond Moesker

1 Ontwerppatronen. 1.1 Het Command patroon

Java spiekbrief. Commentaar. Definitie van een methode. Types. Variabelendeclaratie. Definitie van een klasse. Namen. Definitie van een veld

Modeleren. Modelleren. Together UML. Waarvan maken we een model? overzicht les 14 t/m 18. ControlCenter 6.2

Tentamen Objectgeorienteerd Programmeren TI februari Afdeling ST Faculteit EWI TU Delft

voegtoe: eerst methode bevat gebruiken, alleen toevoegen als bevat() false is

Programmeren in C# Interfaces. Hoofdstuk 23

NAAM: Programmeren 1 Examen 29/08/2012

Ontwerp van Informatiesystemen

Java spiekbrief. Commentaar. Definitie van een methode. Types. Variabelendeclaratie. Definitie van een klasse. Namen. Definitie van een veld

Object-oriented programmeren met BlueJ en Visual Studio

TENTAMEN Programmeren 1 VOORBEELDUITWERKING

Tentamen Objectgeorienteerd Programmeren IN1205 Voorbeeld

Tentamen Imperatief Programmeren

Vakgroep CW KAHO Sint-Lieven

TENTAMEN Programmeren 1 VOORBEELDUITWERKING

Modelleren en Programmeren

Universiteit van Amsterdam FNWI. Voorbeeld van tussentoets Inleiding programmeren

Tentamen Imperatief en Object-georiënteerd programmeren in Java voor CKI

Modelleren en Programmeren

Deel II: Modelleren en software ontwikkeling. Hoofdstuk 7 Software ontwikkeling - Overzicht. Naïeve benadering

Objectgeoriënteerd programmeren in Java 1

Lessen Java: Reeks pag. 1

Design patterns.

Programmeren in Java 3

Game of Life in Java

Modelleren en Programmeren

Programmeren I. 26 augustus Algemene Richtlijnen. Richtlijnen Programmeren 1

Programmeren in Java 3

Uitwerking Aanvullend tentamen Imperatief programmeren Woensdag 24 december 2014, uur

public Bier ( string N, double P, Brouwerij B) { Naam = N; AlcoholPerc = P; Brouwer = B;

Tentamen Inleiding Programmeren (IN1608WI), duur van de toets 2 uur Technische Universiteit Delft, Faculteit EWI, Afdeling 2.

Objectgericht programmeren 1

et Zend Framework bestaat volledig uit objectgeoriënteerde

Noties Informatica. In java fungeren objecten als een model voor de elementen waarin een probleem kan worden opgesplitst

Modelleren en Programmeren

Datastructuren Werkcollege Intro

Objectgericht ontwerpen


Programmeren 1 23 januari 2013 Prof. T. Schrijvers

SPOJ oplossingen Gilles Callebaut 7 augustus 2015

Domeinmodellen en klassendiagrammen

Programmeren (1) Examen NAAM:

X. Grafische elementen

Scala. Korte introductie. Sylvia Stuurman

Elementary Data Structures 3

Inhoud leereenheid 2. Overerving (1) Introductie 59. Leerkern 60. Samenvatting 88. Zelftoets 90. Terugkoppeling 94

OBJECT SPAGHETTI : PATTERNS BIEDEN UITKOMST? Wat is het probleem nou eigenlijk? public class CoffeeDrinker { private CoffeeProducer mycoffeeproducer;

Opdracht 7a. Applicatiebouw 2014/2015

Deel 1 : Gesloten Boek

Informatica. Deel II: les 1. Java versus Python. Jan Lemeire Informatica deel II februari mei Parallel Systems: Introduction

Objectgeoriënteerd Programmeren: WPO 2a

Java. Basissyllabus. Egon Pas

Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 7 november 2014, uur

Stap 1 Eenvoudig tekenprogramma maken In eerste instantie alleen 'freehand' curves Demo in de les

INFORMATICA 1STE BACHELOR IN DE INGENIEURSWETENSCAPPEN

Wat is een grafische gebruikersinterface (GUI)?

Datastructuren: stapels, rijen en binaire bomen

Modelleren en Programmeren

Uitwerkingen derde deeltentamen Gameprogrammeren Vrijdag 6 november 2015, uur

Voorbeeldtentamen Inleiding programmeren (IN1608WI), Oktober 2003, , Technische Universiteit Delft, Faculteit EWI, Afdeling 2.

Programmeren in Java 3

Transcriptie:

Abstracte klassen & Interfaces

Overerving public class Vierhoek {... Vierhoek public class Rechthoek extends Vierhoek {... public class Ruit extends Vierhoek {... Rechthoek Ruit Elke rechthoek is een vierhoek. Elke ruit is een vierhoek. Er bestaan ook vierhoeken die geen rechthoeken of ruiten zijn.

Overerving public class Schaakstuk {... Schaakstuk public class Loper extends Schaakstuk {...... public class Paard extends Schaakstuk {... Loper... Paard Elke loper is een schaakstuk... Elk paard is een schaakstuk Er bestaan geen schaakstukken die geen loper of... of paard zijn

Verschil Vierhoek Schaakstuk Rechthoek Ruit Loper... Paard Vierhoek is concreet concept Is groter dan unie van zijn subklassen Vierhoek v = new Vierhoek(); Schaakstuk is abstract concept Is verzamelnaam voor zijn subklassen Schaakstuk s = new Schaakstuk();

Kwis Docent extends Werknemer Baksteen extends Bouwmateriaal Condensator extends ElektrischeComponent G3EnabledGSM extends GSM

Abstracte klasse Hoewel abstracte klasse eigenlijk zelf niet bestaat Schaakstuk Kan ze toch nuttig zijn in programma Loper... Paard Gemeenschappelijke functionaliteit van subklassen bevatten

Abstracte klasse public abstract class Schaakstuk {... Kan methoden, attributen en constructors bevatten Kan gebruikt worden om variabelen te declareren Maar je mag er geen objecten van aanmaken Niet: Schaakstuk s = new Schaakstuk(); Wel: Schaakstuk s = new Loper(); Mag abstracte methoden bevatten

public abstract class Schaakstuk { private boolean wit; public Schaakstuk(boolean w) { wit = w; public boolean iswit() { return wit; private SchaakbordVakje positie; public SchaakbordVakje getpositie() { return positie; public void verplaats(schaakbordvakje nieuw) { if (magnaar(nieuw)) positie = nieuw; else System.out.println("Niet doen!"); public abstract boolean magnaar(schaakbordvakje nieuw);

public class Loper extends Schaakstuk { public Loper(boolean w) { super (w); public boolean magnaar(schaakbordvakje nieuw) { boolean voorwaarts = positie.getrij() - nieuw.getrij() == positie.getkolom() - nieuw.getkolom(); boolean achterwaarts = positie.getrij() - nieuw.getrij() == nieuw.getkolom() - positie.getkolom(); boolean verschillend = nieuw.getrij()!= positie.getrij() nieuw.getkolom()!= positie.getkolom(); return verschillend && (voorwaarts achterwaarts); Niet abstract -> moet alle abstracte methoden implementeren

Abstracte klasse Klasse zonder objecten Gewone methoden Abstracte methoden

Voorbeeld Vind de jongste werknemer: public static Werknemer jongste(werknemer[] rij) { Werknemer jongste = rij[0]; for (int i = 1; i < rij.length; i++) if (rij[i].isjongerdan(jongste)) jongste = rij[i]; return jongste; Vind de kleinste rechthoek: public static Rechthoek kleinste(rechthoek[] rij) { Rechthoek kleinste = rij[0]; for (int i = 1; i < rij.length; i++) if (rij[i].iskleinerdan(kleinste)) kleinste = rij[i]; return kleinste;

Met abstracte klassen public abstract class Vergelijkbaar { public abstract boolean kleinerdan(vergelijkbaar v); public static Vergelijkbaar kleinste(vergelijkbaar[] rij) { Vergelijkbaar kleinste = rij[0]; for (int i = 1; i < rij.length; i++) if (rij[i].kleinerdan(kleinste)) kleinste = rij[i]; return rij[i]; public class Werknemer extends Vergelijkbaar { public boolean kleinerdan(vergelijkbaar v) { if (!v instanceof Werknemer) {... return this.getleeftijd() < ((Werknemer) v).getleeftijd();

Met abstracte klassen public abstract class Vergelijkbaar { public abstract boolean kleinerdan(vergelijkbaar v); public static Vergelijkbaar kleinste(vergelijkbaar[] rij) { Vergelijkbaar kleinste = rij[0]; for (int i = 1; i < rij.length; i++) if (rij[i].kleinerdan(kleinste)) kleinste = rij[i]; return rij[i]; public class Rechthoek extends Vergelijkbaar { public boolean kleinerdan(vergelijkbaar v) { if (!v instanceof Rechthoek) {... return this.oppervlakte() < v.oppervlakte();

Probleem Een klasse kan maar één superklasse hebben public class Rechthoek extends Vergelijkbaar, Vierhoek {... Oplossing: interface public interface Vergelijkbaar { public boolean kleinerdan(vergelijkbaar v); public class Rechthoek extends Vierhoek implements Vergelijkbaar {...

Abstracte klasse Klasse zonder objecten Interface Klasse zonder objecten Gewone methoden, attributen Abstracte methoden Slechts overerven van één Abstracte methoden Willekeurig aantal implementeren Richtlijn: is het essentiële eigenschap of niet?

Klassediagramma s

Probleem???

Waterval (1970) Wat is nodig? Hoe gaan we dat aanpakken? Programma schrijven Programma testen Onderhoud

Hulpmiddelen voor analyse & ont werp

Klassediagramma

Details: Klassen Rekening Rekening kredietlimiet: Real tegoed: Real Rekening kredietlimiet: Real tegoed: Real open() stort(bedrag: Real) neemop(bedrag: Real) cten communiceren met elkaar door middel van het sturen van boodschappen. Een

Details: Associaties en rollen

Details: multipliciteit

Details: subklassen

Klassediagramma

Objectdiagramma Concrete instantiatie van klassediagramma op bepaald tijdstip

Zowel bij analyse als ontwerp Klassen/objecten zoals ze voorkomen in het domein Klassen/objecten zoals ze voorkomen in je ontwerp