Föreläsning 6, kapitel 6 Objekt som uppför sig som de skall Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes.

Slides:



Advertisements
Liknande presentationer
Leverantör.
Advertisements

Utveckla en applikation Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling Fredric Ragnar
Interface.  Interface är en datatyp och har alltså egen syntax och en hel del egna regler för vad arv från interface innebär.  Interface är renodlad.
Avlusning Debugger (”avlusare”) Breakpoints Watch.
Syo PRAO ver. 3.0 Välkommen till presentationen av Syo PRAO Vi kommer att gå igenom de flesta funktionerna i Syo PRAO.
Föreläsning 7, Kapitel 7 Designa klasser Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling.
Effektiv försäljningsprocess Werner Risberg VP, Sales
Persondatorer Felsökning och felhantering ”Vista” (Kapitel 10)
Smartare administration i Quality Center HUGS 3 april 2008 Jan Czajkowski
Klassarv och inkapsling
Next previous Refactoring och lite mönster kodade i Java Innehåll Vad är refactoring? Ett större refactoringexempel Några mönster kodade i Java OOMPA 2000.
OOP Objekt-orienterad programmering
ObjektOrienterad analys och design. SVP Vt2009 Föreläsning nr 2, måndag 8 april kl Diskussion (kurshemsida): Om designuppgiften Om projektuppgiften.
Arv.
Inkapsling.
Objektorienterad tänkande
Polymorfism.
Programmeringsteknik K och Media
Microsoft Dynamics CRM 3.0
Alice in Action with Java
i olika programmeringsspråk
Java. Kortfattat om Java Syntaxen påminner i hög grad om C++ Stöd för objektorientering Kod kan köras i en virtuell maskin som finns tillgänglig för nästan.
Föreläsning 4, Kapitel 4 Gruppera objekt Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser och instansvariabler -Tabeller av klassobjekt.
Föreläsning 2, Kapitel 2 Att förstå klassdefinitioner Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 6 ( ) INNEHÅLL: -Mera om tabeller.
Pointers. int a=5; int f(int b) { a--; b++; return b; } int main() { int a=3; printf("%d,",f(a)); printf("%d",a); return 0; }
Programmeringsteknik
Föreläsning 8, kapitel 8 Förbättra strukturen med arv Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael.
Metodik för problemlösning Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling Fredric Ragnar.
Vektorer (klassen Vector) Sortering
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 8 ( ) Innehåll: Trådprogrammering i Java - Avbrott (”interrupts”) - Metoden join() -
Mer om arv - Polymorfism Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling Fredric Ragnar
Programmering i C# 5. Structer.
PROCESSPROGRAMMERING Föreläsning ‏ Innehåll: Högnivå objekt för trådprogrammering: - Trådgrupper (”Thread pools”)‏ - Exekverare (Executor.
Föreläsning 8 Arv och abstrakta klasser. Arv Definierar en klass utifrån en redan existerande klass Den nya klassen utökar den ärvda klassen ( extends.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 8 ( ) INNEHÅLL:Klasser: -Konstruktorer -Klassvariabler -Instansmetoder -Privata.
Föreläsning 5, Kapitel 5 Använda Java-bibliotek för att få avancerad funktionalitet Kursbok: “Objects First with Java - A Practical Introduction using.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
Föreläsning 11 J-uppgiften. Nästa period ägnas åt J-uppgiften. Den är individuell, dvs man jobbar på egen hand med uppgiften (inte tillsammans med labbkompisen).
Objektorienterad programmering i Java
En mycket vanlig frågeställning gäller om två storheter har ett samband eller inte, många gånger är det helt klart: y x För en mätserie som denna är det.
Fysikexperiment 5p Föreläsning Korrelationer Ett effektivt sätt att beskriva sambandet mellan två variabler (ett observationspar) är i.
Next previous RMI, Remote Method Invocation Om du har boken av Marty Hall, läs avsnitt 15.8 För fler exempel se:
Utvecklingsprocessen Webbutveckling. Utvecklingsprocessen Bli inte rädd för alla begrepp och alla verktyg man verkar behöva kunna. Du måste inte använda.
Introduktion till klasser, objekt och BlueJ Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling.
Föreläsning 9 Gränssnitt. Super Super kan användas till anrop av en omdefinierad metod Super kan användas till anrop av konstruktorer i superklassen Super.
Reflektioner kring OU1 Generellt sett bra kvalitet på dokumentationen! Första intryck... –Skulle du lämna in en jobbansökan med ett häftstift/gem eller.
F4 - Funktioner & parametrar 1 Programmeringsteknik, 4p vt-00 Modularisering ”svarta lådor” Väl definierade arbetsuppgifter Enklare validering Enklare.
KONSTEN ATT SKRIVA BRA ÅTERANVÄNDBAR KOD Pierre Setteskog, Pontus Munck
Föreläsning 10, kapitel 10 Abstrahera mera! Abstrakta klasser och interface Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”,
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 8 ( )‏ Innehåll:  Introduktion till Java EE (Enterprise Edition)  Enterprise Java Beans.
1. Ett problem/uppgift.
Föreläsning 3, Kapitel 3 Objektinteraktion - Skapa objekt som samarbetar Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David.
Välkommen till kursen objektorienterad programmering med Java Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes.
OOP F5:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 5 Klasser och objekt Skapa objekt - new Referenser Konstruktorer Inkapsling.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 5: Syntaxanalys (parsning) Syntaxanalysens mål Tillvägagångssätt och komplexitet Syntaxanalys.
Procedurellt potpurri Dagens samtalsämnen –Klipp (Cut) –If-then-else –fail/0 –repeat/0 Att läsa –The Art of Prolog, kapitel 11 –Relevant avsnitt i Learn.
Föreläsning2 Operativsystem.
William Sandqvist Funktionsbibliotek När man utvecklat en funktion så långt att den är "färdigutvecklad" kan man lika gärna spara den på.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 6 ( )‏ Innehåll:  Att designa parallella program - manuell vs. automatisk parallellisering.
1 Föreläsning 2 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Formella metoder i MDI Behovet Vad menas med formell? Verktyg Exempel Att läsa: Kapitel 14 i kursboken.
Föreläsning 1 Introduktion till kursen. Algoritmer
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 3: Abstrakta datatyper Algebror Abstrakta datatyper Inkapsling och informationsmaskering.
OOP&M - teori1 OOPM del II – Föreläsning vecka Abstrakta klasser/metoder igen Gränssnitt/Interface klasser igen tillämpat.
Föreläsning 3 Väsentliga delar i ett Javaprogram Input i paketet extra
KPP053, HT2015 MATLAB, Föreläsning 4
Föreläsning 8: Exempel och problemlösning
Föreläsning 12: Exempel och problemlösning
Presentationens avskrift:

Föreläsning 6, kapitel 6 Objekt som uppför sig som de skall Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling Fredric Ragnar Telefon Andreas Hedrén Telefon

Objekt som beter sig korrekt Den här föreläsningen: Test Avlusning/Debugging Automatisera test Att skriva för att kunna underhålla

Vi måste hantera fel Tidiga fel är ofta syntaxfel –Kompilatorn hittar de felen Senare fel är ofta logiska fel –Kompilatorn kan inte hjälpa till med logiska fel –Kallas också buggar En del buggar har ingen direkt uppenbar betydelse –Kommersiell programvara är sällan utan fel

Förhindra eller Detektera (Utvecklare eller Underhållare) Vi kan minska sannolikheten för fel –Använd metoder för programvaruutveckling som t ex inkapsling Vi kan öka chanserna att hitta/detektera felen –Använd god programvaruutvecklingsed som modularisering och dokumentation Vi kan utveckla vår skicklighet att hitta fel

Testa och Avlusa Detta är mycket viktiga kunskaper och färdigheter Att testa är att leta efter fel Att avlusa (eng: debug) är att leta efter vad som är fel. Felet kan visa sig ganska så långt från själva felet

Tekniker för att testa och avlusa Enhetstest (i BlueJ) (eng: unit testing) Automatisera test Manuellt gå igenom koden Utskrifter till skärmen Avlusningsverktyg (eng: debuggers)

Enhetstest Varje enhet av en applikation kan bli testad –Metod, klass, modul (Java: package) Kan och borde ske under utvecklingen –Att hitta och fixa tidigt sänker utvecklingskostnaden (t ex programmerartid) –En testsvit byggs upp

Grunderna om att testa Förstå vad enheten borde göra – enhetens kontrakt –Du letar efter brott mot kontraktet –Använd positiva test och negativa test Testa gränser –Noll, en, full Sök i en tom samling (eng: collection) Lägg till i en full samling

Enhetstest i BlueJ Objekt kan skapas av olika klasser Enskilda metoder kan köras Med ”inspect” får man uppdaterad information om ett objekts tillstånd Utforska med diary-prototype projektet.

Automatisera test Att testa på ett bra sätt är en kreativ process, men… … att testa grundligt tar tid och innebär mycket upprepningar Regressionstest innebär att upprepa tester, d vs köra tester igen Att använda en test-rigg kan underlätta en del. –Klasser skrivs som utför testerna –Kreativiteten läggs på att skapa dessa testklasser

Automatisera test, mer Utforska med diary-testing projektet –Det krävs fortfarande att någon analyserar resultatet Utforska en högre grad av automatisering med diary-test- automation projektet –Nu behövs bara åtgärder, dvs mänsklig inblandning om fel rapporteras.

Modularisering och Gränsnitt Applikationer består ofta av olika moduler –T ex så att flera team kan jobba på dem Gränssnittet mellan modulerna måste vara klart specificerat. –Stöder oberoende samtidig utveckling –Ökar sannolikheten för en framgångsrik integrering.

Modularisering i en kalkylator En modul behöver inte veta hur en annan modul är implementerad, dvs hur den ser ut inuti. –Modulen som jobbar mot användaren ”User controls” borde vara ett GUI eller en hårdvarumanick som ett tangentbord. –Modulen som gör beräkningarna ”Arithmetic Logic” kan vara mjukvara eller hårdvara

Metodsignaturer som gränssnitt // Return the value to be displayed. public int getDisplayValue(); // Call when a digit button is pressed. public void numberPressed(int number); // Call when a plus operator is pressed. public void plus(); // Call when a minus operator is pressed. public void minus(); // Call to complete a calculation. public void equals(); // Call to reset the calculator. public void clear();

Avlusning (Debugging) Det är viktigt att bli duktig på att läsa kod –Avlusning gör man ofta på andras kod Det finns tekniker och verktyg som stödjer avlusningsprocessen Utforska med calculator-engine projektet

Manuellt gå igenom koden Relativt ovanligt –Ett low-tech sätt –Mer kraftfullt än man kan tro Gå ifrån datorn! ”Kör” ett program för hand Hög-nivå (step) eller låg-nivå (step-into) vyer.

Använd tabell för objektens tillstånd Beteendet hos ett objekt beror ofta på tillståndet Ett felaktigt beteende beror ofta på ett felaktigt tillstånd Skriv alla fältens värde i en tabell Dokumentera alla förändringar efter varje att metod körts

Verbala genomgångar Förklara för någon annan vad koden gör –De kanske hittar felet –Genom att förklara så kanske du själv hittar felet Det finns formella metoder för att ha genomgångar eller granskningar i grupp

Spårutskrifter Den mest populära metoden Inga speciella verktyg behövs Alla programmeringsspråk stödjer detta Bara effektivt om rätt metoder är dokumenterade Det kan bli väldigt mycket utsktifter Att kunna slå av och på kräver att man tänker efter före

Avlusare (eng:Debuggers) Avlusare är både språk och miljöberoende BlueJ har en integrerad avlusare Stödjer brytpunkter Man kan exekvera med ”Step” och ”Step into” Man kan se meddelandekedjor Objektens tillstånd

Summering Att program har fel är ett faktum Bra programvruutvecklingstekniker kan minska felen Att kunna testa och avlusa är mycket viktigt Automatisera testerna när det är möjligt Använd flera avlusningsmetoder