Uke 7 Mer om Objekter, klasser og pekere;

Like dokumenter
Uke 7 Mer om Objekter, klasser og pekere; 27. Sept og 4. okt. 2011, Arne Maus Inst. for informatikk, UiO

Uke 7 Mer om Objekter, klasser og pekere;

Et meget enkelt banksystem

Uke 7 Mer om Objekter, klasser og pekere; UML. 10. okt. 2013, Arne Maus Inst. for informatikk, UiO

INF Forelesning oppsummering forts. Et meget enkelt banksystem. Oppsummering om klasser, objekter, pekere og.

(! )! #!! *#+,$&!! &#$

3 #$ *#+,$&!! &#$ (! )! #! 6 &#)%#. / 5$ #%#.67 / "## #&! %# # & #!!& %&$ # $!!!!# $#

INF1000: Forelesning 7. Konstruktører Static

Objekter. Uke 7 og 9 - Objekter, klasser og pekere. Verden består av mange objekter, noen ganske like, noen ulike. Klasser og objekter i verden

Stringer er ordentlige objekter. Uke 8 - Mer om objekter og klasser. Tips Oblig3. Eksempel Student med en konstruktør

Uke 6 og 7 - Objekter, klasser og pekere; 23. og 30. sept. 2008, Arne Maus Inst. for informatikk, UiO

Uke 6 og 7 - Objekter, klasser og pekere; 22. og 29. sept. 2009, Arne Maus Inst. for informatikk, UiO

Uke 6 og 7 - Objekter, klasser og pekere; Verden består av mange objekter, noen ganske like, noen ulike

Null, && og søppeltømmeren. INF Forelesning 9: Mer om objekter og klasser, tips til oblig 3. Eksempel Student med én konstruktør

INF1000: Forelesning 7

Oblig 3 to versjoner. INF Forelesning 8: Objekter, klasser og pekere. Verden består av mange objekter: noen ganske like, andre ulike

Inf1000 (Uke 7) Objekter, klasser og pekere

Objekter. Uke 8 - Objekter, klasser og pekere. Verden består av mange objekter, noen ganske like, noen ulike. Klasser og objekter i verden

Objekter. Uke 6 - Objekter, klasser og pekere. Verden består av mange objekter, noen ganske like, noen ulike. Klasser og objekter i verden

Hva skal vi lære i dag? Inf1000 (Uke 9) UML og enda mer om klasser. Hvilke lesemetoder finnes? Filbehandling. Repetisjon om filbehandling UML

Inf1000 (Uke 9) UML og enda mer om klasser

Hva skal vi lære i dag? Inf1000 (Uke 9) UML og enda mer om klasser. Hvilke lesemetoder finnes? Filbehandling

( & ( &/ 2& , )-. &* &/ ),* 0, &/ 2 ) *

INF1000: Forelesning 6. Klasser og objekter del 1

! " ##$ % 4 2, &/ ( & +, )-. &* &/ ),* 0, 1 1 ( &/ 2& &, & &/ &,, &/" 2 &/ 2 ) *

Uke 7 - Objekter, klasser og pekere (+ litt først om args[])

OBJEKTER SOM EN PROGRAMMERINGS-TEKNIKK

Objekter. Uke 7 - Objekter, klasser og pekere. Verden består av mange objekter, noen ganske like, noen ulike. Klasser og objekter i verden

Inf1000 (Uke 9) UML og enda mer om klasser

Klasser, objekter, pekere og UML. INF gruppe 13

INF1010 UML. Marit Nybakken 26. januar 2004

Oppgave 1. INF1000 Uke 13. Oppgave 2. Oppgave 3. Er dette lovlige deklarasjoner (når de foretas inni en metode)? JA NEI

Oppgave 1. Oppgave 2. Oppgave 3. Prøveeksamen i INF1000. Ole Christian og Arne. 23. november 2004

Prøveeksamen i INF1000. Ole Christian og Arne. 23. november 2004

Innhold uke 4. INF 1000 høsten 2011 Uke 4: 13. september. Deklarasjon av peker og opprettelse av arrayobjektet. Representasjon av array i Java

Oblig 4Hybelhus litt mer tips enn i oppgaven

INF1000 EKSTRATILBUD. Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen

Hva er en metode. Hva skjer når vi kaller en metode

1. Finn klassene (hvilke objekter er det i problemet) 1. Dataene som beskriver problemet (hvilke objekter har vi og hvor mange klasser er det?

Først: Parametre til oppstart av programmet, Hvordan kan vi bruke args[]? String [] args. Parameteren args[] blir laget av deg

De neste ukene. INF1000 Uke 12. Prøveeksamen. Nå - Prøveeksamen. Forelesning om IT og samfunn neste uke (13/11).

INF1000: Forelesning 11. Oppgave 2. Oppgave 1. Husk å melde deg på prøveeksamen i INF1000! Ole Christian Lingjærde 7.november 2006

(MVC - Model, View, Control)

2 Om statiske variable/konstanter og statiske metoder.

INF1000 (Uke 5) Mer om løkker, arrayer og metoder

UNIVERSITETET I OSLO

Løsningsforslag ukeoppg. 6: 28. sep - 4. okt (INF Høst 2011)

INF1000: noen avsluttende ord

Repetisjon. INF gruppe 13

26. Sept. 2012, Arne Maus Inst. for informatikk, UiO

INF1000 : Forelesning 4

Verden består av mange objekter, noen ganske like, noen ulike

i=0 i=1 Repetisjon: nesting av løkker INF1000 : Forelesning 4 Repetisjon: nesting av løkker Repetisjon: nesting av løkker j=0 j=1 j=2 j=3 j=4

Inf1000 (Uke 7) Objekter, klasser og pekere

Oversikt. Inf1000 (Uke 7) Objekter, klasser og pekere. Løkker gjør setninger flere ganger. Variable, deklarasjon og tilordning

Forelesning inf Java 4

i=0 Repetisjon: arrayer Forelesning inf Java 4 Repetisjon: nesting av løkker Repetisjon: nesting av løkker 0*0 0*2 0*3 0*1 0*4

Kort repetisjon av doble (nestede) løkker Mer om 1D-arrayer Introduksjon til 2D-arrayer Metoder

INF Uke 10. Ukesoppgaver oktober 2012

Oblig 3 tips litt mer tips enn i oppgaven

Dagens tema Kapittel 8: Objekter og klasser

UNIVERSITETET I OSLO

Inf1000 uke 5 18.sept. 2007

Introduksjon til objektorientert. programmering. Hva skjedde ~1967? Lokale (og globale) helter. Grunnkurs i objektorientert.

Oversikt (for deg som ikke er helt sikker på å få A) Inf1000 uke 12 4.nov Sjekkliste forts. variabler, typer og tilordning

for (int i=0; i<3; i++) { for (int j=0; j<5; j++) { System.out.print(i*j); System.out.println();

Forelesning inf Java 5

Forelesning inf Java 5

Velkommen til. INF våren 2012

Litt mer om uttrykk: ++ og -- INF1000 : Forelesning 4. Oppgave. Blokker. 0 udefinert udefinert. Alternativ 2 Postfiks-operator

Innhold. INF1000 (Uke 11) Programmering. Rep: Metoder. Rep: Hva er en metode? Litt repetisjon. To måter å programmere på

Velkommen til. INF våren 2016

Introduksjon til objektorientert programmering

Løsningsforslag ukeoppg. 9: okt (INF Høst 2011)

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

LC191D Videregående programmering Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring. Else Lervik, januar 2012.

Gjennomgang av eksamen H99

Eksamensrelevant repetisjonsstoff. Deklarasjoner og variabeltyper. Konstanter

Enkle generiske klasser i Java

To måter å programmere på. Java 12. Programmering med objekter. Statisk programmering

INF1000 Metoder. Marit Nybakken 16. februar 2004

Løsningsforslag ukeoppg. 7: okt (INF Høst 2010)

LITT OM OPPLEGGET. INF1000 EKSTRATILBUD Stoff fra uke September 2012 Siri Moe Jensen EKSEMPLER

Uke 8 Eksamenseksempler + Ilan Villanger om studiestrategier. 11. okt Siri Moe Jensen Inst. for informatikk, UiO

INF1000: Forelesning 4. Mer om arrayer Metoder

INF Uke 10. Løsningsforslag ukesoppgaver oktober 2012

UNIVERSITETET I OSLO

Velkommen til INF våren 2011

2 Om statiske variable/konstanter og statiske metoder.

Lenkelister. Lister og køer. Kopi av utvalgte sider fra forelesningen.

Hva er en metode? INF1000 Forelesning 8. Hva skjer når vi kaller en metode? Hvorfor bruke metoder?

Oversikt. Inf1000 (Uke 7) Objekter, klasser og pekere. Variable, deklarasjon og tilordning. Løkker gjør setninger flere ganger

Repetisjon INF 1000 våren 2006

Seminaroppgaver IN1010, uke 2

Blokker og metoder INF1000 (Uke 6) Metoder

INF1000: noen avsluttende ord

Oblig 4 (av 4) INF1000, høsten 2012 Værdata, leveres innen 9. nov. kl

INF1000 (Uke 4) Mer om forgreninger, While-løkker

Tre måter å lese fra terminal. Java 4. Eksempel. Formatert utskrift til skjerm

Transkript:

Oppsummering om klasser, objekter, pekere og. Uke 7 Mer om Objekter, klasser og pekere; UML N.B Forelesningene flyttes til Simula (O-J Dahls hus) fra og med neste uke (10. okt) 3. okt. 2012, Arne Maus Inst. for informatikk, UiO Verden består av objekter av ulike typer (klasser). Ofte er det mange objekter av en bestemt type. Objekter som er av samme klasse, beskrives med de samme variablene, men vil ha forskjellige verdier på noen av disse. Eks: To bankkonti med ulik eier og kontonummer, men kan f.eks ha samme beløp på saldo (tilfeldigvis) Vi lager OO-programmer ved å lage en modell av problemområdet i Javaprogrammet ett objekt i verden gir ett tilsvarende Java-objekt i programmet Objekter kan være av ulik type, og for hver slik type deklarerer vi en klasse i programmet 1 2.. oppsummering forts. Et Javaprogram består av en eller flere klasser En klasse er en deklarasjon av data og metoder for ett objekt av klassen. Vi deklarerer pekere til objekter av en bestemt t klasse f.eks. class Kurs {.. slik: Kurs kurs14, k2, k; Vi lager objekter fra klassen med new k2 = new Kurs(); Et objekt inneholder en kopi av alle ikke-statiske variable og ikke-statiske metoder i klasse Disse kalles objekt-variable og objekt-metoder Vi får adgang (lese, skrive og kalle metoder) til det som er inni et objekt ved. Operatoren : Vi må ha en peker til et objekt etterfulgt av punktum. s2.adresse ="Helse- og omsorgs dep"; s1.skrivut(); skrivut(); Et meget enkelt banksystem Vi har klassene: Konto Bank BankSystem (med main) Hvilke opplysninger har vi i hver klasse/objekt? Og operasjonene (dvs. metodene): Ny konto Sett inn Ta ut Vis summen av innskudd i banken 3 4

Data i Konto og Bank (en bank har mange konti) class BankSystem{ public static void main (String [] args) {. Bank b = new Bank(); b.navn = "BB-Bank"; b.løkke(); class Bank{ Konto [] kontiene = new Konto[100000]; int antallkonti = 0; String navn; kontiene 0 // Metoder mangler antallkonti class Konto { String navn, adresse; 99 999 int kontonummer; double saldo =0.0; // Metoder mangler k Betyr at pekeren peker på ingenting: null Objekter av klassen Konto 5 Metoder i Bank og Konto (+ noen hjelpemetoder) class Bank{ Konto [] kontiene = new Konto[100000]; static int kontonummer = 500000; int antallkonti = 0; In tast = new In(); String navn; double suminnskudd() { void nykonto() { int menyvalg() { void løkke () { class Konto { int valg =0; Konto k; String navn,adresse; double kr ; int kontonummer; do { valg = menyvalg(); double saldo =0.0; switch(valg) {... while (valg > 0); void settinn (double kr) { // end main saldo = saldo+kr; double spørsvar (String s){ boolean taut(double kr) { Konto riktigkonto() t { saldo = saldo kr; // end Bank // end class Konto int menyvalg() { System.out.println(" \nvelg funksjon i "+ navn+":"); System.out.println ("1 - ny konto:"); System.out.println ("2 - innskudd:"); System.out.println ("3 - uttak:"); System.out.println ("4 - sum forvaltningskapital\n"); return tast.inint(); void løkke () { int valg =0; Konto k; double kr ; do { valg = menyvalg(); switch(valg) { case 1: nykonto(); case 2: k = riktigkonto(); if(k == null) { System.out.println("Finnes ikke"); kr = spørsvar("gi innskudd"); k.settinn(kr); case 3: k = riktigkonto(); kr = spørsvar("gi uttaksbeløp"); if (! k.taut(kr)) System.out.println( println("ikke NOK PENGER"); case 4: System.out.println(navn+ " Sum innskudd:" + suminnskudd()); while (valg > 0); System.out.println("** AVSLUTTER BANKEN ***"); // end løkke private double spørsvar(string s){ System.out.print(s+":"); return tast.indouble(); Konto riktigkonto() { System.out.print("Gi navn til eksisterende konto:"); String s = tast.inword(); for ( int i = 0; i < antallkonti; i++) if (kontiene[i].navn.equals(s) navn equals(s) )return kontiene[i]; return null; void nykonto() { System.out.print("Gi navn til ny kontoinnehaver:"); String navn = tast.inword(); System.out.print( print("gi adresse:"); String adr = tast.inword(); Konto k = new Konto(); k.adresse = adr; k.navn = navn; k.kontonummer= kontonummer++; kontiene[antallkonti] = k; antallkonti++;

Stringer er ordentlige objekter String er en klasse i Java-biblioteket, t men har en egen spesiell syntaks (skrivemåte) så det ser ut som den er en av de basale typene (som int, double,..). Når vi har en string, har vi alså både en peker (den vi deklarerer navnet på) og et stringobjekt. String-objekter kan ikke endres (trenger du endrbare tekster, bruk klassen StringBuffer) Egen skrivemåte for stringkonstanter: String s = En fin dag i mai ; Er det samme som: String s = new String( En fin dag i mai ); Klassen String inneholder mer enn 50 metoder for konvertering mellom ulike datatyper og tekst, samt tekstsøking. 9 null, && og søppeltømmeren Av og til har vi behov for å teste om en peker virkelig peker på et objekt eller ikke: Student s = hyblene[i][j].leietager ; if (s!= null && s.navn.equals( Ola )) { // her kommer vi bare hvis s peker på et studentobjekt // og navnet i det studentobjektet t t er lik Ola... Hvis vi vil fjerne et objekt fra en peker og fra hele systemet: hyblene[i][j].leietager = null; Et objekt som ingen pekere peker på, blir tatt av søppeltømmeren et program som automatisk startes hvis det er lite plass i hukommelsen: 10 Konstruktører startmetoder i klasser Eksempel Student med én konstruktør Når vi lager et objekt av en klasse med new, kaller vi egentlig også en metode som heter det samme som klassen (derfor parentesen bak klassenavnet). Vi får automatisk med en slik konstruktør-metode fra oversetteren dersom vi ikke skriver en slik konstruktør selv. Den vi får automatisk er uten parametere og gjør ingen ting. Konstruktører nyttes i all hovedsak til å gi fornuftige startverdier for variable i objektet som dannes. De konstruktørene vi skriver kan ha parametere. Konstruktørene skal ikke ha noen type foran seg, heller ikke void. Vi kan ha flere konstruktører i en klasse, men da må parameterne være ulike i antall eller typen av parametrene 11 class Student t { String navn; Kurs [] minekurs = new Kurs[3]; Student(String t(st navn, Kurs [] k){ this.navn = navn; for (int i = 0; i<k.length; i++ ){ minekurs[i] = k[i]; minekurs[i].antstudenter++; t 12

Eksempel Student med 2 konstruktører class Student { String navn; Kurs [] minekurs = new Kurs[3]; Student() { minekurs = new Kurs[0]; Student(String navn, Kurs [] k){ this.navn = navn; for (int i = 0; i<k.length; i++ ){ minekurs[i] = k[i]; minekurs[i].antstudenter++; tude te 13 this Av og til trenger vi en peker til det objektet metoden vi utfører er inne i. Java-ordet this gir oss alltid det. Brukes i to situasjoner: Vi har en konstruktor, og parametrene til denne heter det samme som objekt-variable i objektet. Eks: class A { int antall; A (int antall ){ this.antall = antall; // end A.. A apek = new A(12); Vi skal kalle en metode i et annet objekt (gjerne av en annen klasse). Da kan vi bruke this for å overføre en parameter til denne metoden om hvilket objekt kallet kom fra. 14 II) UML-diagrammer av programmene våre Hvorfor tegne diagrammer over programmene Oversikt Samarbeid med andre programmererer / systemutviklere Arkitekter, ingeniører tegner først, så bygger de! Enklere å endre en tegning enn programmet Objektdiagrammer Klassediagrammer UML diagrammene er litt annerledes enn det vi har tegnet hittil (men mye av det samme) (i UML er det mer enn 10 andre diagramtyper vi ikke skal lære) Et klassediagram er en tegning av klassene i systemet og deres forhold til hverandre Et klassediagram er et diagram/tegning g g med én firkant for hver klasse vi har i programmet vårt. Vi sier at denne tegningen er en modell av systemet vårt (det er jo ikke programmet selv, bare en skisse av det) I tillegg er det streker i diagrammet mellom de klassene som har et klart forhold til hverandre. Eks: En Kunde i en bank og hans Bankkonto Eks: En Bank og dets Kunder, en Bank og dens Bankkonti Eks: En Student og de Eksamene hun har tatt. Student har tatt Eksamen 15 16

UML Klassediagrammet kan nyttes til Modell av problemområdet (domenemodell) Modell av klassene i programmet (+ modell av databasen,...) Men siden vi skal modellere virkeligheten en-til-en i programmet vårt, så blir de like i utgangspunktet Klassediagrammer En mer kompakt måte enn objektdiagrammer dag a å tegne sammenhengen i programmet Skiller seg fra objektdiagrammer ved at vi ikke direkte tegner datastrukturen (pekere og pekerarrayer), men bare forhold (assosiasjoner, forbindelser) mellom klassene. I klassediagrammer dokumenterer vi også sentrale metoder. Forholdene er linjer med et logisk navn og antall objekter i hver ende Anta at vi har laget en class Konto med tre objektvariable: saldo, eier og adresse og en metode: settinn(). 17 18 Tre (fire) mulig felter i tegning av en klasse Forhold mellom klasser Symboler for synlighet (fra resten av programmet) + public - private # protected ~ package Navnefeltet (alltid) klassenavnet Kan utelates: Variabelfeltet (attributtene) variabelnavn evt. med type Metode-feltet Evt med parametere og returverdi (Unntaks-feltet) En student har null eller flere eksamener Vi tegner et forhold mellom to klasser som har med hverandre å gjøre logisk sett, og: hvor vi i programmet vil kunne følge pekere for å få adgang til variable eller metoder Vi skriver hvor mange objekter det maksimalt på ett gitt tidspunkt kan være på hver side av et slikt forhold Siden vi med: Eksamen mener en avlagt enkelt-eksamen, vil én Eksamen bare være tilknyttet en bestemt student 19 20

Navnet på forbindelsen Regler for å plassere riktige antall på et forhold antall Student antall Eksamen Forbindelsen leses fra venstre: En student har tatt null, en eller flere Eksamener Antallet objekter angis slik: 1. Anta at du står i ett objekt av en klasse og ser over til (langs en forbindelse) til en annen klasse: 2. Hvor mange objekter ser du da maksimalt på et gitt tidspunkt av den andre klassen 3. Det antallet noteres (jfr. tabellen) på den andre siden 4. Du går så over forbindelsen til den andre klassen og antar at du nå står i ett objekt av denne klassen og gjenntar pkt. 1-3 21 22 Hvilke forhold skal vi ha med i klassediagrammet? Bare tre typer av forhold Slike forhold hvor ett objekt av den ene klassen: inneholder består av eier,.. en eller flere objekter av den andre klassen Det vi i programmet vil følge en peker for å få tak i verdien på visse variable i den andre klassen eller kalle en metode. Det er da ikke naturgitt hvilke forhold vi har i et klassediagram, det avhenger av hvilke spørsmål vi vil være interessert i å svare på. en-til-en en-til-mange er gift med person 1 1 eier person 1 * mange-til-mange tar student * * person bøker kurs 23 24

Objekt-diagrammer Vi tegner en typisk situasjon av objekter i systemet vårt, når vi har fått datastrukturen på plass. Vi tegner og navngir bare de mest sentrale dataene som: pekere peker-arrayer noen sentrale variable i objektene Tegning av et objekt (med mer eller mindre detaljer) To eller ett felt(er) i en boks Navnfeltet objektnavn:klassenavn eller bare :klassenavn Attributt-feltet (kan være tomt) Navnet på sentrale objektvariable evt. også med verdier 25 26 Andre elementer i et objektdiagram Eksempel: Et CD-samling Pekere Peker-arrayer Vi ønsker å lage et lite menystyrt program for å holde orden på CD-samlinga vår med mindre enn 1000 CDer. Vi skal ha funksjoner for å : registrere ny CD Søke etter artist (skriv ut alle platene med denne) Skrive ut hele registeret Hvilke klasser har vi i dette problemet Opplagt class CD Noen fler? 27 28

Klassene: CD og CDsamling Vi tenker oss følgende datastruktur (er den tilstrekkelig?) Vi har her forenklet programmet (klassen CDSystem inneholder main,cdsamling meny-metode metode og sentral switch i løkke-metoden,..., mens CD inneholder utskriftsrutine. :CDSystem import easyio.*; class CDSystem { public static void main(string args []) { new CDsamling().løkke(); class CD{ String artist, tittel; void skrivut(out u) { u.outln("artist:" + artist + ", Tittel:" + tittel); class CDsamling{ CD [] minsamling = new CD[1000]; int antcder = 0; 29 void løkke() { In tast = new In(); Out skj = new Out(); String a; CD c; int valg; do{ skj.outln("velg:"); skj.outln(" 1 - les ny plate (skriv artist platetittel"); skj.outln(" 2 - skriv artist"); skj.outln(" 3 - avslutt"); valg = tast.inint(); switch(valg) { case 1: // les data c = new CD(); minsamling[antcder++] = c; skj.out("gi artistnavn:"); c.artist = tast.inword(); skj.out("gi tittel:"); c.tittel = tast.inword(); case 2: // skriv data skj.out("gi artistnavn:"); a = tast.inword(); for(int i = 0; i < antcder; i++) if (minsamling[i].artist.equals(a)) minsamling[i].skrivut(skj); case 3: // avslutt skj.out("systemet avslutter"); default: // feil skj.out("bare gi verdier: 1-3"); while (valg!= 3); >java CDSystem Velg: 1 - les ny plate (skriv artist platetittel 2 - skriv artist 3 - avslutt 1 Gi artistnavn:tom Gi tittel:fest1 Velg: 1 - les ny plate (skriv artist platetittel 2 - skriv artist 3 - avslutt 1 Gi artistnavn:ola Gi tittel:fullfres Velg: 1 - les ny plate (skriv artist platetittel 2 - skriv artist 3 - avslutt 2 Gi artistnavn:tom Artist:tom, Tittel:Fest1 Velg: 1 - les ny plate (skriv artist platetittel 2 - skriv artist 3 - avslutt

Et helt studentregister med kurs, studenter og registeret Vi har Studenter på Ifi som første semester tar tre kurs, samtidig som vi har behov for å registrere kurs og hvor mange studenter som tar hvert kurs. Vi tegner først en tenkt datastruktur et UML objektdiagram så skriver vi programmet Klassediagram over et Studentregister Et studentregister holder orden på studentene og kursene, og en student tar 3 kurs hvert semester Student -Er registrert i -Tar 1..* 3 Kurs * - 3..* -Holder rede på StudentRegister3 1 1 33 34 Objektdiagrammet er en forenkling av programmet. Det tar bare med den essensielle datastrukturen (mest pekere og peker-arrayer) som holder datastrukturen sammen class StudentRegister3{ public static void main(string args []) { StudentRegister3 sr = new StudentRegister3(); StudentRegister3() tr t { String [] kurskode = {"INF1000","INF1040","MAT1030"; : Student minekurs navn : String : StudentRegister3 infkurs stud : Kurs :Kurs kurskode kurskodee antstudenter : int ants // lag kurs Kurs [] infkurs = new Kurs[3]; for (int i = 0 ; i< infkurs.length; i++) infkurs[i] = new Kurs(kurskode[i]); //lag studenter på informatikk bachelor Student [] stud = new Student[3]; stud[0] = new Student("Ola N", infkurs); stud[1] = new Student("Åsne S",infKurs); stud[3] = new Student(); for (int i = 0 ; i< stud.length; i++) stud[i].skrivut(); 36

class Student { String navn; Kurs [] minekurs = new Kurs[3]; Student(){mineKurs = new Kurs[0]; Student(String navn, Kurs [] k){ this.navn = navn; for (int i = 0; i<k.length; i++ ){ minekurs[i] = k[i]; minekurs[i].antstudenter++; >java StudentRegister3 Student med navn:ola N, og kurs: INF1000 INF1040 MAT1030 Student med navn: sne S, og kurs: INF1000 INF1040 MAT1030 Student med navn:null, og kurs: void skrivut() { System.out.println("Student med navn:"+ navn+ ",og kurs:"); for (int i = 0;i < minekurs.length; i ++) System.out.println(mineKurs[i].kurskode); class Kurs { String kurskode ; int antstudenter = 0; : Student minekurs navn : String Sammenligning: Objektdiagram og Klassediagram Student * -Tar : StudentRegister3 infkurs stud 1..* 3 -Er registrert i Kurs - 3..* : Kurs : Kurs kurskodee kurskodee antstudenter : int antstu Kurs(String k) { kurskode = k; 37 1 StudentRegister3 -Holder rede på 1 Oppsummering Klasser er oppskrifter for hvordan vi lager objekter med new Vi deklarerer pekere til objekter og bruker operatoren:. Kan ha arrayer av pekere til objekter Klasse- og objektvariable og metoder. Konstruktører er startmetoder med samme navn som klassen, Kalles hver gang vi sier new. UML-diagrammer (Objekt- og Klasse-diagram) gir oversikt og forenkling som skikkelige ingeniører i lager vi tegninger før vi ilager systemet t (programmerer det) 39 40