Objektorienterad Programkonstruktion. Föreläsning jan 2017

Relevanta dokument
Objektorienterad Programkonstruktion. Föreläsning dec 2015

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

Objektorienterad Programkonstruktion. Föreläsning 7 24 nov 2015

Configuration testing Why? Vad det är tänkt att koden ska göra. Performance testing Kommentarer Skriva om koden som kommentar

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

1.1 Runnable och Thread

Platser för att skriva och testa kod online. Workshop om programmering i matematikkurser, version 0.7 senast sparat

Föreläsning 8 SLUMPTAL, SIMULERING + INTRODUKTION TILL VEKTORER

Att bekanta dig med NetBeans programmeringsmiljö och skriva några enkla program med programmeringsspråket Java.

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

Introduktion. Klasser. TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder

Objektorienterad Programkonstruktion. Föreläsning 4 8 nov 2016

Introduktion till programmering D0009E. Föreläsning 5: Fruktbara funktioner

KPP053, HT2016 MATLAB, Föreläsning 1. Introduktion till MATLAB Skript Inläsning och utskrift av variabler Ekvationssystem Anonyma funktioner

Classes och Interfaces, Objects och References, Initialization

Kort repetition. Programmeringsteknik för Bio1 och I1. Vad ska vi lära oss idag? Ett exempel

Blandat. Föreläsning 5

Introduktion till programmering SMD180. Föreläsning 5: Fruktbara funktioner

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 11

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU

Föreläsning 2: Debugging

Imperativ programmering. Föreläsning 4

Objektorienterad programmering

Command line argumenter. Objektorienterad Programmering (TDDC77) Vad blir resultatet? Nu då? Ahmed Rezine. Hösttermin 2016

Objektorienterad Programmering (TDDC77)

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

Skolan för Datavetenskap och kommunikation. Programmeringsteknik. Föreläsning 16

Föreläsning 3-4 Innehåll

Kopiering av objekt i Java

Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11

Planering Programmering grundkurs HI1024 HT data

Planering Programmering grundkurs HI1024 HT TIDAA

Parameteröverföring. Exempel. Exempel. Metodkropp

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11

Föreläsning 4 Innehåll. Abstrakta datatypen lista. Implementering av listor. Abstrakt datatypen lista. Abstrakt datatyp

Föreläsning 2: Avlusning och antilustekniker

2D1339 Programkonstruktion för F1, ht 2003

Funktioner forts. F3: Funktioner (kap. 5) Parametrar. findgear.m forts

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

Föreläsning 16 Arv. Jan Lönnberg T Grundkurs i programmering

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

Objektorientering: Lagring, räckvidd och livstid

Vetenskaplig metod och statistik

Planering Programmering grundkurs HI1024 HT 2014

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 12

International Olympiad in Informatics July 2011, Pattaya City, Thailand Tävlingsuppgifter Dag 2 Svenska 1.3. Papegojor

Föreläsning 22. Tobias Wrigstad. Under huven på JVM. Bytekod. JIT. Reflection. Profiling.

F5: Högnivåprogrammering

Program & programmering

Programdesign. Dokumentera. Dokumentera

Övningsuppgifter till föreläsning 2 Variabler och uttryck

F5: Högnivåprogrammering

Programmering av NXT Lego- robot Labbrapport för programmering av en Lego- robot

TDDC77 Objektorienterad Programmering

Föreläsning 8 Programmeringsteknik och Matlab 2D1312/2D1305. Klass Object, instans av klass public/private Klassvariabler och klassmetoder

F5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander

NetBeans 5.5. Avsikt. Projektfönster

Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

Programdesign. minnesutrymme storlek på indata. DA2001 (Föreläsning 15) Datalogi 1 Hösten / 20

Objektorienterad Programkonstruktion. Föreläsning jan 2016

TENTAMEN OOP

Testning av program. Verklig modell för programutveckling

DD1311 Programmeringsteknik för S1 Laborationer läsåret

Föreläsning 6: Metoder och fält (arrays)

Objektorienterad Programkonstruktion. Föreläsning 3 7 nov 2016

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

DD1342 Programkonstruktion för F1,

Objektorienterad programmering

Deluppgift 17 Processhantering: exec, sleep, exit, plist

Enhetstester på.netplattformen

Obligatorisk uppgift: Numerisk kalkylator

Vetenskaplig metod och statistik

Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl

FÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY , kl

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.

HI1024 Programmering, grundkurs TEN

Föreläsning 3 Innehåll. Generiska klasser. Icke-generisk lista ArrayList, skiss av implementering. Icke-generisk lista Risk för fel

TENTAMEN: Design och konstruktion av grafiska gränssnitt DAT215

NetBeans 7. Avsikt. Projektfönster

Projekt i programmering 1 (ver 2)... 2 Projektidé... 2 Planering... 2 Genomförande... 2 Testning och buggar... 3 Utvärdering... 3 Planering...

Felsökning. Översikt. Felsökning (debugging) Kodstandard. Kommentarer. Kommentarer. Praktiska råd

*Pekarvärden *Pekarvariabler & *

En överblick. Pseudo-parallell simulering. Snabbköpsexemplet, forts. Två olika sätt att modellera och simulera. Schedulering

PARALLELLISERING AV ALGORITMER PROCESSORER FÖR FLERKÄRNIGA

Kursplanering för EE3D i kursen Programmering 1, 100p.

Tentamen. DD2385 Programutvecklingsteknik vt 2013 Onsdagen den 22 maj 2013 kl Hjälpmedel: penna, suddgummi, linjal

Föreläsning 8 - del 2: Objektorienterad programmering - avancerat

Dynamiskt minne. Vad är dynamiskt minne Motivering Hur gör man i C Övningar

OOP Objekt-orienterad programmering

Laboration 1 Mekanik baskurs

Iteration while-satsen

Introduktion till Datalogi DD1339. Föreläsning 1 8 sept 2014

TIPS OCH TRIX MED ENTERPRISE GUIDE JESPER ARNFLO NORDIN BI-KONSULT, SAS XPERIENCE

Vetenskaplig Metod och Statistik. Maja Llena Garde Fysikum, SU Vetenskapens Hus

KPP053, HT2015 MATLAB, Föreläsning 1. Introduktion till MATLAB Skript Inläsning och utskrift av variabler Ekvationssystem Anonyma funktioner

Vetenskaplig metod och Statistik

Överlagring, static, testning, formella metoder och undantag! Förelasning 13!! TDA540 Objektorienterad Programmering!

Transkript:

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 intereferance och deadlock en metod "räknar fel" koden ger oönskade resultat för vissa (ovanliga) indata ett metodanrop medför oönskade bieffekter programmet förbrukar onödigt mycket resurser

Felsökning Steg för steg Identifera att något är fel Återskapa felet Isolera felet Laga felet Verifiera att koden fungerar

Verktyg för felsökning printf debugging - man skriver ut värdet på variabler och/eller delresultat när programmet körs debug-verktyg, kan köra programmet fram till en given punkt, en s.k. break point. När denna punkt nås stannar programmet, och man kan läsa av värdet på de variabler man är intresserad av, och sedan antingen bryta programmet, stega vidare rad för rad, eller köra det fram till nästa break point. I Netbeans kan man sätta break points för specifika rader, men även för metodanrop, variabelåtkomster, klasser, mm. JUnit kan användas för att skapa tester som kontrollerar att koden beter sig som man väntar

Refactoring Med hjälp av refactoring kan man hitta felkällor Till exempel kan man byta direkt fältåtkomst mot get/setmetodpar, och lägga in kod som varnar eller bryter för vissa värden Genom att byta ut en metod mot en annan med samma funktion kan man se om fel fanns internt i metoden NetBeans 7 och uppåt har stöd för automatiserad refactoring

Heisenbugs Uppkallade efter kvantmekaniska principer att observation påverkar det objekt man observerar Vissa typer av fel uppstår bara när man observerar dem, alternativt endast när man inte observerar dem. Typiskt för parallella program, där hastigheten på en tråds exekvering påverkas av om man skriver ut variabelvärden. Beroende på två trådars relativa exekveringshastighet kan de nå en viss programrad i olika ordning.

Ovanliga fel Vissa program ger väntade resultat för de flesta indata, men oväntade resultat för ett begränsat antal specialfall Uppstår ofta för värden som ligger i extremer av tillåtna intervall Ibland kan extremerna uppstå lokalt inuti en beräkning, som t.ex i ett trigonometriskt uttryck där vissa funktioner är ickekontinuerliga (t.ex tan) Små värden kan avrundas till noll Program med slumptal kan träffa på oväntade resultat med låg sannolikhet som är svåra att återskapa Indata från användare eller mätutrustning kan betraktas som slumptal i detta avseende

Profilering För att göra koden effektivare måste man först veta vilken del av koden som förbrukar mest resurser Det är sällan värt besväret att optimera kod som står för en väldigt liten del av programmets resursförbrukning Verktyg som sammanställer information om ett programs resursförbrukning kallas för profilerare

Instrumenting Profiler Man lägger till explicita extra anrop i koden för att utföra de nödvändiga mätningarna. Exempel: Räkna hur många gånger en metod anropas genom att räkna upp ett index Ta tid på hur lång tid en metod tar att utföra, genom att jämföra systemklockan före och efter ett anrop Fördelar: Går att utföra för alla program i alla miljöer Man kan explicit mäta de saker man är intresserad av Nackdelar Ändringarna i koden kan påverka resursförbrukningen Komplexa program kräver mycket extra kod Man kan missa att mäta relevanta delar

Statistical (Sampling) Profiler Ett externt program använder systemanrop för att göra regelbundna provtagningar av programpekaren Efter en körning sammanställs statistik för hur ofta pekaren befinner sig i olika metoder, för att få en bild av hur stor andel av tiden som tillbringas i olika metoder Fördelar: Liten inverkan på programmets exekvering Mäter samtliga metoder i programmet Kräver liten insats av programmeraren Nackdelar: Ger bara ett statistiskt mått, med felmarginal som ökar med provtagningsperioden Dålig tillförlitlighet för metoder som tar liten del av totaltiden, eller som använder systemanrop och eller atomiska anrop gprof är ett känt exempel

Event-based Profiler Programmet skickar events varje gång en metod anropas, och miljön kan hantera dessa för att explicit mäta saker som tid- och minnesåtgång I Java finns stöd för event-baserad profilering, t.ex som plug-in till NetBeans, där JVM hanterar events Fördelar Deterministisk mätning, ingen felmarginal Alla anrop mäts, även de som skulle kunna sätta externa mätningar ur spel (atomiska anrop, systemanrop) Nackdelar Kan påverka programmets exekvering, så att det beter sig annorlunda när man mäter det

Tester Kontrollera att koden ger de resultat man förväntar sig T.ex if(mymath.cosine(pi)!= 1) throw new BadCosineException(); Undersök de fall där man vet vad man förväntar sig Undersök de fall där resultatet spelar roll Undersök de fall där man förväntar sig problem Skriv testerna först, och därefter koden man vill testa