INF1010, 8. mars Om klassehierarkier, grensesnitt (interface) og multippel arv. Konstruktører i subklasser. Unntak.

Størrelse: px
Begynne med side:

Download "INF1010, 8. mars Om klassehierarkier, grensesnitt (interface) og multippel arv. Konstruktører i subklasser. Unntak."

Transkript

1 INF1010, 8. mars 2012 Om klassehierarkier, grensesnitt (interface) og multippel arv. Konstruktører i subklasser. Unntak. Stein Gjessing Inst for Informatikk Universitetet i Oslo

2 Abstrakte metoder og klasser Abstrakte metoder abstract før deklarasjonen av en metode betyr at metoden ikke inneholder noe program / kode ( ; istedenfor {... (eksempel neste side) ) Subklasser må da gi kode til denne metoden. Abstrakte klasser klasse med abstract før class kan (men må ikke) inneholde abstrakte metoder En klasse med en abstrakt metode må deklareres som en abstrakt klasse. Kan ikke lage objekter av abstrakte klasser (må vente til vi har en ikke-abstrakt subklasse) 2

3 Abstrakte metoder og klasser abstract class Ansatt { String navn; double timelonn; abstract double beregnbonus(); Ikke lov å si new Ansatt()! Ansatt navn timelonn beregnbonus(); class Deltidsansatt extends Ansatt { double beregnbonus() { return 0; Deltidsansatt Heltidsansatt navn timelonn Heltidsansatt objekt beregnbonus(); ansiennitetsfaktor class Heltidsansatt extends Ansatt { int ansiennitetsfaktor; double beregnbonus() { return timelonn* ansiennitetsfaktor; beregnbonus() Ellers helt som vanlige subklasser med polymorfi (virtuelle metoder) 3

4 Pekere av abstrakte typer (selv om det ikke finnes slike objekter) Ansatt[ ] allepersoner Type: Ansatt Navn: ans Deltidsansatt objekt Heltidsansatt objekt navn timelonn beregnbonus(); Type: Deltidsansatt Navn: del navn timelonn beregnbonus(); beregnbonus() return 0; Type: Heltidsansatt Navn: hel ansiennitetsfaktor beregnbonus() return timelonn* ansiennitetsfaktor 4

5 Når bruker vi abstrakte metoder og klasser? Abstrakte klasser En abstrakt klasse er en superklasse det ikke kan eller ikke skal lages objekter av. Det er ikke lov å si new A() på den abstrakte klassen A. Abstrakte metoder Er en metode uten innhold (i en abstrakt klasse) ; istedenfor { Fordi det ikke gir mening å lage et innhold ((Noen ganger har vi tomme metoder istedenfor abstrakte)) Må lag en subklasse som tvinges til å gi koden Abstrakte metoder er alltid polymorfe En subklasse til en abstrakt klasse kan selv være abstrakt. 5

6 Ganske detaljert UML klassehierarki med abstrakt klasse Ansatt (i INF1010 skal dere ikke lage slike selv) abstract 6

7 Objektorientering: Om å arve fra flere I Java kan en klasse bare arve egenskapene til én annen klasse (en superklasse). Dette gjør språket sikrere å bruke Hva skal vi gjøre hvis vi ønsker at et objekt skal inneholde mange forskjellige egenskaper fra forskjellige superklasser? På de neste sidene: Begrepshierarkiet i et bibliotek 7

8 Motivasjon for begrepet gresesnitt (interface): Analyse av bibliotek Bøker, tidsskrifter, CDer, videoer, mikrofilmet materiale, antikvariske bøker, flerbindsverk, oppslagsverk, upubliserte skrifter, En del felles egenskaper antall eksemplarer, hylleplass, identifikasjonskode (Dokument) for det som kan lånes ut: Er utlånt?, navn på låner,... (TilUtlån) for det som er antikvarisk: Verdi, forskringssum,... (Antikvarisk) Spesielle egenskaper: Bok: Forfatter, tittel, forlag Tidsskriftnummer: Årgang, nummer, utgiver CD: Tittel, artist, komponist, musikkforlag 8

9 Tvilsomt begrepshierarki Forslag til subklassehierarki Dokument Bok CD Tidskrift UtlånbarBok IkkeLånbarBok UtlånbarCD IkkeLånbarCD Utlånbart Tidsskriftnr IkkeLånbart Tidsskriftnr 9

10 UtlånbartDokument Dokument Omrokkering uten suksess IkkeLånbartDokument BokU CDU TidsskriftnrUtl Bok CD Tidsskriftnr

11 Samle lik oppførsel: bruk Interface interface TilUtlån class Dokument class Bok class CD class Tidskriftnr class UtlånbarBok class UtlånbarCD class Utlånbart Tidsskriftnr En klasse kan tilføres et (eller flere) interface - i tillegg til å arve egenskapene i klassehierarkiet Dvs. en klasse kan spille to (eller flere) roller 11

12 Et interface (grensesnitt) er: En samling egenskaper (en rolle) som ikke naturlig hører hjemme i et arve-hierarki En samling egenskaper som mange forskjellige ting av forskjellige typer kan anta En klasse kan arve egenskapene til mange grensesnitt (men bare en klasse) For eksempel Kan delta i konkurranse (startnummer, resultat,.. Mennesker, biler, hester kan delta i konk.) Svømmedyktig (mennesker, fugler er svømmed.) Her: Antikvarisk (møbler, bøker,. ) Kan lånes ut (biler, bøker, festklær, ) Sammenlignbar (Comparable)... 12

13 Hva er et grensesnitt (interface)? Et interface likner en abstrakt klasse Alle metodene i en interface er abstrakte og polymorfe En interface inneholder ingen variable eller annen datastruktur (men kan ha konstanter) En klasse som arver egenskapene til et interface må selv putte inn kode i alle de abstrakte metodene (og deklarere passende variable som disse metodene bruker for å gjøre jobben sin). En klasse kan arve egenskapene til mange grensesnitt (men bare en klasse) Å arve (en samling metoder) = å spille en rolle 13

14 Dokument Arve fra flere grensesnitt interface TilUtlån Verk interface Antikvarisk Bok CD Video Tidskriftnr UtlånbarBok AntekvUtlånbrCD IkkeLånbarCD Utlånbart Tidsskriftnr IkkeLånbartTids skriftnr AntikvariskBok Utlånbart, Antekvarisk Tidsskrift En klasse kan tilføres et ubegrenset antall interface-er Dvs. en klasse kan spille et ubegrenset antall roller Felles egenskaper på tvers av klassehierarkiet Antikvarisk tidsskriftnr 14

15 Kjent eksempel Skattbar Bil Miljovennlig Lastebil Personbil LastebilMedSkattogMiljo MiljoBil 15

16 Et objekt og noen pekere Bil minbil; new LastebilMedSkattogMiljø() Object obj; Lastebil minlast; LastebilMedSkattogMiljø denne; Skattbar skatteobjekt; Miljovennlig miljoting; regnr lastevekt toll ( ); momssats( ); Bil Lastebil rollen Skattbar Hva kan vi se gjennom de forskjellige pekerene? Det er viktig: Pekere av interface-type# co2utslipp( ); svanemerket( ); utslipp innkjopspris rollen Miljovennlig egne ting (og egen rolle) 16

17 Objektifisering og av-objektifisering (Boxing and un-boxing) For alle de primitive typene finnes det en tilsvarende klasse: Boolean Short Integer Long Character Double Float Byte boolean short int long char double float byte I tillegg til at vi kan lage objekter av klassene og legge primitive verdier inn i disse objektene, inneholder klassene (static) metoder som kan hjelpe til med å manipulere verdier av de forskjellige typene. For eksempel (linje er en String): double tall = Double.parseDouble(linje); Type: Double Navn: pipek Se i pakken java.lang Double klassedatastruktur Double valueof ( ) double parsedouble ( ) double doublevalue( ) Double klasseobjekt Type: double Navn: pitall 17

18 put og get i Map (Java api) Dette trenger vi i programmene på de neste sidene V put(k key, V value) Associates the specified value with the specified key in this map. If the map previously contained a mapping for the key, the old value is replaced Returns: the previous value associated with key, or null if there was no mapping for key. (A null return can also indicate that the map previously associated null with key.) V get(object key) Returns the value to which the specified key is mapped, or null if this map contains no mapping for the key Slik skal programmene virke: 18

19 Eksempel: Uten Automatisk objektifisering Lett modifisert fra eksempel på java.sun.com import java.util.*; // Prints a frequency table of the words on the command line public class Boks { public static void main(string [ ] args) { Map<String, Integer> m = new HashMap<String, Integer>(); // trenger bare Map-egenskapene til HashMap-en // m er tom til å begynne med! Type int 2 Objekt av klassen Integer Integer(int i) 2 int intvalue( ) for (String word : args) { // for-each-løkken går gjennom hele tabellen Integer freq = m.get(word); if (freq == null) // da er ikke ordet sett før { m.put(word, new Integer(1) ); // fekvensen er 1 første gang else { m.put (word, new Integer (freq.intvalue() + 1) ); // øker frekv. med 1 freq Type Integer System.out.println(m); String tostring (int i) String tobinarystring (int i) Integer klassedatastruktur

20 Eksempel: Med Automatisk objektifisering Lett modifisert fra eksempel på java.sun.com import java.util.*; // Prints a frequency table of the words on the command line public class AutoBoks { public static void main(string [ ] args) { Map<String, Integer> m = new HashMap<String, Integer>(); // trenger bare Map-egenskapene til HashMap-en // m er tom til å begynne med! for (String word : args) { // for-each-løkken går gjennom hele tabellen Integer freq = m.get(word); if (freq == null) // da er ikke ordet sett før { m.put(word, 1 ); // fekvensen er 1 første gang else { m.put (word, freq + 1) ); // øker frekv. med 1 Type int 2 Objekt av klassen Integer Integer(int i) 2 int intvalue( ) freq Type Integer System.out.println(m); Ikke viktig i INF1010# Integer klassedatastruktur String tostring (int i) String tobinarystring (int i)

21 Konstruktører Viktig i INF1010# 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 intern-minnet til et objekt av klassen Punkt og til pekeren p. 2. Variablene x og y blir opprettet inne i objektet. 3. Konstruktør-metoden blir kalt med x0=3 og y0=4. 4. Etter at konstruktøren har satt x=3 og y=4, settes høyresiden i tilordningen Punkt p = new Punkt(3,4) lik adressen (en peker) til det nye objektet. 5. Tilordningen Punkt p = utføres, dvs p settes lik adressen til objektet. navn: p type: Punkt Punkt(int x0, int y0) { x = x0; y = y0; navn: x navn: y 3 4 type: int type: int Punkt(int x0, int y0) navn: x0 3 type: int x = x0; y = y0; navn: y0 4 type: int 21

22 Konstruktører og arv Det blir noe mer komplisert når vi opererer med arv: Anta at vi har definert en subklasse class B extends A { Hvilken konstruktør utføres hvis vi skriver B bpeker = new B(); Konstruktøren i klassen A? Konstruktøren i klassen B? Begge? 22

23 Konstruktører og arv (forts.) Anta at vi har deklarert tre klasser: class A { class B extends A { class C extends B { Når vi skriver new C() skjer følgende: 1. Konstruktøren til C kalles (som vanlig) 2. Konstruktøren til C starter med å kalle på B sin konstruktør 3. Konstruktøren til B starter med å kalle på A sin konstruktør 4. Så utføres A sin konstruktør 5. Kontrollen kommer tilbake til B sin konstruktør, som utføres 6. Kontrollen kommer tilbake til C sin konstruktør, som utføres 23

24 Kall på super-konstruktøren Superklassens konstruktør kan kalles fra en subklasse ved å si: super(); - vil kalle på en konstruktør uten parametre super(5, test ); - om vi vil kalle på en konstruktør med to parametre (int og String) Et kall på super må legges helt i begynnelsen av konstruktøren. Kaller man ikke super eksplisitt, vil Java selv legge inn kall på super( ) helt først i konstruktøren når programmet kompileres. Hvis en klasse ikke har noen konstruktør, legger Java inn en tom konstruktør med kallet super(); 24

25 Eksempel 1 Anta at vi har følgende klasser: class Person { String fødselsnr; Person() { fødselsnr = "; class Student extends Person { int studid; Student() {... Anta to konstruktører: Student() { super(); studid = 0; eller: Student() { studid = 0; Disse to er helt ekvivalente! Hva skjer hvis Student ikke har noen konstruktør :? class Student extends Person { int studid = 0; Svar: det går bra 25

26 Eksempel 2 Her er fire forslag til konstruktører: Student() { studid = 0; Anta at vi har følgende klasser: class Person { String fødselsnr; Person(String fnr) { fødselsnr = fnr; class Student extends Person { int studid; Student() {... Student() { super( 12345"); studid = 0; Student(String nr){ super(nr); studid = 17; Student(String nr, int id){ super(nr); studid = id; Hvilke virker? Diskuter! 26

27 Eksempel 3 class Bygning { Bygning() { System.out.println("Bygning"); class Bolighus extends Bygning { Bolighus() { System.out.println("Bolighus"); Hva blir utskriften fra dette programmet? class Blokk extends Bolighus { Blokk() { System.out.println("Blokk"); public static void main(string[] args) { new Blokk(); 27

28 Når programmet kompileres class Bygning { Bygning() { super(); System.out.println("Bygning"); // class Bygning class Bolighus extends Bygning { Bolighus() { super(); System.out.println("Bolighus"); // class Bolighus Java føyer selv på super() i disse tre konstruktørene før programmet utføres class Blokk extends Bolighus { Blokk() { super(); System.out.println("Blokk"); public static void main(string[] args) { new Blokk(); // class Blokk 28

29 Når programmet utføres 4. class Bygning { Bygning() { super(); System.out.println("Bygning"); // class Bygning 5. class Bolighus extends Bygning { Bolighus() { super(); System.out.println("Bolighus"); // class Bolighus Til Object sin konstruktør class Blokk extends Bolighus { Blokk() { super(); System.out.println("Blokk"); public static void main(string[] args) { new Blokk(); // class Blokk Her starter eksekveringen 1. 29

30 Når programmet utføres (forts.) 7. Nå er Bygning skrevet ut 8. Nå er Bolighus skrevet ut 9. Nå er Blokk skrevet ut class Bygning { Bygning() { super(); System.out.println("Bygning"); // class Bygning class Bolighus extends Bygning { Bolighus() { super(); System.out.println("Bolighus"); // class Bolighus class Blokk extends Bolighus { Blokk() { super(); System.out.println("Blokk"); public static void main(string[] args) { new Blokk(); // class Blokk 6. Tilbake fra Object sin konstruktør 30

31 Eksempel 4 class Bygning { Bygning() { System.out.println("Bygning"); Hva skjer i dette eksempelet? class Bolighus extends Bygning { Bolighus(int i) { System.out.println("Bolighus nr " + i); class Blokk extends Bolighus { Blokk() { System.out.println("Blokk"); Merk: Konstruktøren i klassen Bolighus har nå en parameter. public static void main(string[] args) { new Blokk(); 31

32 Når programmet kompileres class Bygning { Bygning() { super(); System.out.println("Bygning"); // class Bygning Java legger igjen til kall på super() i alle konstruktørene. class Bolighus extends Bygning { Bolighus(int i) { super(); System.out.println("Bolighus"); // class Bolighus class Blokk extends Bolighus { Blokk() { super(); System.out.println("Blokk"); public static void main(string[] args) { new Blokk(); // class Blokk Men: Kallet matcher ikke metoden i antall parametre! Mulige løsninger: 1. Selv legge til kall på super, med argument, i kontruktøren Blokk. 2. Legge til en tom konstruktør i Bolighus. 32

33 Unntak og feil Hva er en feil Hva er et unntak (er det ikke mulig å unngå feil/u?) Unntak = feil i Java Hva skjer når et program feiler / gir et unntak Mål 1: Å ikke få feilmeldinger fra kjøretidsystemet, men isteden la programmet få kontrollen tilbake etter en feilsituasjon: Der programmet normalt ville ha avsluttet med en feilmelding Eks: Divisjon med null, greier ikke åpne en fil, filen finnes ikke, knytte kontakt over nettet mislykkes, utenfor arraygrensen Mål 2: Enklere, mer vedlikeholdbar og mer forstålig kode 33

34 Array indeks utenfor sine grenser int [ ] tallvektor; tallvektor = new int [100]; tallvektor[101] = 17; 34

35 Unntak / feil, behandling i Java Mye kode kan feile og feilaktige situasjoner (unntak) kan oppstå. Kode som kan feile kan - og som oftest må - vi legge følgende rundt: Kode som kan feile Feiler koden blir denne blokken kalt med feilobjektet e som parameter try {... Kode som kan feile...; catch (Exception e) {... Gjør noe med feilen, prøv å rett opp... finally { Blir alltid utført 35

36 Fem reserverte Java ord try - Står foran en blokk som er usikker dvs. der det kan oppstå et unntak catch - Står foran en blokk som behandler et unntak. Har en peker til et unntaksobjekt som parameter finally - blir alltid utført throw - Starter å kaste et unntak throw <en peker til et unntaksobjekt> f.eks throw new Unntak(); throws - Kaster et unntak videre Brukes i overskriften på en metode som ikke selv vil behandle et unntak Bruk: try { <usikker kode> catch (Unntaksklasse u) { <behandle unntaket, u peker på et objekt som beskriver unntaket> finally { < rydd opp > 36

37 Unntaksbehandling try { <USIKKER KODE> <Hvis det skjer noe galt:> throw new Unntaksklasse( );.... catch (Unntaksklasse unt) { < Unntaksbehandling. Dette hoppes over når intet unormalt/galt har hendt > finally { hit kommer programmet alltid, også om unntaket ikke ble fanget < her fortsetter programmet både etter normal utføring og etter behandling av eventuelle unntak, men ikke når et unntak er kastet uten at det er fanget> Enkleste form for unntaksbehandling. På forhånd har vi deklarert: class Unntaksklasse extends Exception {... 37

38 Når unntak oppstår i en metode og ikke behandles der A a try {.... x = b ( );.... catch (Unntaksklassen unt) { < Unntaksbehandling. Dette hoppes over når intet unormalt har hendt > finally { hit kommer programmet alltid < her fortsetter programmet både etter normal utføring og etter behandling av eventuelle unntak, men ikke hvis unntaket blir kastet videre> a kaller b int b( ) throws Unntaksklassen { b oppdager en feil: throw new Unntaksklassen ( ) ; Normal retur fra b til a: return 17; Unntaksklassen er en klasse som vi på forhånd har deklarert som en subklasse av klassen Exception. 38

39 Vi må ikke gjøre noe med feil/unntak (throws) Vi kan bare sende dem videre til den metoden som kalte oss: throws (og helt til kjøresystemet (JVM) hvis det er main som kaster unntak/feilmeldinger videre). Vi må da etter metodens parameter-parenteser, men før begynnende krøll-parentes, skrive: throws UnttakType1, UnntakType2,... { hvor UnttakType1, UnntakType2,... er de typer (klassenavnene) på de unntak som oppstår (eller superklasser av disse, f.eks. Exception) og ikke selv fanger med try-catch. Merk at vi bruker ordet både for unntak metoden vår selv genererer og de unntak/feil metoden mottar (fra metoder den selv har kalt) og bare videresender. Ulempe med videre-kasting av unntak: Jo nærmere feilkilden feilen blir rettet, jo bedre. 39

40 Unntak - oversikt Brukes til å fange feil - eller uvanlige situasjoner Når en feilsituasjon oppstår: Lages det et objekt Dette objektet brukes av feilbehandlingen som enten skjer i samme metode (try-catch) eller blir sendt tilbake til kallende metode (throws) Vi må ikke (men kan) behandle feil av typen: RunTimeException Error Artimetriske feil Array-grense-feil Behandler vi ikke slike feil, avsluttes programmet av runtime-systemet Grusomme systemfeil vi ikke kan gjøre noe med Feil og feil fru Blom 40

41 Klassehierarki unntak Throwable Vanskelig å gjøre noe med Error RuntimeException Exception IOException VirtualMachineError IOError Må deklareres Og må fanges NullPointerException ArithmeticException Unntak i dette subtreet bør fanges 41

42 Unntak strategier Flere måter å behandle unntak/avbrudd: 1. Løs problemet og kall metoden som ga unntak om igjen 2. Lapper sammen ting uten å kalle metoden som ga unntak, eller beregn et alternativt ( beste ) resultat istedenfor det unntaks-metoden skulle ha beregnet 3. Avslutt programmet: System.exit(1); 4. Ignorere dem hvis de er av typen RunTimeException eller Error men hvis de oppstår terminerer programmet 42

43 Unntak - strategier, forts. 5. Kaste det videre f.eks. public static void main(...) throws IOException når main kaster en feil videre er det til kjøretidsystemet og programmet terminerer 6. Ta imot / fange det og behandle det ferdig: try {... farlig kode. catch ( Exception e) {... gjør noe fornuftig og rett opp feilen finally { det som alltid må utføres 7. Ta imot, gjøre noe/litt og så kaste det (eller et annet) videre: try {... farlig kode. catch ( Exception e ) {... gjør noe fornuftig, f.eks. rett opp litt av feilen og så throw e; finally {det som alltid må utføres OGSÅ ved viderekasting 43

44 String-indeks utenfor stringen class Unntak0x { public static void main(string[ ] args) { new Unntak0x ( ); Unntak0x ( ) { String s = "Dette er en tekst med 29 tegn", s1; s1 = s.substring(30,32); // string-indeks utenfor "enden" 44

45 Behandler Stringindeks-feil class Unntak1x { public static void main(string[ ] args) { new Unntak1x ( ); Unntak1x ( ) { String s = "Dette er en tekst med 29 tegn", s1; try { s1 = s.substring(30,32); // string-indeks utenfor "enden" catch (StringIndexOutOfBoundsException e) { System.out.println("Her er det noe galt med string-indeksen ); //end try >java Unntak1x Her er det noe galt med string-indeksen 45

46 Eksempel på bruk av unntaksobjektet class Unntak2x { public static void main(string[ ] args) { new Unntak2x ( ); Unntak2x ( ) { String s = "Dette er en tekst med 29 tegn", s1; try { s1 = s.substring(30,32); // string-indeks utenfor "enden" catch (StringIndexOutOfBoundsException e) { System.out.println("Her er det noe galt med string-indeksen " + e.getmessage( )); //end try >java Unntak2x Her er det noe galt med string-indeksen String index out of range: 32 46

47 Fange divisjon med 0 public class TryTest { public static void main ( String [ ] args) Her tar programmet { int i=1; seg av hele feilen for (int j=0; j < 5; j++) try{ i = 10/j; System.out.println("Det gikk OK, i:" + i + ", j:" + j); catch (Exception e) { System.out.println("Feil i uttrykk: "+ e.getmessage( )); // end TryTest snidil> java TryTest Feil i uttrykk: / by zero Det gikk OK, i:10, j:1 Det gikk OK, i:5, j:2 Det gikk OK, i:3, j:3 Det gikk OK, i:2, j:4 snidil> 47

48 Starte å sende feil/unntak selv - eks. class Feil { int i; public static void main(string[] args) { new Feil().a(null); void a(feil pek) { if (pek == null ) throw new NullPointerException( pek må være!= null"); pek.i = 14; Merk at her kastes et objekt av en klasse som er subklasse av RunTimeException, så da trenger vi ikke try-catch rundt kallet på metoden a 48

49 Egendefinerte unntak class Mittunntak extends Exception { public Mittunntak ( ) { public Mittunntak (String s) { super(s); Den nye klassen Mittunntak utvider (extends) den ferdiglaget Javaklasse med navn Exception. try{... catch (Mittunntak e) {.. e.getmessage( ).. throw new Mittunntak("feilmelding"); throw new Mittunntak( ); 49

50 Eksempel Konto med OvertrekkUnntak - VIKTIG class Konto { private double saldo = 0, minimumsaldo = 0; private int kontonr; Konto (int nr) { kontonr = nr; public void taut (double belop) throws OvertrekkUnntak { if (saldo - belop < minimumsaldo) { throw new OvertrekkUnntak(Integer.toString(kontonr)); else saldo = saldo - belop;... class OvertrekkUnntak extends Exception { public OvertrekkUnntak (String s) { super(s); // end class OvertrekkUnntak 50

51 Bruk av Konto med OvertrekkUnntak class Bank{ static void main (String [] args) { Konto pek = new Konto(234); try { pek.taut(-10); catch (OvertrekkUnntak e) { System.out.print(" Overtrekk på konto "); System.out.println( e.getmessage()); 51

52 Fange flere unntak class Unntak3x { public static void main(string[ ] args) { new Unntak3x ( ) ; Unntak3x ( ) { int dividend=7, divisor = 0; int kvotient=0; String s="dette er en tekst med 29 tegn"; String s1="*********"; try { s1 = s.substring(15,17); // OK string-indeks kvotient = dividend/divisor; // Feil: divisjon med 0 catch (StringIndexOutOfBoundsException e) { System.out.println("Her er det noe galt med string-indeksen"); catch (ArithmeticException e1) { System.out.println("Divisjon med 0: " + e1.getmessage( ) ); System.out.println(s1); System.out.println(kvotient); >java Unntak3x Divisjon med 0: / by zero st 0 52

53 Flere catch pluss finally Vi kan ha flere catch etter hverandre: Da testes det (omlag som en switch), og bare den første som får tilslag, blir utført Husk: At hvis en av klassenavnene (Type1, Type2,..) er superklasse til det innkomne unntaket, vil den blir utført. Finally vil alltid bli utført enten det ble unntak eller ikke og enten noen av catchene fikk tilslag eller ikke try {... Kode som kan gi unntak / feile... catch (Type1 t1 ) { catch (Type2 t2 ) {... catch (Type3 t3 ) {... finally { // Dette gjøres alltid - selv om unntaket ikke blir behandlet // men bare ble kastet videre Spesielt viktig å ha med hvis unntak blir kastet direkte videre 53

54 Oppsummering unntak i Java Hvis det oppstår en feil under kjøring av programmet, kastes det et unntak: throw new Unntaksklasse(); Metoder kan enten kaste unntak videre (throws( )) eller fange opp unntak med try/catch. Dette gjøres ved hjelp av en try/catch-blokk: try {... usikker kode... catch(exceptionnavn e) {... behandle feil... finally {... Det bør alltid (?) være med en finally-blokk som rydder opp. Unntak kastes oppover i kallkjeden inntil det blir fanget opp. Metoder som kaster unntak videre, må deklare dette ved hjelp av nøkkelordet throws: metodenavn(...) throws ExceptionNavn Metoder som kaster unntak som tilhører RuntimeException-klassen, trenger ikke å deklarere dette. Et unntak som ikke blir fanget opp av en metode underveis, blir til slutt fanget opp av kjøresystemet til Java, som skriver ut relevant informasjon om unntaket og avslutter programmet.

55 Ekstra grensesnitteksempel: Tilbake til biblioteket Klassehierarki, forenklet bibliotek interface TilUtlån Dokument Bok CD BokTilUtlaan BokIkkeUtlaan CDTilUtlaan CDIkkeUtlaan 55

56 Forenklet bibliotek interface TilUtlån Bok Dokument abstract class Dokument { String tittel; abstract class Bok extends Dokument { String forlag; int trykningsår; BokTilUtlaan BokIkkeUtlaan Ordet abstract kan sløyfes før metodenavnet i et interface (det er jo helt opplagt) " interface TilUtlaan { abstract void låne(string låner) ; abstract void levere() ; abstract boolean utlånt() ; static final String ingen = "ingen"; // Slutt interface TilUtlaan 56

57 BokTilUtlaan interface TilUtlaan BokTilUtlaan Bok Dokument BokIkkeUtlaan BokTilUtlaan har både egenskapene til Bok og egenskapene til TilUtlaan. Objekter av denne klassen kan spille begge rollene! class BokTilUtlaan extends Bok implements TilUtlaan { String låner = ingen; public void låne (String l) { låner = l; public void levere() { låner = ingen; public boolean utlånt() { return låner!= ingen; // Slutt class BokTilUtlaan class BokIkkeUtlaan extends Bok { 57

58 Se på implementasjonen igjen: interface TilUtlaan { abstract void låne(string låner) ; abstract void levere() ; abstract boolean utlånt() ; static final String ingen = ingen"; Metodene i et interface er veldig polymorfe # class BokTilUtlaan extends Bok implements TilUtlaan { String låner = ingen; public void låne (String l) { låner = l; public void levere() { låner = ingen; public boolean utlånt() { return låner!= ingen; Dette er de tre metodene som vi må love å implementere 58

59 interface TilUtlaan { abstract void låne(string låner) ; abstract void levere() ; abstract boolean utlånt() ; static final String ingen = ingen"; interface TilUtlån Dokument CD abstract class CD extends Dokument { String komponist, artist, musikkforlag; CDTilUtlaan CDIkkeUtlaan class CDTilUtlaan extends CD implements TilUtlaan { String låner = ingen; public void låne(string l) { låner = l; public void levere() { låner = ingen; public boolean utlånt() { return låner!= ingen; // Slutt class CDTilUtlaan Her er de tre metodene igjen class CDIkkeUtlaan extends CD { 59

60 Anta at vi skal lage et Dokumentregister i et bibliotek 4 BI JavaGently Addison-Wesley 1998 CU Favoritter Grieg Kyrkjebø Musikkforlaget ingen BU JustJava Sun 1998 Kari CI Favourites Wonder,Stevie Dion,Celine BMG Filformat: Metodene i et interface er veldig polymorfe # Først antall poster på filen For hver post: - dokumenttypen (BU, BI, CU eller CI) - tittel - Hvis Bok: forlag år - Hvis BokTilUtlån: Også låner - Hvis CD: komponist / artist / musikkforlag - Hvis CDTilUtlån: Også låner Programmet på de neste sidene er forandret etter at det sist ble kompilert og kjørt 60

61 Dokumentregister Innlesning DokumentRegister - objekt innfil antdok alledokumenter void lesfrafil() Dokument d = null; String dokumenttype; Scanner innfil = new Scanner(new File( dokumentfil.txt )); antdok = innfil.nextint( ); for (int i=1; i<=antdok; i++) { dokumenttype = innfil.next( ); if (dokumenttype.equals("bu")) d = new BokTilUtlaan(); else if (dokumenttype.equals("bi")) d = new BokIkkeUtlaan(); else if (dokumenttype.equals("cu")) d = new CDTilUtlaan(); else if (dokumenttype.equals("ci")) d = new CDIkkeUtlaan(); d.lesfra(innfil); alledokumenter.put(d.tittel,d); // Slutt for Dokument Bok TilUtlaan BokTilUtlaan Dokument CD TilUtlaan CDTilUtlaan 61

62 Dokumentregister Utskrift DokumentRegister - objekt utfil void skrivtilfil() alledokumenter Dokument Bok TilUtlaan Dokument d = null; String dokumenttype; PrintWriter utfil = new PrintWriter (new FileWriter ( dokumentfil.txt )); utfil.println(alledokumenter.size( )); d for (Dokument d: alledokumenter.values()) { d.skrivtilfil(utfil); BokTilUtlaan Dokument CD TilUtlaan CDTilUtlaan HashMap<String,Dokument> alledokumenter; alledokumenter = new HashMap<String,Dokumenter> ( ); alledokumenter.values() (Iterable) 62

63 Klasse- og interface-tilhørighet (igjen) Test med operatoren instanceof, for eksempel: if (d instanceof TilUtlaan) p instanceof C Gir TRUE dersom p peker på et objekt av klassen C eller en subklasse av C, eller dersom p peker på en klasse som implementerer interfacet C Endring med casting d Dokument d = alledokumenter.get(h); TilUtlaan t = (TilUtlaan) d; Object Dokument Bok TilUtlaan BokTilUtlaan t ser bare TilUtlån-egenskapene! OK, dersom d spiller rollen TilUtlaan, dvs. er et objekt av en av klassene BokTilUtlaan eller CDTilUtlaan 63

64 Metoden låne i DokumentRegister void låne() void låne() throws IOException { boolean utlånt() Dokument d = null; String h; void levere() System.out.print( Tittel: "); h = in.next( ); d = alledokumenter.get(h); if (d==null) System.out.println("Beklager, denne har vi ikke"); else if (d instanceof TilUtlaan) { TilUtlaan t = (TilUtlaan) d; Navn: t if (t.utlånt()) { System.out.println("Beklager, utlånt"); else { Type: TilUtlån System.out.print( Låners navn: "); String n = in.next( ); t.låne(n); // slutt kan lånes ut // Slutt if (d instanceof TilUtlaan) else System.out.println("Beklager, denne låner vi ikke ut"); // Slutt låne 64

65 leveretilbake i DokumentRegister# void leveretilbake() { void låne() Dokument d = null; boolean utlånt() String h; System.out.print( Tittel: "); void levere() h = in.next( ); d = alledokumenter.get(h); if (d==null) System.out.println("Beklager, feil tittel"); else if (d instanceof TilUtlaan) { TilUtlaan t = (TilUtlaan) d; Navn: t if (t.utlånt()) { t.levere(); Type: TilUtlån System.out.println("Takk"); else System.out.println("Beklager, denne er ikke utlånt"); // Slutt if (d instanceof TilUtlaan) 65

Stein Gjessing, Institutt for informatikk, Universitetet i Oslo

Stein Gjessing, Institutt for informatikk, Universitetet i Oslo INF1010 Våren 2015 Feilsituasjoner og unntak i Java (Engelsk: Exception) Stein Gjessing, Institutt for informatikk, Universitetet i Oslo 1 Jeg prøvde å bestille billett med Air France:

Detaljer

Inf1010 Våren Feilsituasjoner og unntak i Java. Stein Gjessing, Institutt for informatikk, Universitetet i Oslo

Inf1010 Våren Feilsituasjoner og unntak i Java. Stein Gjessing, Institutt for informatikk, Universitetet i Oslo Inf1010 Våren 2009 Feilsituasjoner og unntak i Java Stein Gjessing, Institutt for informatikk, Universitetet i Oslo Oversikt Hva er en feil (er det ikke mulig å unngå feil?) Hva skjer når et program feiler

Detaljer

Oversikt. Feil i programmet hva skjer? Array indeks utenfor sine grenser. Inf1010 Våren Feilsituasjoner og unntak i Java

Oversikt. Feil i programmet hva skjer? Array indeks utenfor sine grenser. Inf1010 Våren Feilsituasjoner og unntak i Java Oversikt Inf1010 Våren 2009 Feilsituasjoner og unntak i Java Stein Gjessing, Institutt for informatikk, Universitetet i Oslo Hva er en feil (er det ikke mulig å unngå feil?) Hva skjer når et program feiler

Detaljer

Uke 6 INF1010, 5. februar 2008, Abstrakte klasser og grensesnitt (interface) Stein Gjessing Inst for Informatikk Univ. i Oslo

Uke 6 INF1010, 5. februar 2008, Abstrakte klasser og grensesnitt (interface) Stein Gjessing Inst for Informatikk Univ. i Oslo Uke 6 INF1010, 5. februar 2008, Abstrakte klasser og grensesnitt (interface) Stein Gjessing Inst for Informatikk Univ. i Oslo Abstrakte metoder og klasser Abstrakte metoder abstract før deklarasjonen av

Detaljer

Inf1010 Våren Feilsituasjoner og unntak i Java. Stein Gjessing, Institutt for informatikk, Universitetet i Oslo

Inf1010 Våren Feilsituasjoner og unntak i Java. Stein Gjessing, Institutt for informatikk, Universitetet i Oslo Inf1010 Våren 2008 Feilsituasjoner og unntak i Java Stein Gjessing, Institutt for informatikk, Universitetet i Oslo Oversikt Hva er en feil (er det ikke mulig å unngå feil?) Hva skjer når et program feiler

Detaljer

Oversikt. Feil i programmet hva skjer? Array indeks utenfor sine grenser. Inf1010 Våren Feilsituasjoner og unntak i Java

Oversikt. Feil i programmet hva skjer? Array indeks utenfor sine grenser. Inf1010 Våren Feilsituasjoner og unntak i Java Oversikt Inf1010 Våren 2008 Feilsituasjoner og unntak i Java Stein Gjessing, Institutt for informatikk, Universitetet i Oslo Hva er en feil (er det ikke mulig å unngå feil?) Hva skjer når et program feiler

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

Abstrakte metoder og klasser. Abstrakte metoder og klasser

Abstrakte metoder og klasser. Abstrakte metoder og klasser Uke 6 INF1010, 5. februar 2008, Abstrakte klasser og grensesnitt (interface) Stein Gjessing Inst for Informatikk Univ. i Oslo Abstrakte metoder og klasser Abstrakte metoder abstract før deklarasjonen av

Detaljer

Inf1010 Våren Feilsituasjoner og unntak i Java. Stein Gjessing, Institutt for informatikk, Universitetet i Oslo

Inf1010 Våren Feilsituasjoner og unntak i Java. Stein Gjessing, Institutt for informatikk, Universitetet i Oslo Inf1010 Våren 2010 Feilsituasjoner og unntak i Java Stein Gjessing, Institutt for informatikk, Universitetet i Oslo Jeg prøvde å bestille billett med Air France:

Detaljer

INF1010, 10. februar 2009, Konstruktører. Inst for Informatikk

INF1010, 10. februar 2009, Konstruktører. Inst for Informatikk INF1010, 10. februar 2009, Abstrakte klasser og grensesnitt (interface) Konstruktører Stein Gjessing Inst for Informatikk Univ. i Oslo Abstrakte metoder og klasser Abstrakte metoder abstract før deklarasjonen

Detaljer

Abstrakte metoder og klasser. Abstrakte metoder og klasser. Uke 9 INF1010, 27. februar 2007, Abstrakte klasser og grensesnitt (interface)

Abstrakte metoder og klasser. Abstrakte metoder og klasser. Uke 9 INF1010, 27. februar 2007, Abstrakte klasser og grensesnitt (interface) Abstrakte metoder og klasser Uke 9 INF1010, 27. februar 2007, Abstrakte klasser og grensesnitt (interface) Stein Gjessing Inst for Informatikk Univ. i Oslo n Abstrakte metoder n abstract før deklarasjonen

Detaljer

Institutt for informatikk. INF1010, 18. februar 2010, Inst for Informatikk

Institutt for informatikk. INF1010, 18. februar 2010, Inst for Informatikk INF1010, 18. februar 2010, Abstrakte klasser og grensesnitt (interface) Stein Gjessing Inst for Informatikk Univ. i Oslo Abstrakte metoder og klasser Abstrakte metoder abstract før deklarasjonen av en

Detaljer

Abstrakte metoder og klasser

Abstrakte metoder og klasser Abstrakte metoder og klasser INF1010, 10. februar 2009, Abstrakte klasser og grensesnitt (interface) Konstruktører Stein Gjessing Inst for Informatikk Univ. i Oslo Abstrakte metoder abstract før deklarasjonen

Detaljer

Abstrakte metoder og klasser

Abstrakte metoder og klasser Abstrakte metoder og klasser INF1010, 18. februar 2010, Abstrakte klasser og grensesnitt (interface) Stein Gjessing Inst for Informatikk Univ. i Oslo Abstrakte metoder abstract før deklarasjonen av en

Detaljer

INF1010 våren 2017 Onsdag 25. januar. Litt om unntak i Java

INF1010 våren 2017 Onsdag 25. januar. Litt om unntak i Java INF1010 våren 2017 Onsdag 25. januar Litt om unntak i Java Stein Gjessing Nytt tema: Feilhåndtering (IO: Innlesing/Utskrift) n En metode som kan komme til å gjøre en IO-feil på fil må enten behandle denne

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 2019 Onsdag 30. januar. Mer om unntak i Java (med litt repetisjon av I/O først)

INF1010 våren 2019 Onsdag 30. januar. Mer om unntak i Java (med litt repetisjon av I/O først) INF1010 våren 2019 Onsdag 30. januar Mer om unntak i Java (med litt repetisjon av I/O først) Stein Gjessing Lesing fra terminal og fil navn: mininn Bruk Scanner: Scanner mininn = new Scanner(); Type:

Detaljer

Oversikt. Array indeks utenfor sine grenser. Feil i programmet hva skjer?

Oversikt. Array indeks utenfor sine grenser. Feil i programmet hva skjer? Inf1010 Våren 2007 Tirsdagene 6. mars (bare 1. time) og 10. april 2007 Feilsituasjoner og unntak i Java (og litt ekte Java I/O) Stein Gjessing, Institutt for informatikk, Universitetet i Oslo Oversikt

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

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

INF1010 våren 2018 tirsdag 23. januar

INF1010 våren 2018 tirsdag 23. januar INF1010 våren 2018 tirsdag 23. januar I/O og litt om bruk av unntak i Java Stein Gjessing Lesing fra terminal og fil navn: mininn Bruk Scanner: Scanner mininn = new Scanner(); Type: Scanner boolean

Detaljer

INF1010 våren Arv og subklasser, del 2

INF1010 våren Arv og subklasser, del 2 INF1010 våren 2010 Torsdag 4. februar Arv og subklasser, del 2 Stein Gjessing Institutt for informatikk Repetisjon Vi har sett to former for gjenbruk av klasser: Gammel: Ved sammensetning (komposisjon)

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

INF april 2017

INF april 2017 INF1010-20. april 2017 Programmeringsmønstre Patterns Eksempel på bruk av interface Stein Gjessing Universitetet i Oslo 1 1 Problem Spesifikasjon Program 2 Programvare-arkitektur Hvordan programmet er

Detaljer

INF1010 våren 2017 Torsdag 2. februar. Arv og subklasser - del 2

INF1010 våren 2017 Torsdag 2. februar. Arv og subklasser - del 2 INF1010 våren 2017 Torsdag 2. februar Arv og subklasser - del 2 Stein Gjessing Dagens tema Virtuelle metoder som er det samme som Polymorfi Når bruker vi arv / når bruker vi komposisjon Konstruktører i

Detaljer

INF april 2016

INF april 2016 INF1010-21. april 2016 Programmeringsmønstre Patterns Oppgave med interface Vranglås blant tråder Prosesskommunikasjon Stein Gjessing Institutt for informatikk Universitetet i Oslo 1 1 Problem Spesifikasjon

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

IN1010 våren 2018 Tirsdag 6. februar. Arv og subklasser - del 2

IN1010 våren 2018 Tirsdag 6. februar. Arv og subklasser - del 2 IN1010 våren 2018 Tirsdag 6. februar Arv og subklasser - del 2 Stein Gjessing og Dag Langmyhr Dagens tema Virtuelle metoder som er det samme som Polymorfi Når bruker vi arv / når bruker vi komposisjon

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

INF1010 våren Arv og subklasser del 1 (pluss litt I/O og unntaksbehandling)

INF1010 våren Arv og subklasser del 1 (pluss litt I/O og unntaksbehandling) INF1010 våren 2012 Torsdag 9. februar Arv og subklasser del 1 (pluss litt I/O og unntaksbehandling) Stein Gjessing Institutt for informatikk Universitetet i Oslo 1 Når du har lært om subklasser kan du

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

INF1010 våren Generalisering -spesialisering Gjenbruk av klasser. Ved arv. Klasse-hierarkier. Stein Gjessing.

INF1010 våren Generalisering -spesialisering Gjenbruk av klasser. Ved arv. Klasse-hierarkier. Stein Gjessing. INF1010 våren 2009 Uke 5, 27. januar Arv og subklasser del I Stein Gjessing Institutt for informatikk 1 Emneoversikt subklasser Generalisering -spesialisering Gjenbruk av klasser Ved sammensetning (komposisjon)

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

INF1010, 24. februar 2011. Stein Gjessing Inst for Informatikk Universitetet i Oslo

INF1010, 24. februar 2011. Stein Gjessing Inst for Informatikk Universitetet i Oslo INF1010, 24. februar 2011 Abstrakte klasser og grensesnitt (interface) Stein Gjessing Inst for Informatikk Universitetet i Oslo Abstrakte metoder og klasser Abstrakte metoder abstract før deklarasjonen

Detaljer

Repetisjon. INF1000 - gruppe 13

Repetisjon. INF1000 - gruppe 13 Repetisjon INF1000 - gruppe 13 Lese fra fil Scanner import java.util.*; void lesfrafil() { try { Scanner innfil = new Scanner(new File( fugleobservasjoner.txt )); while (innfil.hasnext()) { String linje

Detaljer

INF våren 2015

INF våren 2015 INF1010 - våren 2015 Programmeringsmønstre Patterns Invarianter Tilstandspåstander Repetisjon av interface Prosesskommunikasjon Stein Gjessing Institutt for informatikk Universitetet i Oslo 1 1 Programvare-

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

Uke 5, 27. januar Arv og subklasser del I. Stein Gjessing Institutt for informatikk

Uke 5, 27. januar Arv og subklasser del I. Stein Gjessing Institutt for informatikk INF1010 våren 2009 Uke 5, 27. januar Arv og subklasser del I Stein Gjessing Institutt for informatikk 1 Emneoversikt subklasser Generalisering - spesialisering Gjenbruk av klasser Ved sammensetning (komposisjon)

Detaljer

INF1010 våren Arv og subklasser del 1 pluss (hvis vi har tid) litt om Unntak, IO og Scanner-klassen

INF1010 våren Arv og subklasser del 1 pluss (hvis vi har tid) litt om Unntak, IO og Scanner-klassen INF1010 våren 2014 Onsdag 5. februar Arv og subklasser del 1 pluss (hvis vi har tid) litt om Unntak, IO og Scanner-klassen Stein Gjessing Institutt for informatikk Universitetet i Oslo 1 Når du har lært

Detaljer

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

INF1010, 22. mai Prøveeksamen (Eksamen 12. juni 2012) Stein Gjessing Inst. for Informatikk Universitetet i Oslo INF, 22. mai 23 Prøveeksamen 23 (Eksamen 2. juni 22) Stein Gjessing Inst. for Informatikk Universitetet i Oslo Oppgave a Tegn klassehierarkiet for de 9 produkttypene som er beskrevet over. Inkluder også

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

INF1010 våren Arv og subklasser - del 2

INF1010 våren Arv og subklasser - del 2 INF1010 våren 2013 Torsdag 14. 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

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

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

1. Krav til klasseparametre 2. Om å gå gjennom egne beholdere (iteratorer) Stein Gjessing Inst. for Informatikk Universitetet i Oslo INF1010, 26. februar 2014 1. Krav til klasseparametre 2. Om å gå gjennom egne beholdere (iteratorer) Stein Gjessing Inst. for Informatikk Universitetet i Oslo Vi tar utgangspunkt i dette programmet for

Detaljer

Enkle generiske klasser i Java

Enkle generiske klasser i Java Enkle generiske klasser i Java Oslo, 7/1-13 Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo Del 1: Enkle pekere Før vi tar fatt på det som er nytt i dette notatet, skal vi repetere litt

Detaljer

INF1010 våren Arv, subklasser og grensesnitt - del 2

INF1010 våren Arv, subklasser og grensesnitt - del 2 INF1010 våren 2012 Torsdag 16. februar Arv, subklasser og grensesnitt - del 2 Stein Gjessing Institutt for informatikk Dagens tema nummer 1 Norsk: Grensesnitt Engelsk: Interface 2 Hva er objektorientert

Detaljer

n / ($$ n 0$$/ $ " 1! <! ')! $ : ; $.+ $.5.+ .!)/!/ ) $.) 6$ 7$, $.5.,.9+- 5.+ 8$ 7$, + - 5.

n / ($$ n 0$$/ $  1! <! ')! $ : ; $.+ $.5.+ .!)/!/ ) $.) 6$ 7$, $.5.,.9+- 5.+ 8$ 7$, + - 5. "# %% & ' ()*,"""). / " %% &%% / ( 0/ " 1 /(232.,..5. 6 7,.5.,. / : ; 5.. )// ).) 8 < ') < 6 6 8 < 8 8 7,.5.,.9 5. 5. 5. 5. 5.. 5..9 /.> DB(?/ ( / (.?/. /?(5@"""6(?( 5@""6 &. A8 6 (."B 3 8 6 ) ("?/& =

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

INF1010 våren Arv og subklasser, del 2

INF1010 våren Arv og subklasser, del 2 INF1010 våren 2011 Torsdag 10. februar Arv og subklasser, del 2 (og litt generiske typer) Stein Gjessing Institutt for informatikk Klassehierarki: Personbil Bil Repetisjon: Biler! class Bil {

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

INF1010 oversikt med

INF1010 oversikt med INF1010 oversikt med Subklasser mm Unntaksbehandling GUI Tråder 12. mai 2009 Stein Gjessing Model View Control main navn: bnk type: BankKontroll bnk = new BankKontroll(); bnk.ordreløkke(); BankKontrollklassedatastruktur

Detaljer

INF1010 våren 2010 Torsdag 4. februar. Arv og subklasser del I. Emneoversikt subklasser (2 uker) Hva er en subklasse? Eksempel: Universitetsregister

INF1010 våren 2010 Torsdag 4. februar. Arv og subklasser del I. Emneoversikt subklasser (2 uker) Hva er en subklasse? Eksempel: Universitetsregister INF1010 våren 2010 Torsdag 4. februar Arv og subklasser del I Stein Gjessing Institutt for informatikk 1 Emneoversikt subklasser (2 uker) Generalisering - spesialisering Gjenbruk av klasser Ved sammensetning

Detaljer

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

INF1010 våren 2007 Uke 6, 6. februar Arv og subklasser, del 2 Repetisjon INF1010 våren 2007 Uke 6, 6. februar Arv og subklasser, del 2 Stein Gjessing Institutt for informatikk Vi har sett to former for gjenbruk av klasser: Gammel: Ved sammensetning (komposisjon)

Detaljer

INF1010 våren 2008 Uke 5, 29. januar Arv og subklasser eksempler Litt om unntakshåndtering (40 og 41) Stein Gjessing Institutt for informatikk

INF1010 våren 2008 Uke 5, 29. januar Arv og subklasser eksempler Litt om unntakshåndtering (40 og 41) Stein Gjessing Institutt for informatikk INF1010 våren 2008 Uke 5, 29. januar Arv og subklasser eksempler Litt om unntakshåndtering (40 og 41) Stein Gjessing Institutt for informatikk 1 Dyreriket (utdrag) Klassehierarki Animalia Leddyr Ryggstrengdyr

Detaljer

INF 1010, vår 2005 Løsningsforslag uke 11

INF 1010, vår 2005 Løsningsforslag uke 11 INF 1010, vår 2005 uke 11 Anders Brunland 11. april 2005 Oppgave 1 Oppgave 1 i kapittel 19, Rett på Java Er følgende metoder lovlige? Hovorfor/hvorfor ikke? a) void koknverter ( int mnd ) { konverterdato

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

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

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

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

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

INF1010, 15. januar 2014 2. time. Parametriserte klasser (generiske klasser) Stein Gjessing Inst. for Informatikk Universitetet i Oslo INF1010, 15. januar 2014 2. time Parametriserte klasser (generiske klasser) Stein Gjessing Inst. for Informatikk Universitetet i Oslo Repetisjon fra gamle dager: Metoder med parametre En metode uten parameter:

Detaljer

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

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr IN1010 Fra Python til Java En introduksjon til programmeringsspråkenes verden dag@ifi.uio.no Oversikt Introduksjon Python Java Noe er likt Noe bare ser anderledes ut Noe er helt forskjellig Et par eksempler

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

INF1010 våren 2008 Uke 5, 29. januar Arv og subklasser eksempler Litt om unntakshåndtering (40 og 41)

INF1010 våren 2008 Uke 5, 29. januar Arv og subklasser eksempler Litt om unntakshåndtering (40 og 41) INF1010 våren 2008 Uke 5, 29. januar Arv og subklasser eksempler Litt om unntakshåndtering (40 og 41) Dyreriket (utdrag) Klassehierarki Animalia Leddyr Ryggstrengdyr Bløtdyr Tusenbein Insekter Kappedyr

Detaljer

Del 3: Evaluere uttrykk

Del 3: Evaluere uttrykk Del 3: Evaluere uttrykk Hva skal vi gjøre? Hvordan lagre Asp-verdier Hvilke operasjoner må jeg implementere? Er operasjonen lovlig? Utføre operasjonen Strukturen til interpreten vår f.asp 3&4 Interpret

Detaljer

Videregående programmering 6

Videregående programmering 6 Videregående programmering 6 1. Feilkontroll i klasser uten unntaksobjekter Klasser skal lages sikre. Argumentverdier skal kontrolleres, og eventuelle feil skal rapporteres til klienten. I praksis har

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

INF1000 - Uke 10. Ukesoppgaver 10 24. oktober 2012

INF1000 - Uke 10. Ukesoppgaver 10 24. oktober 2012 INF1000 - Uke 10 Ukesoppgaver 10 24. oktober 2012 Vanlige ukesoppgaver De første 4 oppgavene (Oppgave 1-4) handler om HashMap og bør absolutt gjøres før du starter på Oblig 4. Deretter er det en del repetisjonsoppgaver

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, 23. februar Parametriserte klasser Om å gå gjennom egne beholdere (subklasser og grensesnitt 3)

INF1010, 23. februar Parametriserte klasser Om å gå gjennom egne beholdere (subklasser og grensesnitt 3) INF1010, 23. februar 2012 Parametriserte klasser Om å gå gjennom egne beholdere (subklasser og grensesnitt 3) Stein Gjessing Inst for Informatikk Universitetet i Oslo Repetisjon fra gamle dager: Metoder

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

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

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

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

IN 211 Programmeringsspråk. Java. på 20 enkle ark. spesielt for de som kan. Simula. (og gjerne litt C) Ark 1 av 20

IN 211 Programmeringsspråk. Java. på 20 enkle ark. spesielt for de som kan. Simula. (og gjerne litt C) Ark 1 av 20 Java på 20 enkle ark spesielt for de som kan Simula (og gjerne litt C) Ark 1 av 20 Forelesning 28.9.1998 Et minimalt eksempel Filen Hallo.java ser slik ut: class Hallo { public static void main(string

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

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

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

Fra Python til Java. En introduksjon til programmeringsspråkenes verden. Dag Langmyhr Fra Python til Java En introduksjon til programmeringsspråkenes verden dag@ifi.uio.no Oversikt Introduksjon Python Java Noe er likt Noe bare ser anderledes ut Noe er helt forskjellig Et eksempel Klasser

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

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

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr IN1010 Fra Python til Java En introduksjon til programmeringsspråkenes verden dag@ifi.uio.no Oversikt Introduksjon Python Java Noe er likt Noe bare ser anderledes ut Noe er helt forskjellig Et par eksempler

Detaljer

Løsningsforslag til eksamen i INF1000 våren 2006

Løsningsforslag til eksamen i INF1000 våren 2006 Løsningsforslag til eksamen i INF1000 våren 2006 Oppgave 1 a) -1 false 7 b) 30 c) Verdien til j er: 4Verdien til k er: 3Verdien til n er: 7 d) Andre if-test er true Tredje if-test er true e) k = 4 k =

Detaljer

Innhold. Forord Det første programmet Variabler, tilordninger og uttrykk Innlesing og utskrift...49

Innhold. Forord Det første programmet Variabler, tilordninger og uttrykk Innlesing og utskrift...49 Innhold Forord...5 1 Det første programmet...15 1.1 Å kommunisere med en datamaskin 16 1.2 Programmeringsspråk 17 1.3 Et program som skriver på skjermen 18 1.4 Kompilering og kjøring 19 1.5 Kommentarer

Detaljer

INF1010. Grensesnittet Comparable<T>

INF1010. Grensesnittet Comparable<T> INF1010 21. februar 2013 Grensesnittet Comparable Stein Michael Storleer Institutt for Informatikk Universitetet i Oslo Interface med parametre interface Utkledd { // T er klassen jeg er utkledd

Detaljer

INF1010 våren Arv og subklasser del I

INF1010 våren Arv og subklasser del I INF1010 våren 2010 Torsdag 4. februar Arv og subklasser del I Stein Gjessing Institutt for informatikk 1 Emneoversikt subklasser (2 uker) 2 Hva er en subklasse? En klasse, K, beskriver objekter med visse

Detaljer

INF1010 oversikt med. 23. mai Subklasser mm. Unntaksbehandling GUI Tråder. Stein Gjessing InsBtuC for informabkk Universitetet i Oslo

INF1010 oversikt med. 23. mai Subklasser mm. Unntaksbehandling GUI Tråder. Stein Gjessing InsBtuC for informabkk Universitetet i Oslo INF1010 oversikt med Subklasser mm. Unntaksbehandling GUI Tråder 23. mai 2013 Stein Gjessing InsBtuC for informabkk Universitetet i Oslo Hvordan starte å løse et problem Eksempel: Bank I et mini-system

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

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i INF1000 Grunnkurs i objektorientert programmering Eksamensdag: 13. juni 2006 Tid for eksamen: 9.00 12.00 Oppgavesettet er på 5

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

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

Klasser skal lages slik at de i minst mulig grad er avhengig av at klienten gjør bestemte ting STOL ALDRI PÅ KLIENTEN!

Klasser skal lages slik at de i minst mulig grad er avhengig av at klienten gjør bestemte ting STOL ALDRI PÅ KLIENTEN! Å lage sikre klasser Unntaksklassene i Java-API-et Unntakshåndtering i databasesammenheng try-catch-finally-setningen Trelagsarkitektur; egen databaseklasse Transaksjonshåndtering LC191D Videregående programmering

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i Eksamensdag: 6. juni 2006 Tid for eksamen: 1430 1730 Oppgavesettet er på 6 sider. Vedlegg: INF1010 Objektorientert programmering

Detaljer

INF 1000 (uke 2) Variabler, tilordninger og uttrykk

INF 1000 (uke 2) Variabler, tilordninger og uttrykk INF 1000 (uke 2) Variabler, tilordninger og uttrykk Grunnkurs i programmering Institutt for Informatikk Universitet i Oslo Anja Bråthen Kristoffersen og Are Magnus Bruaset I dag skal vi se på Flere praktiske

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i INF1010 Objektorientert programmering Dato: 9. juni 2016 Tid for eksamen: 09.00 15.00 (6 timer) Oppgavesettet er på 7 sider. Vedlegg:

Detaljer

INF1000: noen avsluttende ord

INF1000: noen avsluttende ord Pensum Det som er gjennomgått på forelesningene INF1000: noen avsluttende ord Arne og Fredrik Stoff som er behandlet i oppgaver/obliger Notat om Informasjonsteknologi, vitenskap og samfunnsmessige virkninger

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

Jentetreff INF1000 Debugging i Java

Jentetreff INF1000 Debugging i Java Jentetreff INF1000 Debugging i Java Ingrid Grønlie Guren ingridgg@student.matnat.uio.no 11. november 2013 Kort om feilmeldinger i Java Java har to ulike type feilmeldinger som man kan få når man skriver

Detaljer

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

Forkurs INF1010. Dag 3. Andreas Færøvig Olsen Eivind Storm Aarnæs Forkurs INF1010 Dag 3 Andreas Færøvig Olsen (andrefol@ifi.uio.no) Eivind Storm Aarnæs (eivinsaa@math.uio.no) Institutt for Informatikk, 14. januar 2015 Forkurs INF1010 - dag 3 Strenger Fil-I/O Unntakshåndtering

Detaljer

INF1010 oversikt med

INF1010 oversikt med INF1010 oversikt med Subklasser mm Unntaksbehandling GUI Tråder 20. mai 2010 Stein Gjessing Model View Control main navn: bnk type: BankKontroll bnk = new BankKontroll(); bnk.ordreløkke(); BankKontrollklassedatastruktur

Detaljer