VP gang 2


Objektorienteret analyse

Gennemgå første halvdel af kapitel 22 i http://javabog.dk (til og med 22.2 Objektorienteret analyse) og lad dig inspirere af de udleverede kopier og nedenstående skitse:

Skitse til skridt i analysefasen

Skridtene er eksemplificeret med et køkkentegner-program, hvor en kunde kan tegne sit eget køkken og sende det til køkkenleverandører, der så giver en pris og eventuelt leverer køkkenet.

Objektorienteret analyse består i:

Opgave

Tag de tilsvarende skridt for analysefasen for din opgave. Brug mindst 20 minutter til hvert punkt. Lad være med at gå videre til designfasen.

Der er afleveringspligt!
Din analyse skal afleveres til læreren (vi aftaler nærmere hvornår det skal være), kopieres og deles ud til de andre kursister.
Prøv at holde den under 8 sider. Der kan godt indgå håndskrift og håndtegninger (blot de er læselige).

4.5 Opgaver om komponenter (så langt du kan nå)

I alle opgaverne herunder er det underforstået, at du afprøver dine komponenter ved at lave små programmer, der bruger dem.

Her er eksemplerne (også som zip-fil) fra kapitlet om komponenter.

  1. Ret i bønnen GentagTekst, og indfør egenskaben antal, der bestemmer, hvor mange gange teksten skal tegnes.
    Husk at både både definere både get- og set-metoden og oversætte klassen på ny, ellers kan det være at egenskaben ikke dukker op i dit udviklingsværktøj.

  2. Ret bønnen, så den fortæller sin foretrukne størrelse til containeren (se afsnit 4.2.3, Størrelsen af en grafisk komponent).

  3. Kig på bønnen Rystetekst i afsnit 4.4.1. Hvad hvis man skulle kunne styre bønnens opdateringstid, der bestemmer, hvor hurtigt teksten ryster (tidsrummet mellem to gentegninger)? Indfør egenskaben opdateringstid i bønnen, og brug den.

  4. Blandt AWT-komponenterne mangler der en komponent, der kan vise et billede.
    Lav en, f.eks. med udgangspunkt i GentagTekst.java. Definér egenskaben
    filnavn en streng, der beskriver, hvor billedet er
    Billeder kan hentes med f.eks.:
    Image i = Toolkit.getDefaultToolkit().getImage("hej.jpg");
    g.drawImage(i, 10, 10, this);

    Her skal filen hej.jpg ligge samme sted, som programmet udføres (ellers prøv at kopiere billedet til nogle forskellige steder i filstrukturen, indtil programmet 'får fat' i det).

  5. Lav en grafisk komponent, der viser en animation, dvs. et antal billeder vist i kort rækkefølge efter hinanden. Kig på Rulletekst.java for nogle idéer.
    Har du ikke lavet den forrige opgave, så tag udgangspunkt i Swing-komponenten JLabel (der ud over en tekst også kan vise et billede).

Webserver-komponent

  1. Lav en (ikke-grafisk) webserver-bønne. Tag udgangspunkt klasserne FlertraadetHjemmesidevaert og Anmodning fra http://javabog.dk/OOP/eksempler/kapitel_17/ (beskrevet i http://javabog.dk/OOP/kapitel16.html og det efterfølgende kapitel).
    Den skal have egenskaberne:
    port angiver, hvilken port serveren skal lytte på (f.eks. 8080)
    aktiv om den er aktiv, dvs. om den venter på anmodninger (true/false)
    Lad den først bare svare med den samme tekst uafhængig af spørgsmålet.
    Opret et testprogram, der anvender bønnen og sætter dens egenskaber.

  2. Lad den understøtte abonnement på Action-hændelser (se afsnit 4.3.5), på en sådan måde, at der sendes en hændelse, hver gang der kommer en anmodning.
    Ændr i testprogrammet så det abonnerer på hændelsen og skriver ud, når den indtræffer.

  3. Lad bønnen kunne læse filer fra filsystemet og sende til brugeren. Definér egenskaben
    rod sti til rodkataloget, hvor HTML-siderne, der kan hentes, er (f.eks. C:\HTML).

En komponent bør kunne bruges igen og igen, og derfor være robust over for forskellige måder at anvende den på. Kan du se nogle fejl i webserver-komponenten? Hvad hvis den først sættes aktiv og port-nummeret derefter ændres? Hvordan kunne komponenten gøres bedre?

Orientering om Open Source-projekter (hvis du ikke gjorde det sidst)

På (blandt andet) http://sourceforge.net/ kan man finde et væld af Open Source-projekter.
Open Source vil sige at programudviklingen er åben, sådan at alle kan se kildeteksten og selv bidrage til at forbedre programmet.
På Sourceforge er der er fri adgang til titusindvis af projekter skrevet i Java.
Deres Java-side byder på generelle nyheder om om Java og Open Source.

Opgave

Hent (mindst) to Javaprogrammer fra http://sourceforge.net/ og kør dem. Det kan evt. være nogle der har relation til dit projekt.