Objekt-orientering og Java. Oppfriskning og videreføring av Java-kunnskaper
|
|
- Grete Knutsen
- 8 år siden
- Visninger:
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 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
DetaljerRepitisjonskurs. 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
Detaljer23.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
DetaljerKapittel 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,
DetaljerEksekveringsrekkefø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
Detaljerclass 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
DetaljerINF1010 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
DetaljerINF1000 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
DetaljerArv. 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
Detaljer13.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,
DetaljerAlgoritmer 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
DetaljerPost-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
DetaljerEKSAMEN 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
Detaljer1- 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)
Detaljer2 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.
DetaljerINF1010 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
DetaljerLæ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
Detaljer1- 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)
DetaljerAlgoritmer 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
DetaljerInnhold 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:
DetaljerOppsummering. 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
DetaljerEKSAMEN 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
DetaljerIntroduksjon 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
DetaljerKonstruktø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
DetaljerIN1010 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 {
DetaljerINF1010 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
DetaljerGjennomgang 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
DetaljerINF 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
DetaljerINF1010 - 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
DetaljerHØ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
DetaljerUNIVERSITETET 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.
DetaljerAlgoritmer 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.
DetaljerEn 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
DetaljerINF1010 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)
DetaljerLC191D/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
DetaljerINF1010 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)
DetaljerKapittel 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
Detaljer2 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
DetaljerDet 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
DetaljerTOD063 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
DetaljerINF1010 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
DetaljerINF1000: 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
DetaljerINF1000: 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
DetaljerLæ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
DetaljerINF1000 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
DetaljerBOKMÅ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
DetaljerDagens 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
DetaljerNB!!! 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
DetaljerUNIVERSITETET 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 > 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
DetaljerINF1010 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,
DetaljerLø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.
DetaljerKapittel 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
Detaljer3 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
DetaljerForelesning 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
DetaljerProgrammeringssprå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
DetaljerForelesning 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
DetaljerLø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
DetaljerI 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
DetaljerUNIVERSITETET 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
DetaljerTittel 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
DetaljerArray&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
DetaljerOPPGAVE 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
DetaljerADT 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
DetaljerIN1010 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
DetaljerForklaring 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
DetaljerINF1010, 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
DetaljerAlgoritmer 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
DetaljerINF1000: 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.
DetaljerAv 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
DetaljerINF1010 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
DetaljerEKSAMEN 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
DetaljerOBJEKTER 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
DetaljerHva 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 =
DetaljerINF 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
DetaljerAlgoritmer 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
DetaljerForkurs 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
DetaljerINF1000 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
DetaljerLO191D/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
DetaljerNorges 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:
DetaljerUNIVERSITETET 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
DetaljerEksamen 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
DetaljerKapittel 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
DetaljerINF1010. 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
DetaljerLæ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
DetaljerTDT4100 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
DetaljerTDT4100 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
Detaljer29.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
DetaljerJava-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:
DetaljerGeneriske 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
DetaljerMED 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:
DetaljerMå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
DetaljerLø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
DetaljerPlan: 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
DetaljerINF1010 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
DetaljerInnhold 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,
DetaljerForelesning 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
DetaljerArray&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
DetaljerEksamen. Objektorientert Programmering IGR 1372
+ JVNROHQL1DUYLN $YGHOLQJIRU7HNQRORJL Eksamen i Objektorientert Programmering IGR 1372 7LG'HVHPEHU± 7LOODWWHKMHOSHPLGOHU 6NULYHVDNHU2UGE NHU -DYD6RIWZDUH6ROXWLRQV)RXQGDWLRQVRI3URJUDP 'HVLJQVNUHYHWDY/HZLV
Detaljeri=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