Java Programmering - 1. del

Tags:    java
Skrevet af Bruger #4487 @ 19.11.2010

Indledning


Denne Guide henvender sig til den absolutte begynder indenfor java programmering. Du vil i denne første del, snuse til hvad objektorienteret programmering i Java vil sige, og selvfølgelig hvordan du skriver dit første program.

Hvad skal jeg bruge?


Det første vi skal have fat på når vi skal programmere java er Java Development Kit (JDK), som kan downloades her. Når du har installeret din JDK version, skal vi først gøre vores kommandoprompt klar til brug. Dette gøres ved at følge nogle få trin:

1. Vælg Start -> Computer -> Kontrolpanel -> System -> Avancerede Systemindstillinger.
2. Under tabben Avanceret vælges Miljøvariabler.
3. Under boksen Systemvariabler markerer du Path, og klikker på knappen rediger.
4. I feltet variabelværdi skriver du til allersidst i feltet stien til din JDK's bin mappe, f.eks. C:\Program Files\Java\jdk1.6.0_21\bin - Husk at afslutte med et semikolon (;).
5. Klik Ok Hele vejen til du er ude af Avancerede Systemindstillinger.

Nu er vores kommandopromt klar til at læse vores java filer, når vi engang skal bruge dette. Nu tænker du sikkert, ja det er sikkert fint at min kommandopromt er klar til brug, men hvad skal jeg skrive min java kode i? Til det spørgsmål kan jeg sige at du sådan set kan skrive java kode i alle skriveprogrammer, men nogle er mere brugervenlige end andre. Vi kan f.eks. bruge microsofts notesblok, som du finder under - Start -> Tilbehør -> Notesblok (Brug dog ikke store skriveprogrammer såsom word o.lign, da disse ikke er lige så gode som simple tekst editorer).

En hurtig redegørelse af hvad vi skal bruge: JDK installeret på computeren, kommandopromten gjort klar og windows notesblok.

Klasser og Objekter


Tænk på et bord. Alle ved hvad et bord er, hvordan det ser ud, og hvad dens funktion er. Men hvordan kan alle vide hvad det er, når der findes mange forskellige slags borde? Det er fordi vi har en general definition af hvordan et bord ser ud, og hvilken funktion det har. Når man har sådan en general opfattelse af noget kan man klassificere det, altså i programmeringen lave det til en klasse. Vi ved f.eks. alle at et bord har en længde, bredde, højde og farve. Dette er generelle egenskaber for alle borde i hele verden, og derfor kan vi bruge klassen bord til at definere at alle objekter af typen bord består af disse egenskaber. Vi har altså via en klasse defineret disse egenskaber for vores objekter. Hvert objekt, altså hvert bord, har selvfølgelig deres helt unikke højde, længde, bredde og farve. Når man her taler om at noget er unikt, taler man altså om et objekt. Vi kan f.eks. ikke fortælle noget om højden på borde ud fra vores klasse, fordi alle borde i hele verden er ikke ens, men ud fra et enkelt objekt af klassen bord, er vi i stand til at give svaret på hvor høj bordet er.
At tænke på denne måde hedder at tænke objektorienteret, og når man tænker objektorienteret i programmering, kaldes det for Objektorienteret Programmering (OOP).

Vores første program


Det første vi skal lære om er at finde ud af hvordan man skriver et simpelt program i Java, og herefter med kommandoprompten kan udføre programmet. Så åben notesblok, og gem allerede nu din tomme fil et sted på din computer. Du skal gemme filen med navnet "HelloWorld.java", og husk at bruge store bogstaver både i Hello og i World, da dette er vigtigt for vores videre arbejde med programmet.
Det første vi skal gøre er at lave en ny klasse. Dette gøres ved at skrive - public class HelloWorld. Vores klasse skal hedde HelloWorld, fordi vi navngav vores java fil HelloWorld. Herefter følger klassen krop, og den er angivet ved to krøllede parenteser. Vores kode ser altså nu således ud.
Fold kodeboks ind/udJava kode 

Så langt, så godt. Vi skal nu i vores klasses krop lave en speciel metode. Denne metode vi skal lave nu kaldes for en main metode, fordi den simpelthen per definition hedder main. Main metoden har den specielle egenskab at hver gang vi kører vores Java fil, vil Java automatisk lede efter denne metode. Det gør den fordi denne metode er metoden, som udfører vores Java program, altså det er denne metode, som udskriver de ting vi gerne vil have udskrevet til skærmen osv. Så i klassens krop skriver du følgende linje - public static void main(String[] args) - Og herefter giver du denne metode en krop akkurat ligesom med vores klasse (to krøllede parenteser). Vores kode ser nu således ud.
Fold kodeboks ind/udJava kode 

I denne main metode kan vi f.eks. udskrive en tekst der skriver Hello World!. Tekst i Java kaldes også for en String, men mere om dette i del 2. For at udskrive noget til skærmen, skal vi bruge en en metode som kan udskrive ting til skærmen for os. heldigvis er der allerede lavet en metode der kan gøre dette for os, så i vores main metodes krop skriver vi følgende - System.out.println(); - Læg mærke til at jeg afslutter med et semikolon. Dette gør jeg fordi vi lige har lavet det som man kalder et statement. Alle statements skal afsluttes med et semikolon, ellers vil programmet ikke fungere. I parentesen for vores println metode, skriver du Hello World!, og omkranser det med to gåseøjne tegn, så det ser således ud - "hello World!". Vores kode ser nu således ud.
Fold kodeboks ind/udJava kode 

Kompilere din kode, og udfør den


Nu er vores program sådan set færdigt, og det kan kun en simpel ting, nemlig at udskrive en tekst der siger 'Hello World!'. For at gøre vores java program klar til at blive udført, skal vi lave en kompilation af vores fil. En kompilation af filen gør det at den først tjekker filen for syntaktiske fejl, og hvis der ingen fejl var, laver den din java kode om til maskinkode (binær kode). Når kompilationen er færdig, kan vi herefter udføre programmet, og få den til at udskrive 'Hello World!' til skærmen. Alt dette skal vi gøre i vores kommandoprompt, så åben din kommandoprompt, og skriv først følgende - cd stien\til\mappen\indeholdende\din\javafil - f.eks. cd c:\JavaProjects\eksempelmappe. Dette vil sætte din kommandoprompt nuværende mappe til den mappe, hvor du gemte din java fil der hed HelloWorld.java. Herefter skriver du i kommandoprompt følgende - javac HelloWorld.java - Dette vil sørge for at vores HelloWorld.java fil bliver kompileret og tjekket for syntaktiske fejl, og herefter udført til maskinkode. Hvis der ikke var nogle syntaktiske fejl i din kode, vil der ikke blive skrevet noget i din kommandoprompt, men den vil bare gøre klar til at du kan skrive en ny kommando. Hvis der derimod er fejl i din java kode, vil kompileren udskrive en fejl meddelelse om hvad fejlen var. Hvis din fil blev kompileret korrekt, kan du som den næste kommando skrive følgende - java HelloWorld - Dette er kommandoen, som udfører vores program, og du vil derfor se at der bliver udskrevet Hello World! i din kommandoprompt. Se billedet nedenunder.



Her ser du hvordan det skal se ud i din kommandoprompt, når vi kompilerer programmet, og udfører det.
I din HelloWorld.java fil, lav nu endnu en System.out.println(); statement, hvor du skal udskrive et tal, tallet kunne f.eks. være 10. Når du skal udskrive tal, behøver du ikke de to gåseøjne, fordi de kun var beregnet til når du skulle udskrive tekst. Vores nye statement skal altså se sådan her ud - System.out.println(10); - Og vores fulde kode ser nu således ud.
Fold kodeboks ind/udJava kode 

Kompiler nu din java kode igen via kommandoprompt, og udfør den så. Resultatet skulle nu gerne være at den udskriver 2 linjer som ser sådan ud:
Hello World!
10

Udfordrings Opgave: Lav nu en helt ny klasse, og kald den Opgave1 (Husk at navnet skal være med stort bogstav). Gem så filen som Opgave1.java, og lav en main metode magen til den vi lige har lavet før. I din main metode, laver du tre System.out.println(); statements. Den første skal indeholde en almindelig tekst, hvor der står "Regneudtryk:" (husk gåseøjnene omkring). Den anden skal udskrive regneudtrykket "1+2" (Husk at skrive gåseøjnene med dette udtryk). Den sidste skal også indeholde regneudtrykket 1+2, men her skal udtrykket ikke være omkranset af to gåseøjnetegn. Når du har skrevet de 3 statements, så vent med at kompilere. Prøv istedet at forestille dig hvad de 3 linjer vil udskrive til skærmen. Når du har udtænkt hvad de vil udskrive til skærmen, så kompiler din java fil med kommandoen javac Opgave1.java, og udfør herefter filen med kommandoen java Opgave1.

Når du har løst denne opgave, så tjek med min kode herunder, og tjek også mit output i min kommandoprompt.
Fold kodeboks ind/udJava kode 

Her er så mit output i min kommandoprompt. Var dit ens med mit?



Var dit output også ligesom du havde gennemtænkt? Hvis det var, har du allerede lært meget, fordi vi kan se at når vi laver to gåseøjnetegn rundt om et regneudtryk, eller bare et tal, vil tallet blive udskrevet som en tekst. Det betyder at udtrykket "1+2" ikke udskriver resultatet, men "1+2" bliver udskrevet som en tekst. Hvorimod hvis ikke vi skriver de to gåseøjne omkring vores udtryk, vil der ikke blive udskrevet selve regnestykket som en tekst, men resultatet af vores regnestykke, som jo er 3.

Kommentarer i din kode


En god programmør vil altid sætte kommentarer i sin kode. Det vil han blandt andet for at andre skal kunne læse koden nemmere. Derfor skal kommentarer altid være korte, men præcise om hvad der sker i koden. Der findes to forskellige typer af kommentarer. Den første hedder en enkeltlinjes kommentar, og måden du skriver sådan en kommentar på er ved at starte med to skråstreger. Det kunne f.eks. se sådan her ud - //Her er en kommentar - En enkeltlinjes kommentar kan kun skrives på en linje ad gangen, og hvis du derfor vil skrive en lang kommentar med denne type af kommentar, skal du altid starte hver ny linje med to skråstreger. Dog er det ikke altid så smart at gøre hvis man har en meget lang kommentar. Hvis du har en lang kommentar, kan du benytte noget man kalder en multi kommentar. En multi kommentar skrives ved at du i starten af kommentaren skriver /**, og afslutter din kommentar med */. Det kunne f.eks. se sådan her ud - /** her er en multi kommentar */. Lad os nu indføre kommentarer til vores Opgave1.java fils kode.
1. Lav en multi kommentar før du starter din klasse, hvor du beskriver hvad klassen gør.
2. Lav en multi kommentar før din main metode, som beskriver hvad main metoden gør.
3. lav en enkeltlinjes kommentar, der fortæller om hvad vores 3 statements i main metoden gør.
Vores kode med kommentarer ser nu således ud.
Fold kodeboks ind/udJava kode 

Nu er vores kode nemmere for andre at læse, fordi vi kort fortæller hvad denne klasse gør, og hvad formålet med den er. Bemærk ydermere at jeg har skrevet @author, og @version i den første kommentar. Dette er også en god ide, fordi så ved folk der læser koden, hvem der har skrevet den, og hvilken version det er (Versionen kunne også være en dato for hvornår koden er skrevet).

Opsummering


Lad os lige opsummerer lidt på hvad vi egentlig har gennemgået.
1. Du laver en klasse, ved at skrive - public class DinKlassesNavn.
2. Du laver en main metode ved at skrive - public static void main(String[] args).
3. Du kan herefter udskrive ting til skærmen ved at bruge statementet - System.out.println(); - Husk at Strings (tekst) skal have to gåseøjne omkring, mens tal eller udtryk, hvor vi vil udskrive resultatet ikke behøver to gåseøjne omkring.
4. Du kan indsætte kommentarer i din kode, for at gøre det lettere for andre at læse din kode.

Følg med i anden del, hvor vi skal lære meget mere om hvordan du 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 (22)

User
Bruger #5097 @ 19.11.10 21:45
Syntes det er lidt trist du lære folk at compile igennem en terminal, uden at introdukserer dem til miljøer såsom Eclipse eller Netbeans.

Syntes også det er lidt trist du gennemgår main-metoden:
public static void main(String[] args) uden at nævne hvad args parameteret er, samt hvorfor den er static, void og public.

Men okay fair nok...
User
Bruger #1151 @ 20.11.10 19:29
Jeg synes ikke at det er trist at folk lærer det gennem terminalen. Tværtimod.
User
Bruger #2695 @ 23.11.10 20:51
Jeg er enig i, at der mangler en masse forklaring, men at starte med terminalen og at bruge sin compiler er skam en rigtig god idé.

Alt for mange aner ikke, hvad compileren er, og hvordan man bruger den, så at begynde med basics er fint nok. Eclipse og NetBeans gør alt for meget af ens arbejde, hvilket er fint nok hvis man ved HVAD de gør, men når de så fejler, så står de fleste på fuldstændig bar bund. De, som kan bruge deres compiler og debugger fra kommandolinjen, kan så løse problemet.
User
Bruger #16293 @ 29.11.10 13:47
jeg som er TOTAL ny til java, jeg syntes der mangler en komplet kilde kode så hvis man som mig som nybegynder laver fejl har noget at støtte sig til


her er min kilde kode
Fold kodeboks ind/udKode 

i min kode bliver der udskrivet 123

User
Bruger #4487 @ 01.12.10 16:35
Der er da også komplette "kildekoder" i denne artikel. Så jeg forstår ikke helt hvad du mangler.

i min kode bliver der udskrivet 123


Dette er heller ikke forkert, da din kode ser således ud:
Fold kodeboks ind/udJava kode 

Vil din System.out.println() statement lave dit tal 123 om til en String automatisk. Dette betyder at tallet udskrives. Havde du f.eks. skrevet System.out.println(1+2+3);, ville den udskrive tallet - 6 - da den først vil regne udtrykket, for derefter at lave resultatet om til en String og udskrive resultatet.
User
Bruger #15442 @ 08.01.11 21:51
Ser spændende ud:D

Dog får jeg hele tiden fejlen:

C:\Users\Mads>cd C:\Users\Mads\Documents\Java

C:\Users\Mads\Documents\Java>javac HelloWorld.java
'javac' blev ikke genkendt som en intern eller ekstern kommando,
et program eller en batchfil.
User
Bruger #15442 @ 08.01.11 23:30
fik det fixed men får nu fejlen:

C:\Users\Mads\Documents\Java>java HelloWorld
Error: could not open `C:\Program Files\Java\jre6\lib\amd64\jvm.cfg'
User
Bruger #14242 @ 16.02.11 20:33
godt gået
User
Bruger #16354 @ 23.03.11 05:16
God tutorial, og selvom det hele virker, så forstår jeg slet ikke hvad det er jeg har gjort. Klasse? Er det ligesom i html/css?

Jeg har en .java klasse (en hel fil) som jeg kalder på i noget som minder om en index? Eller skal jeg tænker i helt andre baner?

Glæder mig til at læse resten, må vi se om det er lidt nemmere at forstå :)

Skål
User
Bruger #8884 @ 24.03.11 01:10
God introduktions artikel! Thumbs up!
User
Bruger #16217 @ 17.04.11 13:16
kan jer ikke får jdk til mac
User
Bruger #4487 @ 17.04.11 20:21
kan jeg ikke få JDK til Mac?

Du behøver ikke JDK på Mac, da denne allerede er installeret fra Apples side af
User
Bruger #16217 @ 17.04.11 22:23
hvordan går jer der så på mac
User
Bruger #4487 @ 18.04.11 08:57
Du skal bare åbne terminalen på din Mac.
Herefter finder du stien til det sted på din computer, hvor du har gemt dine Java filer.
Du kan nu bare skrive javac og herefter din Java fils filnavn (husk .java til sidst), for at kompile Java filerne.
Til sidst kan du så skrive Java og herefter din Java fils filnavn (Du skal ikke skrive .java til sidst her), for at køre din Java fil.
User
Bruger #16217 @ 08.05.11 12:29
hej jer får kun der ud at der

javac /Users/martin2630k/Desktop/j/HelloWorld.java
java HelloWorld
Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld
Caused by: java.lang.ClassNotFoundException: HelloWorld
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
User
Bruger #4487 @ 08.05.11 18:21
Har du kaldt din klasse for HelloWorld?? Du skal kalde din klasse, præcis det samme som den Java fil, selv hvis du har forskel på store og små bogstaver.

Hvis ikke dette er fejlen, så kan jeg ikke lige regne ud hvad det er du har galt her, desværre!
User
Bruger #16217 @ 09.05.11 23:28
der har jer got
User
Bruger #16643 @ 26.05.11 15:02
Jeg kom ikke ret langt.
Den kompileret ok, men jeg får en fejl når jeg skal køre programmet.
"Exception in thread "main" java.lang.UnsupportedClassVersionError:
HelloWorld (Unsupported major.minor version V50.0")
User
Bruger #4487 @ 24.08.11 21:50
#Martin

Jeg kiggede lige kommentarene igennem og som svar til hvad der kan være galt med din køring a java filen er at du faktisk ikke køre den fra den rigtige sti. Din Terminal kan altså ikke finde filen.

Du skriver først
javac /Users/martin2630k/Desktop/HelloWorld.java

Dette køres jo fint, da filen er fundet. Du skal herefter køre filen ved at skrive:
java /Users/martin2630k/Desktop/HelloWorld

Det skal du fordi du endnu ikke har sat din 'current directory' til netop denne adresse.

Ved godt at svaret er lidt sent, men det kom kun fordi jeg lige kiggede kommentarerne igennem en gang til.

#Hans

Har du installeret den nyeste version af Java? Hvis du har så prøv at afinstaller alt Java på din computer, og isntaller det så igen.
User
Bruger #17815 @ 13.01.14 19:01
når jeg prøver at køre pogrammet kommer fejlmeddelelsen:
"Den angivne sti blev ikke fundet" hvad har jeg gjort forkert?
User
Bruger #17815 @ 13.01.14 19:08
rettere sagt ikke køre pogrammet men sætte min kommandoprompts nuværende mappe til den mappe, hvor jeg gemte notebooken i
User
Bruger #4487 @ 13.01.14 20:03
Det virker som om at du har skrevet stien forkert.

Når du bruger "Change Directory" (cd) kommandoen, så skal du også skrive en korrekt sti.
Du skal være logget ind for at skrive en kommentar.
t