Institutionen för datavetenskap HT /2008. Testning med JUnit
|
|
- Per-Olof Blomqvist
- för 8 år sedan
- Visningar:
Transkript
1 LUNDS TEKNISKA HÖGSKOLA EDA690 Algoritmer och datastrukturer Institutionen för datavetenskap HT /2008 Enhetstestning Testning med JUnit När man implementerat en klass måste man, innan den kan användas, testa att den uppfyller sin specifikation. Denna typ av testning brukar kallas enhetstestning. Vid s.k. black-box testning ser man en klass som en svart låda d.v.s. man vet ingenting om hur metoderna är implementerade. Det som testas är att metoderna ger det förväntade resultatet enligt sin specifikation. Antag t ex att vi har implementerat en klass som representerar ett bankkonto med följande specifikation: class BankAccount { /** Create new account with balance 0 */ public BankAccount(); /** Get balance of account */ public int getbalance(); /** Deposit amount n on account.*/ public void deposit(int n); /** Withdraw amount n from account. If overdraft, runtime exception IllegalArgumentException is raised and balance is left unchanged */ public void withdraw(int n); För att testa att en klass uppfyller sin specifikation måste man skriva programkod som anropar metoderna i olika situationer och kontrollera att resultatet blir det förväntade. Det är viktigt att man noga tänker igenom vilka olika fall som måste testas. För klassen BankAccount finns t ex följande fall som bör kontrolleras: getbalance() skall ge resultatet 0 för ett nyskapat konto deposit(n) följt av getbalance() skall ge resultatet n deposit(t1); withdraw(t2); ; deposit(tn); (med legala parametervärden för uttag) följt av getbalance() skall ge resulatet t1-t2+tn withdraw(n) ; där n>getbalance() kall generera IllegalArgumentException. Det är viktigt att testfallen också omfattar onormala fall eller gränsfall. För bankkontoklassen är ett sådant fall att man försöker ta ut mer pengar än vad som finns. Enligt specifikationen skall då IllegalArgumentException genereras. För en klass som hanterar listor kan intressanta gränsfall att kontrollera vara att ta bort det enda elementet i en lista eller att sätta in ett element allra först eller sist i listan. Enhetstestning med JUnit Ett sätt att genomföra testning enligt ovan är att skriva en main-metod i den klass som skall testas och låta den innehålla de kombinationer av metodanrop som motsvarar de olika testfallen. För att förenkla testförfarandet speciellt när många klasser skall enhetstestas kan man ha hjälp av ett verktyg. Vi skall här beskriva ett sådant verktyg, JUnit. I JUnit kan man samla alla test som rör en viss klass i en testklass, eventuellt samla ihop alla test i flera sådana testklasser till en testsvit, utföra alla tester och få en grafisk presentation av resultatet. Till varje klass som skall testas med hjälp av JUnit skriver man en motsvarande testklass som kan se ut så här: import junit.framework.test;
2 import junit.framework.testcase; import junit.framework.testsuite; public class TestMyClass extends TestCase { public TestMyClass(String name) { super(name); protected void setup() { protected void teardown() { public void testxxx() { public void testyyy() { public static void main(string[] args) { junit.swingui.testrunner.run(testmyclass.class); Konstruktorn skall alltid anropa superklassens konstruktor med sin egen parameter name som parameter. Det är ramverket JUnit som sedan kommer att anropa denna konstruktor vid test. Metoderna setup och teardown anropas av ramverket före, respektive efter varje test i testklassen. I setup kan man därför initiera det tillstånd man vill utgå ifrån i varje testfall, t ex skapa en instans av den klass som skall testas. I teardown kan man städa upp efter varje test t ex genom att frigöra resurser som man allokerat i setup. I main-metoden skapas en TestRunner som utför testen och presenterar resultaten via ett grafiskt användargränssnitt. Lägg märke till att parametern till run i main-metoden skall vara en referens till klassen som skall testas. Varje metod som har prefixet test kommer att utföras av ramverket. Metoderna testxxx, testyyy, i exemplet ovan skall alltså innehålla de sekvenser av metodanrop som motsvarar testfall man vill genomföra. Observera att testmetoderna måste vara publika för att ramverket skall kunna anropa dem. För att informera testramverket om utfallet finns ett antal metoder i klassen TestCase.Dessa kan alltså användas i de subklasser där testmetoderna finns såsom TestMyClass ovan. (En utförligare förteckning över metoderna, med kommentarer finns i Appendix). asserttrue(string message, boolean condition) assertequals(string message, TYPE expected, TYPE actual); assertnotnull(string message, Object obj); assertnull(string message, Object obj); assertsame(string message, Object expected, Object actual); fail(string message); Assert betyder ungefär att hävda, påstå. I metoderna ovan är message det meddelande som används för att generera felmeddelande i det grafiska gränssnittet vid körning av testfallet om utfallet inte är det förväntade. TYPE är någon av typerna boolean, byte, int, short, long, float, double eller Object. Om påståendena inte är sanna så genererar ramverket meddelanden om att testfallet inte gav förväntat resultat. failmetoden används när man utan att behöva kontrollera någonting vet att man misslyckats. Den kan t ex användas i samband med att det förväntade utfallet är att exception genereras (se exemplet med test av BankAccount nedan). Exempel på testklass i JUnit
3 Låt oss som exempel ta test av bankkontoklassen. Följande klass innehåller testmetoder motsvarande det första, andra och det sista av de tester som räknats upp tidigare: import junit.framework.test; import junit.framework.testcase; import junit.framework.testsuite; public class TestBankAccount extends TestCase { private BankAccount theaccount; // the account used for tests below public TestBankAccount(String name) { super(name); /** Let theaccount reference a new account before each test */ protected void setup() { theaccount = new BankAccount(); /** Clear the Account after each test */ protected void teardown() { theaccount = null; /** Test that balance of a newly created account is 0 */ public void testnewaccount() { assertequals("new account, balance not 0", 0, theaccount.getbalance()); /** Test that a single deposit gives correct balance */ public void testdeposit() { theaccount.deposit(100); assertequals("wrong balance after deposit", 100, theaccount.getbalance()); /** Test that illegal withdrawal raises IllegalArgumentException */ public void testoverdraft() { theaccount.deposit(100); try { theaccount.withdraw(200); fail("should raise IllegalArgumentException"); catch(illegalargumentexception e) { // successful test public static void main(string[] args) { junit.swingui.testrunner.run(testbankaccount.class); I testklassen deklareras ett attribut theaccount som är det konto som testas. I metoden setup skapas före varje test ett nytt konto som theaccount refererar till. I teardown tas det bort (egentligen onödigt här eftersom setup ändå skapar ett nytt före nästa test). Den första testen testnewaccount kontrollerar att ett nytt konto har behållningen 0. Om så inte är fallet kommer ett meddelande New account. att visas av ramverket. Metoden testdeposit kontrollerar att behållningen är korrekt efter en enda insättning. Lägg märke till hur den sista testen testoverdraft testar om det verkligen genereras IllegalArgumentException vid försök till att ta ut för mycket pengar. Om satsen theaccount.withdraw(200) inte genererar en exception kommer exekveringen att fortsätta i try-blocket. Detta motsvarar misslyckat test och vi kan därför använda fail-satsen för att informera ramverket. Om vi däremot får en exception hamnar vi i catch-grenen vilket motsvarar ett lyckat test och inget felmeddelande skall i detta fall genereras. För att köra testen kompilerar man klassen som skall testas, testklassen och kör sedan testklassen med det vanliga kommandot, i detta fall java TestBankAccount. main-metoden i TestBankAccount kör igång ramverket som sedan utför alla testfallen. Resultatet presenteras grafiskt Så länge testfallen är lyckade visas grönt ljus i den grafiska presentationen av resultatet. Så snart ett test går fel (enligt assert-sats) blir det rött ljus och ett meddelande genererat från parametrarna i assert-satsen visas.
4 JUnit rapporterar alltså vilket/vilka testfall som eventuellt gick fel. Härav kan man oftast dra slutsatser om vilken/vilka metoder det är i den testade klassen som är felaktiga. Skulle t ex testfallet testnewaccount ovan ge felmeddelande så måste något vara fel med antingen konstruktorn i BankAccount eller med metoden get- Balance. Man får i så fall försöka korrigera och kompilera om samt köra testerna på nytt tills man känner sig nöjd med funktionaliteten i klassen. Eventuellt kommer man under denna process på ytterligare test som bör utföras. I så fall får man komplettera testklassen med fler testmetoder, kompilera om och köra. Observera att när man väl kört igång ramverket en gång behöver man inte avsluta det så länge man vill fortsätta att testa. Det kan köras i bakgrunden genom att (i detta fall) ge kommandot java TestBankAccount & I det grafiska gränssnittet finns möjlighet (knappen märkt Run) att starta om hela testet på nytt. Prova JUnit I filerna /usr/local/cs/algodat/banktest/bankaccount.java /usr/local/cs/algodat/banktest/testbankaccount.java finns färdig implementation av bankkontoklassen och dess testklass. Kopiera dem till din egen katalog och kompilera dem. Glöm inte att först utföra kommandot initcs. Kör därefter igång JUnit genom att utföra kommandot java TestBankAccount & Alla tester går igenom. Se fig. 1. Verktyget rapporterar att 4 Runs genomförts (det finns fyra testmetoder i klassen TestbankAccount) samt att antalet Failures och Errors är 0. Dessutom visas grönt ljus. Verktyget skiljer mellan två sorters fel; Failures och Errors. Failures är den typ av fel som upptäcks genom assertsatserna. Errors är oförutsedda fel som kan bero på att man skrivit kod som leder till exekveringsfel i klassen som testas eller i testmetoderna, t ex råkar ut för att få ArrayIndexOutOfBoundsException eller dylikt. För att få se hur det blir när test går fel kan du introducera något fel i klassen BankAccount. Låt t ex tillgången på ett nyskapat konto bli 100 genom att ändra i konstruktorn. Kompilera sedan om BankAccount och kör testerna igen genom att klicka på Run-knappen i JUnit-fönstret Fig 1: Testklassen TestBankAccount med 4 testfall har körts. Inga fel rapporteras.
5 Nu rapporteras inte mindre än 4 failures. Se fig. 2. Alla fyra testen ger fel resultat. I den övre av de båda större textrutorna i fönstret räknas namnen på de testmetoder som gick fel upp. Den första är markerad och i den undre textrutan finns det genererade felmeddelandet för den markerade metoden. Du kan markera någon av de andra testmetoderna i den övre textrutan och får då fram felutskrifter för denna metod i den undre. Eftersom det första testet är det allra enklaste och detta gick fel verkar det logiskt att försöka åtgärda detta först. (I detta fall är det ju faktiskt så att alla de andra felen är följdfel av att konstruktorn är felaktig). Korrigera konstruktorn, kompilera och kör testen, som nu ger grönt ljus igen. Introducera nu i stället ett fel i metoden withdraw. Kommentera helt enkelt bort den inledande if-satsen så att metoden aldrig genererar IllegalArgumentException. Kompilera BankAccount och kör testerna på nytt. Nu blir det bara ett failure. Det kommer från den sista testmetoden och meddelandet är att det borde blivit en exception. Fig 2: Testklassen TestBankAccount med 4 testfall har körts. Fyra fel (failures) rapporteras i den övre av de båda större textrutorna. Det första test som gick fel är markerat (testnewaccount). Ett meddelande som genererats från assert-satsen i testnewaccount visas i den undre textrutan.
6 Test av flera klasser med JUnit För att kunna utföra tester av flera klasser på en gång kan tester sammanföras till en s.k. testsvit. Ett klasskelett för en testsvit för klasserna TestMyClass1, TestMyClass2, visas nedan. import junit.framework.test; import junit.framework.testcase; import junit.framework.testsuite; public class TestAll extends TestCase { public TestAll(String name) { super(name); public static Test suite() { TestSuite thesuite = new TestSuite(); // Add all tests in TestMyClass1 thesuite.addtestsuite(testmyclass1.class); // Add all tests in TestMyClass2 thesuite.addtestsuite(testmyclass2.class);. return thesuite; public static void main(string[] args) { junit.swingui.testrunner.run(testall.class); Ytterligare test i sviten läggs till med metoden addtestsuite(..) för samtliga testklasser som skall ingå i sviten. TestAll kompileras och körs med kommandot java TestAll. Därvid kommer alla testmetoder som finns i de klasser som ingår i testsviten att köras. Mera information om JUnit Testramverket JUnit är skrivet av Erich Gamma och Kent Beck och är en s.k. Open Source Software. Mer information finns på adressen På huvudsidan finns (i skrivande stund) en länk Getting Started. Under denna finns ett dokument som i sin tur innehåller länkar till artiklar om hur man kan använda JUnit och till dokumentation. Från huvudsidan kan man också ladda ner den senaste versionen av produkten. Det kommer ganska ofta nya versioner så bli inte förvånad om den version du själv laddar hem är lite annorlunda än den som vi installerat på skolan. Version 3.8 är installerad på skolans datorer. Dess dokumentation finns på adressen javadoc/3.8/index.htm. Se t ex klassen Assert för en fullständig förteckning över alla assert-metoder.
7 Appendix /** Assert that a condition is true */ public void asserttrue(string message, boolean condition); /** Assert that an object isn t null */ public void assertnotnull(object object); /** Assert that an object is null */ public void assertnull(object object); /** Assert that two objects are equal */ public void assertequals(string message, Object expected, Object actual); /** Assert that expected and actual refer to the same object */ public void assertsame(string message, Object expected, Object actual); /** Assert that expected and actual don t refer to the same object */ public void assertnotsame(string message, Object expected, Object actual); /** Assert that two Strings are equal */ public void assertequals(string message, String expected, String actual); /** Assert that two booleans are equal */ public void assertequals(string message, boolean expected, boolean actual); /** Assert that two bytes are equal */ public void assertequals(string message, byte expected, byte actual); /** Assert that two chars are equal */ public void assertequals(string message, char expected, char actual); /** Assert that two shorts are equal */ public void assertequals(string message, short expected, short actual); /** Assert that two ints are equal */ public void assertequals(string message, int expected, int actual); /** Assert that two longs are equal */ public void assertequals(string message, long expected, long actual); /** Assert that two doubles are equal concerning a delta. If the expected value is infinity then the delta is ignored. */ public void assertequals(string message, double expected, double actual, double delta); /** Assert that two floats are equal concerning a delta. If the expected value is infinity then the delta is ignored. */ public void assertequals(string message, float expected, float actual, float delta); /** Report failure with the given message */ public void fail(string message); Observera att förteckningen ovan inte är fullständig. För fullständig information om vilka metoder som finns i klassen Assert i JUnit se Notera också att metoder som i sitt namn inehåller Equals gör jämförelser mellan expected och actual med metoden equals. I metoder vars namn innehåller Same däremot anses expected och actual vara samma endast om operationen == mellan objekten ger resultatet true.
LUNDS TEKNISKA HÖGSKOLA EDAA01 Programmeringsteknik fördjupningskurs Institutionen för datavetenskap HT 2015
LUNDS TEKNISKA HÖGSKOLA EDAA01 Programmeringsteknik fördjupningskurs Institutionen för datavetenskap HT 2015 Testning med JUnit 1 Inledning JUnit är ett ramverk för enhetstestning av Javakod. Det är utvecklat
Läs merLite 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
Läs merLÖ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
Läs merFöreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser
Föreläsning 5-6 Innehåll Exempel på program med objekt Skapa och använda objekt Skriva egna klasser public class DrawSquare { public static void main(string[] args) { SimpleWindow w = new SimpleWindow(600,
Läs merFöreläsning 5-6 Innehåll
Föreläsning 5-6 Innehåll Skapa och använda objekt Skriva egna klasser Datavetenskap (LTH) Föreläsning 5-6 HT 2017 1 / 32 Exempel på program med objekt public class DrawSquare { public static void main(string[]
Läs merChapter 4: Writing Classes/ Att skriva egna klasser.
Chapter 4: Writing Classes/ Att skriva egna klasser. I dessa uppgifter kommer du att lära dig om hur man definierar egna objekt genom att skriva klasser. Detta är grunden för att förstå objekt orienterad
Läs merFö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
Läs merLänkade listor och automatisk testning
1 (6) Länkade listor och automatisk testning Algoritmer och datastrukturer Obligatorisk nr 3 Syfte Att ge träning i programmering av länkade listor på låg abstraktionsnivå med primitiv pekarmanipulering.
Läs merKort om klasser och objekt En introduktion till GUI-programmering i Java
Kort om klasser och objekt En introduktion till GUI-programmering i Java Klasser En klass är en mall för hur man ska beskriva på något. Antag att vi har en klass, Bil. Den klassen innehåller en lista på
Läs merArv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }
En klassdefinition class A extends B {... Arv definierar en klass A som ärver av B. Klassen A ärver alla fält och metoder som är definierade för B. A är en subklass till B. B är en superklass till A. class
Läs merTENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P
UME UNIVERSITET Datavetenskap 981212 TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P Datum : 981212 Tid : 9-15 HjŠlpmedel : Inga Antal uppgifter : 9 TotalpoŠng : 60 (halva pošngtalet kršvs normalt fšr
Läs mer1 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
Läs merTestning 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
Läs merIdag. 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
Läs merTENTAMEN: Objektorienterad programmering. Läs detta! Skriv din tentamenskod på varje blad (så att vi inte slarvar bort dem).
1 (7) TENTAMEN: Objektorienterad programmering Läs detta! Uppgifterna är inte ordnade efter svårighetsgrad. Börja varje hel uppgift på ett nytt blad. Skriv inte i tesen. Ordna bladen i uppgiftsordning.
Läs merAtt 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
Läs merObjektsamlingar i Java
1 (6) Objektsamlingar i Java Objektorienterad programmering 3 Syfte Att ge träning i att använda objektsamlingar i Java. Mål Efter övningen skall du kunna använda objektsamlingsklasserna ArrayList och
Läs merTentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-16, TDA540. Dag: , Tid:
Tentamen för TDA540 Objektorienterad Programmering Institutionen för Datavetenskap CTH HT-16, TDA540 Dag: 2017-01-09, Tid: 14.00-18.00 Ansvarig: Examinator: Alex Gerdes Carlo A. Furia Förfrågningar: Alex
Läs mer2D1311 Programmeringsteknik för Bio1 och Bio2, vt 2003 Fiktivt prov På flervalsfrågorna är endast ett svar rätt om inget annat anges i frågan! Det rik
2D1311 Programmeringsteknik för Bio1 och Bio2, vt 2003 Fiktivt prov På flervalsfrågorna är endast ett svar rätt om inget annat anges i frågan! Det riktiga provet tar 45 minuter (en lektionstimme) och det
Läs merVersionshantering. Jan Erik Moström
Versionshantering Jan Erik Moström Johan Eliasson Versionssystem Gjorda för att användas av en eller flera personer på en eller flera platser, exempelvis: För en ensam användare som jobbar med ett projekt
Läs merJUnit. Junit Unit Testing. JUnit 3. JUnit 3 forts. Villkorskontroller i test. Exempel JUnit3
Johan Eliasson JUnit Junit Unit Testing Unit testing för java Används för att testa att metoder/klasser beter sig som det var tänkt Många IDE:er tex Eclipse har inbyggt stöd för detta. JUnit 3 Vi skriver
Läs merDagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?
Programmeringsteknik och Matlab Övning 4 Dagens program Övningsgrupp 2 (Sal Q22/E32) Johannes Hjorth hjorth@nada.kth.se Rum 4538 på plan 5 i D-huset 08-790 69 02 Kurshemsida: http://www.nada.kth.se/kurser/kth/2d1312
Läs merClasses och Interfaces, Objects och References, Initialization
Classes och Interfaces, Objects och References, Initialization Objekt-orienterad programmering och design (DIT953) Niklas Broberg/Johannes Åman Pohjola, 2018 Abstract class En abstract class är en class
Läs merFöreläsning 13 Innehåll
Föreläsning 13 Innehåll Arv Repetition Om tentamen Datavetenskap (LTH) Föreläsning 13 HT 2017 1 / 32 Diskutera Här är början på klassen MemoryWindow som använts på en lab. Vad kan menas med extends SimpleWindow?
Läs merObjektorienterad programmering D2
Objektorienterad programmering D2 Laboration nr 2. Syfte Att få förståelse för de grundläggande objektorienterade begreppen. Redovisning Källkoden för uppgifterna skall skickas in via Fire. För senaste
Läs merEtt problem. Kontrollstrukturer och arrayer. Arrayer. Lösningen. Arrayer och hakparanteser. Exempel int[] results; results = new int[10]; // 0..
Ett problem Kontrollstrukturer och er Hur sparas data T ex när man vill spara resultaten av en tävling Exempel med 3 deltagare: public class Competition private int result1; private int result2; private
Läs merDet finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.
Tentamen Programmeringsteknik I 2015-06-11 Skrivtid: 08:00 13:00 Hjälpmedel: Java-bok Tänk på följande Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.
Läs merDI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin
DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin TENTAMEN I IKB007 INTERNETPROGRAMMERING MED JAVA för SY2 1999-03-17, kl 14.00-18.00 Hjälpmedel: En lärobok i Java programmering Återlämningstillfälle:
Läs merBankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.
Bankkonto - övning Övningar att göra efter lärardemostration. Filen bankkonto.zip innehåller ett projekt med klassen Bankkonto. Zippa upp denna fil och öppna projektet i BlueJ och skriv vidare på klassen
Läs merPROGRAMMERINGSTEKNIK TIN212
Data och Informationsteknik / Computer Science and Engineering Chalmers University of Technology and University of Gothenburg Robin Adams Göteborg 8 June 2018 PROGRAMMERINGSTEKNIK TIN212 Dag: Fredag Datum:
Läs merTENTAMEN. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. VT-13 Datum: 13-06-05 Tid: kl 16.00-20.
Umeå Universitet Datavetenskap Anders Broberg 130605 TENTAMEN Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg VT-13 Datum: 13-06-05 Tid: kl 16.00-20.00 Namn: Personnummer:
Läs merIdag. 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
Läs merJava: kort introduktion. Trådar. Något om mutex, Dekkers algoritm och monitorer. Javas ("inbyggda monitor") synchronized.
2EMHNWRULHQWHUDG5HDOWLGVSURJUDPPHULQJ Java: kort introduktion. Trådar. Något om mutex, Dekkers algoritm och monitorer. Javas ("inbyggda monitor") synchronized. previous next Java Java är konstruerat på
Läs merGrundkurs 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
Läs merpublic och private Obs: private inte skyddar mot access från andra objekt i samma klass.
public och private En metod som är public får anropas från alla metoder i alla klasser. Ett attribut som är public får avläsas och ändras från alla metoder i alla andra klasser. En metod som är private
Läs merExempel. Arrayer. Lösningen. Ett problem. Arrayer och hakparanteser. Arrayer
Exempel for (int antal=; antal < 75; antal++) System.out.println (antal); Arrayer for (int num=5; num
Läs merAnmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper
Tentamen Programmeringsteknik I 2016-06-11 Skrivtid: 0900 1400 Tänk på följande Skriv läsligt. Använd inte rödpenna. Skriv bara på framsidan av varje papper. Lägg uppgifterna i ordning. Skriv uppgiftsnummer
Läs merDet finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.
Tentamen Programmeringsteknik I 2014-10-17 Skrivtid: 0800-1300 Hjälpmedel: Java-bok Tänk på följande Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till
Läs merFöreläsning 2 Objektorienterad programmering DD1332. Typomvandling
metoder Föreläsning 2 Objektorienterad programmering DD1332 Array [modifierare] String metodnamn (String parameter) Returtyp (utdata typ) i detta fall String Indata typ i detta fall String 1 De får man
Läs merAnmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper
Tentamen Programmeringsteknik I 2016-03-17 Skrivtid: 1400 1900 Tänk på följande Skriv läsligt. Använd inte rödpenna. Skriv bara på framsidan av varje papper. Lägg uppgifterna i ordning. Skriv uppgiftsnummer
Läs merIdag. statiska metoder och variabler. private/public/protected. final, abstrakta klasser, gränssnitt, delegering. wrapper classes
Idag statiska metoder och variabler private/public/protected final, abstrakta klasser, gränssnitt, delegering wrapper classes ett lite större exempel Objectorienterad programmering Sida 1 Vad vi vet om
Läs merFÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY , kl
Högskolan Dalarna sid 1 av 6 DI-institutionen Hans-Edy Mårtensson Sten Sundin FÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY2 2001-03-16, kl 14.00-18.00 1. Grunderna i
Läs merFö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
Läs merProgrammering 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
Läs merEDAA20 Föreläsning Klassen ArrayList. Viktiga operationer på ArrayList. Generisk klass
EDAA20 Föreläsning 11-12 Klassen ArrayList Klassen ArrayList Skriva program som läser data från en textfil och skriver data till en textfil Repetition inför delmålskontroll 2 är en standardklass (i paketet
Läs merObjektorienterad 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
Läs merObjektorienterad Programkonstruktion. Föreläsning 2 2 nov 2016
Objektorienterad Programkonstruktion Föreläsning 2 2 nov 2016 Objekt - klass Namn Fält1 Fält2 Fält3 Metod1 Metod2 Metod3 Metod4 Objekt - klass Objekt - klass Objekt - klass + Objekt - klass public class
Läs merTDDC30. 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
Läs merObjektorienterad programmering i Java
Objektorienterad programmering i Java Föreläsning 4 Täcker i stort sett kapitel 6 i kursboken Java Software Solutions 1 Läsanvisningar Den här föreläsningen är uppbyggd som en fortsättning av exemplet
Läs merSubklasser och arv Inledning till grafik (JFrame och JPanel). Något om interface. Objektorienterad programvaruutveckling GU (DIT011) Subklasser
Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Objektorienterad programvaruutveckling GU (DIT011) Föreläsning 5 Innehåll Subklasser och arv Inledning till grafik (JFrame och JPanel).
Läs merUppgiften ä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
Läs merJUnit 4 - användning. Grunderna. org.junit. org.junit.test. Henrik Bergström DSV SU/KTH. Innehåller bland annat:
JUnit 4 - användning Grunderna Henrik Bergström DSV SU/KTH org.junit org.junit.test Innehåller bland annat: Test Assert Obs! Inte ett paket annotation som berättar att den efterföljande metoden är ett
Läs merArrayer. results
Arrayer 85 Arrayer Deklarerar utrymme för många variabler i en enda deklaration Array (fält) Varje värde har ett numeriskt index i Java indexeras en array med N element med indexen till N-1 Exempel: 1
Läs merAtt deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1)
Föreläsning 10 STRING OCH STRINGBUILDER; VARIABLERS SYNLIGHET Att deklarera och att använda variabler När vi deklarerar en variabel, t ex int x; inför vi en ny variabel med ett namn och en typ. När namnet
Läs merObjektorienterad 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
Läs merDIAGNOSTISKT 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
Läs merKonstruktion av klasser med klasser
Konstruktion av klasser med klasser Klasser kan byggas på redan denierade klasser genom att klassobjekt används som dataattribut när en ny klass beskrivs. Exempel: Klassen PairOfDice har två attribut attribut
Läs merDesign av en klass BankAccount som representerar ett bankkonto
Klasser Kommer ta upp följande begrepp: Design av en klass Implementera en klass Testa en klass med en mainmetod Instansvariabler, lokala variabler, formella parametrar, aktuella parametrar och variablers
Läs merUML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer.
Översikt Klasshierarkier UML klassdiagram Relation mellan klasser mellan klasser och objekt Association ning ing andling Programmering tillämpningar och datastrukturer 2 UML UML Unified Modeling Language
Läs merKARLSTADS UNIVERSITET 12/8/09 informatik & datavetenskap Johan Öfverberg, Kerstin Andersson Laboration 4, ISG A04 och DVG A08 HT-09
Laboration 4, ISG A04 och DVG A08 HT-09 Laborationen går ut på att skapa en enkel bankbok. Ni skall i bankboken kunna registrera upp till 30 transaktioner som kan bestå av insättning, uttag eller checkuttag.
Läs merDAT043 Objektorienterad Programmering
DAT043 Objektorienterad Programmering Detta är en exempeltenta som innehåller gamla tentauppgifter av ungefär liknande slag som ni kan förvänta er se på ordinarie tenta i Del 1 respektive Del 2. Dock är
Läs merKlasshierarkier. Klasser kan byggas på redan definierade klasser
Klasshierarkier Klasser kan byggas på redan definierade klasser på två sätt: Klassobjekt används som dataattribut när en ny klass beskrivs. Exempel: klassen partikel består av ett antal attribut av typen
Läs merDet finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.
Tentamen Programmeringsteknik I 2015-06-11 Skrivtid: 08:00 13:00 Hjälpmedel: Java-bok Tänk på följande Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.
Läs merFöreläsning 4 Innehåll. Abstrakta datatypen lista. Implementering av listor. Abstrakt datatypen lista. Abstrakt datatyp
Föreläsning 4 Innehåll Abstrakta datatypen lista Definition Abstrakta datatypen lista egen implementering Datastrukturen enkellänkad lista Nästlade klasser statiska nästlade klasser inre klasser Listklasser
Läs merLösningsförslag till tentamen i EDA011, lördagen den 16 december 2006
Lösningsförslag till tentamen i EDA011, lördagen den 16 december 2006 Detta lösningsförslag är skrivet i stor hast, så det är möjligt att det innehåller en del slarvfel jag ber i så fall om ursäkt för
Läs merLaboration 3, uppgift En klass för en räknare
Laboration 3, uppgift 1 3.1 En klass för en räknare Ursprungligen skriven av Erland Holmström. Magnus Myreen har uppdaterat vissa delar. Hösten 2014 Anvisningar: Programmet skall utformas enligt de principer
Läs merFöreläsning 4. Klass. Klassdeklaration. Klasser Och Objekt
Föreläsning 4 Klasser Och Objekt Klass Beskrivning av en objekttyp Beskriver egenskaper och beteende (fält och metoder) Klassen fungerar som en ritning Objekt skapas från klassbeskrivningen - instansieras
Läs merTENTAMEN OOP
TENTAMEN OOP 2013-08-08 ANVISNINGAR Påbörja varje ny uppgift på nytt blad. Skriv endast på ena sidan av bladen. Skriv tydligt - oläsbara svar beaktas ej. BETYGSÄTTNING Max antal poäng är 30. För att bli
Läs merEDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.
EDAA20 Programmering och databaser Mål komprimerat se kursplanen för detaljer Läsperiod 1 7.5 hp anna.aelsson@cs.lth.se http://cs.lth.se/edaa20 Mer information finns på kursens webbsida samt på det utdelade
Läs merTDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 2
TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 2 Pelle Evensen, Daniel Wetterbro 5 november 2009 Sammanfattning Denna vecka ska vi titta på abstrakta klasser kontra interface,
Läs merFö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
Läs merF8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander
F8 - Arv ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Arv och subklasser Klasser innehåller attribut och beteenden En subklass ärver dessa från föräldern Detta ger: Återanvänd kod
Läs merTentamen Programmeringsteknik II och NV2 (alla varianter) 2008-12-10. Skriv bara på framsidan av varje papper.
Tentamen Programmeringsteknik II och NV2 (alla varianter) 2008-12-10 Skrivtid: 0800-1300 Inga hjälpmedel. Tänk på följande Maximal poäng är 40. För betygen 3 krävs 18 poäng. För betygen 4, 5 kommer något
Läs merÖvningsuppgift. Bankkonton. Steg 2. Författare: Mats Loock Kurs: Inledande programmering med C# Kurskod:1DV402
Övningsuppgift Bankkonton Steg 2 Författare: Mats Loock Kurs: Inledande programmering med C# Kurskod:1DV402 Upphovsrätt för detta verk Detta verk är framtaget i anslutning till kursen Inledande programmering
Läs merArv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier
Arv Fundamental objekt-orienterad teknik arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier Programmeringsmetodik -Java 165 Grafisk respresentation: Arv
Läs merHögskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin
Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin TENTAMEN I IKB007 INTERNETPROGRAMMERING MED JAVA, 5p för SY2 2001-03-16, kl 14.00-18.00 Hjälpmedel: Inga hjälpmedel är tillåtna
Läs merIdentitet och ekvivalens
Identitet och ekvivalens Värdesemantik eller pekarsemantik? class Pair { Object fst; Object snd; void foo(pair o) { o.snd = 4711; public static void main(string[] args) { Pair p = new Pair(); p.fst = 42;
Läs merTestning 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
Läs merRepetition 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
Läs merTDDE10 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
Läs merFöreläsning 3-4 Innehåll
Föreläsning 3-4 Innehåll Skriva egna metoder Logiska uttryck Algoritm för att beräkna min och max Vektorer Datavetenskap (LTH) Föreläsning 3-4 HT 2017 1 / 36 Diskutera Vad gör programmet programmet? Föreslå
Läs merInkapsling tumregler. Åtkomstmodifikatorer, instantiering, referenser, identitet och ekvivalens, samt klassvariabler. public och private
Inkapsling tumregler Åtkomstmodifikatorer, instantiering, referenser, identitet och ekvivalens, samt klassvariabler Tobias Wrigstad (baserat på material från Tom Smedsaas) 5 november 2010 1. Man skall
Läs merLaboration 2. returnerar true om det är omöjligt för roboten att göra move() utan att. exekveringsfel erhålls, annars returnera false.
Laboration 2. I denna laboration skall ni programmera en robot som modelleras av den givna klassen Robot. En robot vistas i en enkel värld, som modelleras av klassen RobotWorld. Världen består av ett rutmönster
Läs merKlasser i Java kan ha metoder och egenskaper. Metoder beskriver funktioner som klassen kan utföra. Egenskaper beskriver innehållet i klassen.
TT Kapitel 3. Husdjur & Fisk Javaklasser Translation by Leif Lourié Java program består av klasser som beskriver saker (objekt) som finns på riktigt. Även om det finns många olika sätt att skriva program
Läs merTentamen Programmeringsteknik II Skrivtid: Hjälpmedel: Java-bok (vilken som helst) Skriv läsligt! Använd inte rödpenna!
Tentamen Programmeringsteknik II 2014-01-09 Skrivtid: 0800-1300 Hjälpmedel: Java-bok (vilken som helst) Tänk på följande Skriv läsligt! Använd inte rödpenna! Skriv bara på framsidan av varje papper. Börja
Läs merTentamen, EDA501/EDAA20 Programmering M MD W BK L
LUNDS TEKNISKA HÖGSKOLA 1(6) Institutionen för datavetenskap Tentamen, EDA501/EDAA20 Programmering M MD W BK L 2017 05 31, 8.00 13.00 Anvisningar: Preliminärt ger uppgifterna 9 + 12 + 10 + 9 = 40 poäng.
Läs merRepetition 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
Läs merDagens föreläsning. Arrayer och klasser. Medan ni väntar: Gå till m.voto.se/prog11 och svara på några gamla tentamensfrågor! (26 januari 2018 F3 1 )
(26 januari 2018 F3 1 ) Dagens föreläsning Arrayer och klasser Medan ni väntar: Gå till m.voto.se/prog11 och svara på några gamla tentamensfrågor! (26 januari 2018 F3 2 ) Arrayer En array är en datatyp
Läs merGenerisk klass med typparameter Inre klass - ListIterator
Objektorienterad programmeringsmetodik Generics, clone Generics Återanvändning Ännu ett sätt att lösa ett gammalt problem: skriva så lite kod som möjligt Vi vill ha metoder som fungerar på olika klasser
Läs merTentamen i Programmeringsteknik I
Tentamen i Programmeringsteknik I 2016-10-17 Skrivtid: 8:00 13:00 Tänk på följande Skriv läsligt! Använd inte rödpenna! Skriv bara på framsidan av varje papper. Lägg uppgifterna i ordning. Skriv uppgiftsnummer
Läs merFöreläsning 3: Abstrakta datastrukturer, kö, stack, lista
Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista Abstrakt stack Abstrakt kö Länkade listor Abstrakta datatyper Det är ofta praktiskt att beskriva vilka operationer man vill kunna göra på sina
Läs merFöreläsning 2. Täcker material från lektion 1, 2, 3 och 4:
(22 januari 2016 F2.1 ) Föreläsning 2 Täcker material från lektion 1, 2, 3 och 4: Datatyper Aritmetik Tecken och strängar Klasser, Objekt Metoder Villkor, villkorssatser och iterationer main-metoden Kodstandard
Läs merObjektorienterad 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
Läs merFöreläsning Innehåll. Hantera många element. Exempel: polygon Godtyckligt antal element. Exempel: polygon forts
Föreläsning 11-12 Innehåll Hantera många element Tidigare har vi använt vektorer för att lagra många element av samma tp. Eempel: Klassen ArraList Inläsning från tetfil, utskrift på tetfil int[] nbrs
Läs merGrundläggande programmering med C# 7,5 högskolepoäng
Grundläggande programmering med C# 7,5 högskolepoäng Provmoment: TEN1 Ladokkod: NGC011 Tentamen ges för: Omtentamen DE13, IMIT13 och SYST13 samt öppen för alla (Ifylles av student) (Ifylles av student)
Läs merVariabler som hör till enskilda objekt. Deklareras på översta nivån i klassen och i regel som private.
Tentamen Programmeringsteknik I 2013-06-14 med lösningar 1. Svara kortfattat på följande: a) Vad är en instansvariabel? Variabler som hör till enskilda objekt. Deklareras på översta nivån i klassen och
Läs merID1004 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
Läs merDet finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.
Tentamen Programmeringsteknik I 2012-03-14 Skrivtid: 0800-1100 Hjälpmedel: Java-bok Tänk på följande Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till
Läs merOBJEKTORIENTERAD PROGRAMVARUUTVECKLING
Institutionen för Data- och informationsteknik TENTAMEN OBJEKTORIENTERAD PROGRAMVARUUTVECKLING OBS! Det kan finnas kurser med samma eller liknande namn på olika utbildningslinjer. Denna tentamen gäller
Läs merTENTAMEN I PROGRAMMERING. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng
TENTAMEN I PROGRAMMERING Ansvarig: Jan Skansholm, tel 7721012 Betygsgränser: Hjälpmedel: Sammanlagt maximalt 60 poäng. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng Skansholm,
Läs mer