kl Tentaupplägg

Relevanta dokument
kl Tentaupplägg

kl Tentaupplägg

kl Tentaupplägg

kl Tentainformation

kl Tentaupplägg

kl Tentaupplägg

kl Tentaupplägg

kl Tentaupplägg

2017-XX-XX.kl Tentaupplägg

DUGGA Tentaupplägg

kl Tentaupplägg

kl Tentaupplägg

kl Tentainformation

kl Tentaupplägg

kl Tentaupplägg

kl Tentaupplägg

kl Tentaupplägg

kl Tentaupplägg

kl Tentaupplägg

DUGGA Tentaupplägg

Tentaupplägg. Betygsgränser: 1 uppg 19:00 Betyg 3 2 uppg 18:00 Betyg 4 2 uppg 16:30 Betyg 5 3 uppg 18:00 Betyg 5

kl Tentaupplägg

kl Tentaupplägg

kl Examination - Ada

kl Tentaupplägg. TIPS 4: Du kan kompilera din kod med följande kommandon g++11, w++11 (för mer varningar)

kl Tentaupplägg

kl Tentaupplägg

kl Tentaupplägg

kl Tentaupplägg

Outline. Objektorienterad Programmering (TDDC77) Att instansiera en klass. Objekt. Instansiering. Åtkomst. Abstrakt datatyp.

kl Tentaupplägg

kl Tentaupplägg

Objektorienterad Programmering (TDDC77)

kl Tentaupplägg

Tentaupplägg denna gång

TENTA: TDDD11 & TDDC68. Tillåtna hjälpmedel. Starta Emacs, terminal och tentakommunikationsfönster. Skicka in frågor och uppgifter

I STONE. I Variabler, datatyper, typkonvertering. I Logiska och matematiska uttryck. I Metoder-returvärde och parametrar. I Villkorssatser if/else

Tentaupplägg denna gång

Tentamen TEN1 HI

Outline. Objektorienterad Programmering (TDDC77) Laborationsserie del två. Vad händer under HT2. Introduktion HT2 UML.

Objektorienterad Programmering (TDDC77)

TDDC77 Objektorienterad Programmering

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

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 1

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }

Det är principer och idéer som är viktiga. Skriv så att du övertygar rättaren om att du har förstått dessa även om detaljer kan vara felaktiga.

Obligatorisk uppgift 5

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

TENTAMEN I. OBJEKTORIENTERAD PROGRAMMERING för Z1. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng

Försättsblad till skriftlig tentamen vid Linköpings Universitet

TDDE10 TDDE11, 725G90. Objektorienterad programmering i Java, Föreläsning 3 Erik Nilsson, Institutionen för Datavetenskap, LiU

Övning2. Variabler. Data typer

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Programmering för språkteknologer II, HT2011. Rum

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Föreläsning 10. ADT:er och datastrukturer

Linköpings Tekniska Högskola Instutitionen för Datavetenskap (IDA) Torbjörn Jonsson, Erik Nilsson Lab 2: Underprogram

TDDE10 TDDE11, 725G90/1. Objektorienterad programmering i Java, Föreläsning 2 Erik Nilsson, Institutionen för Datavetenskap, LiU

Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

Tentamen i Algoritmer & Datastrukturer i Java

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Tentamen Programmeringsteknik II Skrivtid: Hjälpmedel: Java-bok (vilken som helst) Skriv läsligt! Använd inte rödpenna!

Klasser i Java kan ha metoder och egenskaper. Metoder beskriver funktioner som klassen kan utföra. Egenskaper beskriver innehållet i klassen.

Tentamen i. Programmering i språket C

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

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.

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser

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

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014

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

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

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

Föreläsning 5-6 Innehåll

Tentamen i EDAF oktober Skrivtid: Skriv bara på ena sidan av pappret tentorna kommer att scannas in, och endast framsidorna rättas.

Objektorienterad Programmering (TDDC77)

TDIU01 / 725G

Programmering för språkteknologer II, HT2014. Rum

Outline. I Vi kan lätt göra samma sak för fyra variabler... I Hur gör vi för 400 inlästa värden? I Ofta behöver man flera likadana variabler

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Det är principer och idéer som är viktiga. Skriv så att du övertygar rättaren om att du har förstått dessa även om detaljer kan vara felaktiga.

Tentamen ID1004 Objektorienterad programmering April 7, 2015

Laboration 1: Figurer i hierarki

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

Design av en klass BankAccount som representerar ett bankkonto

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34

Uppgift 1 (vadå sortering?)

TENTAMEN OOP

DAT043 - föreläsning 8

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 rik

Laboration 1 - Grunderna för OOP i Java

Föreläsning 15: Repetition DVGA02

Tentaupplägg denna gång

Kort om klasser och objekt En introduktion till GUI-programmering i Java

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

Tentamen. 2D4135 vt 2004 Objektorienterad programmering, design och analys med Java Torsdagen den 3 juni 2004 kl

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

(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

Transkript:

Tentaupplägg Allmänna Tips Läs igenom ALLA uppgifterna. Välj den du känner är lättast först. Det kan gärna ta 10-20 minuter. Försök skriva saker som kan vara problem i uppgifterna. Är det något du absolut kommer att fastna på så kanske det är fel uppgift att ge sig på. Tiden du lägger på att noga läsa uppgifterna tjänar du in på att välja rätt uppgift. Kolla ibland till kommunikationsfönstret. Det kan ha kommit information till alla utan att ni skickat in en fråga. Om ni har problem med eclipse eller dylikt som INTE har med uppgifterna att göra, räck upp handen så kommer en assistent. Detsamma gäller om hur man kopierar givna filer. Frågor om själva uppgifterna tar vi i första hand via tentasystemet. Testa ditt program noga innan du skickar in. Om din lösning inte är korrekt kommer du få ett kompletteringsmeddelande och har möjlighet att rätta den och skicka in igen. Kompletteringar måste dock åtgärdas. Vi tolererar inte att ni spammar oss med samma lösning om och om igen. Kommando cp given_files/*. xdg open given_files/tenta.pdf eclipse & Effekt Kopierar alla givna filer till mappen du står Öppnar själva tentan. Blir läsbar då tentan startar. Startar eclipse. Generella krav (gäller för alla uppgifter om inget annat anges): Fullständiga uppräkningar och kodduplicering skall undvikas med klasshierarkier och polymorfi i de fall det inte går att generalisera på andra sätt (underprogram, loopar, etc.). Korrekt inkapsling krävs, d.v.s. rätt synlighet på instans/klassvariabler och metoder. Lämpliga konstruktorer skall finnas för alla klasser. Instansvariabler får inte användas som globala/lokala variabler (d.v.s. använd parametrar och lokala variabler i första hand). Korrekt användning av static krävs. Överanvändning av instanceof och typkonverteringar kan leda till komplettering. Betygsgränser: Tid TDDE10/11 725G90 1 poäng 12:00 Betyg 3 Betyg G 3 poäng 11:00 Betyg 4 3 poäng 10:40 Betyg VG 3 poäng 10:20 Betyg 5 4 poäng 11:00 Betyg 5 4 poäng 11:20 Betyg VG OBS: Delpoäng delas inte ut på uppgifterna. För att få poäng på en uppgift måste man alltså lösa uppgiften helt (och enligt specifikation). M.v.h. /Torbjörn och Erik

Uppgift 1 - Färger [1p] Som du kanske känner till så finns det en klass Color i javas bibliotek awt för att representera färger. En färg består i grund och botten av tre komponenter (tre tal) som anger hur stor del rött, grönt och blått som ingår i färgen. Man kan skapa Color-objekt med tre heltal i intervallet 0-255, eller tre flyttal (floats) i intervallet 0.0 till 1.0. Man kan även skicka med ett fjärde tal som anger s.k. alphakanal d.v.s. hur pass transparant färgen skall vara. Flyttalet 0.0 anger då helt transparant och 1.0 betyder inte transparant alls. I denna uppgift skall du göra en egen liten klasshirarki för att hantera färger. Du skall implementera klasserna i klassdiagrammet nedan. MyColor - name : String Då objekt av klassen MyColor skapas skall namn (en sträng) och - red : double fyra realla tal (doubles) anges. Det skall även finnas en metod i - green : double klassen MyColor som tar en parameter av typen MyColor och - blue : double returnerar motsvarande Color-objekt. Detta behövs för att - alpha : double testprogrammet skall kunna visa upp färgen. +getname() : String +toawtcolor(mycolor) : Color Subklassen OpaqueColor är specialicering av MyColor som alltid har sitt alpha-värde till 1.0, d.v.s. detta är en klass som kan användas om man inte vill att färgen skall vara transparent alls. Man skall alltså inte behöva ange ett alpha-värde när man skapar objekt av typen OpaqueColor. OpaqueColor har i sin tur en subklass som heter GrayColor. Det är en klass som representera gråskalefärger. För gråskalefärger gäller att värdet för rött, grönt och blått alltid är samma. Den som skapar ett sådant objekt behöver alltså bara ange ett värde, och ett namn såklart. OpaqueColor GrayColor Se testprogrammet ColorTest.java för hur klasserna är tänkta att instansieras. Testprogrammet skapar ett fönster för varje färg som skall testas. I bakgrunden ritar testprogrammet ut en svart ruta i en vit ruta, som alltså kommer lysa igenom om färgen är någorlunda transparant. För OpaqueColor och Grayscale skall alltså denna bakgrund inte synas alls. TIPS: Man kan konvertera mellan olika typer med castning, t.ex: double d = 3.3; int i = (int)d; // i blir 3 double f = (double)i; // f blir 3.0

Uppgift 2 - Stackar, köer... [1p] Kostnären Emilio har gjort ett program där stackar och köer används (båda med strängar i). I sitt huvudprogram vill han nu räkna ut summan av strängarnas längder. Han gjorde först en metod som tog en stack som parameter, poppade från stacken och summerade. När han sedan överlagrade metoden för kön så upptäckte han hur lika dessa metoder var! Du skall nu hjälpa Emilio att generalisera koden så att hans två underprogram, kan bli ett. Klassdiagrammet nedan visar den kod som redan finns given. OBS: pilarna i klassdiagrammet nedan är associationspilar, d.v.s. "känner till" förhållanden. I detta fall påvisar pilarna parametrarna på metoderna sum. TestStacksAndQueues +sum(stringstack) : int +sum(stringqueue) : int +main(string[]) StringStack +push(string) +pop() : String +isempty() : boolean StringQueue +enqueue(string) +dequeue() : String +isempty() : boolean Alltså: Ändra testprogrammet så att det finns en sum-metod. Du skall inte behöva modifiera den kod som redan finns i StringStack resp. StringQueue, endast lägga till kod. Du kommer eventuellt att behöva lägga till en klass för att lösa problemet. Du får inte låta StringStack ärva från StringQueue eller vice versa. TIPS: Arv och polymorfi.

Uppgift 3 - Binära operatorer [2p] I denna uppgift skall du skapa en klass för att representera binära operatorer. En binär operator är t.ex. operatorn + (plus). Plus tar två operander, en till vänster och en till höger och ger ett resultat. Den kallas binär, eftersom den tar just två operander. Detta har inget med binära tal att göra. Du skall skapa den generiska klassen BinaryOperator som tar tre generiska parametrar, en för vänstra operandens typ, en för högra operandens typ och en för typen på resultatet. Klassen skall ha, utöver eventuella getters och setters, en metod dooperation som utför själva operationen och returnerar resultatet. Det skall även finnas en metod som returnerar sant om operationen är kommutativ d.v.s. om A op B = B op A. Detta gäller ju för addition och multiplikation, men är inte säkert för alla binära operatorer. Du skall sedan skapa tre subklasser till denna klass, Addition, Multiplication och Concatenation. Alla klasser skall implementeras enligt nedanstående klassdiagram. BinaryOperator<E, F, G> - left : E - right : F - name : String +dooperation() : G +iscommutative(): boolean Addition Multiplication Concatenation +dooperation() : int +dooperation() : double Additionsklassen är helt enkelt addition mellan två heltal. Multiplikationsklassen är multiplikation där vänster är ett flyttal (double) och höger är ett heltal (vill man ha heltal*flyttal får man skapa ytterligare en klass). Concatenation är strängsammanslagning, i detta fall mellan ett heltal till vänster och en sträng till höger (detta kan göras med + i Java). Strängsammanslagning är inte kommutativ. Se testprogrammet TestOperation.java för hur objekten skall skapas och användas. TIPS: Använd wrapper-classerna för int och double (Integer resp. Double). +dooperation() : String

Uppgift 4 - Färgpalette [3p] I denna uppgift skall du ta koden som var given från uppgift 1 och utveckla det till programmet som syns på bilderna nedan. Du behöver inte ha löst uppgift 1, utan kan (skall) använda java.awt.color istället. Du får även ytterligare en given klass, nämligen ColorSetFactory. En ColorSetFactory har endast en metod makeset som returnerar en mängd färger. Du skall använda den klassen, skapa lämpliga subklasser till den så att programmet som visas i bilderna nedan fungerar. När man trycker på en knapp i programmet skall motsvarande färguppsättning visas upp i fönstret. För att utöka programmet med fler färguppsättningar så skall det endast vara att lägga till en knapp i gränssnittet och göra en ny subklass till ColorSetFactory. ColorSetFactory +makeset(): Set<Color> TIPS: Modifiera ColorTestComponent så att den ritar ut flera färger istället för bara en. Tänk på att komponenten själv vet hur bred den är, med metoden getwidth(). Lägg till en JPanel i underkanten och lägg knapparna i den. Använd JButton för knapparna. Låt knapparna skapa en instans av rätt factoryklass. Instansen kan skickas in till componenten som ritar ut paletten.