Java Programmering - 3. del

Tags:    java
Skrevet af Bruger #4487 @ 19.11.2010

Indledning


Nu har du allerede beskæftiget dig meget med hvordan man laver klasser og objekter i Java, og det er allerede et enormt skridt i din videre færden i Java Programmering. Du kan nu gå fra at være nybegynder til begynder indenfor Java programmering. Men der er dog stadig meget at lære indenfor Java programmering, så lad os nu bare komme igang. Start dog først med at lave en ny mappe til dit nye projekt, du kan f.eks. kalde denne mappe for Projekt2.

Parametre


Før vi begynder på parametre, skal vi lave en ny klasse. Vi kan f.eks. kalde klassen for Person. I denne klasse lav en konstruktør uden noget i konstruktørens krop. Vores kode ser nu sådan ud.
Fold kodeboks ind/udJava kode 

Læg mærke til at efter navnet på vores konstruktør har vi to paranteser - () - Disse parenteser bruges til at angive hvis der er nogle parametre, vi gerne vil give metoden eller konstruktøren. Når man skriver en parameter indenfor parentesen, skal man skrive en datatype, og derefter give parameteren et navn. En parameter kunne f.eks. se sådan her ud - String navn. Men før vi laver denne parameter, skal vi lige lave nogle felter.

Mini Opgave - Lav tre felter i din klasse Person. Det første felt skal være med datatypen String og have navnet navn. Det andet felt skal være med datatypen int, og have navnet alder. Det tredje felt skal være med datatypen String, og have navnet kon (vi bruger o istedet for ø).

Når du har lavet disse tre felter, skal vi initialisere dem. Da vi gerne vil have at felterne skal have et andet navn, alder og køn, hver gang vi laver et nyt objekt af klassen, kan vi initialisere felterne ved hjælp af vores parametre. Så vi skriver følgende som parametre i vores konstruktør - (String mitNavn, int minAlder, String mitKon) - Herefter initialiserer vi parametrene til vores felter. Vores kode ser nu således ud.
Fold kodeboks ind/udJava kode 

Nu er vores felter blevet initialiseret med værdierne, som skal angives som parametre, hver eneste gang vi laver et objekt af denne klasse.

Mini Opgave - Lav nu 3 accessor metoder, et for hvert felt, som returnerer indholdet af felterne.

Når du har løst denne opgave, vil din kode se således ud.
Fold kodeboks ind/udJava kode 

Nu har vi lavet vores Person klasse, og vi kan begynde på vores Main klasse. Vores Main klasse ser sådan ud fra begyndelsen.
Fold kodeboks ind/udJava kode 

Vi kan nu lave et nyt objekt af vores klasse Person, og initialisere det til en lokal variabel. Når vi bruger vores nøgleord new, skal vi herefter skrive Person klassen konstruktør. Da denne konstruktør ikke bare hed public Person(), men indeholdt 3 forskellige parametre, skal vi huske at skrive noget til disse parametre, så vi kan lægge data ind i objektets felter. Så vi skriver - new Person("Martin", 22, "Mand"); - Læg mærke til at de steder hvor der var angivet en datatype, som var String, har vi skrevet teksten indenfor 2 gåseøjne. Vores Main klasse ser nu således ud.
Fold kodeboks ind/udJava kode 

Vi kan nu igen kalde vores accessor metoder, for at udskrive indholdet af vores felter i nogle System.out.println(); statements. Vores Main Klasse ser herefter sådan ud.
Fold kodeboks ind/udJava kode 

Vi har nu initialiseret felterne i vores objekt, ved hjælp af parametre, fordi vi skrev hvad hvert felt skulle indeholde som parameter, og herefter initialiserede det til vores felter. Hvis du kompilerer først Person.java og Herefter Main.java, og så udfører Main, vil du se følgende i din kommandoprompt.



String sammenkædning


Istedet for at lave 3 System.out.println(); statements, kan vi nøjes med at lave 1 enkelt statement, ved at benytte String sammenkædning. Vi kan f.eks. tage et lille eksempel her. Vi kan f.eks. skrive "Her er en tekst.", og herefter benytte operatoren +. Denne operator kaldes i denne sammenhæng også for sammenkædnings operatoren. Vi kan så f.eks. sammenkæde en kosntant string, med en dot notation til vores metode. Vi skriver derfor - "her er en tekst."+objekt.metodeKald() - Vores statement ser så f.eks. således ud - System.out.println("Her er en tekst. "+objekt.metodeKald());. Hvis vi skulle overføre dette til vores eksempel fra Main klassen, så kunne vi skrive følgende - System.out.println("Navn: " + obj.hentNavn() + " Alder: " + obj.hentAlder() + " Kon: " + obj.hentKon()); - Vores kode ser nu sådan her ud.
Fold kodeboks ind/udJava kode 

Kompiler og udfør nu dine java filer igen, og resultatet skulle gerne være som nedenstående.



Arrays


Nu kan vi lave objekter af klassen Person, men indtil videre har vi kun lavet et objekt af klassen person. Hvad nu hvis vi gerne vil gemme flere objekter af klassen person, i det samme felt? Til dette kan vi bruge noget som man i Java kalder et Array. Et array er en liste som er fikseret. Det betyder at vores Array kun kan indeholde et forudindtaget antal objekter. Hvis nu vi ville gemme 5 objekter af vores klasse Person i denne liste, så skal vi altså under initialisationen angive hvor mange objekter vores liste skal kunne indeholde. Lad os prøve at starte med at lave et array. Måden man starter er ved at angive i deklarationen at vi vil lave et array. Vi kan f.eks. i vores lokale variabel, som hed obj, angive at vi vil lave et array der skal kunne indeholde objekter af klassen Person. Vi skal nu efter vores datatype Person skrive to firkantede parenteser [], for at angive at vi vil arbejde med et array. Vores deklaration af vores lokale variabel som array ser altså således ud - Person[] obj; - Vi skal så i vores initialisation af feltet obj skrive således - obj = new Person[5]; - For at fortælle at vores array i variablen obj kun skal have en liste, der kan bestå af 5 objekter af klassen person. Vores kode ser nu således ud, bemærk at jeg har slettet vores System.out.println(); statement, da vi skal lave denne om alligevel.
Fold kodeboks ind/udJava kode 

Nu kan vi så begynde at lægge objekter ind i vores nye array. For at finde det rigtige sted at lægge vores objekt, skal vi vide lidt om et indeks. Et indeks er et nummer, som vi kan bruge til at pege på et bestemt objekt, og på den måde kan vi altid finde det objekt vi har brug for. Du kan tænke på et indeks ligesom en reol med en masse kasser. Alle kasserne er måske nummereret med tal, sådan så vi let kan skelne kasserne fra hinanden. Vi ved f.eks. at i kassen med nummeret 0, lægger en bestemt ting, og i kassen med nummeret 1, ligger en anden ting. Hovedsagen er at vi med sådan et system har indekseret kasserne, så vi let kan finde frem til præcis det som vi skal bruge. Et indeks i Java programmering starter altid fra indeks nummer 0, så når vi har initialiseret vores array til at kunne indeholde 5 objekter af klassen Person, skal vi altså bruge indeks 0,1,2,3 og 4. Vi kan nu skrive - obj[0] = new Person("Martin", 22, "Mand"); - Et objekt af klassen Person med de 3 parametre fra henholdsvis navn ("Martin"), alder (22) og køn ("Mand") er nu gemt i vores array, under indeks 0.

Udfordrings Opgave - Lav nu 4 ekstra objekter, men gem dem nu under henholdsvis indeks 1, 2, 3 og 4. Giv gerne objekterne andre værdier i som parametre, så navnene og aldrende og kønnet ikke er det samme i allesammen. Sammenlign herefter med min kode nedenunder, havde du gjort det korrekt?
Fold kodeboks ind/udJava kode 

Vi har nu altså lavet et array som havde 5 indeks, hvor vi kunne gemme objekter af klassen Person. Vi har så gemt et nyt objekt af klassen person i hvert af de 5 indeks. Du kunne nu skrive 5 nye System.out.println(); statements, hvor du brugte dot notation for f.eks. at hente indholdet i feltet navn, for objektet gemt under indeks 0. Det ville så se således ud - System.out.println("Navn: "+obj[0].hentNavn()); - og outputtet ville så være Navn: Martin, og lignende Navn: karen, hvis du istedet for obj[0], skrev obj[1].

Løkker


Tænk dig engang, hvis vi havde 1000 eller flere objekter af klassen Person, som vi ville gemme i et array. Det ville ikke bare tage utroligt lang tid at skrive for programmøren, men chancen for at der under kodningen sker fejl, er også mangedoblet. Her kan vi benytte en såkaldt løkke som klarer denne opgave for os så let som ingenting. Vi kan f.eks. prøve i vores kode at benytte en løkke til at udskrive de 5 forskellige System.out.println(); statements, så vi kun skal skrive den en enkelt gang istedet for 5 gange. Til dette formål skal vi lære om en løkke som hedder while.

Når man skriver en while løkke skal man først lave en lokal variabel, bestående af en int værdi. Dette kaldes jo som vi ved for initialisationen. Herefter begynder vi vores while løkke, og i while løkkens parentes skal vi angive en betingelse for selve løkken, altså en betingelse som hver gang den er opfyldt, så skal løkken kør koden i dens krop. While løkken har altså herefter en krop, og i denne krop kan stå den kode vi gerne vil have gentaget. Vi skal dog altid huske at lave en ny initialisation af vores lokale variabel fra først, hvor vi lægger 1 til selve variablen. Dette kaldes også for forøgelsen, eller tællerskridtet, og er en essentiel del af enhver løkke, fordi hvis ikke denne forøgelse var der, så ville løkken forblive uendelig, og computeren ville på et tidspunkt gå tør for hukommelse, og derefter crashe. Lad os nu se hvordan en while løkke ser ud i kode.
Fold kodeboks ind/udJava kode 

Løkkens kode køres kun hvis betingelsen er opfyldt, altså er sand. Hvis løkkens betingelse pludselig ikke er sand, fordi betingelsen ikke kan opfyldes mere (værdien i den lokale variabel i er pludselig blevet 5, og 5 kan ikke være mindre end 5), vil løkken afsluttes. Lad os nu prøve at lave en løkke i vores eksempel. hvor den skal vise i løkkens krop en enkelt system.out.println(); statement. Som indeks til vores array, kan du benytte vores lokale variabel i, da den starter med 0, og herefter viser 1,2,3 og 4. Når i når til 5 er betingelsen jo falsk, og løkken afsluttes. Vores kode ser nu således ud.
Fold kodeboks ind/udJava kode 

Når du så kompiler og udfører vores java filer, skulle de gerne se således ud i din kommandoprompt.



if statementet


Nu har vi hørt om arrays og løkker, og her som en afslutning, skal vi høre om if statementet. Et if statement, er en måde man kan tjekke om noget er sandt eller falskt en enkelt gang. Hvor løkken skulle tjekke om betingelsen var opfyldt eller ej, indtil at betingelsen pludselig ikke blev opfyldt, så skal if statementet, kun tjekke betingelsen en gang, og hvis betingelsen blev opfyldt, så udføres koden, ellers så går den bare videre i den resterende kode. Et if statement behøver derfor heller ikke nogen lokal variabel, der kan initialiserer en værdi, fordi statementet alligevel kun køres en enkelt gang. Den skal dog stadig have en betingelse, og betingelsen kan ligesom i løkken kun returnerer sandt eller falskt (opfyldt eller ikke opfyldt). Herefter har den en krop, ligesom vores løkke. I kroppen skrives den kode, som skal udføres, hvis betingelsen opfyldes. Husk at vi ikke behøver nogen forøgelse i en if statement, da denne jo kun tjekkes en enkelt gang, og derfor aldrig kan blive uendelig, ligesom en løkke. Lad os så på hvordan et if statement ser ud i kode.
Fold kodeboks ind/udJava kode 

Vi kan nu bruge vores viden om if statementet i vores Main klasse, fordi hvad nu hvis vi kun ville udskrive alle de objekter af klassen Person, hvor alderen var større end 17. så er det jo faktisk kun 3 af objekterne vi vil have vist, nemlig objektet på henholdsvis indeks 0,1 og 3. Vi kan nu i vores løkke skrive vores if statement, som i dens betingelse laver et kald til vores objekts metode hentAlder(), ved hjælp af dot notation, og herefter tjekker om det er større end 17. I vores if statements krop skriver vi så vores system.out.println(); statement. Vores kode vil nu se således ud.
Fold kodeboks ind/udJava kode 

Dit output i din kommandoprompt, skulle gerne se således ud nu.



Opsummering


Lad os nu lige opsummere på hvad vi har lært indtil videre.

1. Vi ved nu at en parameter kan gives i en konstruktør, eller ja sågar almindelige metoder, hver gang de kaldes. Parametrene er med til at give mulighed for, at vi kan putte varierende data ind i vores felter o.lign.
2. Vi kan nu sammenkæde Strings, sådan så vi kan lave en konstant tekst, og samtidig vise en varierende værdi fra et felt i en klasse. Husk for at sammenkæde strings, benytter vi sammenkædnings operatoren +.
3. Vi kan nu anvende og bruge et array. Vi kan gemme et fikseret antal af objekter i vores array, hvorefter vi kan vise indholdet af objekterne i de forskellige indeks.
4. Vi kan lave en while løkke der kan gentage kode for os, så vi ikke behøver at skrive denne kode manuelt flere gange. Vi ved at en while løkke består af en initialisation, en betingelse og et tællerskridt/forøgelse. Initialisationen er med til at initialisere en startværdi for vores løkke. Betingelsen er den som skal være opfyldt for at løkkens kode køres. Tællerskridtet/forøgelsen er den del, som skal forøge/tælle vores initialiserede værdi 1 op hver gang, for at undgå at løkken bliver uendelig.
5. Vi kan nu lave et if statement, som i modsætning til løkken hverken har en initialisation, eller et tællerskridt. Det har den ikke fordi, if statementets betingelse kun tjekkes en enkelt gang, og den kan derfor kun enten returnerer sandt (opfyldt), eller falskt (ikke opfyldt).

Hvis du har mod på det, så fortsæt din læsning i fjerde del, af denne artikel kavalkade, som lærer dig at programmerer i Java.

Hvad synes du om denne artikel? Giv din mening til kende ved at stemme via pilene til venstre og/eller lægge en kommentar herunder.

Del også gerne artiklen med dine Facebook venner:  

Kommentarer (3)

User
Bruger #16280 @ 24.11.10 01:18
Hvor er 4. Del ? :)

User
Bruger #4487 @ 24.11.10 09:23
Den er på vej
User
Bruger #16421 @ 11.02.11 14:58
Hej Martin

Jeg er lige startet med java programmering, og jeg har haft stor gavn af foreløbig 3 af dine artikler.

Godt arbejde. Jeg håber der løbende kommer nye artikler.

Vh Lasse
Du skal være logget ind for at skrive en kommentar.
t