INF1010 - 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

Enkle generiske klasser i Java

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

2 Om statiske variable/konstanter og statiske metoder.

IN1010 våren januar. Objektorientering i Java

INF1010 våren januar. Objektorientering i Java

Velkommen til. INF våren 2016

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

INF1010. Grensesnittet Comparable<T>

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

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

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

UNIVERSITETET I OSLO

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

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

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

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

INF1000: noen avsluttende ord

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

Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo

INF våren 2017

INF1000: Forelesning 7. Konstruktører Static

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

INF1010. Stein Michael Storleer (michael) Lenkelister

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?

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

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å

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

klassen Vin må få en ny variabel Vin neste alle personvariable (personpekere) i listeklassen må byttes til Vin

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

Blokker og metoder INF1000 (Uke 6) Metoder

Lenkelister. Lister og køer.

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

INF 1000 høsten 2011 Uke september

Versjon (vil bli endret).

INF1010 våren Grensesnitt

INF1000 undervisningen INF 1000 høsten 2011 Uke september

INF1010. grensesni-et Comparable<T> grensesni-et Iterable<T> rekursjon

Oblig4 - forklaringer. Arne og Ole Christian

INF1010 våren Grensesnitt

Dagens tema Kapittel 8: Objekter og klasser

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

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

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

INF1000 Metoder. Marit Nybakken 16. februar 2004

IN våren 2018 Tirsdag 16. januar

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

INF1000: noen avsluttende ord

Eksamensrelevant repetisjonsstoff. Deklarasjoner og variabeltyper. Konstanter

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

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

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

INF1010 våren Grensesnitt (interface)

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

UNIVERSITETET I OSLO

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

INF1010, 22. mai Prøveeksamen (Eksamen 12. juni 2012) Stein Gjessing Inst. for Informatikk Universitetet i Oslo

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

Velkommen til INF1010

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

Forelesning inf Java 4

UNIVERSITETET I OSLO

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)

UNIVERSITETET I OSLO

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

INF1000 (Uke 11) Programmering

INF1000 : Forelesning 4

INF106 Objektorientert programmering

UNIVERSITETET I OSLO

INF1010 siste begreper før oblig 2

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

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

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

UNIVERSITETET I OSLO

INF1010 Arv. Marit Nybakken 2. februar 2004

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

Velkommen til. INF våren 2012

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

1. Krav til klasseparametre 2. Om å gå gjennom egne beholdere (iteratorer) Stein Gjessing Inst. for Informatikk Universitetet i Oslo

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

Innleveringsoppgaver Oblig 1 frist 4. februar kl 10.00 INF1010- rytmen: to kl 10 ons kl 16. Poengsystem Ny ordning for re[ng og Plbakemelding Les UiO- epost Ønsker for renepder meldes inn elektronisk Varierende størrelse, 2 poeng pr. Uke.

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, rek; refa = new Heltall(0); rek = new Heltall(7); a = b; refa = rek; b = 8; rek.tall = 8; System.out.println("a=" + a + ", b=" + b + ", refa.tall=" + refa.tall + ", rek.tall=" + rek.tall);

public stapc void main (String[] argumenter) { int a=0, b=7; Heltall refa, rek; refa = new Heltall(0); rek = new Heltall(7); a = b; refa = re=; b = 8; rek.tall = 8; System.out.println("a=" + a + ", b=" + b + ", refa.tall=" + refa.tall + ", rek.tall=" + rek.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>(); Slike beholdere er prak?ske når de kan romme mer enn e< objekt.

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

Men har vi ikke sen dene før? HashMap<String, Hund> hunderegister = new HashMap<String, Hund> (); Neste gang skal vi lage en beholder for mange objekter (av samme type). class LenkeListe<T> jf. med java.upl.linkedlist<e>