Objektorienterad systemutveckling 2 Provmoment: Ladokkod: Tentamen ges för: TentamensKod: 7,5 högskolepoäng Tentamen C1OB2B Systemvetare, dataekonomer och affärsinformatiker Tentamensdatum: 2018-03-21 Tid: 14-19 Hjälpmedel: Papper, penna samt linjal är tillåtna hjälpmedel. Inga andra hjälpmedel är tillåtna. Totalt antal poäng på tentamen: 75 För att få respektive betyg krävs: För Godkänt krävs minst 38 poäng. För Väl Godkänt krävs minst 56 poäng. Allmänna anvisningar: Sätt ett kryss i tabellerna för rätt alternativ för de teoretiska kryssfrågorna. Varje fråga kan endast ha ett rätt alternativ. Flera kryss ger 0 poäng. Se till att påbörja varje ny del på ett nytt papper! Nästkommande tentamenstillfälle: 2018-05-03 Rättningstiden är i normalfall 15 arbetsdagar, till detta tillkommer upp till 5 arbetsdagar för administration. Viktigt! Glöm inte att skriva Tentamenskod på alla blad du lämnar in. Lycka till! Ansvarig lärare: Telefonnummer:
OOAD, arkitektur och designmönster (25 p) Teoretisk del (10 p) Sätt ett kryss för korrekt alternativ. a b c d 1 2 3 4 5 1) Vilken av nedanstående är en lämplig komponent för affärslagret? (1 p) a) Dataaccesskomponenter (Data Access Components). b) Presentationslogikkomponenter (Presentation Logic Components). c) Applikationsfasad (Application Facade). d) Service Agents. 2) Vilket av följande påståenden om GRASP designprinciperna är sant? (1 p) a) Låg koppling (low coupling) går ut på att objekt av en klass inte skall ha vitt spridda ansvar utan hela klassens funktionalitet skall vara relaterad och hänga ihop. b) GRASP principerna behandlar främst principer för att distribuera applikationens delar till olika maskiner. c) Controller föreskriver att det första objektet utanför UI:t som tar emot en systemhändelse från UI:t bör vara ett som antingen representerar hela (del)systemet eller en som representerar det use case som händelsen gäller. d) Högt sammanhang/fokus (high cohesion) föreskriver att kod som behandlar data av en viss typ skall läggas i samma klass som innehåller själva datan. 3) Vilken av de följande arkitekturstilarna handlar INTE främst om applikationens logiska arkitektur (och struktur)? (1 p) a) N-Tier. b) Domain Driven Design. c) Component-Based Architecture. d) Object-Oriented. 4) Vilket av följande påståenden angående objektorienterad analys och design enligt Agile UP är korrekt? (1 p) a) Utvecklingen av ett system delas upp i iterationer där varje iteration består av arbete på en artefakt. b) Agile UP förespråkar användning av interaktionsdiagram i designmodellen (Design Model) som en viktig del i att skapa lösningen. c) Alla faser pågår kontinuerligt och parallellt. d) Systemoperationskontrakt (operation contracts) hör ihop med design klassdiagram (Design Class Diagrams) och hör därför till designmodellen (Design Model). 1
5) Vilket av följande påståenden är korrekt med avseende på diagrammet nedan? (1 p) a) Diagrammet är ett UML sekvensdiagram. b) Diagrammet visar användning av GoF mönstret Singleton. c) Diagrammet visar användning av GRASP mönstret/principen Expert. d) Diagrammet hör till domänmodellen. 6) Beskriv vad UP artifakten designsekvensdiagram (Design Sequence Diagram) är, var den används i OOAD processen och vad den innehåller (de viktigaste delarna). (2.5 p) 7) Designprinciperna SOLID representerar 5 principer som bör vara vägledande vid konstruktion av klasser. En av dessa är Interface segregation principle. Beskriv vad denna princip innebär och anknyt till relaterade designprinciper inom GRASP. (2.5 p) 2
Praktisk del (15 p) 8) Gör ett systemsekvensdiagram (system sequence diagram, SSD) för hela huvudscenariot av användningsfallet (use-case) Reserve a Vehicle. Ange för varje meddelande (t.ex. till vänster om diagrammet) vilket (del)steg i användningsfallet och scenariot det hör ihop med. Redovisa och kommentera eventuella antaganden du behöver göra utöver dokumenten i Appendix sist i tesen. (5 p) 9) Gör ett systemoperationskontrakt (system operation contract) för den systemhändelse, förmodligen reservevehicle, som skapar själva reservationen i användningsfallet Reserve a Vehicle som du gjort en SSD för ovan. Redovisa och kommentera eventuella antaganden du behöver göra utöver dokumenten i Appendix sist i tesen. (5 p) 10) Gör och beskriv en objektorienterad design för att implementera systemoperationen returnvehicle(distancedriven : float) : Invoice som ingår i användningsfallet Return a Vehicle med hjälp av ett designsekvensdiagram (design sequence diagram) och ett designklassdiagram (design class diagram) som visar de inblandade klasserna och deras för denna operation relevanta interaktioner, attribut och metoder. Redovisa och kommentera eventuella antaganden du behöver göra utöver dokumenten i Appendix sist i tesen. (5 p) 3
Datalager och databaser (25 p) Teoretisk del (10 p) Sätt ett kryss för korrekt alternativ. a b c d 11 12 13 14 15 11) Genom vilket nyckelord kan vi skapa ett nytt objekt i en LINQ fråga och sedan selektera detta objekt? (1 p) a) out b) new c) select d) create 12) Entities och Associations är centrala begrepp för vilken teknik i Entity Framework? (1 p) a) Model First b) Object First c) Code First d) Database First 13) Data-annotations används i följande teknik i Entity Framework? (1p) a) Code First b) Model First c) EF Designer from database d) LINQ 14) Vilket av nedanstående är INTE ett nyckelord som används i LINQ? (1 p) a) from b) foreach c) select d) var 15) Följande metodanrop görs för att lägga till objekt i databasen med hjälp av Entity Framework (1 p) a) SaveChanges() b) Save() c) Apply() d) Insert() 16) För att ställa en LINQ-fråga måste man utföra tre grundläggande åtgärder. Vilka? (3 p) 17) Vilken är den grundläggande skillnaden mellan Entity Frameworks Code First och Database First? (2 p) 4
Praktisk del (15 p) 18) Använd LINQ för att selektera de namn som innehåller bokstaven n ur nedanstående stringarray och skriv ut resultatet. Jag vill att ni trots brist på kompilator skriver koden så exakt som möjligt. (5 p) class Program { static void Main(string[] args) { string[] names = { "Anna", "Rikard", "Anders","Stina", "Martin", "Kalle", "Åsa" }; } } //er kod kommer här 19) I Code First definierar man först Plain Old CLR Objects (POCOs). Definiera nedan i C# ett POCO som ska representera ett passenger-objekt innehållandes id, förnamn, efternamn med lämpliga getters och setters egenskaper (5 p). 20) Utgå ifrån nedanstående kod. Er uppgift är att med LINQ skriva en inner join för samlingarna products och categories och sedan skriva ut innehållet i en konsolapplikation. (5 p) List<Product> products = new List<Product>() { new Product() { Id = 1, Name = "Nvidia 1080 TI", CategoryId = 1 }, new Product() { Id = 2, Name = "Razer Black Widow 2018", CategoryId = 2 }, new Product() { Id = 3, Name = "Razer Mamba", CategoryId = 3 } }; List<Category> categories = new List<Category>() { new Category() { Id = 1, Name="Graphical Processor Unit"}, new Category() { Id = 2, Name="Keyboard"}, new Category() { Id = 3, Name="Mouse"}, }; 5
Användargränssnitt (25 p) Teoretisk del (15 p) Sätt ett kryss för korrekt alternativ. a b c d e 21 22 23 24 25 26 21) Windows Presentation Foundation (WPF) provides a simple and consistent way for applications to present and interact with data. Which works in two ways or one way. What is this described feature? (1 p) a) Events b) Properties c) Interfaces d) LINQ e) Data binding 22) Which of these statements are correct: (1 p) a) All components are available at runtime as instances. b) Properties are available prior to runtime and not accessible during runtime. c) Every component has a Text property. d) Components are limited to one event. 23) In Windows Presentation Foundation, in order to notify clients that a model s property has changed value, the following needs to be done: (1 p) a) The model needs to inherit from the Form class. b) The model needs to inherit from the System.Data.Linq class. c) The model needs to implement the INotifyPropertyChanged interface. d) None of the above, it works without any extras as long as the model exposes properties. 24) In WinForms all components have the ability to take actions by the user for example clicking the mouse or pressing a key. What is the proper name of this described concept? (1 p) a) Commands b) Properties c) Events d) Actions 6
25) In Windows Presentation Foundation to connect a ViewModel instance to a View one has to populate the following property of the view. (1 p) a) DataContext b) Binding c) Collection d) ViewBag 26) What component excludes all other options in a group? (1 p) a) TextBox b) Label c) RadioButton d) Checkbox 27) Förklara vad ViewModel i MVVM designmönstret är. (5 p) 28) Med egna ord förklara vad ObservableCollection<object> möjligör i en Windows Presentation Foundation Applikation som inte vanliga listor kan. (4 p) 7
Praktisk del (10 p) 29) Om vi utgår ifrån att vi i ett system har en databas med lagrad information om olika böcker och dess författare. Hur kan vi i en konsol presentera informationen för respektive bok och dess författare. Er uppgift är att ta vid där den förra utvecklaren lämnade koden presenterad nedanför ( Börja här ). (5 p) class Program { static void Main(string[] args) { BusinessManager bm = new BusinessManager(); List<Book> books = bm.getbooks(); } } // Börja här 30) Skapa en design i XAML där en ListView komponent presenterar innehållet för klassen Author som tidigare uppgift introducerade. Bindingen är redan populerad med en samling av datatypen Authors. Justeringar behövs bara göras till <ListView> komponenten nedanför. (5 p) <Window x:class="wpfapp1.mainwindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:wpfapp1" mc:ignorable="d" Title="MainWindow" Height="350" Width="525"> <Grid> <ListView> <!-- Er kod börjar här --> <ListView> </Grid> </Window> 8
Appendix: Documentation Vehicle Pool Use Case UC1: Reserve a vehicle Scope: Vehicle Pool application Level: user goal Primary Actor: Member Stakeholders and Interests: - Member: Wants to quickly reserve an available vehicle for use. - Company: Wants to accurately record reservations and satisfy customer interests. Wants to ensure that availability of vehicles is accurately recorded. Preconditions: member does not already have a reserved vehicle. Success Guarantee (or Postconditions): Vehicle reservation is recorded. Vehicle availability is updated. Main Success Scenario (or Basic Flow): 1. Member arrives at computer terminal wanting to reserve a vehicle for immediate use. 2. Member logs in using login name and password. 3. System validates login and presents list of available vehicles. 4. Member selects one vehicle and indicates that she/he wants to reserve it. 5. System registers the reservation and updates vehicle availability. Use Case UC2: Return a vehicle Scope: Vehicle Pool application Level: user goal Primary Actor: Member Stakeholders and Interests: - Member: Wants to quickly return the vehicle and receive the invoice. - Company: Wants to accurately record return of vehicle and satisfy customer interests. Wants to ensure that the invoice and availability of vehicles is accurately recorded. Preconditions: Member has a reserved vehicle. Success Guarantee (or Postconditions): Termination of the vehicle reservation is recorded. The invoice is recorded. Vehicle availability is updated. Main Success Scenario (or Basic Flow): 1. Member arrives at computer terminal wanting to return a reserved vehicle. 2. Member logs in using login name and password. 3. System validates login and presents a summary of the current state of the reservation. 4. Member inputs the distance driven and indicates the return of the vehicle. 5. System registers the end of the reservation, creates the invoice and updates vehicle availability. 9
Domänmodell (partiell) System Operation Contracts Operation Contract: returnvehicle Operation: returnvehicle(distancedriven : float) : Invoice Cross references: Use cases: Return Vehicle Preconditions: The Member is logged in and has a reserved vehicle. Postconditions: The end-time (attribute to) of the Member s active Reservation, r, was initialized. An Invoice, i, instance was created. i was associated with the Reservation r. i was associated with the Ledger l. Attributes of i were initialized. 10