Kig på FalskTerning1
og Snydespil1
prøv at køre programmet med trinvis gennemgang.
Prøv at
bruge FalskTerning1 i stedet for Terning i nogle af dine gamle
opgaver (tjek at den rent faktisk snyder).
Kig derefter på FalskTerning2
og Snydespil2
og på FalskTerning3
og forvis dig om at du forstår hvad der sker.
Lav et program, der
bruger FalskTerning3 og undersøg hvordan kaldene til superklassen
foregår med trinvis gennemgang.
Lav en LudoTerning, der arver fra Terning. Den skal opføre
sig som en Terning (værdi mellem 1 og 6), men dens beskrivelse
(toString()-metode) er anderledes, da den i stedet for teksten "3"
giver teksten "stjerne" på en 3er og i stedet for "4"
giver "globus" på en 4er.
Tilsidesæt derfor
toString()-metoden (vink: kopiér Terning's toString()-metode over i
LudoTerning, og ret i den).
Afprøv klassen (skriv en
BenytLudoTerning-klasse med en main()-metode).
Byg videre på opgave 4.10, og opret klassen Transportmiddel. Et transportmiddel har en farve, et navn, et antal tilbagelagte kilometer og en nypris. Definér metoderne
public
void bevæg(int antalKilometer) //
opdaterer antal kilometre
public
double pris() //
giver den vurderede salgspris
public
String toString() //
giver en beskrivelse af transportmidlet
Opret
nedarvingerne Cykel, Skib og Bil med hver sin pris()-metode.
Forestil dig en virksomhed, hvor der er forskellige slags personer: Ansatte og kunder. De ansatte er delt op i medarbejdere og ledere. Skitsér et passende klassediagram.
Lav klasserne til et skak-spil: Definér superklassen Brik
med egenskaben farve (sort eller hvid), position x og position y
(hver mellem 1 og 8). Definér også metoden
public
boolean kanFlytteTil(int xNy, int yNy) //
om brikken kan flytte dertil
der (for
Brik) returnerer sand, hvis positionen eksisterer (xNy og yNy er
mellem 1 og 8).
Definér nedarvingerne Bonde og Taarn med
tilsidesat kanFlytteTil().
Lav et system til at arbejde med forskellige geometriske
figurer.
Opret klassen Figur med metoderne beregnAreal() og
beregnOmkreds().
Lav nedarvingerne Punkt, Linie (med variablen
længde), Cirkel (med variablen radius), Rektangel (med variablerne
højde og bredde).
Kig derefter på opgaverne fra forrige gang og løs de opgaver du mener du vil lære mest af.
Arbejd derefter videre med skak-programmet.
xxxx
Hent GrafiskVindue.java
og VisGrafiskVindue.java
og gem dem sammen med de andre filer i dit projekt
(jbproject-kataloget eller hvor dit projekt forventer sine
kildetekstfiler).
Gå derefter ind i JBuilder, tilføj filerne til projektet,
højreklik på VisGrafiskVindue.java og vælg run for at prøve
programmet.
Bemærk at koordinaterne x=0 og y=0 svarer til lidt
over øverste venstre hjørne.
Ændr GrafiskVindue til at tegne nogle andre figurer.
Prøv
at skrive noget ud (med System.out.println() inde i paint()-metoden
og hold øje med hvornår paint() bliver kaldt (prøv f.eks. at
minimere og gendanne vinduet).
Lav et program, der viser et digitalur som tekst (vink: Brug
et Date-objekt).
Sørg for, at uret opdateres hvert sekund (vink:
kald repaint(1000) fra paint()-metoden).
Lav et program, der viser et analogt ur.
Lad urets
størrelse afhænge af vinduets størrelse (vink: Brug getSize()).
Ændr GrafiskVindue, så den tegner et skakbræt med sorte og
hvide felter.
En springer og en bonde tegnes derefter på
brættet.
Ændr programmet, sådan at det er nemt at ændre brikkernes
koordinater. Koordinaterne gemmes i to Point-objekter, f.eks
oprettet således:
Point
tårn = new Point(100,200);
Point bonde = new Point(200,200);
Lav en liste af Point-objekter med positioner på bønder, f.eks. således:
Vector bondePositioner = new Vector();
bondePositioner.addElement( new Point(200,200) );
bondePositioner.addElement( new Point(300,200) );
bondePositioner.addElement( new Point(200,300) );
Løb derefter listen igennem og tegn alle bønderne.
Prøv at lave et program der tegner en kurve over en matematisk funktion, f.eks. 0.2*x*x +0.5*x +2.
Graphics-objektet har ikke nogen drawPoint()-metode, så du må tegne punktummer i stedet (g.drawString(".",x,y))
Lav programmet, så det er nemt at se, hvor man skal rette for at ændre funktionen, intervalstart, intervalslut, skalering og forskydning af y-aksen. Dvs. lav det til variabler, og brug kommentarer til at markere stederne i programmet.
Prøv derpå at få det til at tegne grafen over kvadratrod-funktionen (Math.sqrt()).
Overvej om du kan ændre programmet til at tegne streger mellem
kurvepunkterne.
Vink: Husk koordinaterne på det forrige punkt.
Appletter er små grafiske programmer der ligger i en HTML-side,
typisk på internettet.
Hent MinApplet.html
og MinApplet.java
(højreklik og gem dem jbproject-kataloget, eller hvor dit projekt
forventer sine kildetekstfiler).
Gå derefter ind i JBuilder,
tilføj filerne til projektet, højreklik på HTML-filen og
vælg run.
Læs mere om appletter i kapitel 10 i bogen.
Prøv derefter Kurvetegningsapplet.html
og Kurvetegningsapplet.java.
Prøv demonstrationen af Java2D i JDK'et.
Find
Java-installationen på din computer (sandsynligvis
C:\JBuilder4\jdk1.3) og kig i demo/jfc/Java2D.
Dobbeltklik på
jar-filen eller skriv fra kommandolinien skriv: java -jar
Java2Demo.jar. Kig på introduktionen på
http://java.sun.com/docs/books/tutorial/2d/.
Læs kapitel 6 om pakker og løs
Søg i din computer efter filer,
der ender på .jar, og åbn dem med et program, der kan læse
ZIP-komprimerede filer (f.eks unzip eller WinZip).
Hvordan er
filerne organiseret?
Se, om du kan finde filen, der
indeholder Vector-klassen.
Hvilket underkatalog ligger den i?
Opret nogle klasser i en pakke og
en main()-klasse, der benytter dem
(f.eks. BenytPakker.java,
minPakke/Klasse1.java og minPakke/Klasse2.java - gå ind kapitlet om
pakker på den elektroniske udgave af lærebogen, http://javabog.dk
og kopier koden).
Pak dem i en jar-fil.
Prøv at oprette en eksekverbar jar-fil.
Læs afsnit 4.11 Avanceret.
Kig på Konto og tegn
klassediagrammet (klasserne vist i UML-notation) og prøv at bruge et
par Konto-objekter fra BenytPerson.
Husk at lave små
main()-programmer, der afprøver de ting, du programmerer. Tegn
klasserne og deres relationer i UML-notation før du laver dem.
Udbyg Person-klassen med metoden formue(), der skal returnere
summen af saldiene på personens konti.
Udbyg BenytPerson sådan
at hver person har en eller flere konti (husk at en Konto oprettes
med en Person i kontruktøren).
Lav en klasse, der repræsenterer en Postering på en bankkonto
med tekst, indsat beløb (udtræk regnes negativt) og dato.
Udvid
Konto med en liste af posteringer (Vector af Postering-objekter), og
med metoden udskrivPosteringer(), der skal udskrive posteringerne og
løbende saldo på skærmen.
Udbyg Person-klassen, så en person kan eje en bil. Udbyg metoden formue(), sådan at den husker at indregne bilens pris. Metoden skal virke både for personer med og uden bil (Person-objekter uden bil kan have denne variabel sat til null).