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



Like dokumenter
Videregående programmering 6

Å bruke Java API-et til å sortere tabeller/arraylister der elementene er (referanser til) objekter

HØGSKOLEN I SØR-TRØNDELAG

Stein Gjessing, Institutt for informatikk, Universitetet i Oslo

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

HØGSKOLEN I SØR-TRØNDELAG

INF1010 våren 2018 tirsdag 23. januar

INF1010 våren 2019 Onsdag 30. januar. Mer om unntak i Java (med litt repetisjon av I/O først)

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

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

LC191D Videregående programmering Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring. Else Lervik, januar 2012.

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

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

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

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

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

Klassen javax.swing.joptionpane

Leksjon 7. Filer og unntak

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

Eksamen i Internetteknologi Fagkode: IVA1379

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

Eksamensoppgave i IFUD1025 Programmering i Java og IINI4013 Programmering i Java

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

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

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

Å programmere databasetjeneren JavaDB. Programkoden ligger i databasen

Kapittel 11: Unntakshåndtering. Java som første programmeringsspråk

Kapittel 11: Unntakshåndtering. Java som første programmeringsspråk

Jentetreff INF1000 Debugging i Java

Eksamensoppgave i IFUD1025 Programmering i Java

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

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

Transaksjoner og flerbrukerproblematikk. Transaksjoner

Løsningsskisse, eksamen J2EE og distribuerte systemer 19.mai 2004

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

HØGSKOLEN I SØR-TRØNDELAG

GUI-programmering, del 3 Vinduslyttere Dialogvinduer GUI-komponenten JTable Egne datamodellklasser. En oversikt over kapittel 19 i boka

Eksamen INF1010 V2009 Del B prøveeksamen V2010 Vekt 60 %

Datamodellering og databaser SQL, del 2

Transaksjoner og flerbrukerproblematikk. Transaksjoner

LO191D/LC191D Videregående programmering

Oppgaver Oppgave a: Sett opp mulige relasjoner

Datamodellering og databaser SQL, del 2

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

En klasse som arver, eller selv deklarerer en abstrakt metode, må deklareres som abstrakt.

Kapittel 13: Unntakshåndtering

Kapittel 13: Unntakshåndtering

SQL Structured Query Language. Definere tabeller Skranker Fylle tabeller med data

Forkurs INF1010. Dag 3. Andreas Færøvig Olsen Gard Inge Rosvold Institutt for Informatikk, 15.

Datamodellering og databaser SQL, del 2

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

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

INF1010 våren Arv og subklasser - del 2

HØGSKOLEN I SØR-TRØNDELAG

8. JDBC-programmering med tilrettelegging for webapplikasjoner

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

Repetisjon. INF gruppe 13

Eksamensoppgave i IFUD1025 Programmering i Java

HØGSKOLEN I SØR-TRØNDELAG

TOD063 Datastrukturer og algoritmer

6108 Programmering i Java. Leksjon 5. Tabeller. Roy M. Istad 2015

INF Uke 10. Ukesoppgaver oktober 2012

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

Gjennomgang av eksamen H99

1. SQL datadefinisjon og manipulering

Klassen javax.swing.joptionpane

UNIVERSITETET I OSLO

Antall sider (inkl. forsiden): 7. Alle trykte og håndskrevne

Læringsmål for forelesningen

INF1000: noen avsluttende ord

INF1010 våren januar. Objektorientering i Java

BOKMÅL Side 1 av 7. KONTINUASJONSEKSAMEN I FAG TDT4100 Objektorientert programmering / IT1104 Programmering, videregående kurs

SQL 3: Opprette tabeller, datainnsetting og utsnitt

Algoritmer og datastrukturer A.1 BitInputStream

Eksamensoppgave i TDT4100 Objektorientert programmering med Java

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

Mer om programmering av aggregeringer

Objektorientert Programmering Ekstraordinær eksamen 2014

INF1000 Mer om objekter

lfæ~~~~:::j~~:~l -.~=:~-t::-d I Alle trykte og håndskrevne EKSAMENSOPPGA VE Side l av 5 Eksamenstid:

Læringsmål for forelesningen

INF1000 Metoder. Marit Nybakken 16. februar 2004

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

Miniverden og ER- modell

Dagens tema Kapittel 8: Objekter og klasser

HØGSKOLEN I SØR-TRØNDELAG

Forkurs INF1010. Dag 2. Andreas Færøvig Olsen Gard Inge Rosvold Institutt for Informatikk, 14.

. Ved sensur vl1 ahe bokstaverte deloppgaver (a, b, c,...) telle like mye.

INF1000: Forelesning 7. Konstruktører Static

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

Plan for dagen. Vprg 4. Dagens tema - filbehandling! Strømmer. Klassen FilLeser.java. Tekstfiler

Uke 8 Eksamenseksempler + Ilan Villanger om studiestrategier. 11. okt Siri Moe Jensen Inst. for informatikk, UiO

1. Tråder og socketprogrammering.

IN1010 våren januar. Objektorientering i Java

INF1000: Forelesning 7

Informasjon Eksamen i IN1000 og IN1001 høsten a) 1 poeng. 1b) 1 poeng. Tid. Oppgavene. Tillatte hjelpemidler. 30. november kl. 14.

Transkript:

Å lage sikre klasser Unntaksklassene i Java-API-et Unntakshåndtering i databasesammenheng try-catch-finally-setningen Trelagsarkitektur; egen databaseklasse Transaksjonshåndtering LC191D Videregående programmering Semesterplan: http://aitel.hist.no/fag/vprg/index_lc191d.php Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring Else Lervik, februar 2011 Å lage sikre klasser (kap. 6.5, side 196-198) Klasser skal lages slik at de i minst mulig grad er avhengig av at klienten gjør bestemte ting STOL ALDRI PÅ KLIENTEN! Argumenter bør kontrolleres Øving 3, klassen Rom public boolean legginnnyreservasjon(tidspunkt fratid, Tidspunkt tiltid, String navn, String tlf, int antpers) { Kontroller argumentene, dog begrensede krav til testing i dette kurset Klienten kan, men behøver ikke, være et objekt av klassen konferansesenter Tilbakemelding om feil gis fortrinnsvis via returverdien: Forelesning 6, side 2 1

Å lage sikre klasser (kap. 6.5, side 196-198) Klasser skal lages slik at de i minst mulig grad er avhengig av at klienten gjør bestemte ting STOL ALDRI PÅ KLIENTEN! Dere må ikke forutsette at klienten kaller metodene i en klasse i en bestemt rekkefølge. Dere må lage metodene slik at de i størst mulig grad står på egne bein. Argumenter bør kontrolleres Øving 3, klassen Rom public boolean legginnnyreservasjon(tidspunkt fratid, Tidspunkt tiltid, String navn, String tlf, int antpers) { Kontroller argumentene, dog begrensede krav til testing i dette kurset Klienten kan, men behøver ikke, være et objekt av klassen konferansesenter Tilbakemelding om feil gis fortrinnsvis via returverdien: true/false Heltall (navngitte konstanter) Referanse, eventuelt null Ikke strenger!!!! Seogså ENUM, side 511 Forelesning 6, side 3 Å lage sikre klasser, forts. Når kan vi ikke bruke returverdien? Melding fra konstruktøren Set-metoder av standard type, de har returtype void Der returverdien ikke kan benyttes fordi alle mulige returverdier er gyldige data Hva gjør vi da? Da må vi kaste unntaksobjekter Forelesning 6, side 4 2

Eksempel på håndtering av unntak Lag kode som leser inn heltall fra brukeren via showinputdialog() Gi tilbakemelding dersom ugyldig tall Vis klassen mittbibliotek.dataleser, side 495-497 Forelesning 6, side 5 Unntaksklassene i Java-API-et figur side 498 Denne typen unntak skal sjelden håndteres. Forelesning 6, side 6 3

RuntimeException, eksempler Mange av disse unntakene kan unngås med enkle if-tester ArrayIndexOutOfBoundsException if (indeks >= 0 && indeks < arraylist.size()) if (indeks >= 0 && indeks < tabell.length) NullPointerException if (referanse!= null). AritmeticException if (nevner!= 0) Forelesning 6, side 7 RuntimeException, eksempler Mange av disse unntakene unngås med enkle if-tester ArrayIndexOutOfBoundsException if (indeks >= 0 && indeks < arraylist.size()) if (indeks >= 0 && indeks < tabell.length) NullPointerException if (referanse!= null). ArithmeticException if (nevner!= 0). Unntakshåndtering skal ikke brukes som alternativ til en if-setning Forelesning 6, side 8 4

Behov for unntakshåndtering i databasesammenheng? Forelesning 6, side 9 try-catch-finally-setningen, eksempel Programmering av unntakshåndtering i databasesammenheng try { kode } catch (parameter) {. kode } catch (parameter) { kode } catch { } finally { kode som utføres alltid, uavhengig av hva som skjer foran også dersom det står en return-setning i koden Det eneste som kan forhindre at finally-blokken blir utført,. er System.exit() } Skisser kode med fullstendig unntakshåndtering: DatabaseKontaktMedExc.java Vis tilsv. kode der unntakshåndteringen er flyttet ut i en klasse DatabaseKontaktMedExc2.java Opprydder.java, programliste 24.3, side 831-832 Forelesning 6, side 10 5

Trelagsarkitektur figur side 844 Forelesning 6, side 11 Egen klasse for databasehåndteringen figur side 825, kode side 827-831, fil Database.java Forelesning 6, side 12 6

Transaksjonshåndtering Tabellen konto create table konto( kontonr varchar(15) not null, navn varchar(30) not null, saldo decimal not null, primary key (kontonr)); insert into konto values ('12345', 'Ole Pettersen', 5250); insert into konto values ('34567', 'Ole Pettersen', 3456); insert into konto values ('45632', 'Ingrid Bø', 1000); Vis kode, Transaksjonstest.java, side 850-851 Øving 6 Egen klasse for databaseoperasjoner mot databasen fra øving 5 Transaksjonshåndtering nødvendig i noen av metodene Forelesning 6, side 13 7