INF april 2016
|
|
- Egil Dale
- 7 år siden
- Visninger:
Transkript
1 INF april 2016 Programmeringsmønstre Patterns Oppgave med interface Vranglås blant tråder Prosesskommunikasjon Stein Gjessing Institutt for informatikk Universitetet i Oslo 1 1
2 Problem Spesifikasjon Program 2
3 Programvare- arkitektur Hvordan programmet er bygget opp Klasser Objekter Hvordan disse klassene og objektene er koblet sammen Mapper, packages... 3
4 Kjente mønstre for programoppdeling Det er mange kjente og velprøvde måter å dele opp programkode. Slike kjente måter kalles design pa*erns. Ta' fra The Timeless Way of Building, Christoffer Alexander, Oxford University Press, 1979, ISBN Each pa'ern describes a problem which occurs over and over again in our environment, and then describes the core of the solu$on to that problem, in such away that you can use this solu$on a million $mes over, without doing it the same way twice Et slikt programmeringsmønster har mange lært i INF1000 med kommandoløkka som skriver ut en meny og tar kommando fra brukeren. 4
5 Ins$tu' for informa$kk Arkitekturmønstre Snøhettas forslag til regjeringskvartal Typisk hus i by i USA
6 Et eksempel på et kjent programmeringsmønster: Modell - Utsyn - Kontroll (MVC - Model, View, Control) (funnet på av Trygve Reenskaug) 6
7 Et bankprogram Vi skal lage et program som håndterer kontoene i en bank. En konto eies av en kunde, og har en saldo. Programmet skal kommunisere med en bruker i Unix/DOS- vinduet Programmet skal kunne administrere kontoene i banken, og i første omgang 1) Oppre'e en ny konto 2) Fjerne en konto 3) Se'e inn penger på en konto 4) Skrive ut bankens forvaltningskapital 7
8 Et bankprogram n Vi skal lage et program som håndterer kontoene i en bank. En konto eies av en kunde, og har en saldo. Vi bruker substantivmetoden til å finne forslag til klasser (som vi kan lage objekter fra) class Bank class Konto class Kunde class Saldo For kunde og saldo satser vi i denne enkle versjonen av programmet på å bare bruke h.h.v. en String og en double 8
9 class Bank I en bank skal vi kunne legge inn en ny kunde, ferne en kunde, se'e inn penger på en kundes konto og finne forvaltningskapitalen $l banken (summen av alle beløpene på alle kontoene) class BankData Alle kontoene blir adminstrert av klassen BankData class Konto Data og metoder for en konto 9
10 UML klassediagram: Bank BankData * Konto Sammenlign med Java datastrukturen på neste side (UML er ikke viktig i INF1010) 10
11 Skisse av Java datastruktur for banksystemet Bank-objekt BankData-objekt Mange Konto-objekter 11
12 UML klassediagram for BankData BankData Konto 1 * Kan f.eks. gi denne Java datastrukturen: Konto-objekter BankData-objekt navn: type: Bank type: HashMap type: Bank HashMap-objekt En Collection 12
13 Skisse av class BankData BankData-objekt navn: konti type: HashMap BankData( ) lagbankkunde (...) fjernbankkunde (...) settinn (...) sumallekonti ( ) class BankData { BankData( ) {... private HashMap <String,Konto> konti = new HashMap<String,Konto>( ); public void lagbankkunde(string navn) {... public void fjernbankkunde (String n) {... public void settinn(string n, double b) {... double sumallekonti( ) {... 13
14 class Konto Når en konto oppre'es oppgir vi dens eier, og saldoen se'es $l null. På en konto skal vi kunne se'e inn et beløp, finne navnet på eieren og finne innestående beløp 14
15 Skisse av class Konto Konto-objekt Konto(String nvn) class Konto { Konto (String nvn) {... public void setinn(double belop) {... settinn(double belop) double hentsaldo( ) String henteier( ) public double hentsaldo ( ) {... public String henteier( ) {... // slutt klassen Konto 15
16 Modell Utsyn Kontroll = MVC: Model View Control Modell En ren datastruktur som holder alle data om problemet. Utsyn Egen modul for å presentere modellen for brukeren på ulike måter valgt av brukeren (via kontrollen) Kontroll Egen modul/klasse for å mo'a ordre fra brukeren og enten endre modellen (legge inn nye data, endre, ferne data) eller kalle en funksjon i utsynet for å gi et ny' bilde av modellen. Omlag samme oppdeling som i klient/tjener baserte distribuerte systemer Modell database (server) Utsyn klienten på distribuerte PCer Kontroll tjener/server med forretningslogikken Tjener (med forretningslogikk) Klienter Database server 16
17 Modell - Utsyn - Kontroll (MVC) Her: Et svært enkelt system for å vise mekanismen. MVC er fortrukket ved noen hundre linjer kode og oppover. Grunnen $l å skille disse funksjonene fra hverandre, er at det gjør det le'ere : Å utvikle - Konsentrere seg om en $ng om gangen Å endre - Kode om en $ng er samlet e' sted F.eks.: Linjebasert vs. Vindusbasert utskrim 17
18 MVC løsning for banken vår Det skal da være klasser som håndterer : Klassen BankData med hjelpeklassen Konto Utsynet for hele systemet (BankUtsyn) Kontrollen for hele systemet (Bank) 18
19 Java datastruktur oversikt Bank-objekt BankData-objekt konti BankUtsyn-objekt Konto-objekter <Alt som har med presentasjon og interaksjon med brukere> 19
20 Program- merings- mønsteret Kontroll Modell / Data Utsyn / View En eller annen datastruktur <Alt som har med presentasjon og interaksjon med brukere> 20
21 Programskisse av hele Banksystemet /** Kontroll av Banksystemet */ public class Bank { private BankData b; private BankUtsyn u; public Bank( ) { b = new BankData( ); u = new BankUtsyn( ); public static void main (String [] args) { Bank bnk; bnk = new Bank( ); bnk.ordreløkke( ); void ordreløkke ( ) { // end Bank Prøv å kompilere (oversette) og kjøre denne skissen /** Utsyn for Bank*/ class BankUtsyn { <Alt som har med presentasjon og interaksjon med brukere> /** BankData */ class BankData { <administrerer alle kontoene> /** Konto */ class Konto <data om en konto>
22 Bankklassedatastruktur main navn: bnk type: Bank bnk = new Bank(); bnk.ordreløkke(); navn: b Bank-objekt Bank type: BankData BankData-objekt lagnykunde lagbankkunde fjernbankkunde fjernbankkunde settinn sumallekonti sumallekonti settinn ordrelokke navn: konti BankUtsyn-objekt leskommando beomnavnogbelop hentnavn hentbelop beomoghentnavn skrivsum navn: u type: BankUtsyn HashMap-objekt type: HashMap Konto-objekter 22
23 Fullstendig program import java.util.*; /** * En konto har en eier identifisert av en tekst (String) * Stein Gjessing 13. januar 2011 **/ class Konto { private String navn; private double saldo; /** * Konstruktør setter kontoens saldo til 0. * n navn på kontoens eier */ Konto (String n) { navn = n; saldo =0; /** * Setter inn et beløp. * b beløp */ public void setinn(double b) { saldo += b; /** * Henter saldoen. * saldo på konto */ public double hentsaldo() { return saldo; /** * Henter eier. * navn på eier */ public String henteier() { return navn; 23
24 /** * BankData er modellen / dataene i banksystemet. * * Denne klassen innehold er alle metoder som * er nødvendige for å manipulere kontoer. * En ny bank innholder ingen kontoer. * Alle kontoenes eiere må ha forskjellige navn * Stein Gjessing 13. januar 2011 */ class BankData { private HashMap <String,Konto> konti = new HashMap<String,Konto>(); /** * Oppretter en ny konto i banken. * kunde navn på kunden */ public void lagbankkunde(string navn) { konti.put(navn, new Konto (navn)); /** * Fjerne en konto fra banken. navn navn på kunde */ public void fjernbankkunde(string navn) { konti.remove(navn); /** * Summerer saldoen for alle kontoene i banken. * summen av saldo for alle kontoer */ public double sumallekonti() { double sum = 0; for (Konto s: konti.values()) sum+= s.hentsaldo(); return sum; /** * Setter inn penger på en konto. * navn navn på kunde belop beløpet som settes inn. */ public void settinn (String navn, double belop) { Konto k = konti.get(navn); k.setinn(belop); 24
25 /** * Bank er kontrollklassen for dette banksystemet. * Her ligger ordreløkken som styrer det hele. * Denne klassen er bindeleddet mellom * utsynet og datamodellen. * Stein Gjessing 17. Januar 2011 */ public class Bank { private BankData b; private BankUtsyn u; Bank() { b = new BankData(); u = new BankUtsyn(); public static void main(string [] args) { Bank bnk = new Bank(); bnk.ordreløkke(); /** * Lager en ny konto. */ void lagnykunde () { String nvn = u.beomoghentnavn(); b.lagbankkunde(nvn); /** * Fjerner en konto. */ void fjernbankkunde () { String nvn = u.beomoghentnavn(); b.fjernbankkunde(nvn); /** * Setter inn penger på en konto. * Nødvendig informasjon hentes via ustynet. */ void settinn() { u.beomnavnogbelop(); String navn = u.hentnavn(); double bel = u.hentbelop(); b.settinn(navn,bel); /** * Henter summen av saldo fra alle kontoer * og viser resultatet ved hjelp av utsyn */ void sumallekonti() { double sum = 0; sum = b.sumallekonti(); u.skrivsum(sum); /** * Ordreløkken som styrer kommandoene. */ void ordreløkke () { int valg; valg = u.leskommando(); while(valg!= 0) { switch (valg) { case 1: lagnykunde(); break; case 2: fjernbankkunde(); break; case 3: settinn(); break; case 4: sumallekonti(); break; default: u.skrivfeil("gi tall mellom 0-4"); valg = u.leskommando(); // end ordreløkke // end class Bank 25
26 /** * BankUtsyn brukes til innlesing og vising av kundedata. * Stein Gjessing 13. Januar 2011 */ class BankUtsyn { private Scanner tast; // tast gir kortvarig oppbevaring av leste data private String navn; private double belop; /** * Konstruktør */ BankUtsyn( ) { tast = new Scanner(System.in); /** * Skriver ut menyen og leser inn kommandovalget. * kommandovalget */ public int leskommando() { System.out.println("\nMeny: "); System.out.println("0 - avslutt"); System.out.println("1 - Opprett ny kunde "); System.out.println("2 - Fjern kunde"); System.out.println("3 - Sett inn penger"); System.out.println("4 - Finn forvaltningskapital"); System.out.print(" Velg funksjon: "); return (tast.nextint()); /** * Ber om navn og beløp og lagrer. */ public void beomnavnogbelop() { System.out.print("\nGi navn og beløp (på hver sin linje): "); navn = tast.next(); belop = tast.nextdouble(); /** * Henter navnet som er lest inn. * navnet */ public String hentnavn() { return navn; /** * Henter bløpet som er lest inn. * beløpet */ public double hentbelop() { return belop; /** * Ber om og henter et navn. * navnet */ public String beomoghentnavn() { System.out.print("\nGi navn : "); return tast.next(); 26
27 /** * Skriver ut bankens forvaltningskapital. * sum kapitalen som skrives ut */ public void skrivsum(double sum) { System.out.println("\nBankens forvaltningskapital: + sum); /** * Skriver ut en feilmelding. * feil feilmeldingen */ public void skrivfeil(string feil) { System.out.println(feil); // end BankUtsyn Lag Javadoc: >javadoc -package Bank.java 27
28 Design - kjente grep for å strukturere koden Top-down nedbryting av moduler til flere enklere moduler i ett eller flere nivåer Objekter kan nyttes som moduler. Top-down nyttes for noen nivåer Bottom-up programmering Lage generelle klasser og operasjoner (metoder) vi vil trenge i systemet vårt fra bunnen av eller med grunnlag i biblioteker jfr. Java-biblioteket med mer enn 4000 klasser for de fleste behov. 28
29 Hvor skal vi legge metodene (funksjonene) Kan synes opplagt, men er det ikke alltid To prinsipper (gir ofte, men ikke alltid samme resultat): Legg en funksjon der (nesten alle) data er som funksjonen skal jobbe på Legg funksjonene der de hører hjemme naturlig / i virkeligheten Ofte samme resultet, men ikke her: Oppgave: I et student/eksamens-system skal det skrives ut vitnemål. Skal metoden skrivvitemål() legges i: Class Student - hvor data ligger Class SkoleAdministrasjon - hvor funksjonen utføres i den virkelige verden Velg det siste da blir det lettere å vedlikeholde systemet (SkoleAdministrasjon henter data fra Student) 29
30 Top-down nedbrytning av en beregning Eksempel værdata fra Met. Inst. : Anta at vi har en enkel modell av værobservasjoner for Meteorologisk institutt, og at observasjonene gjøres på værstasjoner. Annenhver time, hver dag, hele året igjennom registreres temperatur og nedbør siden forrige observasjon. Nå kan vi tenke oss at vi er interessert i maksimums- og minimumstemperatur hver dag, og i gjennomsnittlig temperatur og samlet nedbør hver dag, hver måned og for hele året fra disse observasjonene. UML klassediagram Hvordan skal vi regne ut gj.snitt nedbør for en stasjon per år? 30
31 Top-down: Gj.snitt nedbør per år og mnd. UML klassediagram Enten en metode i class Stasjon med tre løkker inne i hverandre, over alle Måneder, Dager, Observasjoner Komplikasjon: Håndtering av manglende data på alle nivåer Alternativt - bedre: Hver av klassene har sin beregngjennomsnittnedbør() metode, som bare kaller neste tilsvarende det riktige antall ganger (og som til sist leser av verdien i Observasjon) 31
32 Nytt eksempel: Oppgave som løses ved hjelp av Interface April 19,
33 Oppgave: Lag et program som administrerer et bibliotek. Analyse av et bibliotek: n n n Bøker, tidsskrifter, CDer, videoer, mikrofilmet materiale, antikvariske bøker, flerbindsverk, oppslagsverk, upubliserte skrifter, En del felles egenskaper n antall eksemplarer, hylleplass, identifikasjonskode (Dokument) n n 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: n n n Bok: Forfatter, tittel, forlag Tidsskriftnummer: Årgang, nummer, utgiver CD: Tittel, artist, komponist, musikkforlag
34 Tvilsomt begrepshierarki Forslag til subklassehierarki Dokument Bok CD Tidskrift UtlånbarBok IkkeLånbarBok UtlånbarCD IkkeLånbarCD Utlånbart Tidsskriftnr IkkeLånbart Tidsskriftnr 34
35 Omrokkering uten suksess Dokument UtlånbartDokument IkkeLånbartDokument BokU CDU TidsskriftnrUtl Bok CD Tidsskriftnr klassehierarki
36 Samle lik oppførsel: Interface interface TilUtlån class Dokument class Bok class CD class Tidskriftnr class UtlånbarBok class UtlånbarCD class Utlånbart Tidsskriftnr n En klasse kan tilføres egenskaper fra et eller flere interface (i tillegg til å arve egenskapene i klassehierarkiet) 36
37 Husk, et interface 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 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)... 37
38 Arve fra flere grensesnitt interface TilUtlån Verk Dokument interface Antikvarisk Bok CD Video Tidskriftnr UtlånbarBok AntekvUtlånbrCD IkkeLånbarCD Utlånbart Tidsskriftnr IkkeLånbartTids skriftnr AntikvariskBok Utlånbart, Antekvarisk Tidsskrift n En klasse kan tilføres et ubegrenset antall interface-er n Dvs. en klasse kan spille et ubegrenset antall roller Antikvarisk tidsskriftnr 38
39 Klassehierarki, forenklet bibliotek interface TilUtlån Bok Dokument CD BokTilUtlaan BokIkkeUtlaan CDTilUtlaan CDIkkeUtlaan 39
40 Forenklet bibliotek interface TilUtlån BokTilUtlaan Bok Dokument BokIkkeUtlaan abstract class Dokument { String tittel; abstract class Bok extends Dokument { String forlag; int trykningsår; abstract betyr at vi ikke kan lage slike objekter interface TilUtlaan { abstract void låne(string låner) ; abstract void levere() ; abstract boolean utlånt() ; static final String ingen = "ingen"; // Slutt interface TilUtlaan 40
41 interface TilUtlaan BokTilUtlaan BokTilUtlaan Bok Dokument BokIkkeUtlaan Bare disse to klassene kan vi lage objekter av 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 { 41
42 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 42
43 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; Her er de tre metodene igjen // Slutt class CDTilUtlaan 43
44 Husk om interface: Navnet på et interface kan brukes som typenavn når vi lager pekere. Vitsen med et grensesnitt er å spesifisere hva som skal gjøres (ikke hvordan) Ofte er det flere implementasjoner av et grensesnitt (flere klasser kan implementere det). En implementasjon (av et grensesnitt) skal kunne endres uten at resten av programmet behøver å endres. Men selv om et grensesnitt skal spesifisere hva (og ikke hvordan), spesifiseres bare syntaksen (signaturen) og ikke hva som gjøres (semantikken) 44
45 Metoden låne void låne() void låne() throws IOException { boolean utlånt() Dokument d = null; String h; void levere() System.out.println( Tittel: "); h = <les tittel>; 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 = <les navn>; t.låne(n); else { System.out.println("Beklager, denne låner vi ikke ut"); 45
46 Metoden leveretilbake void leveretilbake() { void låne() Dokument d = null; boolean utlånt() String h; System.out.print( Tittel: "); void levere() h = <les tittel>; 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 bibliotekeksempel 46
47 Mer om tråder: Vranglås (deadlock) Vranglås skjer når flere tråder venter på hverandre i en sykel: Eksempel Veikryss: alle bilene skal stoppe for biler fra høyre - > Alle stopper = VRANGLÅS 47
48 Vranglås betyr Flere tråder venter på hverandre Syklisk ven$ng Venter på Venter på Venter på Venter på 48
49 Vranglås kan oppstå når flere tråder kjemper om felles ressurser Det er en eller flere felles ressurser som ønskes av mer enn en tråd Hvis en tråd først tar en ressurs og dere'er en annen
50 Enkleste eksempel på vranglås To tråder To ressurser Ressurs 1 Tråd 1 Tråd 2 Ta 1 Ta 2 Ta 2 Ta 1 Fri 1 og 2 Fri 1 og 2 Ressurs 2 50
51 Enkleste eksempel på vranglås: To biler kan risikere å 2 2 vente på hverandre 1 1 Venstre del Høyre del Smalt veistykke, to biler kan ikke passere hverandre. Bilene kan bare se den første delen. 51
52 Vranglås! Venstre del Høyre del Det smale veistykket består av to ressurser, og begge bilene venter på at den andre bilen skal bli ferdig med å bruke sin ressurs. 52
53 Unngå vranglås Ta bare en ressurs Ta alle (på en gang) eller ingen Alle tråder tar alle ressurser i samme rekkefølge Hvis vranglås har oppstå': Fri en og en ressurs $l det ikke lenger er vranglås 53 53
54 Prosesskommunikasjon i høynivåspråk April 19,
55 Kommunikasjon mellom Java- prosesser: RMI: Remote Method Invoca$on (Norsk: Fjern- metode- kall) Et Java program (på en maskin) InterfaceNavn fjernpeker =.; Dette ønsker vi å oppnå: Et annet Java program (på en annen maskin)... fjernpeker.metodenavn( );... metodenavn objekt av en klasse som implementerer InterfaceNavn Alternativt navn: RPC: Remote Procedure Call 55
56 En maskin fjernpeker RMI: Implementasjon en proxy for fjern-objektet (bak kulissene) et skjelett formidler kall og retur En annen maskin metodenavn Ikke pensum i INF1010 tjenermetode... fjernpeker.metodenavn( );... en stub for fjern-metoden Odene proxy og stub brukes ikke alltid like konsistent fjern-objekt (kan også brukes av Javaprogrammet på denne maskinen) Parametere (og returverdi) pakkes ned og sendes mellom de to maskinen (marshaling) 56
57 RMI: Hvordan kalle metoder i (Java- )objekter på andre maskiner klient 3. oppgi navn på objekt tjener Ikke pensum i INF1010 Register/ navnetjener 4. og få tilbake peker bruk peker til fjernmetode-kall (Remote Method Invocation): fjernpeker.metodenavn( ); objekt 1. registrer (bind) med navn på objektet Og det eneste som er kjent på begge maskinene er Interfacet til objektet og navnet 57
58 CORBA, MPI CORBA (Common Object Request Broker Architecture) er (var) en språkuavhengig måte å definere kommunikasjon mellom fern- objekter (a la side 56-58) Et IDL (Interface Defini$on Language) definerer grensesni'et $l objektene (på samme måte som Interface i Java) En IDL- kompilator overse'er $l di' valgte språk (Java, C++, C#, Smalltalk, ) De'e gjør at prosesser skrevet i forskjellige objektorienterte språk og som kjører på forskjellige (eller samme) maskin kan kommunisere. Språk som ikke er objektorienterte: Send en melding (MPI Message- Passing Interface) P1 P2 P3 58
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(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
DetaljerVelkommen til. INF våren 2012
Velkommen til INF1010 - våren 2012 I dag: Java datastrukturer Stein Gjessing Institutt for informatikk Universitetet i Oslo 1 1 I INF1010 skal du lære Å lage gode programmer Objektorientert programmering
DetaljerINF 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-
DetaljerVelkommen til INF våren 2011
Velkommen til INF1010 - våren 2011 Stein Gjessing & Stein Michael Storleer Institutt for informatikk Universitetet i Oslo 1 0( I INF1010 skal du lære! Å lage gode programmer! Objektorientert programmering!
DetaljerStein Gjessing. Institutt for informatikk. Universitetet i Oslo. Institutt for informatikk
INF1010 11. mai 2017 Monitorer med kritiske regioner og passive venting innbygget i Java - Kommunikasjon mellom prosesser i Java (Ikke pensum i INF1010) Stein Gjessing Universitetet i Oslo 1 Repetisjon:
DetaljerEksekveringsrekkefølgen (del 1) Oppgave 1. Eksekveringsrekkefølgen (del 2) Kommentar til oppgave 1. } // class Bolighus
// class Bygning Oppgave 1 System.out.println( Bolighus ); // class Bolighus Hva blir utskriften fra dette programmet? class Blokk extends Bolighus{ // class Blokk IN105subclassesII-1 Eksekveringsrekkefølgen
DetaljerAbstrakte 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
DetaljerUke 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
DetaljerIN1010 våren 2018 Tirsdag 15. mai. Repetisjon av subklasser og tråder. Stein Gjessing Institutt for informatikk Universitetet i Oslo
IN1010 våren 2018 Tirsdag 15. mai Repetisjon av subklasser og tråder Stein Gjessing Institutt for informatikk Universitetet i Oslo 1 Klassehierarki: Personbil Bil Klasser - Subklasser class Bil {
DetaljerINF våren Fra problem til program. Utvikling av store datasystemer. Eksempel: Lage en nytt hus. Oversikt:
Oversikt: INF1010 - våren 2008 Fra problem til program Stein Gjessing Inst. for informatikk n Fasene i utvikling av datasystemer n Utviklingsmetoder n Fossefall og Unified Process (UP) n Smidig systemutvikling
DetaljerAbstrakte 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
DetaljerInstitutt 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
DetaljerINF1010, 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
DetaljerFra problem til program. Stein Gjessing Inst. for informatikk
INF1010 - våren 2009 Fra problem til program Stein Gjessing Inst. for informatikk 1 Oversikt: INF1050 - Systemutvikling Fasene i utvikling av datasystemer Utviklingsmetoder Fossefall og Unified Process
DetaljerAbstrakte 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
DetaljerAbstrakte 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
DetaljerINF1010, 8. mars Om klassehierarkier, grensesnitt (interface) og multippel arv. Konstruktører i subklasser. Unntak.
INF1010, 8. mars 2012 Om klassehierarkier, grensesnitt (interface) og multippel arv. Konstruktører i subklasser. Unntak. Stein Gjessing Inst for Informatikk Universitetet i Oslo Abstrakte metoder og klasser
DetaljerIN1010 våren januar. Objektorientering i Java
IN1010 våren 2018 23. januar Objektorientering i Java Om enhetstesting Om arrayer og noen klasser som kan ta vare på objekter Stein Gjessing Hva er objektorientert programmering? F.eks: En sort boks som
DetaljerINF1010 våren januar. Objektorientering i Java
INF1010 våren 2017 25. januar Objektorientering i Java Om enhetstesting (Repetisjon av INF1000 og lær deg Java for INF1001 og INF1100) Stein Gjessing Hva er objektorientert programmering? F.eks: En sort
DetaljerKom forberedt til tirsdag. INF1000 Tips til obligatorisk oppgave 4. Noen generelle tips. Oblig4: Komme igang
Kom forberedt til tirsdag INF1000 Tips til obligatorisk oppgave 4 Kikk på prøveeksamen fra 2004 http://www.uio.no/studier/emner/matnat/ifi/inf1000/h 07/undervisningsmateriale/proveeksamen-H2004.pdf Tittel:
DetaljerOblig4 - forklaringer. Arne og Ole Christian
Oblig4 - forklaringer Arne og Ole Christian Struktur og alle (?) klassene import easyio.*; import java.util.*; class Oblig4 { public static void main (String[] args) { String s1 = "Stasjoner-1.txt"; String
DetaljerOblig 4 (av 4) INF1000, høsten 2009 Værdata, leveres innen 6. nov. kl
Oblig 4 (av 4) INF1000, høsten 2009 Værdata, leveres innen 6. nov. kl. 16.00 Formål Formålet med denne oppgaven er å gi trening i hele pensum og i å lage et større program. Løsningen du lager skal være
DetaljerINF1000 - 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
DetaljerINF1000: Forelesning 7
INF1000: Forelesning 7 Klasser og objekter del 2 Konstruktører Static UML REPETISJON 2 Repetisjon Repetisjon forts. Verden består av objekter av ulike typer (klasser). Ofte er det mange objekter av en
DetaljerKapittel 5: Objektkommunikasjon
Kapittel 5: Objektkommunikasjon Redigert av: Khalid Azim Mughal (khalid@ii.uib.no) Kilde: Java som første programmeringsspråk (3. utgave) Khalid Azim Mughal, Torill Hamre, Rolf W. Rasmussen Cappelen Akademisk
DetaljerINF1010 våren Grensesnitt
INF1010 våren 2013 Torsdag 24. januar Grensesnitt Stein Gjessing Institutt for informatikk Dagens tema n n Norsk: Grensesnitt Engelsk: Interface n Les notatet Grensesnitt i Java av Stein Gjessing 2 Hva
DetaljerIN1010 våren Repetisjon av tråder. 15. mai 2018
IN1010 våren 2018 Repetisjon av tråder 15. mai 2018 Stein Gjessing,, Universitetet i Oslo 1 Tråder Datamaskinarkitektur prosessor registre cache 1 cache 2 prosessor registre cache 1 Disk System-bus Minne
DetaljerEnkle 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
DetaljerLø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 =
DetaljerOblig 4 (av 4) INF1000, høsten 2012 Værdata, leveres innen 9. nov. kl. 23.59
Oblig 4 (av 4) INF1000, høsten 2012 Værdata, leveres innen 9. nov. kl. 23.59 Formål Formålet med denne oppgaven er å gi trening i hele pensum og i å lage et større program. Løsningen du lager skal være
DetaljerINF1010 våren Arv og subklasser del 1
INF1010 våren 2015 Torsdag 12. februar Arv og subklasser del 1 Stein Gjessing Institutt for informatikk Universitetet i Oslo 1 Når du har lært om subklasser kan du programmere med: Første uke: Spesialisering
DetaljerEks 1: Binærtre Binærtretraversering Eks 2: Binærtre og stakk
Godkjent oblig 1? Les e-post til din UiO-adresse Svar på e-post fra lablærer Ingen godkjenning før avholdt møte med lablærer Godkjentlistene brukes ikke til å informere om status for obligene Ta vare på
DetaljerINF1000: Forelesning 7. Konstruktører Static
INF1000: Forelesning 7 Klasser og objekter del 2 Konstruktører Static UML REPETISJON 2 Repetisjon Verden består av objekter av ulike typer (klasser). Ofte er det mange objekter av en bestemt type. Objekter
DetaljerINF1010 Tråder II 6. april 2016
INF1010 Tråder II 6. april 2016 Stein Gjessing Universitetet i Oslo 1 Tråder i Java tråden minrunp class MinRun implements Runable { MinRun(... ) {... } public void run( ) {...... } } //end
DetaljerINF1010 våren Grensesnitt
INF1010 våren 2014 Onsdag 22. januar Grensesnitt Stein Gjessing Institutt for informatikk Dagens tema n n Norsk: Grensesnitt Engelsk: Interface n Les notatet Grensesnitt i Java av Stein Gjessing n Det
DetaljerDagens forelesning. Java 13. Rollefordeling (variant 1) Rollefordeling (variant 2) Design av større programmer : fordeling av roller.
Dagens forelesning Java 13 Design av større programmer : fordeling av roller INF 101-13. mars 2003 Flere eksempler på bruk av objekter MVC-prinsippet MVC-prinsippet Flere eksempler på programmer med objekter
DetaljerOblig4 - forklaringer. Arne og Ole Christian
Oblig4 - forklaringer Arne og Ole Christian Stasjonsdata-1.txt NR NAVN MOH KOMMUNE FYLKE 4780 GARDERMOEN 202 ULLENSAKER AKERSHUS 10400 RØROS 628 RØROS SØR-TRØNDELAG 18700 OSLO-BLINDERN 94 OSLO OSLO 25590
Detaljer2 Om statiske variable/konstanter og statiske metoder.
Litt om datastrukturer i Java Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo 1 Innledning Dette notatet beskriver noe av det som foregår i primærlageret når et Javaprogram utføres.
DetaljerUNIVERSITETET 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
DetaljerRepitisjonskurs. Arv, Subklasser og Grensesnitt
Repitisjonskurs Arv, Subklasser og Grensesnitt Subklasser Klasser i OO-programmering representerer typer av objekter som deler et sett med egenskaper. En subklasse har egenskapene til en klasse + ett sett
DetaljerGjøre noe i hele treet = kalle på samme metode i alle objekten. Java datastruktur Klassestruktur
Godkjent oblig 1? Les e-post til din UiO-adresse Svar på e-post fra lablærer Ingen godkjenning før avholdt møte med lablærer Godkjentlistene brukes ikke til å informere om status for obligene Ta vare på
DetaljerVelkommen 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
DetaljerINF1010, 21. februar Om å gå gjennom egne beholdere (iteratorer) Stein Gjessing Inst. for Informatikk Universitetet i Oslo
INF1010, 21. februar 2013 Om å gå gjennom egne beholdere (iteratorer) Stein Gjessing Inst. for Informatikk Universitetet i Oslo Ikke noe nytt her From the Java language specification (version 6): 14.14.2
Detaljer1. 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
DetaljerINF1010, 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:
DetaljerOblig 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,
DetaljerGjennomgang av eksamen H99
Gjennomgang av eksamen H99 Administrasjon av kurser, studenter og påmeldinger Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for Informatikk Universitetet i Oslo Oppgave 1 (15 %) (Besvares
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Kandidatnr Eksamen i INF1000 Grunnkurs i objektorientert programmering Eksamensdag: Onsdag 10. juni 2009 Tid for eksamen: 9.00 12.00 Oppgavesettet
DetaljerUNIVERSITETET 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
DetaljerINF1010, 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
DetaljerINF1010 våren 2008 Uke 4, 22. januar Arv og subklasser
Emneoversikt subklasser INF1010 våren 2008 Uke 4, 22. januar Arv og subklasser Stein Gjessing Institutt for informatikk Mange flere eksempler på fellesøvelsene og neste forelesning 1 Generalisering - spesialisering
Detaljer1. 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
DetaljerINF1000 (Uke 15) Eksamen V 04
INF1000 (Uke 15) Eksamen V 04 Grunnkurs i programmering Institutt for Informatikk Universitetet i Oslo Anja Bråthen Kristoffersen og Are Magnus Bruaset 22-05-2006 2 22-05-2006 3 22-05-2006 4 Oppgave 1a
DetaljerINF1000 (Uke 15) Eksamen V 04
INF1000 (Uke 15) Eksamen V 04 Grunnkurs i programmering Institutt for Informatikk Universitetet i Oslo Anja Bråthen Kristoffersen og Are Magnus Bruaset 22-05-2006 2 22-05-2006 3 22-05-2006 4 Oppgave 1a
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i Eksamensdag: 4. juni 2005 Tid for eksamen: 0900 1500 Oppgavesettet er på 5 sider. Vedlegg: Tillatte hjelpemidler: INF1010 Objektorientert
DetaljerUNIVERSITETET 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:
DetaljerINF1010 våren Arv og subklasser del 1
INF1010 våren 2016 Torsdag 4. februar Arv og subklasser del 1 Stein Gjessing Institutt for informatikk Universitetet i Oslo 1 Når du har lært om subklasser kan du programmere med: Første uke: Spesialisering
DetaljerObligatorisk 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
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO Side 1 Det matematisk-naturvitenskapelige fakultet Eksamen i: INF1010 Objektorientert programmering Eksamensdag: Onsdag 4. juni 2014 Tid for eksamen: 9:00-15:00 Oppgavesettet er på
DetaljerUNIVERSITETET 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
DetaljerFra problem til program
Fra problem til program Gitt et problem, hvordan går man fram for å programmere en løsning? UML klassediagrammer Enhetstesting Dokumentasjon Som student ønsker vi oss et program som kan holde oversikt
DetaljerINF1010 våren Grensesnitt (interface)
INF1010 våren 2015 Torsdag 5. februar Grensesnitt (interface) Stein Gjessing Institutt for informatikk Dagens tema n n Norsk: Grensesnitt Engelsk: Interface n Les notatet Grensesnitt i Java av Stein Gjessing
DetaljerOblig 3 tips litt mer tips enn i oppgaven
Obligatorisk oppgave 3 Gulbrand Grås husleiesystem Oblig 3 tips litt mer tips enn i oppgaven lørdag 3. okt 2009 I denne oppgaven skal vi se på hans studenthus Utsyn. Utsyn består av 3 etasjer, nummerert
DetaljerKapittel 7: Mer om arv
Kapittel 7: Mer om arv Redigert av: Khalid Azim Mughal (khalid@ii.uib.no) Kilde: Java som første programmeringsspråk (3. utgave) Khalid Azim Mughal, Torill Hamre, Rolf W. Rasmussen Cappelen Akademisk Forlag,
DetaljerEksamen i emnet INF100 Grunnkurs i programmering (Programmering I) og i emnet INF100-F Objektorientert programmering i Java I Løsningsforslag
Universitetet i Bergen Det matematisk naturvitenskapelige fakultet Institutt for informatikk Side 1 av 7 Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) og i emnet INF100-F Objektorientert
DetaljerOBJEKTER SOM EN PROGRAMMERINGS-TEKNIKK
INF1000: Forelesning 6 Klasser og objekter del 1 OBJEKTER SOM EN PROGRAMMERINGS-TEKNIKK Motivasjon Anta at vi ønsker å lage et studentregister hvor vi for hver student lagrer, bruker og telefonnummer Med
DetaljerTDT4100 Objektorientert programmering
Eksamensoppgave i TDT4100 Objektorientert programmering Torsdag 12. august 2010, kl. 09:00-13:00 Oppgaven er utarbeidet av faglærer Hallvard Trætteberg og kvalitetssikret av Svein Erik Bratsberg. Kontaktperson
DetaljerOblig4 - obligatorisk oppgave nr. 4 (av 4) i INF1000
Oblig4 - obligatorisk oppgave nr. 4 (av 4) i INF1000 Leveringsfrist Innleveringsfristen er onsdag 15. november kl 16.00. Viktig: se side 4 for detaljerte leveringskrav. Formål Formålet med denne oppgaven
DetaljerINF1010 MVC i tekstbaserte programmer
INF1010 MVC i tekstbaserte programmer Marit Nybakken marnybak@ifi.uio.no 9. februar 2004 Marit har ingen utdanning innen systemutvikling og vet antageligvis ikke hva hun prater om. Hun har dog skumlest
DetaljerINF1000: Forelesning 6. Klasser og objekter del 1
INF1000: Forelesning 6 Klasser og objekter del 1 OBJEKTER SOM EN PROGRAMMERINGS-TEKNIKK 2 Motivasjon Anta at vi ønsker å lage et studentregister hvor vi for hver student lagrer navn, brukernavn og telefonnummer.
DetaljerRepetisjon. 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
DetaljerINF1010, 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å
DetaljerINF Forelesning oppsummering forts. Et meget enkelt banksystem. Oppsummering om klasser, objekter, pekere og.
Oppsummering om klasser, objekter, pekere og. INF1000 - Forelesning 7 - Litt repetisjon fra forelesning 6 - Gjennomgang av BankSystem med full kode - Mer om klasser og objekter -UML 1. mars 2010 Christian
Detaljerprogrameksempel Et større En større problemstilling Plan for forelesingen Problemstillingen (en tekstfil) inneholdt ordet "TGA"
Et større programeksempel Hvordan løse et reelt problem med en objektorientert fremgangsmåte En større problemstilling I uke 4 skrev vi et program for å sjekke om et gen (en tekstfil) inneholdt ordet "TGA"
DetaljerINF1010. 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
DetaljerUNIVERSITETET 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 :
DetaljerLøse reelle problemer
Løse reelle problemer Litt mer om løkker, metoder med returverdier, innlesing fra fil og strenger INF1000, uke5 Ragnhild Kobro Runde MER OM LØKKER Repetisjon fra forrige uke: while Syntaks: while (condition)
DetaljerUNIVERSITETET 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
DetaljerINF 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
DetaljerLøsningsforslag Test 2
Løsningsforslag Test 2 Oppgave 1.1: Interface definerer et grensesnitt som kan implementeres av flere klasser. Dette gir en standardisert måte å kommunisere med objekter av en eller flere relaterte klasser.
DetaljerEn implementasjon av binærtre. Dagens tema. Klassestruktur hovedstruktur abstract class BTnode {}
En implementasjon av binærtre Dagens tema Eksempel på binærtreimplementasjon Rekursjon: Tårnet i Hanoi Søking Lineær søking Klassestruktur hovedstruktur abstract class { class Person extends { class Binaertre
DetaljerFra krav til objektdesign
Fra krav til objektdesign Ansvarsdrevet OO: CRC og UML Sekvensdiagrammer INF1050-ansvar-1 Dagens forelesning o Kort repetisjon av kravspesifikasjon med UML Hva skal systemet gjøre? UML: Bruksmønstermodeller
DetaljerForkurs 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
DetaljerUke 11 noen tips og råd + eksempel. Noen muligheter. Valg av datamodell: eksempel. Valg av datamodell: oblig 4
Valg av datamodell: eksempel Uke 11 noen tips og råd + eksempel Eksempel: Du har gitt en fil med opplysninger om hvor mange registrerte tilfeller det var av tre ulike sykdommer i Norge hvert av årene 19502000:
DetaljerUNIVERSITETET I OSLO
Kandidatnummer: UNIVERSITETET I OSLO BOKMÅL Det matematisk-naturvitenskapelige fakultet eksamen Eksamen i : INF1000 Grunnkurs i objektorientert programmering Eksamensdag : Mandag 3. desember 2007 Tid for
DetaljerINF1010 våren 2014. Arv og subklasser - del 2
INF1010 våren 2014 Onsdag 19. februar Arv og subklasser - del 2 Stein Gjessing Institutt for informatikk Dagens tema Virtuelle metoder som er det samme som Polymorfi Mer om arv / interface Mer om pekertilordninger
DetaljerINF1010 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
DetaljerUNIVERSITETET 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å
Detaljer2 Om statiske variable/konstanter og statiske metoder.
Gaustadbekkdalen, januar 22 Litt om datastrukturer i Java Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo Innledning Dette notatet beskriver noe av det som foregår i primærlageret når
DetaljerINF1000 EKSTRATILBUD. Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen
INF1000 EKSTRATILBUD Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen PLAN FOR DAGEN gjennomgå stoff fra uke 1-5(6), men med en litt annen tilnærming kun gjennomgått stoff, men vekt på konsepter og
DetaljerLøsningsforslag, inf101, våren 2001
Løsningsforslag, inf101, våren 2001 Anders Brunland Oppgave 1 (15%) a) Navn på søker trenger ikke være med i sak-objektet siden den kan hentes fra det første dokumentet i saken. Variabelen FRIST er strengt
DetaljerInnhold. 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
DetaljerINF1010 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:
DetaljerSpesifikasjon av Lag emne. Kursregistrering bruksmønstermodell (ny versjon) Dagens forelesning. Fra krav til objektdesign
Dagens forelesning o Kort repetisjon av kravspesifikasjon med UML Fra krav til objektdesign Hva skal systemet gjøre? UML: Bruksmønstermodeller o Objektdesign Ansvarsdrevet OO: CRC og UML Sekvensdiagrammer
DetaljerOppgave 1. Oppgave 2. Oppgave 3. Prøveeksamen i INF1000. Ole Christian og Arne. 23. november 2004
Oppgave 1 Prøveeksamen i INF1000 Ole Christian og Arne 23. november 2004 Er dette lovlige deklarasjoner (når de foretas inni en metode)? JA NEI int i; int k = i; int i, j = 4; int k = j; double[] x = new
DetaljerHva er en metode. Hva skjer når vi kaller en metode
Hva er en metode Uke 9 - Repetisjon av metoder, klasser og objekter Innkapsling: private og public Statisk programmering vs. programmering med objeker 18 okt. 2005, Arild Waaler Inst. for informatikk,
DetaljerINF1010 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
DetaljerInnhold. 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
DetaljerOppsummering. Kort gjennomgang av klasser etc ved å løse halvparten av eksamen Klasser. Datastrukturer. Interface Subklasser Klasseparametre
Oppsummering Kort gjennomgang av klasser etc ved å løse halvparten av eksamen 2012. Klasser Interface Subklasser Klasseparametre Datastrukturer Hva er problemet? Oppgaven Emballasjefabrikken Renpakk skal
Detaljer