main metoden
description
Transcript of main metoden
main metoden
public static void main(String[] args){}
Inni denne metoden skjer alt! Det kan bare finnes en main metode per
program. Den kan ligge i hvilkensomhelst klasse. Men for å kjøre programmet må man
kjøre den filen main metoden ligger i.
eksempel:
public class Person{private String navn;public Person(String nyttNavn){
navn = nyttNavn;}public static void main(String[] args){
Person per = new Person(”Per”);}
}
public class Bil{private Person eier;private String bilmerke;
public Bil(Person nyEier,String nyttBilmerke){eier = nyEier;bilmerke = nyttBilmerke;}
public static void main(String[] args){Person personMedBil = new Person(”Per”);Bil raserbil = new
Bil(personMedBil,”volvo”);}}
Og så...
Først må filene lagres som henholdsvis: Person.java og Bil.java
Deretter må begge filene kompileres med komandoen javac Person.java/Bil.java
Og så for å kjøre programmet skriver man java filnavn. Man kan enten skrive java Bil eller java Person.
Spørsmål 1
Hvordan kjører man et program? Hva skjer i praksis når man kjører et
program? Kan det være mainmetoder i alle klasser? Har det noe å si hvor man legger
mainmetoden? Hvorfor har dere ikke brukt mainmetoden i
BlueJ?
Arv: public class Kjoretoy{
protected int antallHjul;protected String farge;
public void sprayLakker(String nyFarge){farge = nyFarge;
}}
public class Bil extends Kjoretoy{private String bilmerke;private int gir;
public Bil(String nyFarge){antallHjul = 4;gir = 0; //Setter bilen i frifarge = nyFarge;
}public void gir(int nyttGir){
gir = nyttGir;}
}
public class Sykkel extends Kjoretoy{private String sykkelType;private int fart;
public Sykkel(String nySykkelType){antallHjul = 2;fart = 0;farge = ”lilla”;sykkelType = nySykkelType;
}public void trakk(){
fart++;}
}
Teoretiske betraktninger om arv Man oppnår arv ved å skrive extends
Klassenavn mellom klassenavnet og krøllparantesen som starter klassen.eks: public class Sykkel extends Kjoretoy{
Klassen som det arves fra kalles super klassen.
Klassen som arver kalles subklassen. Alle public og protected variabler og metoder
arves. Private variabler og metoder arves ikke.
Eksempel mainmetode i Sykkelklassen
public static void main(String[] args){Sykkel minNyeSykkel = new Sykkel(”DBS”);minNyeSykkel.sprayLakker(”Blå”);minNyeSykkel.trakk();
} mainmetode i bilklassen
public static void main(String[] args){Bil gammelBil = new Bil(”grønn”);gammelBil.sprayLakker(”Gul”);gammelBil.gir(2);
}
AksessermetoderTilgjengelig for
Synlig?
public protected package private
samme klasse
klasse i samme pakke
Subklasse i annen pakke
Ikke subklasse i annen pakke
Spørsmål 2: Kan en metode arve en annen metode? Kan en klasse arve en annen klasse? Hvordan uttrykker du at en klasse skal
arve en annen? Hva kan en klasse arve fra en annen
klasse? Hvordan kan du bestemme hva en
klasse arver? Hva er hensikten med arv?
UML - Unified Modeling Language En måte å beskrive programmet ditt på. Kan både beskrive klassene dine ... og vise hvordan forskjellige instanser
virker sammen 10 - 20 forskjellige diagram 2 viktige for oss:
– Klassediagram– Sekvensdiagram
Klassediagram
Bil
eier : Personbilmerke : StringantallHjul : int
Bil(nyEier : Person, nyttBilmerke : String)hentAntallHjul() : intmain(String[] args)
Kjoretoy
antallHjul : intfarge : String
sprayLakker(nyFarge : String)
Bil
bilmerke : Stringgir : int
Bil(nyFarge : String)gir(nyttGir : int)
Sykkel
sykkelType : Stringfart : int
Sykkel(nySykkeltype : String)trakk()
SekvensdiagramminNyeSykkel :
Sykkel
Sykkel(String)
sprayLakker(String)
trakk( )
petter : Person denNyeSykkelenMin : Sykkel
denGamleBilen : Bil
Person(String)
Sykkel(String)sprayLakker(String)
Bil(String)
Spørsmål 3:
Hva er hensikten med UML? Hva beskriver et klassediagram? Hva beskriver et sekvensdiagram? Hvordan uttrykkes arv mellom klasser i
UML?
Javadoc
En måte å dokumentere koden på. API genereres automatisk. Begynner alltid med /** Har faste felt som:
– @autor ditt navn– @version feks v1.0– @param argumentnavn beskrivelse– @return beskrivelse
Generelt om dokumentasjon
Ingen vil skrive det. Alle ønsker å ha det. Alle sier at det ikke er nødvendig. Når du tar frem kode du selv har laget
for 1 år siden, så får ofte utsagnet: Alltid dokumenter kode en helt annen betydning.
Spørsmål 4:
Hvor skriver man dokumentasjon? Hva er hensikten med dokumentasjon? Når er dokumentasjon nødvendig? Hva har dokumentasjon til felles med
innkapslling? Hva er javadoc?
Generelle tips til øving 3 Ta det med ro! (Øvingen er ikke så omfattende
som det kan virke ved første øyekast.) Lag alle klassene uten innhold først. Fyll på
med metoder og variabler etter som du trenger det.
Alt som skjer skjer pga mainmetoden. Bruk System.out.println(); hvis du er usikker på
hva som skjer. Bruk kompeleringsfeil siden. Den kan spare
deg for mange timer foran pcen!