OOP2

Artikel.java

1
import java.util.*;
2
3
abstract class Artikel
4
{
5
	private int m_prijs;
6
	private String m_naam;
7
	public int prijs(){
8
		return m_prijs;}
9
	public void setPrijs(int prijs){
10
		m_prijs = prijs;}
11
	public String naam(){
12
		return m_naam;}
13
	public void setNaam(String naam){
14
		m_naam = naam;}
15
16
	abstract void toon();
17
	abstract String geefType(); //Returned de naam van het type van deze class.
18
}
19
//Antwoord op de vraag: Is het nog nodig dat we een geefType() method voorzien om, afhankelijk van het type object specifieke functionaliteit uit te voeren?
20
//Neen. Als we ervan uitgaan dat de type objecten correct inheritance toepassen, dan kunnen we erop vertrouwen dat diezelfde objecten hun functionaliteit sowieso correct zullen uitvoeren. We hoeven dan niet te controleren op het type object.
21
//Antwoord op de vraag: Wat zijn de nadelen van met een geefType() method te werken?
22
//Ten eerste voegen dergelijke functies onnodige boilerplatecode toe aan de classes. Er moet voor elke classe die van Artikel inherit extra code worden toegevoegd om iets aan te geven wat, als de inheritance goed is, triviaal en onnodig is. Ook zijn dergelijke functies in strijd met het GRASP-principe "High cohesion/Low coupling", en (voor discussie vatbaar) vermindert de herbruikbaarheid van de code.
23