Felhantering 2017
|
|
- Rut Bengtsson
- för 7 år sedan
- Visningar:
Transkript
1 Felhantering 2017
2 Felhantering 2 Ofta antar vi att allt ska fungera Alla filer vi behöver finns går att öppna Tillräckligt mycket minne finns Servrar som vi kontaktar svarar och glömmer att ta hand om fel! Filer saknas Minnet tar slut Servrar är inte tillgängliga Upptäck att ett fel har uppstått Hantera felet på något sätt Laga felet själv Signalera till någon annan
3
4 Exempel 4 Exempelproblem: Konvertera sträng till heltal Sträng: ( tecken) Första siffran är Andra siffran är Tredje siffran är Fjärde siffran är, ett heltal Hur går vi från tecken till heltal? Java använder Unicode har numeriskt värde har numeriskt värde 4 steg
5 Exempel 5 Kodexempel
6 Exempel 6 Utökning: Läs in ett positivt heltal från användaren ger alltid strängar, tecken för tecken Var alltid misstänksam mot användarens indata!
7 Upptäcka fel: Själv 7 Ibland kan användaren göra fel i inmatningen
8 Upptäcka fel: Själv (2) 8 Jonas
9 Upptäcka fel: Själv (3) 9 Ingen kan upptäcka det åt oss det är vi som måste hitta felet Ignorera? Nej Felaktig input! Vad ska vi göra? Laga felet själva? Går inte! Signalera till anroparen!
10 Hur signalerar man fel? 10 Ett sätt att signalera: Speciella returvärden Metoden läser positiva heltal -1 kan aldrig returneras om vi "lyckas" Kan användas som speciell "signal" Returvärden används t.ex. i C (): fel (): fel (): OK, fel (): filslut eller fel (testa med ferror() / feof())
11 Kontrollera returvärde 11 Nu måste anroparen upptäcka att något gick fel Det signaleras men man måste titta på signalen
12 Kontrollera returvärde (2) 12 Signalering med returvärden kan ge problem 1) Tänk om vi glömmer testa! Krasch: Array med negativ storlek 2) I parseanyinteger() (även negativa) finns inget "ledigt" returvärde som kan betyda "fel"
13 Kontrollera returvärde (3) 13 3) Jobbigt om det finns mellannivåer
14
15 Undantag 1: Intuitioner 15 Ett alternativ: 1. Inför speciella kontrollstrukturer för att signalera fel 2. Inför speciella kontrollstrukturer för att visa var felen kan hanteras 3. Låt felen automatiskt skickas vidare ända till hanteraren Metod som anropar, och vill hantera fel Metod som anropar Felsignalen kastas (throw) och fångas (catch) Mellanmetoderna avbryts istället för att returnera normalt Metod som anropar Metod som signalerar fel
16 Undantag 2: Signalera fel 16 Fel kallas undantag (exceptions) Fel hanteras separat Reservera inte returvärden, deklarera feltyper istället Fel kasta ett undantag (avbryter exekveringen, inget värde returneras)
17 Undantag 3: Att läsa kod signalering 17 Speciell syntax lättare att se var fel signaleras
18 Undantag 4: Att läsa kod felhantering 18 Gammal felhanterare: Vanlig villkorssats mitt i en funktion Exceptions: Egen kontrollstruktur, try / catch Felhanteringskod separeras från övrig kod
19 Undantag 5: Skicka vidare, automatiskt 19 Kan automatiseras för att vi vet vad som är en felsignal Fångas och hanteras här Fångas inte här skickas vidare Fångas inte här: Ligger inte inom try/catch Går automatiskt till anroparen
20 Undantag 6: Objekt 20 I Java är undantag objekt (som hanteras speciellt!) Typ: Subklass till Har fält, konstruktorer Kan lagra felinformation
21
22 Kontrakt 1: throws 22 Metoder deklarerar vilka undantag som kan kastas Ingår i kontraktet! "Jag lovar att inte signalera några andra fel än FileNotFoundException" Behöver inte titta i kod eller dokumentation för att se vilka fel som kan uppstå, hur de signaleras (): fel (): fel (): OK, fel (): filslut eller fel
23 Kontrakt 2: Underklasser 23 Vi vet: Kontraktslöften får inte försvagas i underklasser! Kompilatorn klagar: StreamReader säger att bara IOException kan kastas
24 Kontrakt 3: Efterlevnad 24 Kompilatorn kontrollerar att kontraktet efterlevs Måste fånga med try-catch: Eller tala om att fel kan skickas vidare: Med speciella "felvärden" kunde vi glömma att testa returvärdet
25 Kontrakt 4: Undantag (!) 25 kan inträffa nästan var som helst : Vissa allvarliga fel Ska fortfarande representeras som undantag, inte "krascha" Lättare att felsöka Ska normalt inte fångas Interna datastrukturer kan ha "förstörts", just eftersom man inte kan gardera sig mot det som kan inträffa var som helst Behöver inte deklareras ingår ej i kontrakt
26
27 Hantera 1: Fixa felet 27 Ibland kan man uppfylla kontraktet trots felet På lägre nivå uppstod ett fel På högre nivå var detta inte viktigt, målet nåddes ändå Måste inte informera någon men ibland vill man ändå logga felet
28 Hantera 2: Skicka vidare 28 Kan man inte uppfylla kontraktet måste anroparen informeras! Informera genom att inte fånga fel: IOException från FileOutputStream skickas automatiskt vidare
29 Hantera 3: Fånga och kasta om 29 Man kan alltid tillfälligt fånga upp felet Fånga upp felet, städa, kasta vidare samma objekt
30 Hantera 4: Gemensamt eller separat? 30 Mindre kod, lättare att läsa Vet på vilken rad felet uppstod Anpassa till situationen!
31 Hantera 5: Vad ska jag fånga? 31 Catch fångar fel av en typ och dess subtyper Fångar alla feltyper på en plats: Ser inte vilka fel som kan uppstå Hur vet man om varje feltyp hanteras rätt? Ange specifika fel som ska hanteras "Exception" är definitivt för brett: Fångar även RuntimeExceptions (null-pekare, ) Om man vill hantera flera feltyper på samma sätt
32 Felfel 1: Fånga och ignorera följdfel 32 Tror allt gick bra, men doc är fortfarande null NullPointerException I många projekt inträffar kraschen långt senare svårt att hitta ursprungsfelet Vanligt felhanteringsfel: Skriver ut felmeddelande, informerar inte anroparen
33 Felfel 1b: Fånga och ignorera följdfel 33 men anroparen själv fångar felet, ignorerar det, fortsätter, och kraschar senare! Här är loadfile() korrekt
34 Undvik felhanteringsfel! 34 För att undvika problem, tänk alltid: Vad händer efter jag fångar upp felet? Uppfyller jag mina löften? Får någon reda på om jag inte uppfyller mina löften? Hur fortsätter exekveringen av programmet?
35 Vem informerar användaren? 35 Vi delar upp klasser i två kategorier De flesta klasser och metoder används bara av andra klasser Vissa klasser och metoder tillhör användargränssnittet Misslyckanden ska signaleras till anroparen Kan också loggas till loggfil Får prata med användaren Textutmatning, GUI
36 Informera 2: Inte lågnivåklasser 36 Om användaren måste informeras: Inte av en lågnivåklass! Inte ens om klassen också informerar anroparen, som här Denna klass är ett verktyg, inte del av användargränssnittet (som kanske föredrar dialogruta)!
37 Informera 3: I rätt klass 37 Klasser i användargränssnittet kan själva informera användaren Kontraktet anpassas: saveorinform säger inte sparar definitivt filen.
38 Felfel 2: Fånga och gissa 38 Glöm att starta databasen spendera tre timmar på att hitta rätt lösenord
39 Informera 4: På hög nivå 39 Ett välpolerat program visar (helst) inte råa felmeddelanden Anpassar dem till användaren
40 Informera 5: På låg nivå 40 Som utvecklare behöver vi mer detaljer! Finns i undantaget vi fångar men skriv inte bara ut det! Säger inget om var felet inträffade Skriv åtminstone ut en stack trace Om felet absolut inte kan inträffa ( when pigs fly ): Det kan det nog ändå Skriv åtminstone ut en stack trace Eller logga felet till fil!
41
42 Helt fel: Använda undantag i normalfall 42 Undantag ska användas i undantagsfall Här blir det en exception vid varje anrop!
43
44 Typer 1: Inbyggda undantagstyper 44 Undantagsklasser ska vara så specifika som möjligt, för att: Se exakt vilka problem som kan inträffa Fånga specifika fel, utan att fånga andra Ge förståeliga felmeddelanden Använd inbyggda feltyper där de passar! Exempel: Passar perfekt!
45 Typer 2: Skapa dina egna 45 Om det inte finns några passande typer? Gör inte så här: Kan inte särskiljas av programmet! Anroparen kan inte skilja user already exists från database error, osv. Skapa en egen undantagstyp!
46
47 Hitta möjliga fel 47 Hur upptäcker vi alla fel som kan uppstå? Murphys lag Framställs ofta som "Om något kan gå fel kommer det att göra det" Gäller även här: Egentligen sa han att "Om det finns två eller fler sätt att göra något, och ett av dessa sätt leder till en katastrof, kommer någon att göra det på det sättet" förespråkade defensiv design Edward Aloysius Murphy, Jr. Ingenjör i amerikanska flygvapnet
48 Var misstänksam 48 Ett steg på vägen: Var alltid misstänksam Testa att antaganden verkligen stämmer
49 Assertions 1 49 Vi är säkra på att det här fungerar! Men om det finns ett fel, kan det bli väldigt svårt att upptäcka (inträffar sällan)
50 Assertions 2: Var misstänksam 50 Vi är defensiva och misstänksamma: Stoppar in ett test Tar för mycket tid i slutgiltiga versionen! Vill ha en debugflagga för att slå av och på tester
51 Sidospår: Debugflaggor 51 För att få in värdet på en flagga: Kommandoradsparametrar: Hantera själv Bra för vanliga parametrar System properties: Hanteras av Java, görs tillgängliga globalt Bra för utvecklarens kontroll på låg nivå
52 Assertions 3: Prestanda 52 Java optimerar kod vid körning false? Optimeraren tar bort testet koden kör i full fart! Jättebra, men Kan vi förenkla det?
53 Assertions 4: Inbyggt nyckelord 53
54 Assertions 54 Javas assert-sats: Talar om vad du "vet" definitivt är sant Ungefär lika med:
55 Assertions vs. Undantag 55 Använd assertions för att fånga interna buggar men undantag för att signalera fel från anroparen! Bara falskt om klassen har ett fel Kan använda assertions Kolla fel argument från extern anropare Undantag En assertion här skulle betyda "jag vet att ingen någonsin kör pop() när kön är tom" men det beror på anroparen Kom ihåg: Påstå bara det som du "vet" är sant
56 Assertion-kontroll 56 Assertions kontrolleras bara om parameter ea anges! Annars optimeras den bort vid körning Behåll assertions i produktionskod, be användarna slå på dem om de har problem Ännu viktigare att bara använda dem för att verifiera det man vet!
57
58 Loggning 1 58 Många program loggar vad som händer Uppstart och parametrar underlättar senare felsökning :17:21,476 [ 0] INFO IDE STARTED :17:21,520 [ 44] INFO - IDE: IntelliJ IDEA (build #IU , 19 Nov :00) :17:21,520 [ 44] INFO - OS: Windows 7 (6.1, x86) :17:21,520 [ 44] INFO - JRE: 1.8.0_25-b18 (Oracle Corporation) :17:21,520 [ 44] INFO - JVM: b02 (Java HotSpot(TM) Server VM) :17:21,528 [ 52] INFO - JVM Args: -Xms128m -Xmx512m -XX:MaxPermSize=250m - XX:ReservedCodeCacheSize=150m -ea -Dsun.io.useCanonCaches=false -Djava.net.preferIPv4Stack=true - Djsse.enableSNIExtension=false -XX:+UseConcMarkSweepGC -XX:SoftRefLRUPolicyMSPerMB=50 - XX:+HeapDumpOnOutOfMemoryError -Xbootclasspath/a:C:\Program Files (x86)\jetbrains\intellij IDEA 14.0\lib\boot.jar -Didea.paths.selector=IntelliJIdea :17:21,899 [ 423] INFO - JNA library loaded (32-bit) in 371 ms :17:21,918 [ 442] INFO - penapi.util.io.win32.ideawin32 - Native filesystem for Windows is operational :17:21,934 [ 458] INFO - Using "FocusKiller" library to prevent focus stealing.
59 Loggning 2 59 Under programkörning vad som sker, hur lång tid det tar, :17:37,687 [ 16211] INFO - unicator.p2p.usermonitorthread - Force finding users :17:37,687 [ 16211] INFO - unicator.p2p.usermonitorthread - Start User Monitor Thread :17:37,688 [ 16212] INFO - icator.p2p.multicastpingthread - / IDEtalk Multicast Thread: Start thread :17:37,689 [ 16213] INFO - icator.p2p.multicastpingthread - / IDEtalk Multicast Thread: Start thread :17:39,486 [ 18010] INFO - indexing.unindexedfilesupdater - Indexable files iterated in 1527 ms :17:39,487 [ 18011] INFO - indexing.unindexedfilesupdater - Unindexed files update started: 428 files to update :17:39,743 [ 18267] INFO - bugs.resources.resourcesloader - Loading locale properties for 'en_us) :17:40,215 [ 18739] INFO - rains.ide.pooledthreadexecutor - Not enough pooled threads; dumping threads into a file :17:42,296 [ 20820] INFO - indexing.unindexedfilesupdater - Unindexed files update done in 2809 ms :17:42,429 [ 20953] INFO - unicator.p2p.usermonitorthread - Force finding users :17:42,739 [ 21263] INFO - CompilerWorkspaceConfiguration - Available processors: :17:43,422 [ 21946] INFO - tor.impl.fileeditormanagerimpl - Project opening took 9363 ms :17:44,163 [ 22687] INFO - or.jabber.impl.jabbertransport - Jabber connected :17:53,060 [ 31584] INFO - dvertisement.pluginsadvertiser - Read timed out
60 Loggning 3 60 Fel som inträffar :19:35,574 [ ] INFO - ins.idea.svn.svnchangeprovider - svn: E155007: 'C:\devel\svnwc2\teach\java\source\app\clock\ClockComponent.java' is not a working copy org.jetbrains.idea.svn.commandline.svnbindexception: svn: E155007: 'C:\devel\svnwc2\teach\java\source\app\clock\ClockComponent.java' is not a working copy at org.jetbrains.idea.svn.status.svnkitstatusclient.dostatus(svnkitstatusclient.java:82) at org.jetbrains.idea.svn.svnchangeprovider.processcopiedfile(svnchangeprovider.java:256) at org.jetbrains.idea.svn.svnchangeprovider.processcopiedanddeleted(svnchangeprovider.java:169) at org.jetbrains.idea.svn.svnchangeprovider.getchanges(svnchangeprovider.java:100) at com.intellij.openapi.vcs.changes.changelistmanagerimpl.a(changelistmanagerimpl.java:738) at com.intellij.openapi.vcs.changes.changelistmanagerimpl.a(changelistmanagerimpl.java:655) at com.intellij.openapi.vcs.changes.changelistmanagerimpl.d(changelistmanagerimpl.java:530) at com.intellij.openapi.vcs.changes.changelistmanagerimpl.access$1200(changelistmanagerimpl.java:75) at com.intellij.openapi.vcs.changes.changelistmanagerimpl$actualupdater.run(changelistmanagerimpl.java:438) at com.intellij.openapi.vcs.changes.updaterequestsqueue$myrunnable.run(updaterequestsqueue.java:260) at java.util.concurrent.executors$runnableadapter.call(executors.java:511) at java.util.concurrent.futuretask.run(futuretask.java:266) at java.util.concurrent.scheduledthreadpoolexecutor$scheduledfuturetask.access$201(scheduledthreadpoolexecutor.java:180) at java.util.concurrent.scheduledthreadpoolexecutor$scheduledfuturetask.run(scheduledthreadpoolexecutor.java:293) at java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor.java:1142) at java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:617) at java.lang.thread.run(thread.java:745) Caused by: org.tmatesoft.svn.core.svnexception: svn: E155007: 'C:\devel\svnwc2\teach\java\source\app\clock\ClockComponent.java' is not a working copy at org.tmatesoft.svn.core.internal.wc.svnerrormanager.error(svnerrormanager.java:64) at org.tmatesoft.svn.core.internal.wc.svnerrormanager.error(svnerrormanager.java:51)
61 Loggning 4 61 Java: Inbyggt i paketet java.util.logging Särskilt viktigt för undantag som beror på buggar i programmet
62 Loggning 5 62 Flera nivåer så att man kan filtrera Lämna alla logganrop i koden Filtrera med logger.setlevel(level.info);
63 Loggning 6 63 Var hamnar loggmeddelanden? Default: Skrivs ut på standard error Kan även loggas till fil Kräver konfigurationsfil exempel: logconfig.properties innehåller handlers = java.util.logging.filehandler java.util.logging.filehandler.level = WARNING java.util.logging.filehandler.append = true java.util.logging.filehandler.pattern = log.%u.%g.txt
64 Avslutande ord 64 As far as we know, our computer has never had an undetected error. Conrad H. Weisert
Felhantering TDDD78, TDDE30, 729A
Felhantering TDDD78, TDDE30, 729A85 jonas.kvarnstrom@liu.se 2019 Felhantering 2 Ofta antar vi att allt ska fungera Alla filer vi behöver finns går att öppna Tillräckligt mycket minne finns Servrar som
Felhantering 2016
Felhantering jonas.kvarnstrom@liu.se 2016 Felhantering 2 Ofta antar vi att allt ska fungera Alla filer vi behöver finns går att öppna Tillräckligt mycket minne finns Servrar som vi kontaktar svarar och
Felhantering 2015
Felhantering jonas.kvarnstrom@liu.se 2015 Programmering 2 Programmering ett stort område med många aspekter / fasetter En "dimension": Funktionalitet, klassbibliotek Grafiska gränssnitt Men det finns fler
Testning av program. Verklig modell för programutveckling
Fel i program När man skriver program uppkommer alltid fel. Felen kan indelas i följande kategorier: Under kompileringen upptäcker kompilatorn fel som handlar om att man använt konstruktionerna i programspråket
Klassen javax.swing.timer
Klassen javax.swing.timer I Swing finns en klass Timer som man kan använda för att upprepa en vis kodsekvens med jämna tidsmellanrum. Ett objekt av klassen Timer exekveras som en egen tråd. Ett objekt
Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11
Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11 Undantag Engelska: exceptions Skansholm: exceptionella händelser Fel som genereras om man försöker
Idag. Exempel, version 2. Exempel, version 3. Ett lite större exempel
Idag Ett exempel Undantag Substitutierbarhet, subtyper, subklasser När val av metod beror av typerna hos två objekt Lite om överlagring Exempel, version 2 Notera: för samtliga figurer gäller: arean av
Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11
Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11 Undantag Engelska: exceptions Skansholm: exceptionella händelser Fel som genereras om man försöker
Föreläsnings 9 - Exceptions, I/O
Föreläsnings 9 - Exceptions, I/O Josef Svenningsson Tisdag 6/11 Undantag - Exceptions Kommer ni ihåg det här programmet? Det var ett av de första ni såg i första föreläsningen. import javax.swing.*; public
Objektorienterad Programmering (TDDC77)
Objektorienterad Programmering (TDDC77) Föreläsning VI: eclipse, felsökning, felhantering Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 Outline Felhantering Eclipse Felsökning Command line argumenter
Command line argumenter. Objektorienterad Programmering (TDDC77) Vad blir resultatet? Nu då? Ahmed Rezine. Hösttermin 2016
Command line argumenter Objektorienterad Programmering (TDDC77) Föreläsning VI: eclipse, felsökning, felhantering Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 /* Cla. java * Programmet illustrerar
OOP Objekt-orienterad programmering
OOP F12:1 OOP Objekt-orienterad programmering Föreläsning 12 Mer om JOptionPane Undantagshantering Vad är det? try catch Kasta egna undantag Filhantering spara objekt mellan körningar Användardialog via
Föreläsning 12. Föreläsning 12. Rörliga figurer Klassen Timer Undantag Något om applets. Rörliga appletsfigurer Klassen Timer Undantag
Föreläsning 12 Föreläsning 12 Rörliga figurer Klassen Timer Undantag Något om applets Rörliga appletsfigurer Klassen Timer Undantag Något om applets Klassen javax.swing.timer I Swing finns en klass Timer
Objektorienterad programmering
Objektorienterad programmering Föreläsning 14 Copyright Mahmud Al Hakim mahmud@dynamicos.se www.webacademy.se Agenda Exceptionella händelser Vanliga Programfel Exception-klasser Automatiskt genererade
Kopiering av objekt i Java
1 (6) Kopiering av objekt i Java Först När du läser detta papper bör du samtidigt studera dokumentationen för klasserna Object, Cloneable (java.lang) och ArrayList (java.util). Mycket blir klarare genom
732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner
732G11 Linköpings universitet 2011-01-21 1 2 3 4 5 6 Skapa program Kompilera: Källkod Kompilator bytekod Köra: Bytekod Virtuell maskin Ett riktigt program Hej.java class Hej { public static void main (
Objektorienterad Programkonstruktion. Föreläsning 4 8 nov 2016
Objektorienterad Programkonstruktion Föreläsning 4 8 nov 2016 Nästade klasser I Java går det att deklarera en klass inuti en annan klass. Vi kallar detta för att en yttre klass innehåller en inre klass.
Fördjupad Java. Undantagshantering. Fel
Fördjupad Java 1 Undantagshantering Ett undantag (Exception) är ett objekt som påtalar en ovanlig eller felaktig situation i ett program. Undantag kastas av programmet och kan fångas och hanteras. Java
Kapitel 6 - Undantag
Kapitel 6 Undantag Kapitel 6 - Undantag Undantag (exceptions), returvärden throw, try och catch new, bad_alloc, nothrow Undantag och std::auto_ptr throw() i funktionsdeklaration try som funktionskropp
Undantagshantering. Fördjupad Java. Fel. Undantag. Fånga Undantag. Grupper av Undantag
Undantagshantering Fördjupad Java Ett undantag (Exception) är ett objekt som påtalar en ovanlig eller felaktig situation i ett program. Undantag kastas av programmet och kan fångas och hanteras. Java har
Undantagshantering. Fördjupad Java. Undantag. Fel. Grupper av Undantag. Fånga Undantag
Undantagshantering Fördjupad Java Ett undantag (Exception) är ett objekt som påtalar en ovanlig eller felaktig situation i ett program. Undantag kastas av programmet och kan fångas och hanteras. Java har
TUTORIAL: KLASSER & OBJEKT
TUTORIAL: KLASSER & OBJEKT I denna tutorial lär vi oss att använda klasser och objekt samt hur vi bygger en enkel applikation kring dessa. I tutorialen kommer det finnas en mängd kod som du antingen kan
Att skriva till och läsa från terminalfönstret
Att skriva till och läsa från terminalfönstret Oftast används grafiska komponenter i Java för att kommunicera med användaren (användargränssnitt), men det finns objekt i standardbiblioteken för de tillfällen
Undantag. Engelska: exceptions. Skansholm: exceptionella händelser
Undantag Engelska: exceptions Skansholm: exceptionella händelser Fel som genereras om man försöker öppna en fil som inte finns, dividera med noll, indexera utanför en array osv. bjectorienterad programmering
Länkade strukturer, parametriserade typer och undantag
Länkade strukturer, parametriserade typer och undantag Programmering för språkteknologer 2 Sara Stymne 2013-09-18 Idag Parametriserade typer Listor och länkade strukturer Komplexitet i länkade strukturer
Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.
Programmering med Java Programmering med Java Programspråket Java Källkodsexempel Källkod Java API-exempel In- och utmatning Grunderna Ann Pan panda@nada.kth.se Rum 1445, plan 4 på Nada 08-7909690 Game.java
Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2
AID-nummer: Datum: 2014-12-18 Kurskod: 725G61 Provkod: LAB1 Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2 Skrivningstid: 2014-12-18 klockan 8.00-10.00. Hjälpmedel: Inga. För varje fråga
Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.
Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Objektorienterad programvaruutveckling GU (DIT011) Föreläsning 3 Innehåll Lite om felhantering och Exceptions Mer om variabler och parametrar
TDDC76 - Programmering och Datastrukturer
TDDC76 - Programmering och Datastrukturer Objektorientering - Klasser Eric Elfving Institutionen för datavetenskap 1 / 20 Återblick struct struct är bra att ha för att skapa aggregat - slå ihop flera data
F3: Recursive descent, tokenisering, avbildningar och undantag. Carl Nettelblad
F3: Recursive descent, tokenisering, avbildningar och undantag Carl Nettelblad 2017-04-03 Säg vad du vill göra Varför skriver vi kod? För att få datorn att göra det vi vill För att själva läsa koden För
Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Jonas Lindgren, Institutionen för Datavetenskap, LiU
TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Interface Generiska klasser Undantag
C++ Objektorientering - Klasser. Eric Elfving Institutionen för datavetenskap
C++ Objektorientering - Klasser Eric Elfving Institutionen för datavetenskap 1 / 23 Återblick struct struct är bra att ha för att skapa aggregat - slå ihop flera data till en ny datatyp. Ett problem med
Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här:
Att skapa en klass kvadrat Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här: public class Kvadrat { private int sida; Det var väl inte
1 Comparator & Comparable
1 Comparator & Comparable 1.1 Implementation av Comparable Att implementera Comparable innebär att man gör objekt av sin klass jämförbara med andra och att det därmed antas existera en naturlig ordning
Tentamen FYTA11 Javaprogrammering
Lunds universitet FYTA11 Institutionen för Astronomi och Teoretisk fysik HT 12 Tentamen FYTA11 Javaprogrammering Onsdag 9 januari 2013, 10:15 14:15 Instruktioner Hjälpmedel: Papper och penna. Behandla
C++ Objektorientering - Klasser. Eric Elfving
C++ Objektorientering - Klasser Eric Elfving 1 / 20 Återblick struct struct är bra att ha för att skapa aggregat - slå ihop flera data till en ny datatyp. Ett problem med struct är åtkomst... 2 / 20 Följande
TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU
TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning: Mer om Interface Generiska klasser Undantag Nästlade klasser 1
Föreläsning 3 Innehåll. Generiska klasser. Icke-generisk lista ArrayList, skiss av implementering. Icke-generisk lista Risk för fel
Föreläsning 3 Innehåll Generiska klasser Implementera generiska klasser Exceptions Dokumentationekommentarer javadoc Enhetstestning - junit Man kan deklarera en eller flera typparametrar när man definierar
TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU
TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning: Interface Generiska klasser Undantag
Objektorienterad programmering E. Telefonboken, än en gång. Gränssnitt. Telefonboken med gränssnitt specificerat, del 1.
Objektorienterad programmering E Telefonboken, än en gång Föreläsning 5 Wrapper classes Exempel, histogram. Inldening om undantag. Mer om klassen Påminnelse Vår senaste version bestod av två klasser, bägge
Typhierarkier del 1 Gränssnitt, ärvning mellan gränssnitt, ärvning mellan klasser
TDDD78, TDDE30, 729A85 jonas.kvarnstrom@liu.se 2019 Typhierarkier del 1 Gränssnitt, ärvning mellan gränssnitt, ärvning mellan klasser Hur används hierarkier för att modellera nära relaterade typer? Nu:
Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6
Laboration 2 Objektorienterad programmering i Java I Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6 Syfte: Att kunna använda sig av olika villkors- och kontrollflödeskonstruktioner
Outline. Objektorienterad Programmering (TDDC77) En frukt har ett namn. Man kan lägga en frukt i en korg... Hashing. Undantag. Ahmed Rezine.
Outline Objektorienterad Programmering (TDDC77) Föreläsning XIV: Undantag, Design Ahmed Rezine IDA, Linköpings Universitet Undantag Design Hösttermin 2017 En frukt har ett namn Man kan lägga en frukt i
Objektorienterad Programmering (TDDC77)
Objektorienterad Programmering (TDDC77) Föreläsning XIV: Undantag, Design Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2017 Outline Hashing Undantag Design Outline Hashing Undantag Design En frukt
Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek
De åtta primitiva typerna Java, datatyper, kontrollstrukturer Skansholm: Kapitel 2) Uppsala Universitet 11 mars 2005 Typ Innehåll Defaultvärde Storlek boolean true, false false 1 bit char Tecken \u000
Generell säkerhet. Loggning - Hur mycket ska man logga? Inloggningsrutinerna i Unix. Loggning fortsättning
Generell säkerhet Här finns det inga direkta rätt eller fel. Snarare saker man bör tänka på när man implementerar ett program. Kort sagt: Efter att du kommit på hur du tänkt göra, sov på saken och tänk
Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt
Föreläsning 2 Programmeringsteknik och C DD1316 Mikael Djurfeldt Föreläsning 2 Programmeringsteknik och C Python introduktion Utskrift Inläsning Variabler Datatyp Aritmetiska operatorer Omvandling
Design by Contract, Exceptions. Objekt-orienterad programmering och design (DIT953) Johannes Åman Pohjola, 2018
Design by Contract, Exceptions Objekt-orienterad programmering och design (DIT953) Johannes Åman Pohjola, 2018 Design by Contract Designfilosofi där en metods specifikation betraktas som ett kontrakt mellan
Introduktion Schenker-BTL AB, Stab IT Beskrivning över informationsintegreringmed Schenker, metodbeskrivning version 1.
Schenker har interna system som handhar information som är av intresse för våra kunder/partners. Idag finns ett flertal av dem tillgängliga via Internet, sk Online-tjänster. Dessa erbjuder inte bara hämtning
Javas Exceptions. DD2385 Programutvecklingsteknik Fler bilder till föreläsning 7 23/ Kort om Javas Exceptions Trådar i Java
DD2385 Programutvecklingsteknik Fler bilder till föreläsning 7 23/4 2014 Innehåll Kort om Javas Exceptions Trådar i Java swing- klassen Timer Klient-Server-program Javas Exceptions Checked måste hanteras,
Felhantering. Andra brott mot språkets regler. Man kan också i programmet bryta mot ett antal olika regler som gäller. Exempelvis:
Felhantering I de flesta program finns eller uppstår ett antal olika fel. Man behöver en strategi för att hitta och rätta till sådana fel. Olika typer av fel som kan inträffa: syntaktiska fel Olika form
Föreläsning 14. Filhantering
Föreläsning 14 Filhantering Filhantering Att hantera filer, dvs att läsa eller skriva data till en fil är en viktig del i de flesta program. Ur Javas synvinkel är filer objekt med egenskaper och metoder
TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU
TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning Generiska klasser Undantag Interface Nästlade klasser 1 Problem:
Testning och felhantering
Testning och felhantering Föreläsning 8 TDA540 - Objektorienterad Programmering Sammanfattning Textfiler Flerdimensionella fält ArrayList (dynamiska vs. statiska datastrukturer) Shorthand operatorer Testning
Objekt, Klasser, Paket m. m.
Objekt, Klasser, Paket m. m. Bildserie 3 Objekt Ett objekt karakteriseras av - Identitet, det som gör det möjligt att särskilja objektet från andra objekt - Tillstånd, den data som finns i objektet - Beteende,
Föreläsning 2: Avlusning och antilustekniker
2D1458, Problemlösning och programmering under press Föreläsning 2: Avlusning och antilustekniker Datum: 2007-09-11 Skribent(er): Emil Hesslow, Stefan Pettersson Föreläsare: Per Austrin Föreläsningen handlade
Kungl. Tekn. Högskolan Förel 1, bild 1 Föreläsning 1: Introduktion ffl Kursinnehåll ffl Javarepetition ffl Referenser ffl Nyckelordet static ffl Klass
Kungl. Tekn. Högskolan Förel 1, bild 1 Föreläsning 1: Introduktion ffl Kursinnehåll ffl Javarepetition ffl Referenser ffl Nyckelordet static ffl Klassen Mio ffl Särfall ffl Interface Kungl. Tekn. Högskolan
Objektorienterad programmering
Objektorienterad programmering Föreläsning 8: testning och felhantering Dr. Alex Gerdes Dr. Carlo A. Furia Hösttermin 2016 Chalmers University of Technology Sammanfattning föreläsning 7 Skriva och läsa
ID1004 Laboration 4, November 2012
06-Nov-2012/FK ID1004 Laboration 4, 14-16 November 2012 Beräknad tid ca 1-2 timmar. Instruktionen antar att labben utförs i datasal, med hjälp av den integrerade utvecklingsmiljön Eclipse. Alternativt
Överlagring, static, testning, formella metoder och undantag! Förelasning 13!! TDA540 Objektorienterad Programmering!
Överlagring, static, testning, formella metoder och undantag! Förelasning 13!! TDA540 Objektorienterad Programmering! Gränssnitt igen För att kunna ändra på olika delar av programmet utan att andra delar
Tentamen Grundläggande programmering
Akademin för Innovation Design och Teknik Tentamen Grundläggande programmering Kurskod: DVA103 Datum 2012-06-11 Tid 14.10 16.30 Examinator: Lars Asplund Maxpoäng: 48 Betygsgränser: Betyg 3: 20 Betyg 4:
HI1024 Programmering, grundkurs TEN
HI1024 Programmering, grundkurs TEN2 2016-12-22 KTH STH Flemingsberg 8.15-13.00 Tillåtna hjälpmedel: Kursboken C PROGRAMMING A Modern Approach K. N. King helt utan anteckningar Alternativt C från början
Föreläsning 8 - del 2: Objektorienterad programmering - avancerat
Föreläsning 8 - del 2: Objektorienterad programmering - avancerat Johan Falkenjack johan.falkenjack@liu.se Linköpings universitet Sweden December 4, 2013 1 Innehåll Arv och andra viktiga begrepp Abstrakta
Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering
Föreläsning 1 Objektorienterad programmering DD1332 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer Kompilering och exekvering Ett program måste översättas till datorns språk
4.4 Swing ett interaktivt grafiskt gränssnitt
4.4 Swing ett interaktivt grafiskt gränssnitt Våra javaprogram har hittills bara haft utdata, inga indata. Det var utdata som skrevs ut från programmet till bildskärmen antingen med metoden showmessagedialog()
Repetition av OOP- och Javabegrepp
ArrayList Repetition av OOP- och Javabegrepp En lista i vilken man kan lagra objekt Implementerar List-interfacet Skiljer sig från ett vanligt endimensionellt fält: Dynamisk expanderar när den blir
Objektorienterad Programkonstruktion. Föreläsning 11 6 dec 2016
Objektorienterad Programkonstruktion Föreläsning 11 6 dec 2016 Föreläsningen 13/12 Halvtidsrepetition Maila frågor som ni vill att jag tar upp! ccs@kth.se Processer Vad vi i dagligt tal menar när vi pratar
Exceptions (undantag) Murach s: kap 7
Exceptions (undantag) Murach s: kap 7 2013-01-28 1 Winstrand Development Exceptions (undantag) Inträffar ett oförutsägbart fel i när programmet körs kommer ett undantag (exception) att inträffa Undantaget
Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.
Idag Javas datatyper, arrayer, referenssemantik Klasser Arv, polymorfi, typregler, typkonvertering Strängar Tänker inte säga nåt om det som är likadant som i C. Objectorienterad programmering Sida 1 Ett
HI1024 Programmering, grundkurs TEN
HI1024 Programmering, grundkurs TEN2 2016-01-09 KTH STH Haninge 8.15-13.00 Tillåtna hjälpmedel: En A4 handskriven på ena sidan med egna anteckningar Kursboken C PROGRAMMING A Modern Approach K. N. King
Avancerad Java/ Loggning
10 10.1 10.2 Att skapa loggmeddelanden 10.3 Fördefinierade loggningsnivåer 10.4 Klassen Logger tjänster 10.5 Konfiguration av loggning 10.7 Fördefinierade loggningshanterare 10.1 Fr o m Java 1.4 finns
DIAGNOSTISKT PROV. Tid. Hjälpmedel. Antaganden. Rättning. Övrigt. Diagnostiskt Prov. Klockan Inga
203-03-9 203-03-9 DIAGNOSTISKT PROV Tid Klockan 09.00-2.00 Hjälpmedel Inga Antaganden Om förutsättningar saknas I en uppgift skall rimliga antaganden göras och nedtecknas. Rättning Tentamen omfattar 6
Språket Python - Del 2 Grundkurs i programmering med Python
Hösten 2009 Dagens lektion Funktioner Filhantering Felhantering 2 Funktioner 3 FUNKTIONER Att dela upp program Att dela upp program i mindre delar, funktioner är ett viktigt koncept i programmering. Viktigt
Föreläsning 10 Datalogi 1 DA2001. Utskrift på skärmen. Syntax. print( Hej ) Hur är det? Hej. print( Hej,end= ) print( Hur är det? ) HejHur är det?
Föreläsning 10 Datalogi 1 DA2001 python introduktion Variabler Datatyp Aritmetiska operatorer av typer Reserverade ord logiska operatorer If-sats kommentarer på skärmen print( Hej ) print( Hur är det?
Objektorienterad Programmering (TDDC77)
Objektorienterad Programmering (TDDC77) Föreläsning II: utmatning, variabler, typer Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 Kompilera och köra programmet under terminal 2: I Skapa Hej.java
Typkonvertering. Java versus C
Typer Objektorienterad programmering E Typkonvertering Typkonvertering Satser: while, for, if Objekt Föreläsning 2 Implicit konvertering Antag att vi i ett program deklarerat int n=3; double x = 5.2; Då
I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program
Kompilera och köra programmet Objektorienterad Programmering (TDDC77) Föreläsning II: utmatning, variabler, typer Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 under terminal 2: I Skapa Hej.java
Repetition av OOP- och Javabegrepp
ArrayList Repetition av OOP- och Javabegrepp En lista i vilken man kan lagra objekt Implementerar List-interfacet Skiljer sig från ett vanligt endimensionellt fält: Dynamisk expanderar när den blir
Objektorienterad programmering i Java I
Laboration 4 Objektorienterad programmering i Java I Uppgifter: 1 Beräknad tid: 6 9 timmar Att läsa: Kapitel 7, 8 (stränghantering, arrayer och Vector) Utdelat material (paket) Syfte: Att kunna använda
Tentamen i TDP004 Objektorienterad Programmering Praktisk del
Tentamen i TDP004 Objektorienterad Programmering Praktisk del Datum: 2011-04-28 Tid: 08-12 Plats: SU-salar i B-huset. Jour: Per-Magnus Olsson, tel 281456 Jourhavande kommer att besöka skrivsalarna ungefär
Dagens föreläsning Programmering i Lisp. - Bindning av variabler (avs 14.6) fria variabler statisk/lexikalisk och dynamisk bindning
1 Dagens föreläsning Programmering i Lisp - Block, räckvidd - Bindning av variabler (avs 14.6) fria variabler statisk/lexikalisk och dynamisk bindning - Felhantering (kap 17) icke-normala återhopp catch
Föreläsning 2 Programmeringsteknik och C DD1316
Föreläsning 2 Programmeringsteknik och C DD1316 Föreläsning 2 Programmeringsteknik och C Datatyp Aritmetiska operatorer Omvandling av typer Reserverade ord Mikael Djurfeldt Logiska operatorer
Vad händer när man kör ett program? Program och processer. Funktionsanrop. Avsluta programmet
Vad händer när man kör ett program? Program och processer När man kompilerar ett program och sedan länkar ihop det så stoppar länkaren in lite extra kod i programmet. Det är denna kod som i sin tur anropar
Design by Contract, Exceptions, Initialisering. Objekt-orienterad programmering och design (DIT952) Johannes Åman Pohjola, 2017
Design by Contract, Exceptions, Initialisering Objekt-orienterad programmering och design (DIT952) Johannes Åman Pohjola, 2017 Design by Contract Designfilosofi där en metods specifikation betraktas som
Felsökning. Översikt. Felsökning (debugging) Kodstandard. Kommentarer. Kommentarer. Praktiska råd
Översikt Felsökning Praktiska råd Felsökning i IDE Javadoc Kommersiella mjukvaruprojekt Allmänt om felhantering i Java Catch - throw Systematisk testning av större system Programmering tillämpningar och
Objektorienterad Programkonstruktion. Föreläsning jan 2016
Objektorienterad Programkonstruktion Föreläsning 13 19 jan 2016 Tentamen Del I, E del Flervalsfrågor 20/25 krävs för godkänt, ger betyg E Upp till 7 möjliga bonuspoäng Del II, Högrebetygsdel Problemfrågor
Översikt. Skriva och läsa data. Kontrollflöde. Två sorters loopar. For-loop. For-loop
Översikt Repetition for-loopar Skriva till och läsa från filer Strömmar Eclipse Hur anpassa till vad du gillar? Skriva och läsa data Institutionen för datavetenskap Programmering 1 Rita Kovordányi 2 Kontrollflöde
Numeriska Metoder och Grundläggande Programmering för P1, VT2014
Numeriska Metoder och Grundläggande Programmering för P1, VT2014 Föreläsning 2: Styrstrukturer & Programmeringsstrategi (Kap. 3 4 i MATLAB Programming for Engineers, S. Chapman) January 21, 2014 Innehåll:
1 Uppgift 1. a) Skapar ett Company-objekt med hjälp av den överlagrade konstruktorn. Du kan själv välja värden på instansvariablerna.
1 Uppgift 1 Klassen Company Banken FinanceTrust som tidigare bara haft privatpersoner som kunder vill nu bygga ut sitt datasystem så att även företag kan registreras som kunder. Skriv klassen Company som
(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java
(Man brukar säga att) Java är... Denna föreläsning Allmänt om Java Javas datatyper, arrayer, referenssemantik Klasser Strängar enkelt baserat på C/C++ objekt-orienterat från början dynamiskt utbyggbart
TUTORIAL: SAMLING & KONSOLL
TUTORIAL: SAMLING & KONSOLL Denna tutorial är en fortsättning på den tutorial där vi skapade klassen Car och sedan objekt av denna klass. Vi skall nu lära oss att lagra dessa objekt i en samling och även
Trafla databasen vi hämtar data från (remote export) ligger på en godtycklig maskin i nätverket. Den här databasen är en MIMER databas.
DB01 - Remote DB01 kan användas på ett nytt sätt. Vi kallar det för remote. Det innebär att man kan peka ut databaser på nätverket som mål för export eller import. Denna funktion är avsedd för att flytta
Dynamiskt minne. Vad är dynamiskt minne Motivering Hur gör man i C Övningar
Dynamiskt minne Agenda Vad är dynamiskt minne Motivering Hur gör man i C Övningar Minne Datorns primärminne används till olika ändamål De flesta system partitionerar minnet efter användningen: Programkoden
Sammansatta datatyper Generics: Parametrisk polymorfism
jonas.kvarnstrom@liu.se 2017 Sammansatta datatyper Generics: Parametrisk polymorfism Listor och arrayer 2 Enligt TDDD73: Många språk har både listor och arrayer även Java och Python! Exakta definitioner
SaaS Email and Web Services 8.3.0
Versionsinformation Version A SaaS Email and Web Services 8.3.0 Innehåll Om den här utgåvan Nya funktioner Lösta problem Hitta McAfee SaaS tjänstedokumentation Om den här utgåvan Tack för att du väljer
Tentamen i TDP004 Objektorienterad Programmering Praktisk del
Tentamen i TDP004 Objektorienterad Programmering Praktisk del Datum: 2011-08-22 Tid: 14-18 Plats: SU-salar i B-huset. Jour: Per-Magnus Olsson, tel 281456 Jourhavande kommer att besöka skrivsalarna ungefär
LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p
UMEÅ UNIVERSITET Datavetenskap 010530 LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p Betygsgränser 3 21,5-27 4 27,5-33,5 5 34-43 Uppgift 1. (4p) Hitta de fel som finns i nedanstående klass (det
Objektorienterad Programkonstruktion. Föreläsning jan 2017
Objektorienterad Programkonstruktion Föreläsning 15 30 jan 2017 Felsökning Med moderna programmeringsverktyg är rena syntaxfel oftast lätta att åtgärda Fel som kan vara svårare att åtgärda är t.ex: thread
Motivation. Programmeringsuppgift: En första ansats: Lagra info om anställda Håll reda på varje anställds närmaste chef. som också är en anställd!
Pekare (till objekt) Objektvariabler är pekare vad är det? (Viktiga begrepp inte bara inom objektorientering!) Hur används pekare för att sätta samman objekt (composition)? TDDD78, TDDE30, 729A85 jonas.kvarnstrom@liu.se
Föreläsning 6: Metoder och fält (arrays)
TDA 545: Objektorienterad programmering Föreläsning 6: Metoder och fält (arrays) Magnus Myréen Chalmers, läsperiod 1, 2015-2016 I (föregående och) denna föreläsning Läsanvisning: kap 2 & 13 meddelanden