You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 15 Next »

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

Klasser: 
Det første  vi merker oss ved Java er at det er et objektorientert språk, hvilket innebærer at vi lager klasser (Class). For å ha oversikt over klassene man lager og bruker er det veldig vanlig å ha en .java-fil for hver klasse.
Dette vil si at en klasse med navn Person ofte vil finnes i filen Person.java .

Når man skal lage ett mer eller mindre komplekst program med java, prøver man ofte å følge noen "retningslinjer" for hvordan klassene er strukturert i forhold til hverandre. En ryddig måte å løse dette på er å skille brukerinteraksjon, programflyt og logikk ved å ha klasser som inneholder én av de tre, og ikke en blanding.

  • En programflyt-klasse vil typisk styre "neste steg" i programmets gang og spørre eller sende informasjon til de to andre typene klasser. 
  • Brukerinteraksjons-klasser er steder hvor man framstiller noe for brukeren grafisk, eller ber om input fra brukeren. Disse klassene snakker gjerne med hverandre, og med programflyt.
  • Logikk-klasser er stedet hvor vi finner data og metoder som definerer og forandrer programmets tilstand. 

Pakker:
I Java må alle klasser tilhøre en pakke (package). Den enkleste måten å se på en pakke, er som en mappe i et filsystem. Vi ønsker ofte å strukturere klasser som brukes eller hører sammen i samme pakke. Man kan aksessere public klasser, deres public metoder og felt, på tvers av pakkene. Dette kan gjøres ved å importere hele pakken eller referere til klassen ved hjelp av pakken: package-name.class-name.

Kildekode:
Om man får framstilt kildekoden til ett enkelt prosedyreorientert program i både Java og Python (som det antas at de fleste lesere vil være kjent med), vil mange som er nye med Java oppfatte denne koden som komplisert. Dette avsnittet skal kort forklare hvilke elementer man vil møte på i Java-kildekode og forhåpentligvis avvæpne de i deres øyne.


 

Basic 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. 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 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 arrays) her.

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

 

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

 

 

Basic elements 3
public class Calculation {
 
	public int x = 3;
	public int y = 9;
	
	public static void main(String[] args){
		
		Calculation kultVariabelNavn = new Calculation();
		
		int mainX = kultVariabelNavn.x;
		int mainY = kultVariabelNavn.y;
 
		System.out.println(mainX+mainY);	 
	}
} 

 


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:

  • No labels