220 likes | 370 Views
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:.
E N D
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 fri farge = 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 Sykkelklassenpublic static void main(String[] args){ Sykkel minNyeSykkel = new Sykkel(”DBS”); minNyeSykkel.sprayLakker(”Blå”); minNyeSykkel.trakk();} • mainmetode i bilklassenpublic static void main(String[] args){ Bil gammelBil = new Bil(”grønn”); gammelBil.sprayLakker(”Gul”); gammelBil.gir(2);}
Aksessermetoder Synlig? Tilgjengelig for protected package private public 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
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!