INF Objektorientert programmering. Datastrukturer i Java Klasser med parametre

Like dokumenter
INF Objektorientert programmering. Datastrukturer i Java Klasser med parametre

INF januar 2015 Stein Michael Storleer (michael) Lenkelister

2 Om statiske variable/konstanter og statiske metoder.

Enkle generiske klasser i Java

Velkommen til. INF våren 2016

INF1010, 15. januar time. Parametriserte klasser (generiske klasser) Stein Gjessing Inst. for Informatikk Universitetet i Oslo

IN1010 våren januar. Objektorientering i Java

UNIVERSITETET I OSLO

INF1010 våren januar. Objektorientering i Java

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

INF1010. Grensesnittet Comparable<T>

UNIVERSITETET I OSLO

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

Hva er verdien til variabelen j etter at følgende kode er utført? int i, j; i = 5; j = 10; while ( i < j ) { i = i + 2; j = j - 1; }

UNIVERSITETET I OSLO

INF1000: Forelesning 7

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

2 Om statiske variable/konstanter og statiske metoder.

Forkurs INF1010. Dag 2. Andreas Færøvig Olsen Tuva Kristine Thoresen

INF Uke 10. Ukesoppgaver oktober 2012

INF1010, 21. januar Klasser med parametre = Parametriserte klasser = Generiske klasser

Forkurs INF1010. Dag 2. Andreas Færøvig Olsen Gard Inge Rosvold Institutt for Informatikk, 14.

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

UNIVERSITETET I OSLO

Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo

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

INF våren 2017

INF1000: Forelesning 7. Konstruktører Static

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

UNIVERSITETET I OSLO

INF1000: noen avsluttende ord

Konstruktører. Bruk av konstruktører når vi opererer med "enkle" klasser er ganske ukomplisert. Når vi skriver. skjer følgende:

INF1000 Forelesning 8. Litt repetisjon: Metoder og klasser Innkapsling av variable og metoder Hvordan gripe an et stort problem?

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

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

UNIVERSITETET I OSLO

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

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

IN våren 2019 Onsdag 16. januar

Forkurs INF1010. Dag 1. Andreas Færøvig Olsen Tuva Kristine Thoresen

INF1010 våren Grensesnitt

Blokker og metoder INF1000 (Uke 6) Metoder

Forkurs INF1010. Dag 3. Andreas Færøvig Olsen Eivind Storm Aarnæs

INF 1000 høsten 2011 Uke september

INF1010 våren Grensesnitt

INF1000 undervisningen INF 1000 høsten 2011 Uke september

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

Dagens tema Kapittel 8: Objekter og klasser

Oblig4 - forklaringer. Arne og Ole Christian

Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) og i emnet INF100-F Objektorientert programmering i Java I

Eksamen INF1010 V2009 Del B prøveeksamen V2010 Vekt 60 %

IN våren 2018 Tirsdag 16. januar

INF1000 Metoder. Marit Nybakken 16. februar 2004

INF1010. Stein Michael Storleer (michael) Lenkelister

Forkurs INF1010. Dag 3. Andreas Færøvig Olsen Gard Inge Rosvold Institutt for Informatikk, 15.

Eksamensrelevant repetisjonsstoff. Deklarasjoner og variabeltyper. Konstanter

Praktisk informasjon. Repetisjon: While-løkker. I dag. INF1000 (Uke 5) Mer om løkker, arrayer og metoder. Oblig 2 er lagt ut

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Praktisk informasjon. I dag. Repetisjon: While-løkker. INF1000 (Uke 5) Mer om løkker, arrayer og metoder

Fra Python til Java. En introduksjon til programmeringsspråkenes verden. Dag Langmyhr

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

Oversikt. INF1000 Uke 1 time 2. Repetisjon - Introduksjon. Repetisjon - Program

INF1000 Prøveeksamen Oppgave 7 og 9

INF1010 våren Grensesnitt (interface)

INF1000: noen avsluttende ord

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr

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

En klasse er noe - en metode gjør noe (! / # <= (! * +!! ",-' %. "- -/ %.!#) )! " 0'%! * *$! "1-)) '' % '. 22!'( 7/ /! * 2 2! "*"% 8"%% 9 - -!

Forelesning inf Java 4

Lenkelister. Lister og køer.

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

INF 1000 Prøveeksamen. 23. november Ole Christian og Arne. Oppgave 1 (10 poeng) Er disse programsetningene lovlige i Java? Oppgave 2 (10 poeng)

INF1000 (Uke 11) Programmering

Versjon (vil bli endret).

INF1000 : Forelesning 4

UNIVERSITETET I OSLO

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

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

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

UNIVERSITETET I OSLO

Velkommen til. INF våren 2012

INF1010 Arv. Marit Nybakken 2. februar 2004

UNIVERSITETET I OSLO

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr

Gjennomgang av eksamen H99

UNIVERSITETET I OSLO

INF1010, 21. februar Om å gå gjennom egne beholdere (iteratorer) Stein Gjessing Inst. for Informatikk Universitetet i Oslo

UNIVERSITETET I OSLO

INF Uke 10. Løsningsforslag ukesoppgaver oktober 2012

INF1010 våren 2008 Uke 4, 22. januar Arv og subklasser

Innhold. INF1000 Høst Unified Modeling Language (UML) Unified Modeling Language (UML)

Inf1000 (Uke 10) Oppgaveløsning. Hashmap

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

UNIVERSITETET I OSLO

Repetisjon. INF gruppe 13

Løsningsforslag til eksamen i INF1000 våren 2006

MER OM ARRAYER. INF1000: Forelesning 4. Anta at vi ønsker å lagre en liste med navnene på alle INF1000-studentene:

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

INF1000: Forelesning 4. Mer om arrayer Metoder

Transkript:

INF1010 - Objektorientert programmering Datastrukturer i Java Klasser med parametre

INF1010 våren 2015 Stein Gjessing (steing) Stein Michael Storleer (michael) 36 hjelpelærere Andreas Færøvig Olsen (andrefol) Henrik Hillestad Løvold (henrihlo) 12 gruppelærere 22 obligrenere

UndervisningsPlbud 2 Pmer forelesninger pr. uke 2 Pmer plenumsøvelser pr. uke 2 Pmer seminarundervisning pr. uke Labundervisning en- Pl- en, Plbakemelding og godkjenning av obliger ca. 8 obliger 2 poeng pr. uke Første oblig frist onsdag 4. februar kl. 10.00 Andre oblig frist 11. februar kl. 10.00 Vi kan opprene labgrupper ener behov

Variabler primipve typer arrayer pekervariable Alle variabler har 1. en type 2. et navn 3. et innhold

Metoder Må enten ha en returtype returtypen kan være alle typer som en variabel kan ha, også array. eller være void har 0, 1 eller flere parametre

Metoder og variable er byggesteinene våre i Pllegg Pl klasser og konstruktører. Vi skiller mellom klassevariabler og klassemetoder objektvariabler og objektmetoder

Et javaprogram som kjøres opprener objekter og endrer på innholdet i klasse- og objektvariabler ved å u[øre konstruktører og metoder. Variabler endrer innhold med 7lordninger.

class Hund { private String navn ; private int vekt = 5000; private Hund mor = null; Hund ( String n ) { navn = n; Hund ( String n, int v ) { navn = n; vekt = v; public void senvekt ( int v ) { vekt = v;

class Eks01 { public stapc void main (String[] argumenter) { Hund trofast = new Hund("Trofast"); Hund pluto = new Hund("Pluto", 6750);

class Heltall { int tall; Heltall(int t) {tall = t; class Eks02 { public stapc void main ( String[] a ) { int a=0, b=7; Heltall refa, reg; refa = new Heltall(0); reg = new Heltall(7); a = b; refa = reg; b = 8; reg.tall = 8; System.out.println("a=" + a + ", b=" + b + ", refa.tall=" + refa.tall + ", reg.tall=" + reg.tall);

public stapc void main (String[] argumenter) { int a=0, b=7; Heltall refa, reg; refa = new Heltall(0); reg = new Heltall(7); a = b; refa = re=; b = 8; reg.tall = 8; System.out.println("a=" + a + ", b=" + b + ", refa.tall=" + refa.tall + ", reg.tall=" + reg.tall);

public stapc void main (String[] argumenter) { int a=0, b=7; Heltall refa, reg; refa = new Heltall(0); reg = new Heltall(7); a = b; refa = re=; b = 8; reg.tall = 8; System.out.println("a=" + a + ", b=" + b + ", refa.tall=" + refa.tall + ", reg.tall=" + reg.tall);

Tilordninger primipve variabler <venstreside> = <høyreside> Hva gjør javamaskinen når programmet u[øres? 0. Hvis venstresiden deklarerer en variabel: Opprett denne 1. «Regn ut» høyresiden 2. Sett resultatet inn i variabelen på venstresiden

Tilordninger primipve variabler <venstreside> = <høyreside> int tall = 2 * 5 + 3; tall = 47 % 7; double rotenav2 = java.lang.math.sqrt(2.0); 0. Hvis venstresiden deklarerer en variabel: Opprett denne 1. «Regn ut» høyresiden 2. Sett resultatet inn i variabelen på venstresiden

Tilordninger pekervariabler <venstreside> = <høyreside> Hund lassie = new Hund( Lassie ); Hund minhund = lassie; minhund = finnhundmednavn( Lassie ); minhund = null; 0. Hvis venstresiden deklarerer en variabel: Opprett denne 1. «Regn ut» høyresiden 2. Sett resultatet inn i variabelen på venstresiden

Tilbake Pl hundeeksemplet class Hund { class Eks01 { stapc int antallhunder = 0; public stapc void main (String[] argumenter) { Hund trofast = new Hund("Trofast"); ++antallhunder; Hund pluto = new Hund("Pluto", 6750); ++antallhunder;

class Eks01 { stapc int antallhunder = 0; public stapc void main (String[] argumenter) { Hund trofast = new Hund("Trofast"); ++antallhunder; Hund pluto = new Hund("Pluto", 6750); ++antallhunder; Klassedatastruktur:

class Hundebur { private Hund hundibur = null; public void seninnhund( Hund h ) { if (hundibur == null) hundibur = h; else System.out.println("Hundeburet er fullt!"); public Hund tauthund() { Hund somslipperut = null; if (hundibur == null) System.out.println("Hundeburet er tomt!"); else { somslipperut = hundibur; hundibur = null; return somslipperut;

class Hundebur { private Hund hundibur = null; public void seninnhund( Hund h ) { public Hund tauthund() { return somslipperut;

class Eks01 { stapc int antallhunder = 0; public stapc void main (String[] argumenter) { Hund pluto = new Hund("Pluto", 6750); ++antallhunder; Hundebur hundeburet = new Hundebur(); hundeburet.seninnhund(new Hund("Cara")); hundeburet.seninnhund(pluto); Hundebur burnr2 = new Hundebur(); burnr2.seninnhund(pluto);

class KaN { private String navn ; private int vekt = 3750; private KaN mor = null; KaN ( String n, KaN mor ) { navn = n; this.mor = mor; KaN ( String n, int v ) { navn = n; vekt = v; public void senvekt ( int v ) { vekt = v;

Kan kaner senes i hundebur? Utvider main- metoden:.. Hundebur burnr2 = new Hundebur(); burnr2.seninnhund(pluto); KaN pus = new KaN("Pus", 5600 ); KaN tom = new KaN("Tom", pus ); burnr2.seainnhund(tom); Resultat fra kompilering: Eks04.java:75: seninnhund(hund) in Hundebur cannot be applied to (KaN) burnr2.seninnhund(tom); ^

Kan vi lage bur som både hunder og kaner kan bo i? class Bur { private???? dyribur = null; public void seninn(???? h ) { if (dyribur == null) dyribur = h; else System.out.println("Buret er fullt!"); public???? taut() {???? somslipperut = null; if (dyribur == null) System.out.println("Buret er tomt!"); else { somslipperut = dyribur; dyribur = null; return somslipperut;

class Bur<Dyr> { private Dyr dyribur = null; public void seninn( Dyr h ) { if (dyribur == null) dyribur = h; else System.out.println("Buret er fullt!"); public Dyr taut() { Dyr somslipperut = null; if (dyribur == null) System.out.println("Buret er tomt!"); else { somslipperut = dyribur; dyribur = null; return somslipperut;

class Bur<T> { private T dyribur = null; public void seninn( T h ) { if (dyribur == null) dyribur = h; else System.out.println("Buret er fullt!"); public T taut() { T somslipperut = null; if (dyribur == null) System.out.println("Buret er tomt!"); else { somslipperut = dyribur; dyribur = null; return somslipperut;

public stapc void main ( String[] argumenter) { Bur<Hund> hundeburet = new Bur<Hund>(); hundeburet.seninn( new Hund("Cara") ); Bur<KaN> kaneburet = new Bur<KaN>(); KaN pus = new KaN( "Pus", 5600 ); KaN tom = new KaN( "Tom", pus ); kaneburet.seninn(tom); Hund h = hundeburet.taut();

I de<e buret kan vi se<e inn objekter av alle klasser: Bur<Bil> garasje = new Bur<Bil>(); Bur<Person> hybel= new Bur<Person>(); Ja, vi kan også lage et bur med et ka<ebur i: Bur<Bur<KaN>> bur = new Bur<Bur<KaN>>();

Men har vi ikke sen dene før? ArrayList<KaN> kaneliste = new ArrayList<KaN>(); public class ArrayList<E> {. Predefinert klasse som vi har brukt

HashMap<String, Hund> hunderegister = new HashMap<String, Hund> ()