Inleiding Informatica Prof. Dr. O. De Troyer Hoofdstuk 10: Omgaan met problemen.

Slides:



Advertisements
Verwante presentaties
Sudoku puzzels: hoe los je ze op en hoe maak je ze?
Advertisements

Downloaden: Ad-aware. Downloaden bestaat uit 3 delen: •1. Zoeken naar de plek waar je het bestand kan vinden op het internet •2. Het nemen van een kopie.
Hoofdstuk 8: Recursie.
Ronde (Sport & Spel) Quiz Night !
Hoofdstuk 20: GEGEVENSSTRUCTUREN.
Van domeinklasse tot implementatie
Het ontwerpen van een klasse
F. Rubben NI Lookout 1 06/RIS/05 - NI Lookout VTI Brugge F. Rubben, ing.
Het type int Tekenen met Java operatoren
Klassen en objecten.
WISKUNDIGE FORMULES.
Modula vs Java MODULE Show; CONST PI = ; TYPE PointRc = RECORD x,y : INTEGER; speed : REAL; angle : REAL; END; VAR a,b : PointRc; BEGIN.
Hoofdstuk 5: Bestanden.
Inleiding Informatica
Hoofdstuk 6: Controle structuren
Hoofdstuk 4: Klassen definiëren
Hoofdstuk 2 Hallo, C# !.
Verdieping Programmeren in Java - deel 1 college 6 mei 2001.
1 Voorwaarden hergebruik Modulair ontwerp Low coupling High cohesion.
Static Keyword static voor functieleden functie niet voor een object aangeroepen class K {... static int minimum( int i, int j); } aanroep: K::minimum(
JAVA -- H81 Exception: ongewone of foutieve situatie->prog. mislukt kan onderschept en afgehandeld worden. = een object van de klasse Throwable, gegenereerd.
JAVA -- H51 CONSTRUCTOR –- COPY-CONSTRUCTOR 1Constructor: Dezelfde naam als de klasse Wordt uitgevoerd d.m.v. new Initialisatie van de (private) attributen.
Oefeningen Hoofdstuk 3.
Werken aan Intergenerationele Samenwerking en Expertise.
Algoritmiek Object-georiënteerd Programmeren
6.1 Inleiding HOOFDSTUK 6 METHODEN
LauwersCollege Buitenpost Java Applet programma dat op een website zichtbaar is Java Application programma dat zelfstandig werkt Javascript Scripttaal.
Opgave 1a: void nvoid staat in de header van een methode die geen resultaatwaarde heeft nde aanroep van een void-methode is dan een opdracht i.p.v. een.
Opgave 2a nMet een InputStream lees je bytes uit een binare file nMet een Reader lees je characters uit een tekstfile.
ZijActief Koningslust 10 jaar Truusje Trap
OO Analyse in de praktijk OO Analyse in de praktijk V Enkele Design Patterns.
OO Analyse in de praktijk OO Analyse in de praktijk IV OO basisregels.
Herhaling Java-programmatie en geautomatiseerd testen (vervolg)
1 Syntax JavaLogo. 2 Hoofdstuk 1 Tekenen in Java.
ECHT ONGELOOFLIJK. Lees alle getallen. langzaam en rij voor rij
Inleiding Informatica Prof. Dr. O. De Troyer Hoofdstuk 3: Werken met numerieke gegevens.
Variabelen Part deux.. Variabelen week 3 0. Herhaling 1. De NullPointerException (p101) 2. Primitieven 3. Scope en levensduur van variabelen 4. Meerdere.
De financiële functie: Integrale bedrijfsanalyse©
1 Zie ook identiteit.pdf willen denkenvoelen 5 Zie ook identiteit.pdf.
ZijActief Koningslust
Inleiding tot programmeren
Variabelen Part deux.. Variabelen week 3 0. Herhaling 1. De NullPointerException (p101) 2. Primitieven 3. Scope en levensduur van variabelen 4. Meerdere.
Constructoren Genesis 1:1 Aarde a1 = new Aarde(“Adam”, “Eva”);
Visual Basic.NETPag.1 Hoofdstuk 8 – Fout afhandeling Inleiding Structured Exception Handling Hoe fouten opvangen Geen foutafhandeling Alle fouten opvangen.
Animatie nAnimatie: “tekenfilm” programma toont automatisch veranderende beelden nGemakkelijk te programmeren met gebruik van de klasse Thread “draadje”
Datacommunicatie en netwerken
CONTROLESTRUCTUREN (DEEL 1)
Tircms02-p les 3 Functies Strings Structuren. Functies 1. main() 2. { int k; k = 10 ; printf(“%d\n”,fac(k)); } 3. int fac(n) int n; 4. { int f; f= 1;
JAVA: een platformonafhankelijke taal
Hoofdstuk 14.1 Algoritmen: Zoeken in een netwerk.
Hoofdstuk 3 Methoden om te tekenen.
Inlezen en uitlezen van txt bestanden
Programma zonder window commandline interface. Commandline programma public static void main (String [ ] params) { System. out. println (“Hoi allemaal!”);
Java Objectgeoriënteerd Programmeren in Java met BlueJ
Java Objectgeoriënteerd Programmeren in Java met BlueJ Hoofdstuk 7 Polymorfie en overerving © 2014, Gertjan Laan, versie 2.
INFITT01 - Internettechnologie WEEK 3. Programma Sessies JSP.
Java & het Web Programma: Sessies JSP. Stateless vs. Stateful(1) HTTP is stateless WAT IS STATELESS?
Loops en errors Array's Random try catch for loop while loop do while loop.
Bestanden Lezen Schrijven Afbeeldingen. Bestandstypen.txt.png eigen.
GUI & classes Een Gui in een class steken en het object gebruiken.
IF() ELSE() LES 4: VOORWAARDEN. BOOL Een variabele die slechts 2 mogelijke waarden kan hebben: true(waar) of false(niet waar) duid je aan met bool bool.
Informatie beoordelen If else Switch En Wiskunde.
ISensorEventListener
Gameprogrammeren: Methoden
Gameprogrammeren: Herhalingen
Voorbeeld: Simulatie van bewegende deeltjes
Game: omgaan met tijd (Jewel-Jam)
Gameprogrammeren: Klassen en objecten
Implementatie Zoekboom
Transcript van de presentatie:

Inleiding Informatica Prof. Dr. O. De Troyer Hoofdstuk 10: Omgaan met problemen

Inleiding Informatica Prof. Dr. O. De Troyer 2 Vooruitziend zijn Voorbeeld int aantal = Integer.parseInt(br.readLine()) ; Wat kan er verkeer gaan? –br, een BufferedReader object refereert naar een file die er plots niet meer is File op diskette die uit de diskette-lezer werd genomen File via network en verbinden is verbroken Iemand heeft file verwijderd van de harde schijf –Input is geen getal maar bv. een letter of een ander symbool

Inleiding Informatica Prof. Dr. O. De Troyer 3 Vooruitziend zijn (2) Wat als er iets verkeer gaat in een methode? –De methode kan het probleem signaleren throw exception waarbij exception een referentie is naar een object uit de klasse Exception - Gevolg De uitvoering van de methode stopt Indien er verder niets gedaan wordt, wordt de “throw” doorgegeven aan de aanroepende methode

Inleiding Informatica Prof. Dr. O. De Troyer 4 Het propageren van een “throw” main Methode die een“throw”uitvoert Bijvoorbeeld door int aantal = Integer.parseInt(br.readLine()) ; Methode die een“throw”uitvoert Bijvoorbeeld door int aantal = Integer.parseInt(br.readLine()) ; methodeA methodeY methodeX... Methode stopt Main stopt Geeft “throw” door Alle methoden stoppen

Inleiding Informatica Prof. Dr. O. De Troyer 5 De “throw” Meestal throw new Exception-klasse(String-Argumenten) Voorbeelden throw new NumberFormatException(“Number expected”) throw new FileNotFoundException(“Log file is necessary”) –De string-argumenten worden afgedrukt Geeft bijkomende informatie

Inleiding Informatica Prof. Dr. O. De Troyer 6 De klasse Exception De klasse Exception heeft diverse subklassen –RunTimeException –IOException –NullPointerException –NumberFormatException –...

Inleiding Informatica Prof. Dr. O. De Troyer 7 De “trows” uitdrukking Elke methode die een “throw” kan uitvoeren moet dit aangeven in zijn hoofding Voorbeeld: public static void main(String [ ] arg) throws IOException Kan IOException throw’s uitvoeren

Inleiding Informatica Prof. Dr. O. De Troyer 8 Problemen opvangen Default –het programma stopt na een “throw” Alternatief –“throw” opvangen en corrigerende actie laten uitvoeren try { code die kan leiden tot een throw } catch (Exception e) { code met decorrigerende acties }

Inleiding Informatica Prof. Dr. O. De Troyer 9 Try en catch Voorbeeld 1: verbeteren van foutenboodschappen try { int n = Integer.parseInt( br.readLine() ); } catch (NumberFormatException e) { System.err.println(“Bad format given here”); throw e; } System.out.println(“You have entered” + n) ; try { code die kan leiden tot een throw } catch (Exception e) { code met decorrigerende acties } Aangepaste foutenboodschap Fout wordt terug gesignaleerd Wordt enkel uitgevoerd indien geen fout Wordt enkel uitgevoerd indien geen fout Standaard error stream

Inleiding Informatica Prof. Dr. O. De Troyer 10 Try en catch (2) Voorbeeld 2: fout opvangen try { int n = Integer.parseInt( br.readLine() ); } catch (NumberFormatException e) { System.err.println(“Bad format given here”); System.err.println(“Try again”); n = Integer.parseInt( br.readLine() ); } System.out.println(“You have entered” + n) ; Wordt enkel uitgevoerd indien geen fout Wordt enkel uitgevoerd indien geen fout Probleem!

Inleiding Informatica Prof. Dr. O. De Troyer 11 Try en catch (3) beter boolean noGoodInput = true ; while (noGoodInput ) { noGoodInput = false ;// we hopen dat het goed gaat try { int n = Integer.parseInt( br.readLine() ); } catch (NumberFormatException e) { System.err.println(“Bad format given here”); System.err.println(“Try again”); noGoodInput = true ;// het ging dus mis n = Integer.parseInt( br.readLine() ); } System.out.println(“You have entered” + n) ;

Inleiding Informatica Prof. Dr. O. De Troyer 12 Waar een probleem opvangen? Een probleem hoeft niet meteen opgevangen te worden Methode moet voldoende informatie hebben om “corrigerende” actie uit te voeren methodeA methodeD methodeC methodeB Methode die een “throw” uitvoert Methode die een “throw” opvangt

Inleiding Informatica Prof. Dr. O. De Troyer Hoofdstuk 11: Threads

Inleiding Informatica Prof. Dr. O. De Troyer 14 Programma moet soms meerdere taken tegelijkertijd volbrengen Voorbeeld 1: multi-media programma Speel achtergrond muziek Toon een opeenvolging van beelden Scroll de tekst die de beelden uitlegt Voorbeeld 2: WWW-browser Scrollen in pagina Opzoeken nieuwe pagina Stop toets indrukken

Inleiding Informatica Prof. Dr. O. De Troyer 15 Voor elke taak kan men een “thread” gebruiken Threads kunnen tegelijkertijd uitgevoerd worden Opmerking –De meeste computers kunnen geen taken tegelijkertijd uitvoeren –De gelijktijdigheid wordt gesimuleerd Gebruik van interleaving techniek

Inleiding Informatica Prof. Dr. O. De Troyer 16 De klasse Thread Threads zijn objecten van de klasse Thread Belangrijkste methoden om thread objecten te controleren: –start : start uitvoering van de code geassocieerd met de thread –suspend : onderbreekt de uitvoering van de code tot de methode resume wordt aangeroepen –resume : zet de uitvoering van de code verder na een suspend –sleep : onderbreekt de uitvoering van de code voor een aangegeven aantal milliseconden –stop : stopt de uitvoering van de code

Inleiding Informatica Prof. Dr. O. De Troyer 17 De klasse Thread - voorbeeld 1 class DoeNietsThreads { public static void main( String [ ] arg) { Thread t1 = new Thread() ; Thread t2 = new Thread() ; t1.start () ; t2.start () ; } Om een zinvolle thread te maken moet men een subklasse maken van Thread

Inleiding Informatica Prof. Dr. O. De Troyer 18 De klasse Thread - voorbeeld 2 class TellerThread extends Thread { public TellerThread( int x) { this.x = x ; } public void run () { int i = 0 ; while (i < 15 ) { System.out.println( i ) ; i+ = x ; } private int x ; } De methode run wordt overschreven

Inleiding Informatica Prof. Dr. O. De Troyer 19 De klasse Thread - voorbeeld 2 (2) class TellerThreadsVoorbeeld { public static void main( String [ ] arg) { TellerThread t1 = new TellerThread(2) ; TellerThread t2 = new TellerThread(3) ; t1.start () ; t2.start () ; } Mogelijke output Mogelijke output

Inleiding Informatica Prof. Dr. O. De Troyer 20 De klasse Thread - voorbeeld 2 (3) class TellerThread extends Thread { public TellerThread( int x) { this.x = x ; } public void run () { int i = 0 ; while (i < 15 ) { System.out.println( i ) ; i+ = x ; try { sleep(1) ; } catch (Exception e) } private int x ; } Output Output Onderbreek uitvoering gedurende 1 millisec

Inleiding Informatica Prof. Dr. O. De Troyer 21 Threads synchroniseren Verschillende threads kunnen mogelijk dezelfde variabelen wijzigingen –Mag niet gelijktijdig

Inleiding Informatica Prof. Dr. O. De Troyer 22 Threads synchroniseren (2) Oplossing: synchronized methode Indien een thread een gesynchroniseerde methode uitvoert voor een object kan geen enkele andere thread dit object gebruiken –De andere threads die het object nodig hebben komen in een wachtrij Wachtrij per object

Inleiding Informatica Prof. Dr. O. De Troyer 23 Een “synchronized” methode class Voorbeeld { public Voorbeeld () { } synchronized void update () { aantal++ ; } private int aantal ; }

Inleiding Informatica Prof. Dr. O. De Troyer 24 Threads synchroniseren (3) Threads kunnen afhankelijk zijn van elkaar –Een thread kan moeten wachten op de resultaten van een andere thread

Inleiding Informatica Prof. Dr. O. De Troyer 25 Threads synchroniseren (4) Oplossing wait () of wait (tijd-in-milliseconden) Aan te roepen als thread niet verder kan Aan te roepen vanuit een synchronized method Thread komt in de wachtrij voor dit object tot –notify of notifyAll wordt aangeroepen vanuit een andere thread voor dit object of –tijd-in-milliseconden verstreken is notify () of notifyAll () Wordt aangeroepen door een thread Brengt de wachtende thread(s) op de hoogte van een gewijzigde situatie

Inleiding Informatica Prof. Dr. O. De Troyer 26 Threads synchroniseren - voorbeeld class Wachter { public Wachter () { ok = false; } synchronized void wacht () { while (! ok) { try { wait(500) ; } catch (InterruptedException e) } ok = false ; } synchronized void klaar () { ok = true ; notify() ; } private boolean ok ; }