Nada

^ Upp till kursens hemsida.

Papperskopior av OH-bilderna kan beställas från kursledaren, ring eller maila!
Där finns mer föklaringar kring och till programmen.

Program måndag 9/5

Demonstration av JUnit för testning av klasser: Testprogram för klassen BankAccount:
BankAccountTest.java
Klassen som testas: BankAccount.java
Exempel med testsvit, ej körbart, då de testfall och testsviter som används inte finns:   TestSuiteDemo.java

Mönstret Singleton i två versioner: Singleton.java Singleton1.java
Test av Singleton med JUnit. TestSimpleSingleton.java

Singleton med subklasser: Singleton.java   Endast ett objekt av EN av subklasserna få skapas.

Här ligger Singleton och dess subklasser i ett eget paket som heter singleton.
Endast de klasser och metoder som är märkta public syns utanför paketet. Singleton.java

Program tisdag 10/5

Den version av klassen Singleton där det enda objektet skapas första gången det efterfrågas som visades
på måndagen är inte trådsäkert. Om två trådar samtidigt försöker använda objektet kan det hända att två objekt skapas.
För att undvika detta bör man markera metoden getInstance() som synchronized. Singleton.java

Exempel på Template Method: En abstrakt klass för numerisk integrering.
Funktionen som ska integreras deklareras abstrakt: Integrator.java
I följande subklass till Integrator definieras funktionen som ska integreras.
En mainmetod skapar ett objekt av Integratorn och gör några beräkningar: X2Integrator.java
Fler exempel, först ett med anonym subklass men refererat objekt, därefter med anonymt objekt av anonym subklass:
Integrators.java

Exempel med mönstret State, exemplet är hämtat från http://www.dofactory.com/Patterns/Patterns.aspx
och översatt till Java. Exemplet

Program onsdag 11/5

Klassen Integrator ändrades så att den istället följer mönstret Strategy.
Funktionen som ska integreras definieras av ett interface IFunc och Integratorklassen
får ett objekt av denna typ där aktuell funktion att integrera definieras.
Integratorklassen: Integrator.java
Gränssnittet IFunc: IFunc.java
Här är tre implementationer av gränssnittet IFunc: Funktionerna.java
Här är ett testprogram. Ett Integratorobjekt och objekt av alla tre funktionsklasserna skapas
och funktioner integreras. TestIntegrator1.java

Här är en annan variant av testprogram med färre klasser. Anonyma inre klasser används
för funktionsobjekten. TestIntegrator2.java

Demonstration av mönstret Decorator (titta på OH-bilderna också!):
Även detta exempel är hämtat från http://www.dofactory.com/Patterns/Patterns.aspx
och översatt till Java.
LibraryItem.java
Book.java
Video.java
Borrowable.java
Sellable.java
DecoratorApp.java

Program 12/5

Litet exempel på Abstract Factory (titta på OH-bilderna samtidigt!)
Vi har tre olika färger i hierarki med abstrakta klassen Färg och tre olika prylar med abstrakta klassen Pryl:
Farg.java  Rosa.java  Svart.java  Grön.java
Pryl.java  Dockhus.java  RymdStation.java  Cykel.java
En abstrakt fabrik AFabrik.java och tre konkreta fabriker som vardera skapar en kombination av
färg och pryl med en viss stil. FlickSymbolFabrik.java   PojkSymbolFabrik.java   NeutralSymbolFabrik.java
Klassen Reklam använder en Symbolfabrik för att göra ett "reklamblad" och testprogrammet gör
tre olika reklamblad, ett för varje konkret fabrik:
Reklam.java  Test1.java

Den abstrakta fabriken kan istället vara en konkret fabrik med ett standardbeteende som kan ändras
i subklasser. Här låter vi standardbeteendet vara det som implementeras i den neutrala fabriken ovan,
dvs GRÖN och CYKEL. De två andra fabrikerna definieras som subklasser:
Fabrik.java  FlickSymbolFabrik2.java   PojkSymbolFabrik2.java
Reklamklass och testklass med den senare varianten på Fabrik:
Reklam2.java  Test2.java

En enkel Factory-variant där färger skapas från namnet:
interface, fabriksklass och testprogram:
FärgFabrikInterface2.java   FärgFabrik2.java   TestFF2.java

Vi gick igenom ett program där trådar väntar kontrollerat på varandra, ett producent-konsument problem.
Producenten är ett objekt av klassen Våffelgräddare och konsumenter är tre objekt av Våffelätare.
De senare väntar hungrigt på att ta våfflor från ett fat där det finns plats för endast en våffla.
Fatet är objekt av klassen Uppläggsfat. Metoderna wait och notify (som finns i klassen Object) används.
VaffelKalas.java

En fil på annan eller på egna datorn läses m.h.a URL och inström: URLTest.java
Serverprogrammet som ger uppmuntrande kommentarer: Muntra.java