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