50 poäng. Samtliga teoretiska frågor kan ha 1-4 korrekta svar. Varje teoretisk fråga ger 1 poäng.

Relevanta dokument
Tentamen NOA011 Systemarkitektprogrammet

Tentamen NOA011 Systemarkitektprogrammet. 51 poäng

Objektorienterad mjukvaruutveckling. 15 högskolepoäng. TentamensKod: Tentamensdatum: Tid: Hjälpmedel: Inga hjälpmedel

Rättningstiden är i normalfall 15 arbetsdagar, till detta tillkommer upp till 5 arbetsdagar för administration.

Del av projektuppgiften. Systemarkitektprogrammet

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

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

TENTAMEN OOP

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

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

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

endast har ett korrekt alternativ. Om

Classes och Interfaces, Objects och References, Initialization

Lösningsförslag till omtentamen för TDA540 Objektorienterad Programmering

Vad kännetecknar en god klass. Vad kännetecknar en god klass. F12 Nested & Inner Classes

TENTAMEN OOP

UML. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier

DAT043 - Föreläsning 7

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

PROGRAMMERINGSTEKNIK TIN212

Static vs Dynamic binding Override vs Overload. Objekt-orienterad programmering och design Alex Gerdes och Sólrún Halla Einarsdóttir, 2018

Föreläsning 8. Arv. Arv (forts) Arv och abstrakta klasser

endast har ett korrekt alternativ. Om

UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer.

Subklasser och arv Inledning till grafik (JFrame och JPanel). Något om interface. Objektorienterad programvaruutveckling GU (DIT011) Subklasser

Föreläsningsmaterial (Arv) Skrivet av Andreas Lund

Omtentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-17, TDA540. Dag: , Tid:

Kopiering av objekt i Java

Objekt, klasser. Tillstånd Signatur Kommunikation Typ. Fält, parametrar och lokala variabler. Konstruktorer Metoder DAVA15

Innehåll. dynamisk bindning. och programmering CRC) u Arv, polymorfi och

Lösningar till Fiktiv Tentamen på kursen. 2D4135 Objektorienterad programmering, design och analys med Java vt2004. Teoridel

Klasshierarkier - repetition

Objektorienterad Programkonstruktion. Föreläsning 6 23 nov 2015

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

Objektorienterad Programkonstruktion. Föreläsning jan 2016

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Tentamen. DD2385 Programutvecklingsteknik vt Fredagen den 5 juni 2009 kl Inga hjälpmedel utom penna, sudd och linjal

2I1049 Föreläsning 5. Objektorientering. Objektorientering. Klasserna ordnas i en hierarki som motsvarar deras inbördes ordning

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

Tentamen. DD2385 Programutvecklingsteknik vt 2014 Måndagen den 2 juni 2014 kl Hjälpmedel: penna, suddgummi, linjal

Objektorienterad Programkonstruktion. Föreläsning 2 2 nov 2016

SI-pass 4. Johan Brook och Jesper Persson. 25 september Diskutera och svara på om påståendena nedan är äkta sanningar eller listiga lögner.

Static vs Dynamic binding Polymorfism. Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018

Föreläsning 13 Innehåll

Static vs Dynamic binding Polymorfism. Objekt-orienterad programmering och design Alex Gerdes, 2016

Omtentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-17, TDA540. Dag: , Tid:

TENTAMEN OOP

Idag. Exempel, version 2. Exempel, version 3. Ett lite större exempel

Objektorienterad Programmering (OOP) Murach s: kap 12-16

Arv innebär att man skapar en ny klass (subklass) utifrån en redan existerande klass (superklass, basklass).

DIAGNOSTISKT PROV. Tid. Hjälpmedel. Antaganden. Rättning. Övrigt. Diagnostiskt Prov. Klockan Inga

Tentamen ID1004 Objektorienterad programmering May 29, 2012

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

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

Java-syntax (arv) Exempel: public class Crow extends Bird {... } Jämför med Lab 1: public class FirstApp extends Frame {... }

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

Systemvetarutbildningen och dataekonomutbildningen

OOP Objekt-orienterad programmering

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

Tentamen. DD2385 Programutvecklingsteknik vt 2015 Fredagen den 5 juni 2015 kl Hjälpmedel: penna, suddgummi, linjal

Systemvetarutbildningen och dataekonomutbildningen

Outline. Objektorienterad Programmering (TDDC77) Åsidosättning. Signatur. Åsidosättning. Abstrakta klasser. Ahmed Rezine.

Målen med OOSU. Objektorienterad programmering. Objektorienterad programmering. Karlstads Universitet, Johan Öfverberg 1

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

Polymorfi. Objektorienterad och komponentbaserad programmering

Laboration 2: Designmönster

Grundläggande programmering med C# 7,5 högskolepoäng

Tentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-17, TDA540. Dag: , Tid:

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

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

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

Tentamen. DD2385 Programutvecklingsteknik vt 2011 Tisdagen den 24 maj 2011 kl Hjälpmedel: penna, suddgummi, linjal

7,5 högskolepoäng. Objektorienterad systemutveckling I Provmoment: Ladokkod: 21OS1B Tentamen ges för: Lycka till! /Peter & Petter

Föreläsning 5-6 Innehåll

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

Objektorienterad Programmering (TDDC77)

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

7,5 högskolepoäng. Objektorienterad systemutveckling I. Lycka till! /Peter & Petter. Provmoment: Ladokkod: 21OS1B Tentamen ges för:

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

LÖSNINGSFÖRSLAG. Tentamen. Objektorienterad modellering och design. EDA665, 4 poäng

TENTAMEN. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. VT-13 Datum: Tid: kl

Vad är ett objekt? Tillstånd och beteende. Vad är ett objekt? Exempel

DAT043 Objektorienterad Programmering

TENTAMEN. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. HT-15 Datum: Tid: kl

Föreläsning 12. Föreläsning 12. Rörliga figurer Klassen Timer Undantag Något om applets. Rörliga appletsfigurer Klassen Timer Undantag

OOP Objekt-orienterad programmering

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

F4. programmeringsteknik och Matlab

Objektorienterad Systemutveckling 1 (7,5 hp)

Laboration 2: Designmönster

/* * * Lösningsförslag tentamen DIT950 * Datum * */ /* * -1 - */ För samtliga gäller,se föreläsningsanteckningar.

Instuderingsuppgifter läsvecka 2

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

Lösningsförslag till tentamen i EDAF25 Objektorienterad modellering och design Helsingborg

Outline. Objektorienterad Programmering (TDDC77) Signatur. Klassen calculator. Överlagring (overloading) Arv (inheritance) Ahmed Rezine

Mutability och State. Objekt-orienterad programmering och design (DIT953) Niklas Broberg / Johannes Åman Pohjola, 2018

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

Tentamen DE12, IMIT12, SYST12, ITEK11 (även öppen för övriga)

Tentamen i Objektorienterad modellering och design Helsingborg

Transkript:

Objektorienterad mjukvaruutveckling Provmoment: Tentamen Ladokkod: 21OO1B Tentamen ges för: Systemarkitektprogrammet 15 högskolepoäng Namn: (Ifylles av student) Personnummer: (Ifylles av student) Tentamensdatum: 2015-10-23 Tid: 09:00 11:00, 13:00-15:00 Hjälpmedel: Dator (kl 13-15) Totalt antal poäng på tentamen: För att få respektive betyg krävs: G=25 VG=38 50 poäng Allmänna anvisningar: Tentan har en teoretisk och en praktisk del. Den teoretiska delen genomförs mellan kl 9-11, den praktiska genomförs kl 13-15. Fyll i ditt namn, personnummer och dina svar (genom att sätta kryss i svarsmatrisen) på nästa sida. Kontot för den praktiska delen lämnas ut kl 13. Den praktiska delen rättas endast om minst 50% av svaren på den teoretiska delen är korrekta. Samtliga teoretiska frågor kan ha 1-4 korrekta svar. Varje teoretisk fråga ger 1 poäng. Spara alla filer på F: om inte annat specifikt anges. Stäng ner samtliga applikationer och logga ut (via ikon) när du är klar med tentamen. Vid olösliga problem med datorkonto, ta ett nytt och lämna in även detta i tentamensmappen. Den sista uppgiften (uppgift 23) redovisas på separata blad och lämnas in i tentamensmappen. Rättningstiden är som längst tre veckor Viktigt! Glöm inte att skriva namn på alla blad du lämnar in. Lycka till! Ansvarig lärare: Tuve Löfström Telefonnummer: 033 435 4236 1

Del 1 - kl 9-11 Namn: (Ifylles av student) Personnummer: (Ifylles av student) Svarsmatris: A B C D 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 2

Programmeringsteori 1. Which of the following statements are true? A. A constructor may be static. B. A constructor may be private. C. A constructor may invoke a static method. D. A constructor may invoke an overloaded constructor. 2. Which of the following statements are true? A. To overload a method, the method must be defined in the subclass using the same signature and compatible return type as in its superclass. B. Overriding a method is to provide more than one method with the same name but with different signatures to distinguish them. C. It is a compilation error if two methods differ only in return type in the same class. D. A private method cannot be overridden. If a method defined in a subclass is private in its superclass, the two methods are completely unrelated. 3. Which of the following statements are true? A. A public class can be accessed by a class from a different package. B. A private method can be accessed by a class in a different package. C. A protected method cannot be accessed by a subclass in a different package. D. A method with no visibility modifier can be accessed by a class in a different package. 4. Vilka av följande påståenden är korrekta? A. Nyckelordet throw används både för att deklarera undantag och för att kasta undantag. B. Om ett undantags superklass och subklass används i var sitt catch block, måste catch blocket för superklassen komma före catch blocket för subklassen. C. Om return är den enda satsen i ett try block, kommer koden i finally blocket att exekveras. D. Om ett unchecked undantag kastas i en metod, måste den antingen fångas i metoden eller så måste metoden deklarera att den kastar undantaget. 5. Vilka av följande påståenden är korrekta? A. När vänster musknapp klickas, skapas ett ActionEvent objekt. B. Superklassen för alla händelseobjekt är EventObjekt. C. Varje händelseobjekt innehåller metoderna getsource() och isshiftdown(). D. En händelsehanterarklass för ActionEvent-händelser måste implementera interfacet ActionEventHandler. 3

6. Vilka av följande påståenden är korrekta? A. En inre klass kan deklareras som public eller private, och följer samma synlighetsregler som andra attribut i den yttre klassen. B. En icke-statisk inre klass kan alltid komma åt den yttre klassens privata attribut. C. En anonym inre klass måste alltid ärva från en superklass eller implementera ett interface, men kan inte använda nyckelorden extends eller implements. D. En anonym inre klass använder alltid sin superklass parameterlösa konstruktor för att skapa en instans. Om en anonym inre klass implementerar ett interface, är konstruktorn Object(). 7. Vilka av följande påståenden är korrekta? A. Ett MenuItem kan generera ItemEvent-händelser. B. En modal dialog blockerar andra fönster i applikationen. C. En GridPane (GridLayout i Swing) innehåller 5 regioner (övre, undre, vänster, höger och mitten). D. En ComboBox (JComboBox i Swing) tillåter användaren att välja flera val samtidigt. 8. Vilka av följande påståenden är korrekta? A. En Applet får läsa, men inte skriva till, filer på användarens dator. B. En Applet får inte exekvera program på användarens dator. C. En Applet får inte skapa nätverkskopplingar från användarens dator till någon annan dator. D. En Applet innehåller metoden stop() som anropas då användaren lämnar webbsidan som innehåller Appleten. 9. Vilka av följande påståenden är korrekta? A. En tråd kan befinna sig i tillstånden; New, Ready, Running, Blocked, Waiting och Finished. B. Ett objekt som implementerar Runnable interfacet representerar ett jobb (task) som kan köras på en egen tråd. C. För att starta exekveringen av en tråd, anropas trådens run() metod, som i sin tur anropar start() metoden i Runnable interfacet. D. Med en semafor kan flera trådar ges samtida åtkomst till en delad resurs. 10. Vilka av följande påståenden är korrekta? A. Ett Condition objekt skapas genom att anropa en metod på ett objekt som implementerar Lock interfacet. B. För att anropa metoder på ett Condition objekt, måste låset som Condition objektet är associerat med erhållas först. C. När signal() metoden anropas på ett Condition objekt, väcks samtliga trådar som har anropat await() metoden på samma Condition objekt. D. När await() metoden anropas på ett Condition objekt, släpper tråden låset som är associerat med Condition objektet. 4

Analys- och designteori 11. Betrakta nedanstående figur och kryssa i alternativ som är korrekta på svarsbladet. A. Det finns en namngiven variabel av PercentDiscountPricingStrategy i Sale som möjliggör gettotal-anropet B. lineitems är ett samlingsobjekt i Sale C. Anropet getsubtotal sker till variabeln lineitems. D. Anropet getsubtotal sker till objekten i lineitems. 12. Vilka alternativ är korrekta avseende diagrammet nedan? A. Varje gång man i ett interaktionsdiagram anropar en abstrakt metod i en superklass måste man ange vilken subklass man anropar så att man kan designa lösningen för den konkreta subklassen. B. Interaktionsdiagram som inkluderar ett anrop till metoden authorize i någon av de konkreta subklasserna till Payment avslutas med detta anrop. C. Abstrakta metoder måste alltid designas med separata interaktionsdiagram för varje subklass. D. När man anropar en klass som implementerar ett interface så gäller exakt samma regler som för abstrakta klasser och metoder. 5

13. Vilka alternativ är korrekta avseende figuren nedan? { state.delete( this ) } { state.rollback( this ) } PersistentObject oid : OID state : PObjectState commit() delete() rollback() save() setstate(pobjectstate) { state.commit( this ) } * 1 { state.save( this ) } PObjectState commit(obj : PersistentObject) delete(obj : PersistentObject) rollback(obj : PersistentObject) save(obj : PersistentObject) { // default no-op // bodies for // each method } Product Specification Sale OldDirty State commit() delete() rollback() OldClean State delete() save() New State commit() OldDelete State commit() rollback() { // commit PersistenceFacade.getInstance().update( obj ) obj.setstate( OldCleanState.getInstance() ) } { // rollback PersistenceFacade.getInstance().reload( obj ) obj.setstate( OldCleanState.getInstance() ) } { // delete obj.setstate( OldDeleteState.getInstance() ) } { // save obj.setstate( OldDirtyState.getInstance() ) } { // commit PersistenceFacade.getInstance().insert( obj ) obj.setstate( OldCleanState.getInstance() ) } { // commit PersistenceFacade.getInstance().delete( obj ) obj.setstate( DeletedState.getInstance() ) } A. De tillstånd som figuren representerar är commit, delete, rollback och save. B. Figuren illustrerar hur en implementation för att hantera tillstånd hos objekt som skall synkas med en databas kan se ut. C. Behov av att hantera olika tillstånd är något som sällan uppträder annat vid databashantering. D. Det problem som State-mönstret hanterar är att ett objekts beteende styrs av vilket tillstånd som objektet befinner sig i. 14. Vilka av följande påståenden är korrekta? A. Objektorienterad systemutveckling leder till en bra spårbarhet mellan problemdomänen och lösningsdomänen B. Objektorienterad systemutveckling följer ett naturligt tankesätt C. Objektorienterad systemutveckling skapar smidiga övergångar mellan olika faser D. Objektorienterad systemutveckling leder till lösningar som är motståndskraftiga mot förändring 6

15. Kryssa i alternativ som är korrekta avseende Agile UP på svarsbladet. A. Det viktigaste är att all dokumentation alltid hålls uppdaterad och följer korrekt standard B. Det finns en detaljplan för alla steg i utvecklingen som sätts upp under inception och som måste hållas C. Prioritera att alltid ha detaljerade och korrekta diagram gjorda i ett CASE verktyg D. Ett viktigt syfte med dokumentation och diagram är som underlag för kommunikation mellan utvecklare och med användare och beställare. 16. Vilka av följande påståenden är korrekta angående utveckling enligt UP? A. Vanliga iterationer är Inception, Construction, Realization och Transition. B. Use case-modellen består uteslutande av textdokument. C. Use case utgör ett kontrakt som beskriver vad systemet skall göra. D. Man måste ha skrivit klart samtliga use case under Elaboration-fasen. 17. Vilka av följande är fördelar som kan erhållas genom användning av mock-objects vid enhetstestning? A. Tillåter att test skrivs för en enhet även om nödvändiga delar av systemet ej har implementerats ännu. B. Snabbar upp tester som annars skulle kunna ta lång tid att exekvera. C. Färre tester behöver skapas för att testa lika mycket kod. D. Testkoden blir mer lättförstådd och enkel att underhålla. 18. Vilka av följande påståenden är korrekta? A. Abstract Factory mönstret används när vi vill gömma ett komplext subsystem bakom ett simpelt interface. B. Eager initialization används när vi vill undvika att skapa ett Singleton objekt tills objektet först behövs. C. Bridge mönstret används när vi vill separera en abstraktion från dess implementering så att båda kan variera var för sig. D. Adapter mönstret används för att skapa en brygga mellan två inkompatibla interface. 7

19. Vilka av följande påståenden är korrekta? A. Composite mönstret används när vi vill ändra på eller tillföra funktionalitet till ett objekt utan att ändra på objektets struktur. B. Mediator mönstret används när vi vill notifiera andra objekt om förändringar i ett annat objekts inre tillstånd. C. Memento mönstret används för att lagra samt återställa det inre tillståndet av ett objekt utan att påverka objektets inkapsling. D. State mönstret används för att ändra beteendet hos ett objekt genom att ändra på objektets inre tillstånd. 20. Vilka tre kategorier av GoF designmönster finns? A. Creational, Structural och Behavioral. B. Executional, Structural och Behavioral. C. Creational, Executional och Behavioral. D. Inga av de ovanstående valen. 8