Objekt-orientering og Java. Oppfriskning og videreføring av Java-kunnskaper

Størrelse: px
Begynne med side:

Download "Objekt-orientering og Java. Oppfriskning og videreføring av Java-kunnskaper"

Transkript

1 Objekt-orientering og Java Oppfriskning og videreføring av Java-kunnskaper

2 Forelesningen Gjennomgang av grunnleggende begreper Klasser og objekter Kjøretidsmodell Spesielle Java-temaer Informasjonsskjuling Teknikker for strukturering av Java-kode Konvensjoner Refactoring-teknikker

3 Objekter og klasser Objekter identitet: hvert objekt er unikt har en tilstand i form av felt innkapsling: tilgangen til tilstanden kan begrenses Klasser beskriver generelle trekk ved objekter mal for å lage nye objekter metoder for å se på og endre objektene klasser er også objekter: #f34d:c1 a = 1 o = #f350 C1:Class b = 2 o = #f34d har egen tilstand og egne metoder (og klasser!) Objekter har én klassetilhørighet livet gjennom Klassen definerer hva et objekt kan

4 Objekter og identitet hvert objekt er unikt tradisjonelt angitt med objektets adresse identiteten kan kun sammenlignes med andre testes med ==-operator, e.g. o1 == o2 støtter ikke adresse-aritmetikk <=, >= og +, - likt innhold betyr ikke lik identitet equals-metode, e.g.!.equals(s)!.equals(! ) er alltid sant! ==! kan være sant! vær varsom med egen equals-implementasjon a.equals(b) => b.equals(a) a.equals(b) => a.hashcode() == b.hashcode()

5 Identitet og referanser Object o2 #f34d:c a = 1 o = #f350 tilordning og parameteroverføring skjer ALLTID vha. referanser (ulikt C og C++) static boolean foo(object o1, Object o2) { return o1 == o2; String a = test, b = a; både foo(a, a) og foo(a, b) er da sanne referanser er begrenset til visse typer null referanse til ingenting! Object o2 e.g. (a!= null? a.foo() : false) alle objekt-variabler kan tilordnes/referer null-verdien

6 Søppel og søppeltømming Objekter tar plass hver type data tar en spesifikk mengde plass objektets plass er omtrent summen av feltene objekter er i live så lenge referanser finnes Søppeltømming referanser holder objekter i live : Object o1 = new Object(), o2 = o1; hva skjer når siste referanse forsvinner: o1 = null; /* her? */ o2 = null; /* her! */ søppeltømmeren (GC) kommer og tar den! Objekter tar plass og tømming tar tid

7 Ikke-objekt-verdier true c Såkalte immediate/direkte values tall (byte, int, float, double), brukes til aritmetikk tegn (char, e.g. c ), brukes i tekst og filbehandling sannhetsverdier (true, false), brukes i tester direkte verdier tar liten plass, ikke pekere, overføres direkte syntax for konstanter, e.g. 1, , c, true maskinnære representasjoner og raske operasjoner

8 Ikke-objekt-verdier true c Finnes også i objekt-drakt Integer: a = new Integer(1) => a.intvalue() == 1 ditto for Double/doubleValue(), Character/charValue(), Boolean: true == new Boolean(true).booleanValue() bruk Boolean.TRUE/FALSE når Boolean-objekter trengs Kan ikke endres, e.g. ikke støtte for new Integer(1).setIntValue(2) Objekt-varianten er nyttig når: trenger referanse til ingen verdi: null referanse til flere typer verdier: Object eller Number arrays (int[] vs. Integer[] og liste (List))

9 Arrays Deklarasjon <type>[] <variabel>; <type> <variabel>[]; Initialisering <variabel> = {<elt1>, <elt2>, <elt3>,...,; Tilordning <variabel> = new <type>[<n>]; <variabel> = new <type>[] { <elt1>, <elt2>, <elt3>,..., ; Referanse <variabel>[<n>] Casting (<subtype>[])(<variabel av type>) Integer i = ((Integer[ ])(objectarray))[0]; vs. Integer i = (Integer)((objectArray)[0]);

10 java.lang.string Hello world eller Hello world Strenger er objekter har identitet, lokal tilstand og metoder e.g. s1 == s2 => s1.equals(s2), ikke omvendt triks: hei.equals(s), ikke omvendt pga. null Men: strenger kan ikke endres s.charat(0), men ikke s.setcharat(0, c ) betyr at like strenger kan slås sammen: t == t Implisitt kreasjon av nye strenger uten new a + b gir ab gir 12 objekt: + s gir enten objekt: null eller objekt: + s.tostring()

11 String gir lett mye søppel java.lang.string er bygget på char[] Strenger lages automatisk av +-operator String result = ; for (int i = 0; i < 10; i++) result = result + Integer.toString(i); result.equals( ) er sant hver iterasjon lager nytt String-objekt og char[]! StringBuffer er et godt alternativ: StringBuffer buf = new StringBuffer(10); for (int i = 0; i < 10; i++) buf.append(i); String result = buf.tostring(); bruker mindre hukommelse og er raskere

12 Klasser og objekter Klasser beskriver objekter felt / attributter funksjoner / operasjoner / metoder Hvert objekt er av én klasse skapes med new <klasse>(<parametre>) klasse-objektet retureres av o.getclass() o = new <klasse>() => o instanceof <klasse> && o.getclass() == <klasse>.class nyttig ved debugging: System.out.println(o.getClass() + : + o); objekter kan ALDRI skifte klasse o må være!= null

13 Klasse og objekt... public class C1 { public int f1; public String f2; Klassedefinisjon Identitet og attributter Objekt Klasse #1234 : C1 f1 = 10 f2 = ti Refererer til felt med dott-notasjon: c1.f1 og c1.f2;

14 Arving en klasse kan bygge på en annen nye felt og metoder legges til metoder kan omdefineres objektene inneholder alle feltene C2 arver fra C1: o = new C2() => o instanceof C2 && o instanceof C1 Men: o.getclass() == C2.class variabler og referanser C1 o1 = new C1(); C2 o2 = new C2(); o1 = o2 er lov, men ikke o2 = o1 casting (ikke fiske) C1 o1 C2 o2 o1 = o2; o2 = (C2)o1; // lovlig sekvens!?! typisk: if (o instanceof C2) ((C2)o).foo(); #f34d:c2 f1 = 1 f2 = hei f3 = true #f34d:c1 f1 = 1 f2 = hei

15 Arving... superklassen public class C2 extends C1 { public boolean f3; Klassedefinisjon Objekt klasse #2468 : C2 f1 = 10 f2 = ti f3 = true C1-del C2-del

16 Arving... C1 o1 = new C1(); C1 o1 #2460 : C1 f1 = 10 f2 = ti C1 o2 = new C2(); C2 o3 = (C2)o2; C1 o2 C2 o3 #2468 : C2 f1 = 10 f2 = ti f3 = true kun C1-del er synlig gjennom o2 lov, siden o2 faktisk er C2 C2 o3 = (C2)o1; // ulovlig, gir ClassCastException

17 Konstruktor-metoder og -kall public class C1 { public int f1; public String f2; Klassedefinisjon og konstruktor public C1(int i, String s) { f1 = i; f2 = s; Identitet og attributter new C1(10, ti ); Konstruktor-kall og objekt #1234 : C1 f1 = 10 f2 = ti Først lages boksen av systemet, så kalles konstruktoren, som initialiserer feltene

18 public class C1 { public int f1; public String f2; public C1(int i, String s) { f1 = i; f2 = s; public C1(int i) { this(i,??? ); public C1(String s) { this(s.length());... konstruktor-metoder new C1(10, ti ); #1234 : C1 f1 = 10 f2 = ti new C1( 10 ); #1234 : C1 f1 = 2 f2 =??? new C1(10); #1234 : C1 f1 = 10 f2 =??? En konstruktor kan kalle en annen, vha. this(<parametre>)-konstruksjonen

19 Initialiseringskode Alternativ til konstruktorer class C1 { List l = new ArrayList(); String lstring = null; { l.add( en ); lstring = l.tostring(); Brukes typisk for å initialisere mer komplekse datastrukturer Kjøres automatisk før konstruktor-koden aktiveres initialisering av verdi, kun uttrykk/expressions generell kjørbar kode, kan referere til felt

20 Konstruktorer og arving public class C2 extends C1 { public boolean f3; Klassedefinisjon og konstruktor new C2(10, ti, true); Konstruktor-kall og objekt public C2(int i, String s, boolean b) { super(i, s); f3 = b; kall til superklassens konstruktor #2468 : C2 f1 = 10 f2 = ti f3 = true C1-del C2-del super-konstruktoren må kalles først, for å garantere gyldig tilstand

21 Metoder Funksjoner / operasjoner / metoder kode som utføre inni objektet <referanse>.<metodenavn>(<parametre>), e.g. o.tostring() tilsynelatende som referanse til felt (funksjon som feltverdi!) kan referere direkte til objektets tilstand public String tostring() { return f1= + f1 +, f2: + f2; new C1( 10 ).tostring() => f1=2, f2:??? public String tostring(string prefix) { return prefix + tostring();

22 Metoder forts. void foo(int delta) { f1 += delta; f3 =! f3; foo(1); void foo(int f1) { this.f1 = f1; f3 =! f3; foo(11); #2468 : C2 f1 = 10 f2 = ti f3 = true #2468 : C2 f1 = 11 f2 = ti f3 = false

23 Metoder... void foo(int f1) { this.f1 = f1; f3 =! f3; foo(11); #2468 : C2 f1 = 10 f2 = ti f3 = true foo : C2 this = #2468 f1 = 11 #2468 : C2 f1 = 10 f2 = ti f3 = true this foo f1 = 11

24 Metoder... Klasse A boolean b; bar(int i) { b = (i == 2); foo(int f) { bar(f+1) Klasse B foo(a a) { a.foo(1); : B : B : A b = : A b = true : A foo a = foo f = 1 bar i = 2 new B().foo(new A());

25 Metoder og arving class C1 { int f1 = 0; void foo(int delta) { f1+=delta; class C2 extends C1 { void foo(int delta) { f1+=delta; super.foo(delta); new C2().foo(2); super #2468 : C2 f1 = 0 foo = (int) foo = (int) this foo delta f1 =?

26 Metoder og arving... class C1 { void foo(int i) { bar(i); void bar(int i) {... class C2 extends C1 { void foo(int i) { super.foo(i); super.bar(i); void bar(int i) {... new C2().foo(2); foo : C2 i #2468 : C2 foo = (int) bar = (int) foo = (int) bar = (int) vs. foo : C1 i Sekvens: C2.foo, C1.foo, C2.bar, C1.bar

27 Polymorfi Metodesignatur typene til parametrene retur-verdien(?) eks. public void drawstring(string, int, int) Metodekall typene til parametrene må stemme med metodesignaturen f.eks. drawstring( Hello world, 10, 10+10) Automatiske konvertering av typer int til double og float s + o => s + o.tostring(), s + i => s + Integer.toString(i)

28 Polymorfi... Samme metodenavn, ulik signatur teknisk sett ulike metoder bør ha samme bruk public int parseint(string s, int base) {... og public int parseint(string s) { parseint(s, 10); tilsvarende for konstruktorer (<init>) Bruk når en vil unngå for mange ulike navnevariasjoner gjøre API er hendigere å bruke

29 Grensesnitt Metoder = garanti om evner Algoritmer formuleres vha. sett av metoder: dersom du kan dette, kan jeg gjøre... med deg et objekt har en rolle ift. algoritmen den egentlige klassen spiller ingen rolle, bare disse metodene er implementert Klassisk eksempel: sortering krever mulighet for skanning og sammenligning to typiske grensesnitt: List og Comparator List: int size, Object get, void add, void remove,... Comparator: int compare, boolean equals sorteringsalgoritmen trenger kun disse som støtte

30 Grensesnitt... Metoder krever: objekter som kan visse ting Objekter tilbyr: sett med metoder Interface-definisjoner samler relevante sett med metoder/evner klasser signaliserer at de implementerer dem objekter av klasser som implementerer List, kan brukes overalt hvor en List kreves en klasse kan implementere flere grensesnitt, dvs. inneha flere roller

31 Grensesnitt i Java public interface List { public int size(); public boolean contains(object o); public Object get(int i); public void set(int i, Object o); public interface Comparator { // o1 < o2 gir -1, o1 = o2 gir 0, og o1 > o2 gir 1 public int compare(object o1, Object o2); Collection.sort(List, Comparator);

32 Grensesnitt i Java... public class IntegerList implements List, Comparator { public int size() {... public boolean contains(object o) {... public Object get(int i) {... // egentlig Integer public void set(int i, Object o) {... // egentlig Integer public int compare(object o1, Object o2) { int i1 = ((Integer)o).intValue(), i2 = < (Integer)o).intValue(); if (i1 < i2) return -1; else if (i1 > i2) return 1; else return 0; IntegerList il = new IntegerList(); add(il,...); add (il,...),... Collections.sort(il, il); // sorter liste, med spesifikk sammenligning

33 Abstrakte klasser Deklarerer visse evner Implementerer dem ikke alle selv Kan ikke lage objekter fra klasse Delvis implementert klasse, subklasser må implementere resten Sier eksplisitt hvilke som mangler Kan arve metoder (forplikte seg), uten å implementere disse

34 Abstrakte klasser... public abstract class AbstractList implements List { public boolean contains(object o) { for (int i =0; i < size(); i++) if (get(i).equals(o)) return true; return false; // resten av metodene er implisitt abstrakte f.eks. public abstract int size(); // kun deklarasjon, ingen implementasjon... Grensesnitt tilsvarer abstrakt klasse med kun abstrakte metoder (Merk: implements vs. extends)

35 Grensesnitt-konstanter Arve av grensesnitt arv innebærer forpliktelse, ikke gjenbruk av kode sub-klasse i praksis uavhengig av grensesnitt Arv av konstanter grensesnitt kan deklarere konstanter av innebygde type (integer, char, etc.) konstantene kan nås gjennom sub-klasse Eks. SwingConstants LEFT/CENTER/RIGHT, TOP/MIDDLE/BOTTOM

36 Synlighet av navn Grensesnitt gir frihet til reimplementasjon uten endring av ytre forpliktelser Innkapsling skjul alt som utsiden ikke trenger å vite Mekanisme redusere synlighet av navn Kunst å la akkurat passe mye være synlig

37 Synlighet av navn... public navn er synlig for alle felt og metoder ut av klasse klasse ut av pakke(/klasse) implisitt i interface-definisjoner mål å redusere mengden public-navn reduserer frihet til å endre ting siden private navn er ikke synlig felt og metoder synes ikke utenfor klasse klasse synes ikke utenfor pakke(/klasse)

38 Synlighet av navn... protected navn er synlig for sub-klasser, via arv delvis eksponering av detaljer brukes ofte til hjelpemetoder, f.eks. vanlig i abstrakte klasser gir mulighet til mer effektive sub-klasser kan gi utilsiktede bindinger = pakke-privat navn inni klasse synlig for alle klasser i samme pakke brukes blant tett koblede klasser vanligvis ikke nødvendig

39 Pakker i Java Samler sammenhørende klasser Gjør det lettere å holde oversikt over store API er Hierarkisk pakke-struktur java.lang. - grunnleggende klasser f.eks. Integer, String java.util. nyttige hjelpeklasser, f.eks. List java.awt. gamle GUI-klasser (inkl. java.awt.event.) javax.swing. moderne GUI-klasser (javax angir java-utvidelse) javax.swing.tree klasser knyttet til JTree (men ikke JTree selv)... Tilsvarer mappestruktur Meget viktig filnavn = klassenavn mappe = pakke mappehierarki = pakkehierarki

40 Pakker i Java... En klasses egentlige navn inneholder pakkenavnet java.lang.string java.util.list javax.swing.jtree; To måter å referere til en klasse fullt navn, f.eks. java.lang.list kombinasjon av import og kortnavn import java.lang.list; List l = new java.util.arraylist(); import samles i toppen av fil (før klassedeklarasjonen) liste med import-setninger gir nyttig oversikt over avhengigheter importere hele pakker vha. import <pakkenavn>.*;

41 Jar-filer Java ARchive enkeltfil med mappestruktur inni innpakning av applikasjons pakkestruktur Kjøring av Java-applikasjon krever tilgang til mappestruktur med.class-filer (kompilerte java-filer) jar-fil med tilsvarende katalogstruktur CLASSPATH (eller classpath/cp direktiv) refererer til nødvendige mapper og jar-filer refererer til mappen som inneholder toppnivå-pakken må være komplett, slik at alle klasser kan lokaliseres java cp vips/classes;jar1.jar;jar2.jar vanlig at prosjektmappe inneholde src-mappe kompiler til classes-mappe

42 Static-modifikator 1. Klasse som mal for objekter identitet, feltverdier og initialiseringskode konstruktorer og metoder håndterer tilstanden 2. Klassen er også selv et objekt har navn, ikke identitet har felt og initialiseringskode har metoder, men ikke konstruktorer Static angir felt, kode og metoder av type 2 Kode kjører i kontekst av klasse, ikke objekt vanlige klasser er implisitt static

43 Static-modifikator... class C { private static List allcs = new ArrayList(); public C() { allcs.add(this); public static List getall() { return allcs; new C(); C.getAll().size() == 1; C:Class allcs = class #:ArrayList #:C

44 Nøstede klasser Klasser inni klasser klasse C1 er konteksten til klasse C2 to tilfeller, med eller uten static Static indre-klasse som vanlig klasse, men spesiell type synlighet dott-notasjon brukes for benevning C1.C2 objekt = new C1.C2(); greit å bruke for å samle kode i en fil

45 Indre-klasser Klasse (C2) definert inni annen klasse (C1) kode i C2 ser navn definert i C1 C2 arver ikke fra C1, men kan arve fra andre C2-objekter inneholder som vanlig egne og arvede egenskaper eksisterer alltid i konteksten av C1-objekt kan referere direkte eller indirekt til C1 sine egenskaper Bruksområder et objekt uløselig knyttet til ett annet objekt behov for å skjule klassen

46 Indre-klasser... public class C1 { String n = ; public C1(String s) { n = s; implisitt referanse til kontekst-objekt public class C2 { public C2() {... public getname() { return n; public C2 createc2() { return new C2(); #:C1 n = hal createc2 new C1( hal ).createc2().getname() => hal C1 #:C2 getname

47 Komplisert tilfelle public class C1 { String n = ; public C1(String s) { n = s; ser C1 fra to kanter #:C1 n = hal public class C2 extends C1 { public C2(String s) createc2 { super(s); public getname() { return this.c1.n + n; public C2 createc2(string n) { return new C2(n); kontekstuelt felt vs. arvet new C1( hal ).createc2( 9000 ).getname() => hal9000 this C1 #:C2 n = hal this getname

48 Anonyme indre-klasser Indre-klasse har annen klasse som kontekst arver (extends) eller implementerer (implements) annen klasse Anonym variant navnløs klasse defineres i konstruktor-kall direkte (re)implementasjon av metoder To typer bruk direkte implementasjon av grensesnitt variant av eksisterende (evt. abstrakt) klasse Svært hendig, men kan virke forkludrende

49 Anonyme indre-klasser... List l = new ArrayList();... Collection.sort(l, new Comparator() { // implementasjon av metode public int compare(object o1, Object o2) { return o1.tostring().compareto(o2); ); // vanlig å glemme

50 Anonyme indre-klasser... public class MyFrame extends JFrame { public MyFrame() { add(new JPanel() { public void paint(graphics g) { System.out.println( paint! ); )

51 Anonyme indre-klasser... public class MouseAdapter implements MouseListener { // dummy-metoder, gjør ingenting public void mousepressed(mouseevent event) { public void mousereleased(mouseevent event) { public void mouseclicked(mouseevent event) { public class MyPanel extends JPanel { public MyPanel() { addmouselistener(new MouseAdapter() { public void mouseclicked(mouseevent e) { System.out.println( Click! ); );

52 Anonyme indre-klasser... add(new JButton(new AbstractAction( OK ) { public void actionperformed(actionevent ae) { // alt som må gjøre // når OK-knappen trykkes )); Anonym klasse er indre-klasse inni annen klasse Kode-kroppen vil typisk kalle metoder i kontekstobjektet

53 Anonyme indre-klasser... public class MyPanel extends JPanel { public MyPanel() { add(new Button(new AbstractAction() {... )); public dook(actionevent ae) {... #:MyPanel dook = (ActionEvent) MyPanel #: AbstractAction actionperformed = (ActionEvent) this actionperformed

54 Anonyme indre-klasser... Anonyme indre-klasser kan også referere til kontekst-objektets felt variable definert i metoder (!) Disse må være deklarert som final, som garanterer at de ikke endres public void addbutton(final String s) { add(new Button(new AbstractAction(s) { public void actionperformed(actionevent ae) { dobutton(ae, s); )); public dobutton(actionevent ae, String s) { System.out.println(s + -knappen ble trykket ned );

55 Anonyme indre-klasser... Det er som om konteksten er metoden hvor den anonyme klassen er definert #:MyPanel dook = (ActionEvent) this addbutton s = OK MyPanel #: extends AbstractAction actionperformed = (ActionEvent) this actionperformed ae = ActionEvent

56 Anonyme indre-klasser... final-deklarasjonen sikrer at variabel-verdien kan kopieres og dermed overleve addbutton-kallet #:MyPanel dook = (ActionEvent) this addbutton s = OK MyPanel #: extends AbstractAction actionperformed = (ActionEvent) <kopi av> s = OK this actionperformed ae = ActionEvent

57 Strukturering av Java-kode Konvensjoner navngiving sammenhørede metoder Sunne strukturer lettere å forstå og jobbe med fleksible i bruk patterns

58 Navnekonvensjoner Feltnavn enkelt-objekter angis med entall arrays og lister angis med flertall Accessorer getter: lese felt x med getx() setter: sette felt x med setx(<type>) adder: legge til felt xs med addx(<type>) remover: fjerne fra xs med removex(<type>) Ekkel blanding av norsk og engelsk?

59 Navnekonvensjoner... Hendelser XEvent firexevent Lyttere XListener-klasse xchanged(xevent)-metode addxlistener-metode removexlistener-metode

60 Delegering Viktigste OO-prinsipp etter arv Moderne rammeverk bruker grensesnitt og delegering, i mindre grad arv Grunnidé: en logisk funksjon legges til ny klasse metoder kopieres over felt innføres, som refererer til ny klasse metoder delegerer til objekt Fordel logisk avgrensing av funksjon reduserer kompleksitet i klasse oppførsel kan endres ved kjøretid, ved å bytte instans

61 Delegering... Komponent har mange funksjoner hierarki hendelseshåndtering tegning av ramme og innhold Ny Border-klasse paintborder og getbordersize-metoder border-felt og get/setborder-metoder internt kalles border.paintborder Eller enda bedre Border-grensesnitt (og evt. AbstractBorder-klasse) Mange ulike Border-implementasjoner

62 Delegering... Grunnlag for MVC-arkitektur metoder for datahåndtering delegeres til Model-klasse metoder for rendering delegeres til View-klasse metoder for input delegeres til Controller-klasse Samles i åpent tilgjengelig klasse Tre grensesnitt, mange implementasjoner Grunnlag for Swing-komponenter, ikke rendyrket

Læringsmål for forelesningen

Læringsmål for forelesningen Læringsmål for forelesningen Objektorientering Bruk av grensesnitt og implementasjoner i Collection-klasser Java-prog, kap. 14-16 i Big Java Og side 990-997 i Appendix D Collection-rammeverket og iterasjon

Detaljer

Repitisjonskurs. Arv, Subklasser og Grensesnitt

Repitisjonskurs. Arv, Subklasser og Grensesnitt Repitisjonskurs Arv, Subklasser og Grensesnitt Subklasser Klasser i OO-programmering representerer typer av objekter som deler et sett med egenskaper. En subklasse har egenskapene til en klasse + ett sett

Detaljer

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

23.09.2015. Introduksjon til objektorientert. programmering. Hva skjedde ~1967? Lokale (og globale) helter. Grunnkurs i objektorientert. Grunnkurs i objektorientert programmering Introduksjon til objektorientert programmering INF1000 Høst 2015 Siri Moe Jensen INF1000 - Høst 2015 uke 5 1 Siri Moe Jensen INF1000 - Høst 2015 uke 5 2 Kristen

Detaljer

Kapittel 7: Mer om arv

Kapittel 7: Mer om arv Kapittel 7: Mer om arv Redigert av: Khalid Azim Mughal (khalid@ii.uib.no) Kilde: Java som første programmeringsspråk (3. utgave) Khalid Azim Mughal, Torill Hamre, Rolf W. Rasmussen Cappelen Akademisk Forlag,

Detaljer

Eksekveringsrekkefølgen (del 1) Oppgave 1. Eksekveringsrekkefølgen (del 2) Kommentar til oppgave 1. } // class Bolighus

Eksekveringsrekkefølgen (del 1) Oppgave 1. Eksekveringsrekkefølgen (del 2) Kommentar til oppgave 1. } // class Bolighus // class Bygning Oppgave 1 System.out.println( Bolighus ); // class Bolighus Hva blir utskriften fra dette programmet? class Blokk extends Bolighus{ // class Blokk IN105subclassesII-1 Eksekveringsrekkefølgen

Detaljer

class Book { String title; } class Dictionary extends Book { int wordcount; } class CartoonAlbum extends Book { int stripcount; }

class Book { String title; } class Dictionary extends Book { int wordcount; } class CartoonAlbum extends Book { int stripcount; } Arv Arv (eng: inheritance) er en mekanisme for å bygge videre på eksisterende klasser og regnes ofte som varemerket til objektorientert programmering. Når arv brukes riktig, kan den gjøre koden ryddigere

Detaljer

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

INF1010 våren 2008 Uke 4, 22. januar Arv og subklasser Emneoversikt subklasser INF1010 våren 2008 Uke 4, 22. januar Arv og subklasser Stein Gjessing Institutt for informatikk Mange flere eksempler på fellesøvelsene og neste forelesning 1 Generalisering - spesialisering

Detaljer

INF1000 Metoder. Marit Nybakken marnybak@ifi.uio.no 16. februar 2004

INF1000 Metoder. Marit Nybakken marnybak@ifi.uio.no 16. februar 2004 INF1000 Metoder Marit Nybakken marnybak@ifi.uio.no 16. februar 2004 Motivasjon Når man begynner å skrive store programmer, vil man fort oppleve at programmene blir uoversiktlige. Det blir vanskeligere

Detaljer

Arv. Book book1 = new Book(); book1. title = "Sofies verden" class Book { String title; } class Dictiona ry extends Book {

Arv. Book book1 = new Book(); book1. title = Sofies verden class Book { String title; } class Dictiona ry extends Book { Arv Arv (eng: inheritance) er en mekanisme for å bygge videre på eksisterende klasser og regnes ofte som varemerket til objektorientert programmering. Når arv brukes riktig, kan den gjøre koden ryddigere

Detaljer

13.09.2012 LITT OM OPPLEGGET. INF1000 EKSTRATILBUD Stoff fra uke 1-3 12. September 2012 Siri Moe Jensen EKSEMPLER

13.09.2012 LITT OM OPPLEGGET. INF1000 EKSTRATILBUD Stoff fra uke 1-3 12. September 2012 Siri Moe Jensen EKSEMPLER .9.22 LITT OM OPPLEGGET INF EKSTRATILBUD Stoff fra uke - 2. September 22 Siri Moe Jensen Målgruppe: De som mangler forståelse for konseptene gjennomgått så langt. Trening får du ved å jobbe med oppgaver,

Detaljer

Algoritmer og datastrukturer Kapittel 3 - Delkapittel 3.1

Algoritmer og datastrukturer Kapittel 3 - Delkapittel 3.1 Delkapittel 3.1 Grensesnittet Liste Side 1 av 11 Algoritmer og datastrukturer Kapittel 3 - Delkapittel 3.1 3.1 En beholder 3.1.1 En beholder En pappeske er en beholder En beholder er noe vi kan legge ting

Detaljer

Post-it spørsmål fra timen (Arv og subklasser)

Post-it spørsmål fra timen (Arv og subklasser) Post-it spørsmål fra timen 30.01 (Arv og subklasser) Tegning Spørsmål: Skjønte ikke tegningene Hater tegningene. Lær meg å tegne. Mvh frustrert elev. Spørsmål: Datastruktur-tegning, og hvor mye detaljer

Detaljer

EKSAMEN I FAG TDT4100 Objekt-orientert programmering. Fredag 3. juni 2005 KL. 09.00 13.00

EKSAMEN I FAG TDT4100 Objekt-orientert programmering. Fredag 3. juni 2005 KL. 09.00 13.00 Side 1 av 6 NTNU Norges teknisk-naturvitenskapelige universitet BOKMÅL Fakultet for informasjonsteknologi, matematikk og elektroteknikk Institutt for datateknikk og informasjonsvitenskap EKSAMEN I FAG

Detaljer

1- og 2-veis Innkapsling Java Stabel Kø Prio-kø Iterator. Enveis- og toveislister Innkapsling («boxing») (Big Java 6.8.5)

1- og 2-veis Innkapsling Java Stabel Kø Prio-kø Iterator. Enveis- og toveislister Innkapsling («boxing») (Big Java 6.8.5) Dagens tema Litt mer om vanlige lister Enveis- og toveislister Innkapsling («boxing») (Big Java 6.8.5) Nyttige varianter av lister: Stabler («stacks») (Big Java 15.5.1) Køer («queues») (Big Java 15.5.2)

Detaljer

2 Om statiske variable/konstanter og statiske metoder.

2 Om statiske variable/konstanter og statiske metoder. Litt om datastrukturer i Java Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo 1 Innledning Dette notatet beskriver noe av det som foregår i primærlageret når et Javaprogram utføres.

Detaljer

INF1010 Arv. Marit Nybakken marnybak@ifi.uio.no 2. februar 2004

INF1010 Arv. Marit Nybakken marnybak@ifi.uio.no 2. februar 2004 INF1010 Arv Marit Nybakken marnybak@ifi.uio.no 2. februar 2004 Motivasjon Arv bruker vi så vi skal slippe å skrive oss i hjel. Når vi programmerer, prøver vi gjerne å modellere en del av verden ved hjelp

Detaljer

Læringsmål for forelesningen

Læringsmål for forelesningen Læringsmål for forelesningen Objektorientering Abstrakte klasser og grensesnitt, redefinering av metoder Java-programmering Arv og bruk av abstrakte klasser Eclipse Undersøke instanser i Eclipse 1 Dagens

Detaljer

1- og 2-veis Innkapsling Java Stabel Kø Prio-kø Iterator. Enveis- og toveislister Innkapsling («boxing») (Big Java 6.8.5)

1- og 2-veis Innkapsling Java Stabel Kø Prio-kø Iterator. Enveis- og toveislister Innkapsling («boxing») (Big Java 6.8.5) Dagens tema Litt mer om vanlige lister Enveis- og toveislister Innkapsling («boxing») (Big Java 6.8.5) Nyttige varianter av lister: Stabler («stacks») (Big Java 15.5.1) Køer («queues») (Big Java 15.5.2)

Detaljer

Algoritmer og datastrukturer Kapittel 11 - Delkapittel 11.2

Algoritmer og datastrukturer Kapittel 11 - Delkapittel 11.2 Algoritmer og datastrukturer Kapittel 11 - Delkapittel 11.2 11.2 Korteste vei i en graf 11.2.1 Dijkstras metode En graf er et system med noder og kanter mellom noder. Grafen kalles rettet Notasjon Verdien

Detaljer

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

Innhold uke 4. INF 1000 høsten 2011 Uke 4: 13. september. Deklarasjon av peker og opprettelse av arrayobjektet. Representasjon av array i Java INF høsten 2 Uke 4: 3. september Grunnkurs i Objektorientert Programmering Institutt for Informatikk Universitetet i Oslo Siri Moe Jensen og Arne Maus Mål for uke 4: Innhold uke 4 Repetisjon m/ utvidelser:

Detaljer

Oppsummering. Kort gjennomgang av klasser etc ved å løse halvparten av eksamen Klasser. Datastrukturer. Interface Subklasser Klasseparametre

Oppsummering. Kort gjennomgang av klasser etc ved å løse halvparten av eksamen Klasser. Datastrukturer. Interface Subklasser Klasseparametre Oppsummering Kort gjennomgang av klasser etc ved å løse halvparten av eksamen 2012. Klasser Interface Subklasser Klasseparametre Datastrukturer Hva er problemet? Oppgaven Emballasjefabrikken Renpakk skal

Detaljer

EKSAMEN I FAG TDT4100 Objektorientert programmering. Fredag 2. juni 2006 Kl. 09.00 13.00

EKSAMEN I FAG TDT4100 Objektorientert programmering. Fredag 2. juni 2006 Kl. 09.00 13.00 Side 1 av 13 NTNU Norges teknisk-naturvitenskapelige universitet BOKMÅL Fakultet for informasjonsteknologi, matematikk og elektroteknikk Institutt for datateknikk og informasjonsvitenskap EKSAMEN I FAG

Detaljer

Introduksjon til objektorientert programmering

Introduksjon til objektorientert programmering Introduksjon til objektorientert programmering Samt litt mer om strenger og variable INF1000, uke6 Ragnhild Kobro Runde Grunnkurs i objektorientert programmering Strategi: Splitt og hersk Metoder kan brukes

Detaljer

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

Konstruktører. Bruk av konstruktører når vi opererer med enkle klasser er ganske ukomplisert. Når vi skriver. skjer følgende: Konstruktører Bruk av konstruktører når vi opererer med "enkle" klasser er ganske ukomplisert. Når vi skriver Punkt p = new Punkt(3,4); class Punkt { skjer følgende: int x, y; 1. Det settes av plass i

Detaljer

IN1010 våren 2018 Tirsdag 15. mai. Repetisjon av subklasser og tråder. Stein Gjessing Institutt for informatikk Universitetet i Oslo

IN1010 våren 2018 Tirsdag 15. mai. Repetisjon av subklasser og tråder. Stein Gjessing Institutt for informatikk Universitetet i Oslo IN1010 våren 2018 Tirsdag 15. mai Repetisjon av subklasser og tråder Stein Gjessing Institutt for informatikk Universitetet i Oslo 1 Klassehierarki: Personbil Bil Klasser - Subklasser class Bil {

Detaljer

INF1010 våren 2016. Arv og subklasser - del 2

INF1010 våren 2016. Arv og subklasser - del 2 INF1010 våren 2016 Onsdag 10. februar Arv og subklasser - del 2 pluss litt om feil og unntak hvis tid Stein Gjessing Institutt for informatikk Dagens tema Virtuelle metoder som er det samme som Polymorfi

Detaljer

Gjennomgang av eksamen H99

Gjennomgang av eksamen H99 Gjennomgang av eksamen H99 Administrasjon av kurser, studenter og påmeldinger Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for Informatikk Universitetet i Oslo Oppgave 1 (15 %) (Besvares

Detaljer

INF Notater. Veronika Heimsbakk 10. juni 2012

INF Notater. Veronika Heimsbakk 10. juni 2012 INF1010 - Notater Veronika Heimsbakk veronahe@student.matnat.uio.no 10. juni 2012 1 Tilgangsnivåer 2 CompareTo Modifier Class Package Subclass World public Y Y Y Y protected Y Y Y N no modifier Y Y N N

Detaljer

INF1010 - Seminaroppgaver til uke 3

INF1010 - Seminaroppgaver til uke 3 INF1010 - Seminaroppgaver til uke 3 Oppgave 1 I denne oppgaven skal vi lage et klassehiearki av drikker. Alle klassene i hiearkiet skal implementere følgende grensesnitt p u b l i c i n t e r f a c e Drikkbar

Detaljer

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring AITeL

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring AITeL HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring AITeL Delprøve Kandidatnr: Prøvedato: 2. mars 2005 Varighet: 3 timer (9:00 12:00) Fagnummer: LO196D Fagnavn: Videregående programmering med

Detaljer

UNIVERSITETET I BERGEN Det matematisk-naturvitenskapelige fakultet

UNIVERSITETET I BERGEN Det matematisk-naturvitenskapelige fakultet UNIVERSITETET I BERGEN Det matematisk-naturvitenskapelige fakultet Eksamen i emnet INF101/INF101-F - Programmering 2 Fredag 10. juni 2011, kl. 09-14 Bokmål Tillatte hjelpemidler: alle skrevne og trykte.

Detaljer

Algoritmer og Datastrukturer

Algoritmer og Datastrukturer Eksamen i Algoritmer og Datastrukturer IAI 21899 Høgskolen i Østfold Avdeling for informatikk og automatisering Torsdag 3. november 2, kl. 9. - 14. Hjelpemidler: Alle trykte og skrevne hjelpemidler. Kalkulator.

Detaljer

En klasse som arver, eller selv deklarerer en abstrakt metode, må deklareres som abstrakt.

En klasse som arver, eller selv deklarerer en abstrakt metode, må deklareres som abstrakt. Polymorfi og arv, del 3 Repetisjon Eksempel Modifikatoren final Interface som grensesnitt, ge klassene som implementasjon LC191D Videregående programmering Semesterplan: http://aitel.hist.no/fag/vprg/index_lc191d.php

Detaljer

INF1010 våren februar. Arv og subklasser, del 2

INF1010 våren februar. Arv og subklasser, del 2 INF1010 våren 2009 3. februar Arv og subklasser, del 2 En forsmak på interface (grensesnitt) Stein Gjessing Repetisjon Vi har sett to former for gjenbruk av klasser: Gammel: Ved sammensetning (komposisjon)

Detaljer

LC191D/LO191D Videregående programmering mai 2010

LC191D/LO191D Videregående programmering mai 2010 LC191D/LO191D Videregående programmering mai 2010 Løsningsforslag Oppgave 1 Transporttype er en tekst som er felles for klassene AnnenEgenTransport og Kollektivtransport. Vi legger den derfor i klassen

Detaljer

INF1010 våren februar. Arv og subklasser, del 2. Repetisjon. Repetisjon - Biler. Repetisjon: Klasser - Subklasser

INF1010 våren februar. Arv og subklasser, del 2. Repetisjon. Repetisjon - Biler. Repetisjon: Klasser - Subklasser INF1010 våren 2009 3. februar Arv og subklasser, del 2 En forsmak på interface (grensesnitt) Stein Gjessing Repetisjon Vi har sett to former for gjenbruk av klasser: Gammel: Ved sammensetning (komposisjon)

Detaljer

Kapittel 9: Sortering og søking Kort versjon

Kapittel 9: Sortering og søking Kort versjon Kapittel 9: Sortering og søking Kort versjon Redigert av: Khalid Azim Mughal (khalid@ii.uib.no) Kilde: Java som første programmeringsspråk (3. utgave) Khalid Azim Mughal, Torill Hamre, Rolf W. Rasmussen

Detaljer

2 Om statiske variable/konstanter og statiske metoder.

2 Om statiske variable/konstanter og statiske metoder. Gaustadbekkdalen, januar 22 Litt om datastrukturer i Java Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo Innledning Dette notatet beskriver noe av det som foregår i primærlageret når

Detaljer

Det finnes ingenting. som kan gjøres med interface. men som ikke kan gjøres uten

Det finnes ingenting. som kan gjøres med interface. men som ikke kan gjøres uten Interface, Abstract Class... i-120 : H-98 2a. Abstraksjon i JAVA: 1 Det finnes ingenting som kan gjøres med interface i-120 : H-98 2a. Abstraksjon i JAVA: 2 som kan gjøres med bruk av unntak i-120 : H-98

Detaljer

TOD063 Datastrukturer og algoritmer

TOD063 Datastrukturer og algoritmer TOD063 Datastrukturer og algoritmer Øving : 3 Utlevert : Uke 7 Innleveringsfrist : 26. februar 2010 Klasse : 1 Data og 1 Informasjonsteknologi Gruppearbeid: 2-3 personer pr. gruppe. Oppgave 1 Vi skal lage

Detaljer

INF1010 våren 2014. Arv og subklasser - del 2

INF1010 våren 2014. Arv og subklasser - del 2 INF1010 våren 2014 Onsdag 19. februar Arv og subklasser - del 2 Stein Gjessing Institutt for informatikk Dagens tema Virtuelle metoder som er det samme som Polymorfi Mer om arv / interface Mer om pekertilordninger

Detaljer

INF1000: Forelesning 7

INF1000: Forelesning 7 INF1000: Forelesning 7 Klasser og objekter del 2 Konstruktører Static UML REPETISJON 2 Repetisjon Repetisjon forts. Verden består av objekter av ulike typer (klasser). Ofte er det mange objekter av en

Detaljer

INF1000: Forelesning 7. Konstruktører Static

INF1000: Forelesning 7. Konstruktører Static INF1000: Forelesning 7 Klasser og objekter del 2 Konstruktører Static UML REPETISJON 2 Repetisjon Verden består av objekter av ulike typer (klasser). Ofte er det mange objekter av en bestemt type. Objekter

Detaljer

Læringsmål for forelesningen

Læringsmål for forelesningen Læringsmål for forelesningen Objektorientering Delegeringsteknikken Delegering vs. arv 1 Dagens forelesning Introduksjon og motivasjon Hvorfor forelese om standardteknikker, såkalte patterns? Hva slags

Detaljer

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

INF1000 EKSTRATILBUD. Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen INF1000 EKSTRATILBUD Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen PLAN FOR DAGEN gjennomgå stoff fra uke 1-5(6), men med en litt annen tilnærming kun gjennomgått stoff, men vekt på konsepter og

Detaljer

BOKMÅL Side 1 av 7. KONTINUASJONSEKSAMEN I FAG TDT4100 Objektorientert programmering / IT1104 Programmering, videregående kurs

BOKMÅL Side 1 av 7. KONTINUASJONSEKSAMEN I FAG TDT4100 Objektorientert programmering / IT1104 Programmering, videregående kurs BOKMÅL Side 1 av 7 NTNU Norges teknisk-naturvitenskapelige universitet Fakultet for informasjonsteknologi, matematikk og elektroteknikk Institutt for datateknikk og informasjonsvitenskap KONTINUASJONSEKSAMEN

Detaljer

Dagens tema: Mer av det dere trenger til del 1

Dagens tema: Mer av det dere trenger til del 1 Dagens tema Dagens tema: Mer av det dere trenger til del 1 Hvilke klasser trenger vi? Uttrykk Typer Testutskrifter 12 gode råd Dagens tema Prosjektet Utifra dette AlboC-programmet: int pot2 (int x) { int

Detaljer

NB!!! Veldig korte svar er gitt her. Disse burde det vært skrevet mer på ved en eksamen..

NB!!! Veldig korte svar er gitt her. Disse burde det vært skrevet mer på ved en eksamen.. Løsningsforslag Eksamen V2007 Oppgave 1 NB!!! Veldig korte svar er gitt her. Disse burde det vært skrevet mer på ved en eksamen.. Oppgave 1.1 Klasse som pakke rinne n primitiv datatype, slik at vi kan

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Side 1 Det matematisk-naturvitenskapelige fakultet Eksamen i: INF1010 Objektorientert programmering Eksamensdag: Onsdag 4. juni 2014 Tid for eksamen: 9:00-15:00 Oppgavesettet er på

Detaljer

< T extends Comparable<T> > Indre klasser mm. «Det du bør ha hørt om før oblig 4»

< T extends Comparable<T> > Indre klasser mm. «Det du bør ha hørt om før oblig 4» < T extends Comparable > Indre klasser mm. «Det du bør ha hørt om før oblig 4» Strukturen i oblig 3 null null null null Personbeholder pl null null Person p "Adnan" michael@ifi.uio.no INF1010 21. februar

Detaljer

INF1010 Grafisk brukergrensesni3 med Swing og awt del 1 INF1010

INF1010 Grafisk brukergrensesni3 med Swing og awt del 1 INF1010 Grafisk brukergrensesni3 med Swing og awt del 1 GUI (Graphical User Interface)- programmering Hvordan lage et vindu på skjermen Hvordan legge ulike komponenter i vinduet (trykknapper, tekseelter, tekst,

Detaljer

Løsningsforslag Test 2

Løsningsforslag Test 2 Løsningsforslag Test 2 Oppgave 1.1: Interface definerer et grensesnitt som kan implementeres av flere klasser. Dette gir en standardisert måte å kommunisere med objekter av en eller flere relaterte klasser.

Detaljer

Kapittel 8: Programutvikling

Kapittel 8: Programutvikling Kapittel 8: Programutvikling Redigert av: Khalid Azim Mughal (khalid@ii.uib.no) Kilde: Java som første programmeringsspråk (3. utgave) Khalid Azim Mughal, Torill Hamre, Rolf W. Rasmussen Cappelen Akademisk

Detaljer

3 emner i dag! INF1000 Uke 5. Objekter og pekere. null. Litt om objekter, pekere og null Filer og easyio Litt mer om tekster

3 emner i dag! INF1000 Uke 5. Objekter og pekere. null. Litt om objekter, pekere og null Filer og easyio Litt mer om tekster 3 emner i dag! INF1000 Uke 5 Litt om objekter, pekere og null Filer og easyio Litt mer om tekster Litt om objekter, filer med easyio, tekst 1 2 Objekter og pekere Vi lager pekere og objekter når vi bruker

Detaljer

Forelesning inf Java 5

Forelesning inf Java 5 Ole Chr. Lingjærde 1 Forelesning inf1000 - Java 5 Tema: Mer om metoder 2D-arrayer String Ole Christian Lingjærde, 26. september 2013 Ole Chr. Lingjærde Institutt for informatikk, 26. september 2013 1 Strukturen

Detaljer

Programmeringsspråk for nybegynnere. Krav til språket. Krav til språket. Krav til språket

Programmeringsspråk for nybegynnere. Krav til språket. Krav til språket. Krav til språket Programmeringsspråk for nybegynnere Krav til språket Hva om vi laget vårt eget språk til INF1000? Programmeringsspråket må være så enkelt som mulig. (Programmering er vanskelig nok som det er.) Hvilke

Detaljer

Forelesning inf Java 5

Forelesning inf Java 5 Forelesning inf1000 - Java 5 Tema: Mer om metoder 2D-arrayer String Ole Christian Lingjærde, 26. september 2013 Ole Chr. Lingjærde Institutt for informatikk, 26. september 2013 1 Strukturen til et Java-program

Detaljer

Løsningsforslag ukeoppg. 9: 19. - 25. okt (INF1000 - Høst 2011)

Løsningsforslag ukeoppg. 9: 19. - 25. okt (INF1000 - Høst 2011) Løsningsforslag ukeoppg. 9: 19. - 25. okt (INF1000 - Høst 2011) HashMap, innstikksortering, javadoc (kap. 9.1-9.11, m.m. i "Rett på Java" 3. utg.) NB! Legg merke til at disse er løsningsforslag. Løsningene

Detaljer

I dag. Rep: Oppsummering - variabler. Rep: Datatyper. INF1000 (Uke 3) Mer om uttrykk, terminal I/O, forgreninger

I dag. Rep: Oppsummering - variabler. Rep: Datatyper. INF1000 (Uke 3) Mer om uttrykk, terminal I/O, forgreninger I dag INF1000 (Uke 3) Mer om uttrykk, terminal I/O, forgreninger Grunnkurs i programmering Institutt for Informatikk Universitet i Oslo Litt repetisjon Mer om uttrykk Lesing og skriving til terminal Forgreninger

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO Eksamen i UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamensdag: 15. desember 2010 Tid for eksamen: 14.30 18.30 Oppgavesettet er på 8 sider. Vedlegg: Tillatte hjelpemidler: INF2220

Detaljer

Tittel Objektorientert systemutvikling 1. Eksamenstid, fra-til 09.00-12.00 Ant. oppgaver 6

Tittel Objektorientert systemutvikling 1. Eksamenstid, fra-til 09.00-12.00 Ant. oppgaver 6 EKSAMENSFORSIDE Fagnr. OBJ208a Tittel Objektorientert systemutvikling 1 Ansvarlig faglærer Viggo Holmstedt Klasse(r) IS 2 og IN 2 Eksamensoppgaven består av følgende: Tillatte hjelpemidler: Dato 17.12.2008

Detaljer

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister Dagens tema Lister og generiske klasser, del I Array-er og ArrayList (Big Java 6.1 & 6.8) Ulike lagringsformer (Collection) i Java (Big Java 15.1) Klasser med typeparametre («generiske klasser») (Big Java

Detaljer

OPPGAVE 5b og 8b Java Kode

OPPGAVE 5b og 8b Java Kode OPPGAVE 5b og 8b Java Kode public class Kant boolean behandlereturavbil() BehandleReturAvBil behandler = new BehandleReturAvBil(this); String regnr; int kmstand, tanknivaa; boolean erskadet; // 1: Få verdiene

Detaljer

ADT og OO programmering

ADT og OO programmering ADT og OO programmering I. ADT I JAVA - INTERFACE I.1 grensesnitt skal dokumenteres Javadoc I.2 bruk av interface I.3 implementasjoner av interface II. OO II.1 Arv av type og implementasjon II.2 Abstrakte

Detaljer

IN1010 våren januar. Objektorientering i Java

IN1010 våren januar. Objektorientering i Java IN1010 våren 2018 23. januar Objektorientering i Java Om enhetstesting Om arrayer og noen klasser som kan ta vare på objekter Stein Gjessing Hva er objektorientert programmering? F.eks: En sort boks som

Detaljer

Forklaring til programmet AbstraktKontoTest.java med tilhørende filer Konto.java, KredittKonto.java, SpareKonto.java

Forklaring til programmet AbstraktKontoTest.java med tilhørende filer Konto.java, KredittKonto.java, SpareKonto.java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 Forklaring til programmet AbstraktKontoTest.java med tilhørende

Detaljer

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

INF1010, 21. februar Om å gå gjennom egne beholdere (iteratorer) Stein Gjessing Inst. for Informatikk Universitetet i Oslo INF1010, 21. februar 2013 Om å gå gjennom egne beholdere (iteratorer) Stein Gjessing Inst. for Informatikk Universitetet i Oslo Ikke noe nytt her From the Java language specification (version 6): 14.14.2

Detaljer

Algoritmer og datastrukturer Kapittel 9 - Delkapittel 9.2

Algoritmer og datastrukturer Kapittel 9 - Delkapittel 9.2 Delkapittel 9.2 Rød-svarte og 2-3-4 trær Side 1 av 16 Algoritmer og datastrukturer Kapittel 9 - Delkapittel 9.2 9.2 Rød-svarte og 2-3-4 trær 9.2.1 B-tre av orden 4 eller 2-3-4 tre Et rød-svart tre og et

Detaljer

INF1000: Forelesning 6. Klasser og objekter del 1

INF1000: Forelesning 6. Klasser og objekter del 1 INF1000: Forelesning 6 Klasser og objekter del 1 OBJEKTER SOM EN PROGRAMMERINGS-TEKNIKK 2 Motivasjon Anta at vi ønsker å lage et studentregister hvor vi for hver student lagrer navn, brukernavn og telefonnummer.

Detaljer

Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo

Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo Gaustadbekkdalen, januar 27 Litt om datastrukturer i Java Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo Innledning Dette notatet beskriver noe av det som foregår inne i primærlageret

Detaljer

INF1010 våren Arv og subklasser del 1

INF1010 våren Arv og subklasser del 1 INF1010 våren 2015 Torsdag 12. februar Arv og subklasser del 1 Stein Gjessing Institutt for informatikk Universitetet i Oslo 1 Når du har lært om subklasser kan du programmere med: Første uke: Spesialisering

Detaljer

EKSAMEN I FAG TDT4100 Objektorientert programmering. Fredag 6. juni 2008 Kl. 09.00 13.00

EKSAMEN I FAG TDT4100 Objektorientert programmering. Fredag 6. juni 2008 Kl. 09.00 13.00 NTNU Norges teknisknaturvitenskapelige universitet Side 1 av 11 Fakultet for informasjonsteknologi, matematikk og elektroteknikk Institutt for datateknikk og informasjonsvitenskap BOKMÅL EKSAMEN I FAG

Detaljer

OBJEKTER SOM EN PROGRAMMERINGS-TEKNIKK

OBJEKTER SOM EN PROGRAMMERINGS-TEKNIKK INF1000: Forelesning 6 Klasser og objekter del 1 OBJEKTER SOM EN PROGRAMMERINGS-TEKNIKK Motivasjon Anta at vi ønsker å lage et studentregister hvor vi for hver student lagrer, bruker og telefonnummer Med

Detaljer

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; }

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; } 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; Hva skrives ut på skjermen når følgende kode utføres? int [] tallene =

Detaljer

INF Våren Li' repe$sjon om Tråder og GUI. Stein Gjessing, Ins$tu' for informa$kk, Universitetet i Oslo. Ins$tu' for informa$kk

INF Våren Li' repe$sjon om Tråder og GUI. Stein Gjessing, Ins$tu' for informa$kk, Universitetet i Oslo. Ins$tu' for informa$kk INF1010 - Våren 2015 Li' repe$sjon om Tråder og GUI Stein Gjessing,, Universitetet i Oslo 1 GUI, tråder og hendelser Op-sys (Win, Linux,..) Ditt Program sin Event Dispatch Thread Hver ting brukeren gjør

Detaljer

Algoritmer og datastrukturer A.1 Filbehandling på bit-nivå

Algoritmer og datastrukturer A.1 Filbehandling på bit-nivå Vedlegg A.1 Filbehandling på bit-nivå Side 1 av 9 Algoritmer og datastrukturer A.1 Filbehandling på bit-nivå A.1 Filbehandling på bit-nivå A.1.1 Sammendrag Klassen BitInputStream gjør det mulig å lese

Detaljer

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

Forkurs INF1010. Dag 3. Andreas Færøvig Olsen Gard Inge Rosvold Institutt for Informatikk, 15. Forkurs INF1010 Dag 3 Andreas Færøvig Olsen (andrefol@ifi.uio.no) Gard Inge Rosvold (gardir@ifi.uio.no) Institutt for Informatikk, 15. januar 2016 Forkurs INF1010 - dag 3 Strenger 2 Forkurs INF1010 - dag

Detaljer

INF1000 HashMap. Marit Nybakken marnybak@ifi.uio.no 2. november 2003

INF1000 HashMap. Marit Nybakken marnybak@ifi.uio.no 2. november 2003 INF1000 HashMap Marit Nybakken marnybak@ifi.uio.no 2. november 2003 Dette dokumentet skal tas med en klype salt og forfatteren sier fra seg alt ansvar. Dere bør ikke bruke definisjonene i dette dokumentet

Detaljer

LO191D/LC191D Videregående programmering

LO191D/LC191D Videregående programmering LO191D/LC191D Videregående programmering Eksamen mai 2012 Løsningsforslag Oppgave 1 Klassen Destinasjon: // Oppgaven er uklar på hva som skal inn i klassen Destinasjon. // Her følger en minimumsutgave

Detaljer

Norges Informasjonsteknologiske Høgskole

Norges Informasjonsteknologiske Høgskole Oppgavesettet består av 6 (seks) sider. Norges Informasjonsteknologiske Høgskole PG4200 Algoritmer og datastrukturer Side 1 av 6 Tillatte hjelpemidler: Ingen Varighet: 3 timer Dato: 6. august 2014 Fagansvarlig:

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO Side 1 UNIVERSITETET I OSLO Kandidatnr Det matematisk-naturvitenskapelige fakultet LØSNINGSFORSLAG Eksamen i: PRØVEEKSAMEN INF1000 Eksamensdag: Prøveeksamen 22.11.2011 Tid for eksamen: 12:15-16:15 Oppgavesettet

Detaljer

Eksamen Oppgave a) public class DayTime { public final int hours, minutes;

Eksamen Oppgave a) public class DayTime { public final int hours, minutes; Eksamen 2012 Del 1 - Innkapsling (20%) Gitt følgende klasse, som representerer et tidspunkt på dagen: public class DayTime { public final int hours, minutes; public DayTime(int hours, int minutes) { this.hours

Detaljer

Kapittel 5: Objektkommunikasjon

Kapittel 5: Objektkommunikasjon Kapittel 5: Objektkommunikasjon Redigert av: Khalid Azim Mughal (khalid@ii.uib.no) Kilde: Java som første programmeringsspråk (3. utgave) Khalid Azim Mughal, Torill Hamre, Rolf W. Rasmussen Cappelen Akademisk

Detaljer

INF1010. Stein Michael Storleer (michael) Lenkelister

INF1010. Stein Michael Storleer (michael) Lenkelister INF1010 Stein Michael Storleer (michael) Lenkelister Lenke Datastrukturen lenkeliste class { = null ; foran foran = new () ; class { = null ; foran foran = new () ; foran. = new () ; class { = null ; foran

Detaljer

Læringsmål for forelesningen

Læringsmål for forelesningen Læringsmål for forelesningen Objektorientering Håndtering av unntak (eng: exceptions) Java-programmering Håndtering av unntak Exception-objekter og klasser try, catch og finally throw og throws Eclipse

Detaljer

TDT4100 Objektorientert programmering

TDT4100 Objektorientert programmering Eksamensoppgave i TDT4100 Objektorientert programmering Torsdag 12. august 2010, kl. 09:00-13:00 Oppgaven er utarbeidet av faglærer Hallvard Trætteberg og kvalitetssikret av Svein Erik Bratsberg. Kontaktperson

Detaljer

TDT4100 Objektorientert programmering

TDT4100 Objektorientert programmering Eksamensoppgave i TDT4100 Objektorientert programmering Mandag 6. august 2012, kl. 15:00-19:00 Oppgaven er utarbeidet av faglærer Hallvard Trætteberg og kvalitetssikrer Rune Sætre. Kontaktperson under

Detaljer

29.02.2012. GUI-programmering, del 3 Vinduslyttere Dialogvinduer GUI-komponenten JTable Egne datamodellklasser. En oversikt over kapittel 19 i boka

29.02.2012. GUI-programmering, del 3 Vinduslyttere Dialogvinduer GUI-komponenten JTable Egne datamodellklasser. En oversikt over kapittel 19 i boka GUI-programmering, del 3 Vinduslyttere Dialogvinduer GUI-komponenten JTable Egne datamodellklasser LC191D Videregående programmering Semesterplan: http://aitel.hist.no/fag/vprg/index_lc191d.php Høgskolen

Detaljer

Java-kurs. Andreas Knudsen <andreakn@idi.ntnu.no> Nils Grimsmo <nilsgri@idi.ntnu.no> 9th October 2003

Java-kurs. Andreas Knudsen <andreakn@idi.ntnu.no> Nils Grimsmo <nilsgri@idi.ntnu.no> 9th October 2003 Java-kurs Andreas Knudsen Nils Grimsmo 9th October 2003 1 (Dette blir lagt ut på nett, du trenger ikke ta notater.) 1 Motivasjon For de som ikke går å data:

Detaljer

Generiske mekanismer i statisk typede programmeringsspråk

Generiske mekanismer i statisk typede programmeringsspråk Generiske mekanismer i statisk typede programmeringsspråk Dette stoffet er Pensum, og det er bare beskrevet her Mye her er nok kjent stoff for mange INF5110 7. mai 2013 Stein Krogdahl 1 Hvordan kunne skrive

Detaljer

MED TIDESTIMATER Løsningsforslag

MED TIDESTIMATER Løsningsforslag Oppgavesettet består av 12 (mange) sider. Norges Informasjonsteknologiske Høgskole PG4200 Algoritmer og datastrukturer Side 1 av 12 Tillatte hjelpemidler: Ingen Varighet: 3 timer Dato: 6. august 2014 Fagansvarlig:

Detaljer

Mål med kurset. Java i INF 2400. Dagens tema. GUI med Swing. Dokumentasjon

Mål med kurset. Java i INF 2400. Dagens tema. GUI med Swing. Dokumentasjon Mål med kurset Java i INF 2400 Introduksjon til signalbehandling Lyd som anvendelse Få programmeringserfaring Dagens tema Utplukk av Java (GUI, kode-konvensjon, polymorfisme, classpath, javadoc) Java og

Detaljer

Løsningsforslag EKSAMEN

Løsningsforslag EKSAMEN 1 Løsningsforslag EKSAMEN Emnekode: ITF20006 000 Dato: 18. mai 2012 Emne: Algoritmer og datastrukturer Eksamenstid: 09:00 til 13:00 Hjelpemidler: 8 A4-sider (4 ark) med egne notater Faglærer: Gunnar Misund

Detaljer

Plan: Parameter-overføring Alias Typer (Ghezzi&Jazayeri kap.3 frem til 3.3.1) IN 211 Programmeringsspråk

Plan: Parameter-overføring Alias Typer (Ghezzi&Jazayeri kap.3 frem til 3.3.1) IN 211 Programmeringsspråk Plan: Parameter-overføring Alias Typer (Ghezzi&Jazayeri kap.3 frem til 3.3.1) Funksjonelle språk (Ghezzi&Jazayeri kap.7 frem til 7.4) Neste uke: ML Ark 1 av 16 Forelesning 16.10.2000 Parameteroverføring

Detaljer

INF1010 våren Arv og subklasser del 1

INF1010 våren Arv og subklasser del 1 INF1010 våren 2016 Torsdag 4. februar Arv og subklasser del 1 Stein Gjessing Institutt for informatikk Universitetet i Oslo 1 Når du har lært om subklasser kan du programmere med: Første uke: Spesialisering

Detaljer

Innhold uke 7. Objektorientert programmering i Python: Introduksjon. Lite tilbakeblikk: Programflyt og skop. Lite tilbakeblikk: Funksjoner er uttrykk

Innhold uke 7. Objektorientert programmering i Python: Introduksjon. Lite tilbakeblikk: Programflyt og skop. Lite tilbakeblikk: Funksjoner er uttrykk Innhold uke 7 Objektorientert programmering i Python: Introduksjon IN1000 Høst 2017 uke 7 Siri Moe Jensen Lite tilbakeblikk: Prosedyrer og funksjoner Objektorientert programmering Introduksjon: Hvorfor,

Detaljer

Forelesning inf Java 4

Forelesning inf Java 4 Forelesning inf1000 - Java 4 Tema: Løkker Arrayer Metoder Ole Christian Lingjærde, 12. september 2012 Ole Chr. Lingjærde Institutt for informatikk, 29. august 2012 1 Repetisjon: arrayer Deklarere og opprette

Detaljer

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister Videre

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister Videre Dagens tema Lister og generiske klasser, del I Array-er og ArrayList (Big Java 6.1 & 6.8) Ulike lagringsformer (Collection) i Java (Big Java 15.1) Klasser med typeparametre («generiske klasser») (Big Java

Detaljer

Eksamen. Objektorientert Programmering IGR 1372

Eksamen. Objektorientert Programmering IGR 1372 + JVNROHQL1DUYLN $YGHOLQJIRU7HNQRORJL Eksamen i Objektorientert Programmering IGR 1372 7LG'HVHPEHU± 7LOODWWHKMHOSHPLGOHU 6NULYHVDNHU2UGE NHU -DYD6RIWZDUH6ROXWLRQV)RXQGDWLRQVRI3URJUDP 'HVLJQVNUHYHWDY/HZLV

Detaljer

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

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 Forelesning inf - Java 4 Repetisjon: arrayer Tema: Løkker Arrayer Metoder Ole Christian Lingjærde,. september Deklarere og opprette array - eksempler: int[] a = new int[]; String[] a = new String[]; I

Detaljer