Velkommen til INF våren 2011

Like dokumenter
Velkommen til. INF våren 2012

Velkommen til. INF våren 2016

INF april 2017

(MVC - Model, View, Control)

INF våren 2017

INF april 2016

IN våren 2019 Onsdag 16. januar

IN våren 2018 Tirsdag 16. januar

2 Om statiske variable/konstanter og statiske metoder.

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

INF våren 2015

INF1000: Forelesning 7. Konstruktører Static

INF1000: Forelesning 7

IN1010 våren januar. Objektorientering i Java

INF 1000 høsten 2011 Uke september

INF1000 undervisningen INF 1000 høsten 2011 Uke september

2 Om statiske variable/konstanter og statiske metoder.

INF1010 våren januar. Objektorientering i Java

Oblig 4 (av 4) INF1000, høsten 2012 Værdata, leveres innen 9. nov. kl

Kort om meg. INF1000 Uke 2. Oversikt. Repetisjon - Introduksjon

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

Oblig 4Hybelhus litt mer tips enn i oppgaven

Dagens tema Kapittel 8: Objekter og klasser

UNIVERSITETET I OSLO

OBJEKTER SOM EN PROGRAMMERINGS-TEKNIKK

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

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

Gjennomgang av eksamen H99

INF1000: Forelesning 6. Klasser og objekter del 1

INF Uke 10. Ukesoppgaver oktober 2012

Enkle generiske klasser i Java

Repetisjon. INF gruppe 13

UNIVERSITETET I OSLO

Objekter. Uke 8 - Objekter, klasser og pekere. Verden består av mange objekter, noen ganske like, noen ulike. Klasser og objekter i verden

Forelesning inf Java 4

INF Forelesning oppsummering forts. Et meget enkelt banksystem. Oppsummering om klasser, objekter, pekere og.

i=0 Repetisjon: arrayer Forelesning inf Java 4 Repetisjon: nesting av løkker Repetisjon: nesting av løkker 0*0 0*2 0*3 0*1 0*4

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

Hva er en metode. Hva skjer når vi kaller en metode

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

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

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

INF Objektorientert programmering. Datastrukturer i Java Klasser med parametre

INF1000 : Forelesning 4

Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) og i emnet INF100-F Objektorientert programmering i Java I Løsningsforslag

Seminaroppgaver IN1010, uke 2

UNIVERSITETET I OSLO

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

Eksempel: Body Mass Index (BMI) Forelesning inf Java 3. Ferdig program (første del) Ferdig program (siste del)

INF1000 oppgaver til uke 38 (17 sep 23 sep)

i=0 i=1 Repetisjon: nesting av løkker INF1000 : Forelesning 4 Repetisjon: nesting av løkker Repetisjon: nesting av løkker j=0 j=1 j=2 j=3 j=4

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

Oblig4 - forklaringer. Arne og Ole Christian

INF100 Institutt for informatikk Universitetet i Bergen Øving 5

Eksempel: Body Mass Index (BMI)

Kom forberedt til tirsdag. INF1000 Tips til obligatorisk oppgave 4. Noen generelle tips. Oblig4: Komme igang

INF1000 (Uke 4) Mer om forgreninger, While-løkker

Oppgave 1. Oppgave 2. Oppgave 3. Prøveeksamen i INF1000. Ole Christian og Arne. 23. november 2004

UNIVERSITETET I OSLO

Oppgave 1. INF1000 Uke 13. Oppgave 2. Oppgave 3. Er dette lovlige deklarasjoner (når de foretas inni en metode)? JA NEI

INF Objektorientert programmering. Datastrukturer i Java Klasser med parametre

Prøveeksamen i INF1000. Ole Christian og Arne. 23. november 2004

Dagens forelesning. Java 13. Rollefordeling (variant 1) Rollefordeling (variant 2) Design av større programmer : fordeling av roller.

I dag INF1000 (Uke 4) Mer om forgreninger, While-løkker. Tre måter å lese fra terminal. Repetisjon. Mer om forgrening While-løkker

I dag INF1000 (Uke 4) Mer om forgreninger, While-løkker. Tre måter å lese fra terminal. Tre måter å lese fra terminal.

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

Oblig 3 tips litt mer tips enn i oppgaven

UNIVERSITETET I OSLO

Hvis en person har inntekt < , så betaler han 10% skatt på alt, og ellers betaler han 10% skatt på de første og 30% på resten.

Hvis en person har inntekt < , så betaler han 10% skatt på alt, og ellers betaler han 10% skatt på de første og 30% på resten.

Forelesning inf Java 3

INF1000: noen avsluttende ord

INF1000 (Uke 15) Eksamen V 04

INF1000 (Uke 15) Eksamen V 04

Tre måter å lese fra terminal. Java 4. Eksempel. Formatert utskrift til skjerm

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

INF1000: Forelesning 11. Oppgave 2. Oppgave 1. Husk å melde deg på prøveeksamen i INF1000! Ole Christian Lingjærde 7.november 2006

Forelesning inf Java 3

INF1000 (Uke 5) Mer om løkker, arrayer og metoder

Oblig 4 (av 4) INF1000, høsten 2009 Værdata, leveres innen 6. nov. kl

Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) og i emnet INF100-F Objektorientert programmering i Java I

UNIVERSITETET I OSLO

Lenkelister. Lister og køer. Kopi av utvalgte sider fra forelesningen.

Velkommen til. INF våren 2017

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

Innhold. INF1000 (Uke 11) Programmering. Rep: Metoder. Rep: Hva er en metode? Litt repetisjon. To måter å programmere på

Oblig4 - forklaringer. Arne og Ole Christian

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

Forelesning inf Java 5

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

Forelesning inf Java 5

Ukeoppgaver INF1000: 12. feb 16. feb

INF1010 våren Grensesnitt

Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo

INF januar 2015 Stein Michael Storleer (michael) Lenkelister

INF1010 våren Grensesnitt

I dag skal vi se på. INF 1000 (uke 2) Variabler, tilordninger og uttrykk. Gruppene starter denne uken! Klart for første oblig

INF1000: noen avsluttende ord

UNIVERSITETET I OSLO

Transkript:

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! Ble funnet opp av Ole-Johan Dahl og Kristen Nygaard! Det første objektorienterte språket het Simula! I dag:! Java datastrukturer (Hva er objekter?)! Les: Litt om datastrukturer i Java av Stein Gjessing! Om lenkede lister (obligatorisk oppgave 1) (mer om en uke)! Litt mer om objekter i programmene våre et programmeringsmønster (så langt vi har tid)! Les mer på kursets hjemmeside om! Forelesninger - Viktig: Detaljert undervisningsplan! Fellesøvelser (første gang 26. januar)! Programmeringslaboratorium (fra 24. januar)! Obligatoriske oppgaver (første innlevering innen 11. februar kl 14) 2 1(

Primitive typer og objekter! Primitive typer:! boolean, char, short, int, long, float, double! pekere! til klasseobjekter! til tabeller (arrayer)! Objekter inneholder! Variable og konstanter (av de primitive typene)! Metoder En boks En variabel eller en konstant med en verdi av en primitiv type inni Et objekt 2(

Variable og konstanter En variabel eller en konstant (av en primitiv type) består av 3 ting: I programmet: 1.! Et navn 2.! En (primitiv) type 3.! Ett innhold En boks med navn og type utenpå, og en verdi inni int antall = 3; Når programmet utføres (inne i datamaskinen): type: int 3 navn: antall 3(

Variable, tilordninger og uttrykk!!! Vi gir variabler verdi ved en tilordningssetning, der likhetstegnet betyr settes lik.! 1. Regn ut høyresiden! 2. Sett resultatet inn i variabelen på venstresiden int antall = 3; antall = antall + 4; type: int navn: antall Variabelnavnet vil på venstre side av et likhetstegn bety lagerplassen som skal gis ny verdi. På høyre side av likhetstegnet betyr variabelnavnet den verdien som er lagret i boksen med dette navnet. 37 54(

Java datastrukturer! Hva skjer inne i en datamaskin når et Javaprogram blir utført?! Masse elektroner farer rundt! Umulig å skjønne! Vi skal tegne det som foregår inne i datamaskinen når Javaprogrammet vårt blir utført! Vi kaller det Java datastrukturtegninger! Alle som programmerer må ha fullstendig oversikt over det som foregår inne i maskinen! Når jeg programmerer ser jeg for meg det som skal foregå inne i maskinen og skriver Java-instruksjoner for å få det til.! Noen ganger bare tenker jeg meg hvordan Java datastrukturen ser ut, andre ganger tegner jeg den (mer eller mindre fullstending) på papir 65(

Program for salg av biler. public class BilSalg{ static BilSalg salgsobjekt; public static void main (String [ ] args) { salgsobjekt = new BilSalg ( ); BilSalg ( ) { int antallsteinb; Bil steinst = new Bil ( ); Bil oleso = new Bil ( ) ; steinst.foresporsel ( ); oleso.foresporsel ( ); steinst.foresporsel ( ); antallsteinb = steinst.finnantforesp(); System.out.println("Antall forespørsler på + Steins Toyota er " + antallsteinb; System.out.println("Antall forespørsler totalt + er nå " + Bil.finnTotal( ) ); //slutt konstruktør // slutt BilSalg class Bil { static private int total = 0; private int antforesporsler = 0; static int finntotal ( ) { return total; void foresporsel ( ) { antforesporsler ++; total ++; int finnantforesp ( ) { return antforesporsler; //slutt Bil 7 6(

Vi skiller mellom! Klasse-deklarasjonen i programteksten. Den er et mønster som brukes både når klassedatastrukturen lages (i det programmet starter opp) og senere når nye objekter lages.! Klasse-datastrukturen, dvs. den (statiske) datastrukturen som lages i det programmet starter! Objekt-datastrukturen (også bare kalt objekter eller klasse-objekter) som lages hver gang vi sier new. Utrolig Viktig! 87(

BilSalg klassedatastruktur Navn: salgsobjekt null main Type: BilSalg salgsobjekt = new BilSalg ( ); Bil-objekt navn: antforesporsler 12 type: int 0 void foresporsel( ) Bil klassedatastruktur Navn: total 01 23 finntotal return total; Type: int BilSalg( ) navn: steinst Type: Bil navn: oleso Type: Bil navn: antallsteinb 2 int int antallsteinb; Bil steinst = new Bil ( ); Bil oleso = new Bil ( ) ; steinst.foresporsel ( ); oleso.foresporsel ( ); steinst.foresporsel ( ); antallsteinb = steinst.finnantforesp(); System.out.println("Antall forespørsler på + Steins Toyota er " + antallsteinb); System.out.println("Antall forespørsler totalt + er nå " + Bil.finnTotal( ) ); BilSalg-objekt antforesporsler ++; total ++; int finnantforesp( ) return (antforesporsler); Antall forespørsler på Steins Toyota er 2 Antall forespørsler totalt er nå 3 Bil-objekt navn: antforesporsler 1 type: int void foresporsel( ) 0 antforesporsler ++; total ++; int finnantforesp( ) return (antforesporsler); 9

Mer tegning (for å demonstrere variable og objekter) Java datastrukturtegninger m/parametre Filen heter BrukSum.java class Sum { int tall = 11; static int statt = 12; public void skrivt (int tl) { int sum; sum = tall + statt + BrukSum.tall1 + tl; System.out.println("Summen er " + sum); // slutt Sum Oversettes og kjøres med >javac BrukSum.java >java BrukSum Oversetteren lager to filer: BrukSum.class og Sum.class Java fikling public class BrukSum { static int tall1 = 16; static int tall2 = 10; int ubrukt = 15; public static void main(string [ ] args) { Sum testpeker; tall1 = 13; testpeker = new Sum( ); testpeker.skrivt(tall2+4); // slutt BrukSum 10

Java datastruktur-tegning ved kjøring av BrukSum klassedatastruktur BrukSum main navn: args navn: tall1 13 16 type: int navn: tall2 10 type: int type: String[] navn: testpeker type: Sum tall1 = 13; testpeker = new Sum( ); testpeker.skrivt(tall2+4); navn: statt 12 type: int Objekt av klassen Sum skrivt(int tl) navn: tall 11 type: int navn: sum 50 type: int navn: tl 14 type: int Klassedatastruktur Sum int sum; sum = tall + statt + BrukSum.tall1 + tl; System.out.println( Summen er + sum); Summen er 50 00(

8+%(-(9:/:+/;:<:+( Hva om vi ønsker å putte en kø av biler inn i datamaskinen vår: navn: forste type: Bil navn: siste type: Bil navn: neste type: Bil Objekt av klassen Bil navn: neste type: Bil Objekt av klassen Bil navn: neste null type: Bil Objekt av klassen Bil 01(

tautforste navn: siste type: Bil 8+%(-(9:/:+/;:<:+=()+%#>( settinnsist navn: forste type: Bil Objekt av klassen BilKo navn: neste type: Bil Objekt av klassen Bil navn: neste type: Bil Objekt av klassen Bil navn: neste null type: Bil Objekt av klassen Bil public class BilKo{ private Bil forste, siste; public Bil tautforste( ) {... public void settinnsist(bil denne) {... class Bil{ Bil neste; String regnr; 02(

class BilKo{ // Oppgave: skriv invarianten for datastrukturen her private Bil forste, siste; Tegn og fortell, for deg selv. public Bil tautforste( ) { if (forste == null) return null; Bil resultat; resultat = forste; forste = forste.neste; // les: forste settes til å peke på det // samme som forste.neste peker på return resultat; // Oppgave: her er det noe feil. // Skriv opp (og tegn) invarianten og rett feilen(e) Poeten public void settinnsist(bil denne){ if (siste == null) { siste = denne; forste = denne; else { siste.neste = denne; siste = denne; class Bil{ Bil neste; String regnr; 03(

?,'(-($@A."A($@(:A:"#/.9:+(,(B;:/%:+(! C9+,D.%:E(B:%F+(.%(<:"(,//:(:+(/;:"%(&%:"-(/@.##:"(! C9&B@,GE(B:%F+(.%(<:"(#::#(.D(.@@:(!!"A:"(-<,H/.%+(B:%F+(.%(:A:"#/.9:"(:+(/;:"%(,"":")+((H@:"I/.%.@A:"I9.//:"(!!(<:':(:/#:-9@:%(:+(J,@(:"(#K(,"%:A+:+%(<:@(.D(J,@8(.%( D,($@@.%:+(<,+:/%:($@A."A($@(<:(D.+,.B@:(,(J,@L/@.##:">(( 04(

(M/#:-9:@(N.D.(<.%.#%+&/%&+( O( P+A+.--:+,"A#-Q"#%:+:%( R<:@@(L(S%#F"(L(8"%+@@( TRUV((L((R<:@W(U,:XW(V"%+@Y( 05(

M%(B."/9+A+.-(! U,(#/.@(@.A:(:%(9+A+.-(#-(ZK"<%:+:+(/"%:":(,(:"(B."/>(( M"(/"%(:,:#(.D(:"(/&"<:W(A(Z.+(:"(#.@<>(! P+A+.--:%(#/.@(/--&",#:+:(-:<(:"(B+&/:+(,(S",[I\]^L D,"<&:%(! P+A+.--:%(#/.@(/&"":(.<-,",#%+:+:(/"%:":(,(B."/:"W(A(,()Q+#%:(-A."A(( 0Y(]99+:':(:"("F(/"%( 1Y(_;:+":(:"(/"%( 2Y(^:':(,""(9:"A:+(9K(:"(/"%( 3Y(^/+,D:(&%(B."/:"#()+D.@%","A#/.9,%.@( 06(

Et bankprogram!! 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 07(

G@.##(J."/(!!(:"(B."/(#/.@(D,(/&"":(@:AA:(,""(:"("F(/&"<:W(a:+":(:"( /&"<:W(#:':(,""(9:"A:+(9K(:"(/&"<:#(/"%(A(H"":( )+D.@%","A#/.9,%.@:"($@(B."/:"(T#&--:"(.D(.@@:(B:@Q9:":(9K(.@@:(/"%:":Y( G@.##(J."/\.%.(! b@@:(/"%:":(b@,+(.<-,"#%+:+%(.d(/@.##:"(j."/\.%.( G@.##(8"%(! \.%.(A(-:%<:+()+(:"(/"%( 0`(

UML klassediagram (mer i INF1050): Bank BankData 1 1 1 Konto 1c(

Java datastruktur Versjon 1 for banksystemet Bank-objekt BankData-objekt Mange Konto-objekter 10(

UML klassediagram for BankData BankData Konto 1 Kan f.eks. gi denne Java datastrukturen: Konto-objekter Bank-objekt navn: type: Bank type: HashMap type: Bank HashMap-objekt En Collection 11(

U:+#;"(0d(G@.##(J."/\.%.( Bank-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( ) {... 12(

G@.##(8"%(! ek+(:"(/"%(99+:':#(99a,+(d,(<:"#(:,:+w(a( #.@<:"(#:':#($@("&@@>(! PK(:"(/"%(#/.@(D,(/&"":(#:':(,""(:%(B:@Q9W( H"":(".D":%(9K(:,:+:"(A(H"":(,"":#%K:"<:( B:@Q9( 13(

U:+#;"(0d((G@.##(8"%( 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 14(

8;:"%:(-Q"#%+:()+(9+A+.-99<:@,"A(! \:%(:+(-."A:(/;:"%:(A(D:@9+QD<:(-K%:+(K(<:@:(99( 9+A+.-/<:>(^@,/:(/;:"%:(-K%:+(/.@@:#(E<:#,A"(9.':+"#E>(! f.'()+.(cfz:(f,-:@:##(g.f()(j&,@<,"aew(vz+,#%h:+(b@:[."<:+w( ][)+<(S",D:+#,%F(P+:##W(0`6`W(!^Je(c0`4c13c17(! CM.GZ(9.':+"(<:#G+,B:#(.(9+B@:-(XZ,GZ(GG&+#(D:+(."<(D:+(.A.,"(,"(&+(:"D,+"-:"%W(."<(%Z:"(<:#G+,B:#(%Z:(G+:()(%Z:(#@&$"(%( %Z.%(9+B@:-W(,"(#&GZ(.X.F(%Z.%(F&(G."(&#:(%Z,#(#@&$"(.(-,@@,"( $-:#(D:+W(X,%Z&%(<,"A(,%(%Z:(#.-:(X.F(%X,G:E(! M%(#@,/%(!"#$"%&&'"()$&+),'"(Z.+(<:+:(@i+%(,(!e_0ccc( -:<(/--."<@Q//.(#-(@:AA:+(&%(:"(-:"F(A(%.+( /--."<()+.(B+&/:+:">(! M%(.D(<:(-:#%(/;:"%:d(R<:@@(L(S%#F"(L(8"%+@@(( #/.@(<:+:(@i+:(z:+(tf+fad:(j::"#/.&ay( 15(

R<:@@(=(S%#F"(=(8"%+@@(k( RUVd((R<:@(=(U,:X(=(V"%+@(! R<:@@(! M"(+:"(<.%.#%+&/%&+((#-(Z@<:+(.@@:(<.%.(-( 9+B@:-:%>(! (S%#F"((! MA:"(-<&@()+(K(9+:#:"%:+:(-<:@@:"()+( B+&/:+:"(9K(&@,/:(-K%:+(D.@A%(.D(B+&/:+:"(TD,.( /"%+@@:"Y(! 8"%+@@((! MA:"(-<&@I/@.##:()+(K(-'.(+<+:()+.( B+&/:+:"(A(:"%:"(:"<+:(-<:@@:"(T@:AA:(,""( "F:(<.%.W(:"<+:W(a:+":(<.%.Y(:@@:+(/.@@:(:"( )&"/#;"(,(&%#F":%()+(K(A,(:%("F'(B,@<:(.D( -<:@@:">(! ]-@.A(#.--:(99<:@,"A(#-(,(/@,:"%I%;:":+( B.#:+%:(<,#%+,B&:+%:(#F#%:-:+(! R<:@@(=(<.%.B.#:(T#:+D:+Y(! S%#F"(=(/@,:"%:"(9K(<,#%+,B&:+%:(PV:+(! 8"%+@@(=(%;:":+I#:+D:+((-:<( (((((((((((((((((((()++:%","A#@A,//:"( Tjener (med forretningslogikk) Klienter Database server 16(

R<:@@(L(S%#F"(L(8"%+@@(TRUVY(! l:+d(m%(#di+%(:"/:@%(#f#%:-()+(k(d,#:( -:/.",#-:">(RUV(:+()+%+&//:%(D:<(":"( Z&"<+:(@,";:+(/<:(A(99D:+>(! m+&"":"($@(k(#/,@@:(<,##:()&"/#;":":()+.( ZD:+."<+:W(:+(.%(<:%(A;Q+(<:%(@:':+:(d(!n(&%D,/@:(L(8"#:"%+:+:(#:A(-(:"($"A(.<(A."A:"(!n(:"<+:(L((8<:(-(:"($"A(:+(#.-@:%(:'(#%:<( ((((((((((((((((((_>:/#>d(?,";:b.#:+%(d#>(u,"<&#b.#:+%((( ( ( ( ( ( ( (&%#/+,o( 17(

RUV(=(@Q#","A()+(B."/:"(DK+(! \:%(#/.@(<.(Di+:(/@.##:+(#-(ZK"<%:+:+(d(!8@.##:"(-%)./%,%0! -:<(Z;:@9:/@.##:"01#),#0(!S%#F":%()+(Z:@:(#F#%:-:%(T-%).2,3)Y(!8"%+@@:"()+(Z:@:(#F#%:-:%(T-%).Y( 1`(

Java datastruktur oversikt versjon 2 Bank-objekt BankData-objekt konti BankUtsyn-objekt Konto-objekter <Alt som har med presentasjon og interaksjon med brukere> 2c(

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>

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

Fullstendig program import java.util.; En konto har en eier identifisert av en tekst (String) @author Stein Gjessing @version 13. januar 2011 class Konto { private String navn; private double saldo; Konstruktør setter kontoens saldo til 0. @param n navn på kontoens eier Konto (String n) { navn = n; saldo =0; Setter inn et beløp. @param b beløp public void setinn(double b) { saldo += b; Henter saldoen. @return saldo på konto public double hentsaldo() { return saldo; Henter eier. @return navn på eier public String henteier() { return navn; 22(

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 @author Stein Gjessing @versjon 13. januar 2011 class BankData { private HashMap <String,Konto> konti = new HashMap<String,Konto>(); Oppretter en ny konto i banken. @param kunde navn på kunden public void lagbankkunde(string navn) { konti.put(navn, new Konto (navn)); Fjerne en konto fra banken.! @param navn navn på kunde! public void fjernbankkunde(string navn) { konti.remove(navn); Summerer saldoen for alle kontoene i banken. @return 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. @param navn navn på kunde @param belop beløpet som settes inn. public void settinn (String navn, double belop) { Konto k = konti.get(navn); k.setinn(belop); 23(

Bank er kontrollklassen for dette banksystemet. Her ligger ordreløkken som styrer det hele. Denne klassen er bindeleddet mellom utsynet og datamodellen. @author Stein Gjessing @version 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 24(

BankUtsyn brukes til innlesing og vising av kundedata. @author Stein Gjessing @version 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. @return 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. @return navnet public String hentnavn() { return navn; Henter bløpet som er lest inn. @return beløpet public double hentbelop() { return belop; Ber om og henter et navn. @return navnet public String beomoghentnavn() { System.out.print("\nGi navn : "); return tast.next(); 25(

Skriver ut bankens forvaltningskapital. @param sum kapitalen som skrives ut public void skrivsum(double sum) { System.out.println("\nBankens forvaltningskapital: + sum); Skriver ut en feilmelding. @param feil feilmeldingen public void skrivfeil(string feil) { System.out.println(feil); // end BankUtsyn Kjør: >javadoc -package Bank.java 26(

f:#$"a((((t-:+(,(!e_0c4cy(! b@@:(/@.##:+(a(-:%<:+(%:#%:#()q+#%(#:9.+.%w(#k( #.-@:%(! j:a+:##%:#$"a(=(/;q+(.@@:(a.-@:(%:#%:+(o(:d%>("f:(zd:+( A."A(":(:"<+:#(T,//:(B.+:(%:#%(<:%("F:(-:<("F:( %:#%:+Y(! f:#$"a(/."(.@<+,(d,#:()+.di+(.d():,@w(b.+:(.%(#f#%:-:%( D,+/:+()+(D,##:(,""<.%.>(! J:D,#(.D(9+A+.--:+(p(! ^i+#(d."#/:@,a(a(<f+%(!?q"":+(#:a(b.+:(,(z:@%(#9:#,:@@:($@):@@:+( 27(

\&-:"%.#;"W(B+&/:+99@i+,"AW(,"")Q+,"A(!!//:(<:@(.D(<:':(/&+#:%W(-:"(-:A:%(D,/$A>(! \://:#(.D(."<+:(/&+#W(B@>.>(!e_0c4c( U!8f!m(q( e:#%:(&/:d((?,#%:+w(-:+(-(b@,a>0( 2`(