Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

HTML Comment
hiddentrue

Her trengs det input om kildekode og kjøring

Denne siden er ment som en introduksjon til oppbygningen av programmer med Java og den typiske måten man strukturerer prosjektene sine på. 

...

 

Code Block
languagejava
titleBasic elements
public class MittKuleKlassenavn {
 
	public static void main(String[] args) {
 
		System.out.println(3+9);
	}
}

Det første "elementet" man burde være klar over, er { på slutten
av linje 1, og den motsvarende } på siste linje. Dette definerer
starten og slutten på et samlet innhold. , ofte en kodeblokk
Man kan derav se på
public class MittKuleKlassenavn som "eier"
av innholdet i { }.

  1. class - Dette betyr at "eieren" av innholdet i { } er en klasse.
    Klasser i java kan man lese mer om her.
  2. public - Dette definerer synligheten til klassen. Ofte jobber
    programmer med flere klasser, og noen ganger vil man at
    klassene skal "vite" om hverandre, andre ganger ikke.
    Mer om synlighet, se Innkapsling og Synlighetsmodifikatorer.
  3. MittKuleKlassenavn - Navnet på klassen. Har her valgt et
    forholdsvis teit klassenavn, men dette er bare for å illustrere
    at det kan være akkurat det man ønsker.

Videre dukker det opp mer nytt og farlig. Innholdet til klassen
har
et nytt sett { } ? static? args?
Det man nå har møtt på er en funksjon, men ikke hvilken som
helst. Det er nemlig main-funksjonen.  Denne funksjonen skal
bare finnes ett sted i kildekoden til programmet ditt, og det er
herfra "alt begynner".

  1. main - Funksjonsnavnet. Må hete main for å gjennkjennes
    som funksjonen som "starter alt" .
  2. static - Det krever en del forståelse av objektorientert-
    tankegang for å fatte hva static betyr. Men veldig(!) enkelt
    forklart betyr static her at funksjonen main kan kalles selv
    om klassen den befinner seg i, ikke er "tatt i bruk" enda.
  3. void - Returtypen til funskjonen. main skal altså ikke
    returnere noe.
  4. (String[] args) -  Parentesene viser hvilke parametere
    funksjonen kalles med. String[] definerer at args er et array 
    med strenger. Mer om funksjoner i Java finner man her,
    og datatyper (som arraysarrayher.

System.out.println(3+9); betyr veldig enkelt bare skriv ut til
consol "det jeg har i parentes". 3+9 = 12.

Consol etter ferdigkjørt program:
12

 

Code Block
languagejava
titleBasic elements 2
public class NestKulesteKlassenavn {
	
	public static void main(String[] args) {
		
		int x = 3;
		int y = 9;
		
		System.out.println(x+y);		
	}
} 

 

 

Code Block
languagejava
titleBasic elements 3
public class Calculation ImportantNumbers {
 
	public int x = 3;
	public int y = 9;
	
	public static void main(String[] args) {
		
		CalculationImportantNumbers kultVariabelNavnkultObjektnavn = new CalculationImportantNumbers();
		
		int mainX = kultVariabelNavnkultObjektnavn.x;
		int mainY = kultVariabelNavnkultObjektnavn.y;
 
		System.out.println(mainX+mainY);	 
	}
} 

Klassenavnet er nå forandret til ImportantNumbers, noe som er ubetydelig for utførelsen
av koden, men mye mindre teit. Dessuten sier det noe om hva man kan forvente av
klassen. Klassen har nå fått tilført to felt x & y:

  1. x - Navnet til feltet.
  2. public - Definerer på samme måte som tidligere synligheten av feltene. Noen ganger
    kan det tenkes at man vil la klasser vite om hverandre, men "skjule" noe av innholdet
    i klassen. Se Innkapsling og Synlighetsmodifikatorer.
  3. int - Angir hvilken datatype feltet holder på, her et heltall. For de som har god
    kontroll på Variabler, er et felt omtrent det samme. Et felt er en variabel som kan nås
    fra hvor som helst i klassen. Det vil si at funksjoner en klasse har, kan se og forandre
    feltene til klassen. For mer om felter, se Klasser i java.

I main-funksjonen (som man nå vet hvordan henger sammen) deklareres det to nye
variabler mainX og mainY. Dette skjer på samme måte som med feltene x og y, bare at
de ikke trenger en Synlighetsmodifikator (f.eks. public) fordi de hører til i en funksjon og
vil slettes fra minnet etter funksjonen har kjørt ferdig.

I tillegg til de to variablene opprettes det også et objekt, kultObjektnavn, noe som også
er et temmelig teit navn, men igjen for å vise at objektet kan navngis fritt.

  1. kultObjektnavn - Navnet på objektet, eller mer presist, navnet på objektreferansen.
  2. ImportantNumbers - Definerer at kultObjektnavn "er" et objekt av denne
    typen/klassen. Dette kan være lettere å forstå om man leser om
  3. new ImportantNumbers() - Dette uttrykket oppretter selve objektet.

Måten mainX og mainY får tildelt verdiene sine kalles delegeringsteknikken. Det er
opprettet et objekt med "viktige numre", og objektet blir "bedt/spurt" om å "oppgi" x
og y, noe som går helt greit, siden disse er public.

 NB! For de som lurer på om man kunne skrevet:
System.out.println(kultObjektnavn.x + kultObjektnavn.y);
og fått samme resultat, er svaret ja. mainX og mainY er bare variabler som deler opp
framgangsmåten.


Oversettelse byte-kode:

Når man ønsker å kjøre et programmet man har kildekode til må kildekoden først kompileres av java-kompilatoren. Det spesielle med java-kompilering er at kildekoden oversettes til byte-kode som er plattformuavhengig. En kompilert java-fil kan altså spres til alle operativsystemer og kjøres uavhengig av hvilket operativsystem som kompilerte kildekoden. Dette kommer av at alle operativsystemer har sin spesifikke Java Virtual Machine, JVM, som oversetter java byte-kode til kode som maskinen man sitter på skjønner.

Kjøring:

Om man vil kjøre et java-program kan dette gjøres på flere måter:

  1. Via kommandolinje
  2. I et utviklerverktøy
  3. Som en .jar-fil

Som regel tester og kjører man koden i utviklerverktøyet man bruker. Dette sparer mye tid, og det krever lite å sjekke om koden er i orden etter man f.eks. har gjort små forandringer.
Om man har utviklet et program man ønsker å dele eller kunne starte utenom utviklerverktøyet på en lett måte, er en.jar-fil et mulig alternativ. Se hvordan man kan lage en .jar-fil i Eclipse her.