Klasser, objekter, pekere og UML INF1000 - gruppe 13
Klasse Beskriver ofte ting fra den virkelige verden Veldig ofte et substantiv (Person, Bok, Bil osv.) class Person { String navn; int alder; } class Bok { String tittel; String forfatter; int antsider; } class Bil { String regnr; String merke; String eier; }
Objekt En kopi (en instans) av en klasse Lages hver gang man skriver new Ett objekt i virkeligheten gir ett objekt i programmet Person enperson = new Person(); Bok enbok = new Bok(); Bil enbil = new Bil();
Peker Noe som peker på et objekt Tillater oss å se variabler og metoder i objektet med. Person person1 = new Person(); Bok pekertilbok = new Bok(); person1.navn = Alice ; pekertilbok.tittel = Alice in Wonderland ; Bil enbil = new Bil(); enbil.merke = Audi ; System.out.println(pekerTilBok.tittel);
Eksempel Variabeldeklarasjon int alder; Pekerdeklarasjon Person pekertilperson;
Eksempel Med tilordning av verdi int alder = 5; Med tilordning av objekt Person pekertilperson = new Person();
Klasse, objekt og peker class BilRegister { public static void main(string[] args) { Bil pekertilenbil; pekertilenbil = new Bil(); } } pekertilenbil.regnr = DN12345 ; pekertilenbil.merke = Audi ; pekertilenbil.eier = Alice ;
Verdien Om en peker ikke peker på et objekt, så peker den på den spesielle verdien betyr ingenting Bil pekertilenbil; pekertilenbil = new Bil(); pekertilenbil = ;
Slette objekter Om ingen pekere peker på et objekt vil Java slette dette objektet for oss Bil pekertilenbil = new Bil(); Bil ennybilpeker = pekertilenbil; pekertilenbil = ; ennybilpeker = ;
String er en klasse Som Person, Bok og Bil er også String en helt vanlig klasse Spesiell syntaks i Java for å lage Stringobjekter: String pekertiltekst = En tekst ; String pekertiltekst = new String( En tekst ); char[] tekst = { E, n,, t, e, k, s, t }; String pekertiltekst = new String(tekst);
Array med pekere Bil[] biler = new Bil[10]; biler 0 1 2 3 4 5 6 7 8 9
Array med pekere Bil[] biler = new Bil[10]; biler[3] = new Bil(); biler 0 1 2 3 4 5 6 7 8 9
Array med pekere Bil[] biler = new Bil[10]; biler[3] = new Bil(); biler 0 1 2 3 4 5 6 Bil regnr = merke = eier = 7 8 9
Array med pekere Bil[] biler = new Bil[10]; biler[3] = new Bil(); biler[8] = biler[3]; biler 0 1 2 3 4 5 6 Bil regnr = merke = eier = 7 8 9
Array med pekere Bil[] biler = new Bil[10]; biler[3] = new Bil(); biler[8] = biler[3]; biler 0 1 2 3 4 5 6 Bil regnr = merke = eier = 7 8 9
Array med pekere Bil[] biler = new Bil[10]; biler[3] = new Bil(); biler[8] = biler[3]; biler[8].merke = Lada ; biler 0 1 2 3 4 5 6 7 8 Bil regnr = merke = eier = 9
Array med pekere Bil[] biler = new Bil[10]; biler[3] = new Bil(); biler[8] = biler[3]; biler[8].merke = Lada ; biler 0 1 2 3 4 5 6 7 8 Bil regnr = merke = Lada eier = 9
Array med pekere Bil[] biler = new Bil[10]; biler[3] = new Bil(); biler[8] = biler[3]; biler[8].merke = Lada ; biler 0 1 2 3 4 5 6 7 8 Bil regnr = merke = Lada eier = 9 System.out.println(biler[3].merke);
class BilRegister { public static void main(string[] args) { Bil[] pekertilenbilarray = new Bil[10]; Bil pekertilenbil = new Bil(); pekertilenbil.regnr = DN12345 ; pekertilenbil.merke = Audi ; pekertilenbil.eier = Alice ; pekertilenbilarray[0] = pekertilenbil;...
... pekertilenbil = new Bil(); pekertilenbil.regnr = DN54321 ; pekertilenbil.merke = Fiat Abarth ; pekertilenbil.eier = Nils-Olav ; } } pekertilenbilarray[1] = pekertilenbil;
Konstruktører Startmetode i objekter Har samme navn som klassen Kjøres én gang (rett etter objekter blir laget med new) Kan få parametere (akkurat som vanlige metoder)
Konstruktører forts. class Bil { String regnr; String merke; String eier; } Bil(String r, String m, String e) { regnr = r; merke = m; eier = e; } Bil bilpeker = new Bil( A1, Mercedes, Kongen ); System.out.println(bilpeker.regnr); System.out.println(bilpeker.merke); System.out.println(bilpeker.eier);
Peker til et annet objekt class Bil { } String regnr; String merke; Person eier; Bil(String r, String m, Person e) { } regnr = r; merke = m; eier = e; Person pekertilperson = new Person(); pekertilperson.navn = Kongen ; pekertilperson.alder = 76; Bil bilpeker = new Bil( A1, Mercedes,pekerTilPerson); System.out.println(bilpeker.regnr); System.out.println(bilpeker.merke); System.out.println(bilpeker.eier.navn); System.out.println(bilpeker.eier.alder);
UML (Unified Modeling Language) Modell Diagrammer Klassediagrammer Objektdiagrammer Beskrive forhold mellom klasser/objekter
UML Oversikt Samarbeid Enklere å gjøre endringer før man begynner å programmere Arkitekter og ingeniører tegner først - så bygger de!
Klassediagrammer
Objektdiagrammer
Oppsummering Klasser er oppskrifter for hvordan vi lager objekter med new Kan ha arrayer med pekere til objekter UML-diagrammer gir oversikt og forenkling