1)
A: Template Method B: Iterator C: Observer
D: Proxy E: Strategy
2a) Förbättring av programkoden utan att programmets funktion eller gränssnitt ändras. 2b) Alla programmets (eller programdelens) funktioner beskrivs i testfall. Testfall skrivs före koden. När testfallen uppfylls är programmet/programdelen klart.
3) Alla Java-klasser ärver klassen Object och ärver då alla metoder som
definierats i Object, bl.a. metoden
4)
5a) Decorator 5b) Anrop av superklassens konstruktor
5c) Abstrakt klass: Inleds med
5d) Klassen Colorable har ingen parameterlös konstruktor. Enda konstruktorn i Colorable måste ges
en parameter av typ GeneralArtefact. 6) c går inte att kompilera. Det beror på att c är en instansvariabel. En instansvariabel existerar bara om man har skapat en instans av klassen, och ingen instans av Uppgift6 är skapad. a och b är klassvariabler och existerar oberoende av instanser. 7) Klassen A måste implementera interfacet Comparable eller ännu hellre Comparable<A>. Klassen måste ha en metod (som man skriver själv) som anger ordningen mellan två A-objekt genom att returnera ett heltal som är negativt, noll (vid likhet) eller positivt. class A implements Comparable<A>{ public int compareTo(A other) { // returnerar heltal beroende på // ordningen mellan this och other } } 8) Rätta svar är A, D och E.
9) Polymorfism betyder mångformig. Det står i detta sammanhang för att
ett objekt av en viss typ (supertypen) kan representeras av flera olika subtyper. Supertypen är mångformig och subtyperna är de olika formerna. En abstrakt metod i supertypen ges olika definitioner i subtyperna. Anropet 10) Syftet är att säkerställa att det endast kan skapas ett enda objekt av klassen. public class Singleton { private static Singleton theElement; private Singleton() {} public static Singleton theElement() { if (theElement == null) theElement = new Singleton(); return theElement; } }Variabeln theElement kan gärna göras final för att markera att den endast kan
ges värde en gång.
Elementet kan skapas på klassens första rad eller, som i lösningen ovan, skapas när det efterfrågas första gången.
Konstruktorn är private vilket är en förutsättning för att det ska vara möjligt att ha full kontroll på antalet
skapade objekt inifrån klassen.
11)
12) Alternativ 1: Skriv en klass som ärver från class MyThread extends Thread { public void run() { ... } } Mythread t = new MyThread(); t.start();
Alternativ 2: Skriv en klass som implementerar interfacet
class MyThread implements Runnable { public void run() { ... } } Thread t = new Thread(new MyThread()); t.start(); 13 Objekt ordnas i en trädstruktur. Det finns operationer som fungerar både på löv och sammansatta objekt. För UML, se t.ex. Composite-UML. Composite-klassen innehåller en lista där objekttypen är Component, dvs en Composite kan innehålla en blandning av Leaf och Composite. |