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

Størrelse: px
Begynne med side:

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

Transkript

1 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 (komposisjon) Ved arv Referanser - pekere Klasse-hierarkier - arv Virtuelle metoder Nøkkelordet super Konvertering av referanser Klassen Object Metoden equals() Nøkkelordet instanceof Konstruktører 2 Hva er en subklasse? En klasse, K, beskriver objekter med visse felles egenskaper En subklasse av K, S, beskriver objekter som har de samme egenskapene (som beskrevet av K), men i tillegg er objektene noe mer, de har flere egenskaper... class K {... class S extends K {... Nytt Java nøkkelord: extends Eksempel: Universitetsregister I et mini-system for Universitetet i Oslo skal alle studenter t registreres med og telefonnummer (åtte siffer), samt hvilket studie de er tatt opp til. Det skal være mulig for studenter å bytte. Systemet skal også inneholde informasjon om de ansatte ved universitetet, nemlig, telefonnummer, lønnstrinn og antall arbeidstimer per uke. Tekniskadministrativt ansatte har en arbeidsuke på 37,5 timer, mens vitenskapelig ansatte har 40-timers arbeidsuke. Alle personer skal behandles som Navn på klasser og subklasser (K og S her) bør best mulig beskrive hva klassene representerer 3 4

2 Eksempel: Universitetsregister I et mini-system for Universitetet i Oslo skal alle studenter t registreres med og telefonnummer (åtte siffer), samt hvilket studie de er tatt opp til. Det skal være mulig for studenter å bytte. Systemet skal også inneholde informasjon om de ansatte ved universitetet, nemlig, telefonnummer, lønnstrinn og antall arbeidstimer per uke. Tekniskadministrativt ansatte har en arbeidsuke på 37,5 timer, mens vitenskapelig ansatte har 40-timers arbeidsuke. Alle personer skal behandles som Klassen Student class Student { String ; int ; System.out.println("Navn: " + ); System.out.println( println("telefon: " + ); System.out.println("Studie: " + ); boolean { return >= && <= ; Substantivmetoden void byttprogram(string nytt) { = nytt; 5 6 Klassen Ansatt Student vs Ansatt class Ansatt { String ; int ; int lønnstrinn; int antalltimer; System.out.println( println("navn: " + ); System.out.println("Telefon: " + ); System.out.println("Lønnstrinn: " + lønnstrinn); System.out.println("Timer: " + antalltimer); boolean { return >= && <= ; void lønnstillegg(int tillegg) { lønnstrinn += tillegg; 7 Felles variable:, Egne variable: Student: Ansatt: lønnstrinn, antalltimer Felles metoder: Lignende metoder: skrivdata() Egne metoder: Student: nyttprogram(string nytt) Ansatt: lønnstillegg(int tillegg) 8

3 Klassen Person Kan samle det som er felles i en egen, mer generell, klasse: class Person { String ; int ; boolean { return >= && <= ; Student og Ansatt som subklasser Kan nå gjøre Student og Ansatt til subklasser av Person: class Student extends Person { void byttprogram(string nytt) { = nytt; Angir at klassene Student t og Ansatt er subklasser (= utvidelser) av class Ansatt extends Person { int lønnstrinn; klassen Person. int antalltimer; Klassen Person beskriver alt som er felles for studenter og ansatte 9 9 void lønnstillegg(int tillegg) { lønnstrinn += tillegg; Hva med skrivdata()? - Kommer tilbake til denne Nytt Java nøkkelord: extends 10 class Student { String ; int ; class Person { String ; int ; boolean {... boolean {... class Student extends Person { void byttprogram(string nytt) {... void byttprogram(string nytt) {... Eksempler på objekter av klassene g 11 Bruk av en subklasse Vi kan bruke variable og metoder i en subklasse på samme måte som om vi hadde definert alt i én klasse: Uten bruk av subklasser (før): class Student { String ; int ; boolean {... void byttprogram(string nytt) {... g Navn: stud Type: Student eller Med bruk av subklasser (nå): class Person { String ; int ; boolean {... class Student extends Person { void byttprogram(string nytt) {... Navn: stud Type: Student Student stud = new Student(); stud.; String prog = stud.; 12

4 Time out Det er to forskjellige innebygde typer i Java: Primitive typer boolean, byte, short, int, long, char, float, double Referanse-typer Beskriver pekere til klasse-objekter * (fordi klasse-objekter ikke har ) Jeg sier referanse og peker om hverandre Konstanter og variable av disse typene er de basale byggestene i Java, og er det alle objekter er bygget opp av (i tillegg er det metoder i objekter) * i tillegg finnes det referanser/pekere til arrayer 13 UML-notasjon for subklassehierarki class Person { String ; int ; boolean {... class Student extends Person { void byttprogram(string nytt) {... class Ansatt extends Person { int lønnstrinn; void lønnstillegg (int tillegg){ lønnstrinn += tillegg; Person Student Ansatt Igjen: Hva er en subklasse? Generalisering spesialisering En subklasse er en klasse som bygger på en allerede spesifisert klasse, og som dermed arver dennes egenskaper i tillegg til å utvide med egne egenskaper (metoder/variable/konstanter). /k t t En subklasse er altså en mer spesialisert utgave av klassen den bygger på. Klassen vi bygger på kalles en superklasse. Mengden av alle Personer lønnstrinn antalltimer Person Ansatt Mengden av alle Ansatte Student Mengden av alle Studenter Sub-klasse ~ Sub-mengde (del-mengde) 15 16

5 Klasse-hierarkier Generalisering spesialisering Det er mulig å definere subklasser av en subklasse: class Person { Person String ; int ; boolean {... Student Mengden av alle Personer Person Student Mengden av alle Studenter class Student extends Person { void byttprogram(string nytt){... MasterStudent MasterStudent class MasterStudent extends Student { String veileder; Obs: Her er MasterStudent en subklasse av både Student og Person, og arver egenskaper fra begge disse. veileder MasterStudent-objekt 17 veileder Mengden av alle MasterStudenter 18 Klasser - Subklasser Klassehierarki: Klassehierarki: Bil Personbil Klasser - Subklasser class Bil { <lys beige egenskaper> class Personbil extends Bil { <røde egenskaper> class Lastebil extends Bil { <grønne egenskaper> class Drosje extends Personbil bil{ <gule egenskaper> Bil Personbil class Bil {... class Personbil extends Bil {... class Lastebil extends Bil {... Lastebil Alle lastebiler Drosje Alle biler Alle drosjer Alle personbiler Lastebil Drosje class Drosje extends Personbil {

6 Hvorfor bruker vi subklasser? Klasser og subklasser avspeiler virkeligheten Bra når vi skal modellere virkeligheten i et datasystem Klasser og subklasser avspeiler arkitekturen til datasystemet / datamet Bra når vi skal lage et oversiktlig stort Klasser og subklasser kan brukes til å forenkle og gjøre mer mer forstålig, og spare arbeid: Gjenbruk av deler Bottom up mering Lage verktøy Top down mering Postulere verktøy 21 Gjenbruk av deler av mer Viktig å ikke måtte skrive ny kode hver gang man skal mere noe nytt Gjenbruk mest mulig av kode du har skrevet før Lag kode med henblikk på et den skal brukes (til noe liknende) senere Lag biblioteker Bruk andres bibliotek Javas eget bibliotek Strukturering av kode ( gjenbruk i samme ) Inf1000: Gjenbruk av metoder og klasser 22 Gjenbruk ved hjelp av klasser / subklasser Ved sammensetning (komposisjon) (i inf1000): Deklarer pekere til objekter av klasser du har skrevet før Lag objekter av disse klassen Kall på metoder i disse klassene Ved arv (nytt i inf1010): Lag en ny klasse som utvider den eksisterende klassen (spesielt viktig ved litt større klasser) Føy til ekstra variable og metoder p Gjenbruk ved sammensetning / komposisjon Gjenbruk ved sammensetning har dere allerede sett mange eksempler på i INF1000. Eksempel: class PersonRegister { HashMap venner = new HashMap(); Noe p = new Noe(); String = Ole-Morten"; venner, p og er /* Diverse metoder */ deklarert som pekere til objekter av andre klasser som allerede eksisterer. venner 23 Ole-Morten 24

7 Gjenbruk ved arv Objekter av klassene Når skal vi bruke arv? class Bok { String tittel, forfatter; class Fagbok extends Bok { double dewey; class Skjønnlitterærbok extends Bok { String sjanger; class Bibliotek { Bok b1 = new Fagbok(); Bok b2 = new Skjønnlitterærbok(); Arv Kom mposisjon Gjenbrukes Gjenbrukes Generelt: Ved er-en relasjon mellom objektene. En Student er en Person En Ansatt er en Person Hva med relasjonene roman bok? En roman er en bok (arv). kapittel bok? Et kapittel er ikke en bok, men et kapittel er en del av en bok, og en bok har/består av kapitler (sammensetn.) Relasjoner som har-en og består-av skal ikke modelleres som subklasser, men ved hjelp av sammensetning g( (som datafelt (konstanter/variable)) Oppgave Ulike referansetyper Hvor er det naturlig å bruke komposisjon og hvor er det naturlig med arv i disse tilfellene? ll Relasjon mellom Komposisjon Arv vare - varelager nyhetskanal - kanal person - personregister cd - spor (sanger) PC - datamaskin gaupe - rovdyr fly - transportmiddel motor - bil 27 Person pers; Student stud; pers stud class Person { String ; int ; boolean {... class Student extends Person { void byttprogram(string nytt){... Objekt av klassen Student Vi kan ha pekere både av typen Student og av typen Person 28

8 Ulike måter å se et objekt på Navn: pers Typen (klassen) til et objekt er uforanderlig. Et objekt kan likevel fremtre for oss på ulike måter. Type: Person Navn: stud Et objekt av klassen Type: Student class Student extends Person {... kan vi se på som et objekt av typen (klassen) Person: da er egenskapene som er spesielle for Student ikke synlige (men de er der fortsatt!). Student: da er både Person- og Studentegenskapene synlige for oss. Typen (klassen) til Det er referansens type som avgjør hvordan objektet hele dette objektet er Student fremtrer. (med untak av virtuelle metoder, som vi snart skal lære hva er) Student stud; Person pers; stud = new Student(); pers = stud; (Det er lov å skrive: pers = new Student(); 29 Eksempler class Person { String ; int ; boolean {... class Student extends Person { void byttprogram(string nytt) {... Student s String ; int ; Person p String ; int ; Anta: Student s = new Student(); Person p = new Student(); Hvilke av følgende uttrykk er nå lovlige? s. = Ole-Morten"; s.; s. = "Matte"; s.byttprogram("data"); p. = Ole-Ivar"; p.; p. = "Matte"; p.byttprogram("data"); 30 IO feil En metode som kan komme til å gjøre en IO-feil må enten behandle denne selv, eller kaste feilen videre (også i main): public void mittprogmedio( ) throws IOException { < kode som gjør fil-behandling> Vi skal lære mye mer om unntak og feilbehandling senere I Java-biblioteket: class IOException extends Exception {... throws er et Java nøkkelord 31 Inn fra tastatur i Java import java.io.*; import java.util.*; class Hilsen { public static void main (String [] args) throws IOException { Scanner les= new Scanner (System.in); main les Hilsen klassedatastruktur String nextline() Objekt av klassen System.out.println( println( Hva heter du?"); Scanner String = les.nextline ( ); System.out.println( God dag " + ); 11 konstruktører 47 metoder Kaster IOunntak pluss plass til å til lagre en streng (en tekst) snidil:>javac Hilsen.java runtime- snidil:>java Hilsen Hva heter du? Stein Gjessing systemet Stein Gjessing Et objekt av klassen String God dag Stein Gjessing snidil:> 32

9 import java.io.*; import java.util.*; Om å lese tall (Utdrag av et ) Scanner tastaturparser= new Scanner (System.in); double tall; int antall; System.out.println( Tast inne et kommatall: ); tall = tastaturparser.nextdouble(); System.out.println( Tast inne et tall: ); antall = tastaturparser.nextint(); System.out.println ( Du skrev + tall + og + antall ); main tastaturparser double nextdouble() int nextint() Objekt av klassen Scanner som henter data fra System.in (tastaur) import java.io.*; import java.util.*; class LesFraFil Fil { Innlesing fra fil Java original main filleterinn Objekt av klassen Scanner public static void main (String [ ] args) throws IOException { Scanner filleterinn = new Scanner (new File ("minfil.txt )); int tall; while(filleterinn.hasnext()) { tall = filleterinn.nextint(); System.out.println(tall); // slutt main // slutt class LesFraFil boolean hasnext() int nextint() DETTE GÅR BRA HVIS FILEN BARE INNE- HOLDER HELTALL!! 34 Utskrift til fil - Java original PrintWriter filut = new PrintWriter (new FileWriter ( minutfil.txt )); // Utskrift skjer som til skjerm: filut.println( utskrift + 17 ): For at innholdet på den nye filen skal bevares må vi til slutt si: filut.close( ); main filut void println() Dette objektet skriver på filen minutfil.txt minutfil.txt Omdefinering av metoder - polymorfi Vi har sett at det med subklasser er mulig å utvide en eksisterende klasse med nye metoder. En subklasse kan også definere en metode med samme signatur som en metode i superklassen, men med ulikt innhold. Den nye metoden vil omdefinere (erstatte) metoden som er definert i superklassen. Metoder som kan omdefineres på denne måten kalles virtuelle metoder. I Java er alle metoder virtuelle, så sant de ikke er deklarert med final. 35 Virtuelle metoder = polymorfi 36

10 Polymorfi: eksempel Polymorfi: eksempel For objekter av typen Hund class Hund { er det denne metoden som //... gjelder. void bjeff() { System.out.println("Voff-voff"); t o o For objekter av typen class Rasehund extends Hund { Rasehund er det denne //... metoden som gjelder. void bjeff() { System.out.println("Vov-vov"); Hund h void bjeff() { System.out.println("Voff-voff"); Rasehund r Hund g void bjeff() { System.out.println("Voff-voff"); void bjeff() { System.out.println("Vov-vov"); Anta: Hva skrives ut ved hvert av kallene: Anta: Hva skrives ut ved hvert av kallene: Hund h = new Hund(); Rasehund r = new Rasehund(); Hund g = r; h.bjeff(); r.bjeff(); g.bjeff(); Hund h = new Hund(); Rasehund r = new Rasehund(); Hund g = r; h.bjeff(); r.bjeff(); g.bjeff(); voff-voff vov-vov vov-vov Polymorfi: skrivdata I universitets-eksemplet så vi at klassene Student og Ansatt hadde nesten like skrivdata-metoder: t // I klassen Student: System.out.println("Navn: " + ); System.out.println("Telefon: " + ); System.out.println("Studie: p " + ); // I klassen Ansatt: System.out.println("Navn: " + ); System.out.println("Telefon: " + ); System.out.println("Lønnstrinn: " + lønnstrinn); System.out.println("Timer: " + antalltimer); 39 Nøkkelordet super Nøkkelordet super brukes til å aksessere variable / metoder i objektets superklasse. Dette kan vi bruke til å la superklassen Person ha en generell skrivdata, som så kalles i subklassene: // I klassen Person: System.out.println("Navn: " + ); System.out.println("Telefon: " + ); // I klassen Student: super.skrivdata(); System.out.println("Studie: " + ); // Tilsvarende i klassen Ansatt: super.skrivdata(); System.out.println("Lønnstrinn: " + lønnstrinn); System.out.println("Timer: " + antalltimer); 40

11 class StudentRegister { public static void main(string [] args) { Student stud = new Student(); Person pers = new Person(); stud.skrivdata(); // Her brukes definisjonen i Student pers.skrivdata(); skrivdata(); // Her brukes definisjonen i Person Person pers2 = stud; pers2.skrivdata(); // Hvilken definisjon benyttes her? Person pers Student stud Person pers2 Omdefinering av variable En subklasse kan også omdefinere (skyggelegge) variable som er definert i superklassen. MEN: Dette bør IKKE brukes!!! Sjelden nødvendig di Reduserer lesbarheten Kan føre til uventet oppførsel Og mer trenger dere ikke å vite om det System.out.println("Navn: " + ); System.out.println("Telefon: " + ); System.out.println("Navn: " + ); System.out.println("Telefon: " + ); Regel: Det er objekttypen, ikke pekertypen, som avgjør hvilken definisjon som gjelder når en metode er virtuell. super.skrivdata(); System.out.println("Studprgm: " + prgm); class Leser { Resten av foilene er ekstra eksempler Eksempel: Lese fra forskjellige enheter public... lesenkommando() {... <Generelle metoder som hjelper til med å tolke kommandoer> class TerminalLeser extends Leser { public... lesenkommando() {... class FilLeser extends Leser{ public... lesenkommando() {... Kanskje klassen Leser skal vær abstrakt (men det lærer vi først om senere) 43 Eksempel: Lenkete lister (mer om tre uker) (ikke i oblig 1) class StandardLenketListe forste class SortertLenketListe forste class LenketListeMedHalepeker forste settinnsist( ) class IndeksertSortertLenketListe class DobbeltLenketSortertListe? forste forste (Her er det alt litt polymorfi (s.34)) : :? 44 siste

12 Klassehierarki for lenkede lister class StandardLenketListe Klassehierarki: Et eksempel fra Java-biblioteket ArrayList class SortertLenketListe class LenketListeMedHalepeker AttributeListt RoleList RoleUnresolvedList class IndeksertSortertLenketListe class DobbeltLenketSortertListe? Oppgave: Slå opp på ArrayList i Javabiblioteket og se at de tre klassene er direkte subklasser av ArrayList (direkte naboer i klassehierarkiet) ( Direct Known Subclasses ) Klassehierarki: Enda et eksempel fra Javabiblioteket RuntimeException Object Throwable Exception IOException Oppgave: Slå opp i Javabiblioteket AWTException... og ca. 60 andre Eksempel: class Musikk Hva skrives ut når met Musikk.java class Musikk { kjøres? public static void main (String[] args) { Instrument t inst = new Piano(); inst.skrivdefinisjon(); class Instrument { void skrivdefinisjon () { System.out.println("Et instrument er noe man kan spille på"); class Piano extends Instrument t { void skrivdefinisjon () { System.out.println("Et piano er et strengeinstrument"); 48

13 Musikk versjon 2 Musikk versjon 3 class Musikk { public static void main (String[] args) { Instrument inst = new Piano(); inst.skrivdefinisjon(); Hva skjer i dette tilfellet? ll t? class Musikk { public static void main (String[] args) { Instrument inst = new Piano(); inst.skrivdefinisjon(); Hva askjer her da? class Instrument { void skrivdefinisjon () { System.out.println("Et instrument er noe man kan spille på"); class Piano extends Instrument { void skrivdefinisjon (String overskrift) { System.out.println(overskrift); System.out.println("Et piano er et strengeinstrument"); class Instrument { void skrivdefinisjon(string overskrift) { System.out.println(overskrift); System.out.println("Et instrument er noe man kan spille på"); class Piano extends Instrument { void skrivdefinisjon () { System.out.println("Et piano er et strengeinstrument"); Musikk-eksemplene: Lærdom Når vi ser på et objekt via en superklasse-peker, mister vi vanligvis tilgang til metoder og variable som er definert i subklassen. Dersom en metode i subklassen også er definert (med samme signatur) i superklassen har vi likevel tilgang via superklasse-pekeren, fordi objektets dypeste metode brukes. Slike metoder kalles virtuelle metoder, og denne mekanismen kalles polymorfi. Det som er relevant er derfor hvilke metoder som finnes i superklassen (med hvilke parametre), men ikke nødvendigvis innholdet i metodene. Samme signatur = samme og nøyaktig samme parametre (inkl. returtype) 51 Flere virtuelle metoder class Vare { int pris; int prisutenmoms() { return pris; int prismedmoms() { return (int) (1.25*prisUtenMoms()); Anta: Vare v = new Vare(); v.pris = 100; SalgsVare s = new SalgsVare(); s.pris = 100; s.rabatt = 25; class SalgsVare extends Vare { int rabatt; // I prosent... Hva blir nå: int prisutenmoms() { return pris (pris*rabatt/100); v.prismedmoms() s.prismedmoms() 52

14 pris 100 Vare v int prisutenmoms ( ) { return pris; Anta: Vare v = new Vare(); int prismedmoms { v.pris = 100; return (int) (1.25*prisUtenMoms ( ) ); SalgsVare s = Vare v2 new SalgsVare(); s.pris = 100; pris 100 s.rabatt = 20; Vare v2 = s; int prisutenmoms ( ) { SalgsVare s return pris; int prismedmoms { Hva blir nå: return (int) (1.25*prisUtenMoms ( ) ); v.prismedmoms(); s.prismedmoms(); v2.prismedmoms(); rabatt 20 int prisutenmoms ( ) { return pris (pris*rabatt/100); 53 Inn fra tastatur - tekster main les fnavn import java.io.*; import java.util.*; enavn class Hilsen { public static void main (String [] args) throws IOException { Scanner les= new Scanner (System.in); System.out.println( Hva heter du?"); String fnavn = les.next( ); String enavn = les.next( ); System.out.println( Etter: " + enavn ); 11 konstruktører System.out.println( For: " + fnavn ); 47 metoder pluss plass til å lagre en streng >javac Hilsen.java (en tekst) >java Hilsen Hva heter du? Gjessing Stein Gjessing Etter: Gjessing Et objekt av For: Stein klassen String > Hilsen klassedatastruktur String nextline() Objekt av klassen Scanner 11 konstruktører 47 metoder pluss plass til å lagre en streng (en tekst) Stein Et objekt av klassen String 54

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

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

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

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

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

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

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

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

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

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

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

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 2005 Uke 3, 25. januar Arv og subklasser del I

INF1010 våren 2005 Uke 3, 25. januar Arv og subklasser del I Emeoversikt subklasser INF1010 våre 2005 Uke 3, 25. jauar Arv og subklasser del I Stei Gjessig Istitutt for iformatikk 1 Geeraliserig - spesialiserig Gjebruk av klasser Ved sammesetig (komposisjo) Ved

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

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

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

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

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

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

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

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

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

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

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

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

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

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

INF1000 - Løsning på seminaropppgaver til uke 8

INF1000 - Løsning på seminaropppgaver til uke 8 INF1000 - Løsning på seminaropppgaver til uke 8 Oppgave 1 a) for(string nokkel : studenter.keyset){ System.out.println(nokkel); Studenten sitt navn blir skrevet ut. b) for(student dennestudenten : studenter.values()){

Detaljer

Oblig 4Hybelhus litt mer tips enn i oppgaven

Oblig 4Hybelhus litt mer tips enn i oppgaven Oblig 4Hybelhus litt mer tips enn i oppgaven lørdag 19. okt 2013 Arne Maus Obligatorisk oppgave 4 Gulbrand Grås husleiesystem I denne oppgaven skal vi se på hans studenthus Utsyn. Utsyn består av 3 etasjer,

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

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

Hva er verdien til variabelen j etter at følgende kode er utført? int i, j; i = 5; j = 10; while ( i < j ) { i = i + 2; j = j - 1; } Hva er verdien til variabelen j etter at følgende kode er utført? int i, j; i = 5; j = 10; while ( i < j ) { i = i + 2; j = j - 1; Hva skrives ut på skjermen når følgende kode utføres? int [] tallene =

Detaljer

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

INF1010, 21. januar 2016. Klasser med parametre = Parametriserte klasser = Generiske klasser INF1010, 21. januar 2016 Klasser med parametre = Parametriserte klasser = Generiske klasser Stein Gjessing Inst. for Informatikk Universitetet i Oslo Først litt repetisjon fra i går class LagBiler { public

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

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

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

Eksamen. Objektorientert Programmering IGR 1372

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

Detaljer

1. Finn klassene (hvilke objekter er det i problemet) 1. Dataene som beskriver problemet (hvilke objekter har vi og hvor mange klasser er det?

1. Finn klassene (hvilke objekter er det i problemet) 1. Dataene som beskriver problemet (hvilke objekter har vi og hvor mange klasser er det? Obligatorisk oppgave 3 Gulbrand Grås husleiesystem Oblig 3hus litt mer tips enn i oppgaven I denne oppgaven skal vi se på hans studenthus Utsyn. Utsyn består av 3 etasjer, nummerert fra -3. I hver etasje

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

INF1000-SIKT - Notat om I/O i Java

INF1000-SIKT - Notat om I/O i Java INF1000-SIKT - Notat om I/O i Java Tuva Kristine Thoresen tuvakt@ulrik.uio.no 30. oktober 2013 Innhold 1 Innlesning fra terminal 2 1.1 Innlesning av tekst........................ 2 1.2 Innlesning av tall.........................

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

INF Notat om I/O i Java

INF Notat om I/O i Java INF1000 - Notat om I/O i Java Tuva Kristine Thoresen, Ingrid Grønlie Guren tuvakt@ulrik.uio.no, ingridgg@ulrik.uio.no 22. oktober 2014 Dette notatet handler om I/O (input/output) i Java, og tar for seg

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

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

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

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

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

Forkurs INF1010. Dag 1. Andreas Færøvig Olsen Tuva Kristine Thoresen Forkurs INF1010 Dag 1 Andreas Færøvig Olsen (andrefol@ifi.uio.no) Tuva Kristine Thoresen (tuvakt@ifi.uio.no) Institutt for Informatikk, 6. januar 2014 Forkurs INF1010 - dag 1 Hello, World! Typer Input/output

Detaljer

IN Notat om I/O i Java

IN Notat om I/O i Java IN1010 - Notat om I/O i Java Mathias J.P. Stang, Tuva Kristine Thoresen, Ingrid Grønlie Guren 17. januar 2018 Dette notatet handler om I/O (input/output) i Java, og tar for seg innlesning fra terminal,

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO BOKMÅL Det matematisk-naturvitenskapelige fakultet Eksamen i : Eksamensdag : Torsdag 2. desember 2004 Tid for eksamen : 09.00 12.00 Oppgavesettet er på : Vedlegg : Tillatte hjelpemidler

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

Gjennomgang av eksamen H99

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

Detaljer

Obligatorisk oppgave 4: Lege/Resept

Obligatorisk oppgave 4: Lege/Resept Obligatorisk oppgave 4: Lege/Resept INF1010 Frist: mandag 27. mars 2017 kl. 12:00 Versjon 1.0 (111c894 ) Innhold 1 Innledning 1 1.1 Begreper................................ 2 2 Pasienter 2 3 Leger og lister

Detaljer

Hittil har programmene kommunisert med omverden via tastatur og skjerm Ønskelig at data kan leve fra en kjøring til neste

Hittil har programmene kommunisert med omverden via tastatur og skjerm Ønskelig at data kan leve fra en kjøring til neste Datafiler og serialisering Tekstfiler Scanner klassen Binær overføring av data Direkte tilgang til filinnholdet Serialisering LC191D Videregående programmering Semesterplan: http://aitel.hist.no/fag/vprg/index_lc191d.php

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

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

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

Detaljer

Velkommen til. INF våren 2016

Velkommen til. INF våren 2016 Velkommen til INF1010 - våren 2016 Denne uken (onsdag og torsdag): Om INF1010 Java datastrukturer Klasser med parametre i Java Stein Gjessing Institutt for informatikk Universitetet i Oslo 1 1 INF1010

Detaljer

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

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

Detaljer

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

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

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

Detaljer

Innhold. INF1000 Høst Klasser og objekter. Uke 7: Mer objektorientert programmering Siri Moe Jensen

Innhold. INF1000 Høst Klasser og objekter. Uke 7: Mer objektorientert programmering Siri Moe Jensen Innhold INF1000 Høst 2015 Uke 7: Mer objektorientert programmering Siri Moe Jensen Oo: Hva skjer egentlig i programmene våre? Hva var det vi gjorde annerledes i Uke 5? Klassemetoder (deklarert som static)

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

Læringsmål for forelesningen

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

Detaljer

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

Løsningsforslag ukeoppg. 6: 28. sep - 4. okt (INF1000 - Høst 2011) Løsningsforslag ukeoppg. 6: 28. sep - 4. okt (INF1000 - Høst 2011) Løsningsforslag til oppgave 7, 8, og 9 mangler Klasser og objekter (kap. 8.1-8.14 i "Rett på Java" 3. utg.) NB! Legg merke til at disse

Detaljer

UNIVERSITETET I OSLO

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

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

INF1010 våren 2017 Torsdag 26. januar. Arv og subklasser del 1. Stein Gjessing Institutt for informatikk Universitetet i Oslo

INF1010 våren 2017 Torsdag 26. januar. Arv og subklasser del 1. Stein Gjessing Institutt for informatikk Universitetet i Oslo INF1010 våre 2017 Torsdag 26. jauar Arv og subklasser del 1 Stei Gjessig Istitutt for iformatikk Uiversitetet i Oslo 1 Når du har lært om subklasser ka du programmere med: Første uke: Spesialiserig (og

Detaljer

Litt om pakker og mest om data inn og ut

Litt om pakker og mest om data inn og ut Litt om pakker og mest om data inn og ut IN105-javainnogut-1 import java.io.*;. Data inn fra tastaturet lesemetode tastatur BufferedReader void lesemetode (String [ ] args) throws IOException {... /* sett

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO FASIT UNIVERSITETET I OSLO BOKMÅL Det matematisk-naturvitenskapelige fakultet Kontinuasjonseksamen i : Eksamensdag : INF1000 Grunnkurs i objektorientert programmering Fredag 7. januar Tid for eksamen :

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

Fra Python til Java, del 2

Fra Python til Java, del 2 Fra Python til Java, del 2 Hvordan kjøre Java? På Ifis maskiner På egen maskin Et eksempel Array-er For-setninger Lesing og skriving Metoder Biblioteket Hva trenger vi egentlig? Å kjøre Java For å kunne

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

INF våren 2017

INF våren 2017 INF1010 - våren 2017 Om Java Objekter og klasser Både for deg som kan og for deg som ikke kan Java Stein Gjessing Universitetet i Oslo Ny versjon etter forlesningen der tre meningsløse private modifikatorer

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

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

Å lese tall fra en fil, klassen Scanner

Å lese tall fra en fil, klassen Scanner Å lese tall fra en fil, klassen Scanner 1. Et Scanner-objekt kan knyttes til et strømobjekt eller til en streng. 2. Kan skanne teksten etter data av ulike typer. 3. Kan kun skanne framover i teksten. Vis

Detaljer

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

Oversikt. INF1000 Uke 1 time 2. Repetisjon - Introduksjon. Repetisjon - Program Oversikt INF1000 Uke 1 time 2 Variable, enkle datatyper og tilordning Litt repetisjon Datamaskinen Programmeringsspråk Kompilering og kjøring av programmer Variabler, deklarasjoner og typer Tilordning

Detaljer

INF1000 Prøveeksamen Oppgave 7 og 9

INF1000 Prøveeksamen Oppgave 7 og 9 INF1000 Prøveeksamen Oppgave 7 og 9 Høst 2015 Siri Moe Jensen 7a) Skriv en klasse Gave med to variabler som forteller hva som er i gaven, og hvor mye den har kostet. Klassen skal ha en konstruktør med

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

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

Innhold. INF1000 Høst Unified Modeling Language (UML) Unified Modeling Language (UML) Innhold Unified Modelling Language UML INF1000 Høst 2015 Uke 8: Mer objektorientert programmering Siri Moe Jensen En ny type for-løkke Organisering av mengder av objekter HashMap Valg av representasjon

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO BOKMÅL Det matematisk-naturvitenskapelige fakultet Kontinuasjonseksamen i : Eksamensdag : INF1000 Grunnkurs i objektorientert programmering Fredag 7. januar Tid for eksamen : 09.00

Detaljer

UNIVERSITETET I OSLO

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

Detaljer

(MVC - Model, View, Control)

(MVC - Model, View, Control) INF1010 - våren 2008 Modell - Utsyn - Kontroll (MVC - Model, View, Control) Stein Gjessing Inst. for informatikk Et bankprogram Vi skal lage et program som håndterer kontoene i en bank. En konto eies av

Detaljer

Kapittel 6: Arv. Redigert av: Khalid Azim Mughal (khalid@ii.uib.no)

Kapittel 6: Arv. Redigert av: Khalid Azim Mughal (khalid@ii.uib.no) Kapittel 6: 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

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

To måter å programmere på. Java 12. Programmering med objekter. Statisk programmering INF 101-10. mars 2003 Mer om klasser og objekter Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for informatikk Universitetet i Oslo Java 12 To måter å programmere på Statisk programmering:

Detaljer

IN1010 våren 2019 Onsdag 6. februar. Arv og subklasser - del 2

IN1010 våren 2019 Onsdag 6. februar. Arv og subklasser - del 2 IN1010 våre 2019 Osdag 6. februar Arv og subklasser - del 2 Stei Gjessig Dages tema Virtuelle metoder som er det samme som Polymorfi Når bruker vi arv / år bruker vi komposisjo Kostruktører i subklasser

Detaljer

UNIVERSITETET I OSLO

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

Detaljer

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

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

Enkel lesing og skriving i Java

Enkel lesing og skriving i Java Enkel lesing og skriving i Java Dag Langmyhr dag@ifi.uio.no 11. januar 2019 Innhold 1 Skriving 1 1.1 Skriving til fil...................................... 3 2 Lesing 4 2.1 Lesing fra fil.......................................

Detaljer