Objektorienterad Systemutveckling (7,5 hp)

Relevanta dokument
Objektorienterad Systemutveckling 1 (7,5 hp)

Objektorienterad Systemutveckling (7,5 hp)

Grundläggande programmering med C# 7,5 högskolepoäng. Provmoment: Ladokkod: Tentamen ges för: TEN1 NGC011 ADAEK17, ASYST17 samt öppen för alla

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

Grundläggande programmering med C# 7,5 högskolepoäng. Provmoment: Ladokkod: Tentamen ges för:

Arv. Objektorienterad och komponentbaserad programmering

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

Introduktion till Programutveckling - från Information till Tillämpning (7,5 hp)

Tentamen i EDAF25. 1 juni Skrivtid: Skriv inte med färgpenna enda tillåtna färg är svart/blyerts.

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

Provmoment: TEN1 Ladokkod: NGC011 Tentamen ges för: Tentamen DE14, IMIT14 och SYST14 samt öppen för alla

Viktigt! Glöm inte att skriva tentamenskod på alla blad du lämnar in.

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

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

UML. Översikt UML. Relationer mellan klasser. A är ett aggregerat av B:n. Kontor aggregat av Enheter. 12 olika diagramtyper, bl.a.

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

Introduktion till Programutveckling - från Information till Tillämpning (7,5 hp)

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

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

Tentamen på kursen Webbdesign, 7,5 hp

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

OOP Objekt-orienterad programmering

Tentamen NOA011 Systemarkitektprogrammet

TENTAMEN OOP

Polymorfi. Objektorienterad och komponentbaserad programmering

IT och Omvärlden (NIT01A 7,5 hp)

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

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

Tentamen på kursen Webbdesign, 7,5 hp

Objekt-orienterad programmering. Klassbegreppet och C++ UML. UMLs fördelar

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

Del av projektuppgiften. Systemarkitektprogrammet

PROGRAMMERINGSTEKNIK TIN212

Tentamen på kursen Informationsdesign, 7,5 hp

Mer OOP. Variation i typ. Medlen repetition. Generiska klasser. Gränssnitt - Interface. Mer om klasser Några exempel UML

Klasshierarkier - repetition

Abstrakta Klasser 2. Kodning är bara en liten del i programvaruutvecklingen 6% 1% 6% Abstrakta Klasser - deklaration. Programutveckling sker i faser

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 14

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

Tentamen i TDP004 Objektorienterad Programmering Lösningsförslag

Omtentamen på kursen Webbdesign, 7,5 hp

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

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 1

Objektorientering. Grunderna i OO

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

Föreläsning 13 Innehåll

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

Introduktion. Byggstenar TDBA

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

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

Objekt-orienterad programmering och design. DIT953 Niklas Broberg, 2018

Lösningar till tentamen i EDAF25

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

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

Introduktion till Programutveckling - från Information till Tillämpning (7,5 hp)

Tentamen NOA011 Systemarkitektprogrammet. 51 poäng

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 2

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

TENTAMEN OOP

Tentamen i Objektorienterad modellering och design

Abstrakt klass. DD2385 Programutvecklingsteknik Några bilder till föreläsning 4 7/ Exempel: Implementation av Schackpjäser.

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

Objektorienterade programmeringsspråk. Objektorienterade språk. Den objekt-orienterade modellen. Jämför med icke-oo

Systemvetarutbildningen och dataekonomutbildningen

Extentamen i 2D1359 Objektorinterad modellering programmering och analys Tisdag den 13 oktober 1998 kl

Objektorientering Klasser

Tentamen i Objektorienterad modellering och design Helsingborg

Föreläsning 4. Klass. Klassdeklaration. Klasser Och Objekt

Abstrakt klass. DD2385 Programutvecklingsteknik Några bilder till föreläsning 4 31/ Exempel: Implementation av Schackpjäser.

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

Introduktion till arv

OOP Tentamen

Objektorienterad Programmering DAT043. Föreläsning 10 13/2-18 Moa Johansson (delvis baserat på Fredrik Lindblads material)

Programmering i C++ EDA623 Arv. EDA623 (Föreläsning 6) HT / 42

Konstruktion av klasser med klasser

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

TDDC76 Programmering och datastrukturer

Objekt-orienterad utveckling. Objektorienterad analys och design. Objekt-orienterad programutveckling. Objekt-orienterad analys och design: Litteratur

Objektorienterad programmering Föreläsning 8. Copyright Mahmud Al Hakim Agenda (halvdag)

Anmä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 i Objektorienterad modellering och diskreta strukturer

Lösningar till tentamen i EDAF25

Analys och design. Objekt. Klass. med hjälp av CRC. Klassdiagram

Tentamen ID1004 Objektorienterad programmering October 29, 2013

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

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

Omtentamen i OOPW, 29 augusti 2013 kl. 9-13

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING

Relationer mellan objekt

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

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

Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad. Skriv ditt idnummer på varje blad (så att vi inte slarvar bort dem).

TDP005. Föreläsning 3 - UML. Filip Strömbäck

OOP Tenta

Objektorienterad analys och design

Objektorienterad analys och design

Lösningsförslag. Programmeringsmetodik, KV: Java och OOP. 17 januari 2004

Arv och polymorfism i Java

DAT043 - Föreläsning 7

Transkript:

[ sida 1 ] Objektorienterad Systemutveckling (7,5 hp) Provmoment: Ladokkod: Tentamen ges för: Tentamen 21OS1B DE11, IMIT11, SYST11 (omtentamen) Datum och tid: 2013-05-22, kl 09.00 13.00 Hjälpmedel: Inga hjälpmedel tillåtna Tentamen är normalt färdigrättad inom 4 veckor (2013-06-19). Därefter kan inregistreringen av resultatet ta ca en vecka, dvs att resultatet bör vara synligt på MittKonto senast 2013-06-26. Betyg: OBS! Denna tentamen är gjord i flera delar. Eventuella godkända delar från tentamen 2013-02-25 blir automatiskt överförda till denna tentamen och rättas därför inte vid denna tentamen. Om någon återstående del av tentamen inte når upp till godkänt för den delen (50%), blir betyget på tentamen Underkänd. För betyget Godkänd eller högre måste samtliga delar vara godkända, dvs uppnå minst 50% av möjliga poäng på respektive del. Om delar från tidigare tentamen förts över kommer poängen på kvarvarande delar att räknas om relativt mot den förbrukade tiden vid denna tentamen. För betyget Väl Godkänd måste därefter minst 75% av möjliga poäng ha uppnåtts på tentamen som helhet. Maxpoäng på denna tentamen är 100 poäng. Allmänna anvisningar: 1. Skriv endast på ena sidan av pappret, ej fram och baksida. 2. Ange tydligt till vilken fråga svaret hör. 3. Lägg svaren i samma ordning som frågorna i tentamenshäftet (del A = fråga 1) 4. Svårlästa svar kan inte rättas! 5. Ansträng er att besvara frågorna tydligt. 6. Markera på omslaget till tentamen vilka frågor du lämnat svar på. 7. Om du finner uppgifterna i tentamenstexten ofullständiga skall du göra egna antaganden för de uppgifter du saknar. Redovisa dina egna antaganden. Samtliga frågor besvaras med kurslitteratur och föreläsningar som utgångspunkt. Om du använt ytterligare informationsmaterial för dina svar, anger du vilket material i dina svar. Ett tips är att du ägnar som första steg lite tid åt att gå igenom frågorna för att därigenom planera och disponera tiden på bästa sätt. Du bör även vid denna inspektion fundera lite över hur frågan är formulerad för att uttolka frågans intention. Begrepp som t ex, diskutera, exemplifiera, beskriv och förklara säger något om frågans innebörd och hur du bör svara. Lycka till med tentamen! Petter Dessne (033-435 4715) Del B Björn Abelli (070-99 55 910) Del A, C, D OBS!! Vid en skriftlig tentamen måste studenten visa att han/hon har tillräckliga kunskaper inom problemområdet. Många gånger är det möjligt att ge exempel och illustrera, ibland det bästa eller till och med det enda sättet, och kan påverka poängsättningen för svaret. Om du anser att en frågeställning inte är komplett, så är det upp till dig att komplettera med eventuellt saknade förutsättningarna. I sådana fall måste du också ange eventuella tillkommande förutsättningar i ditt svar.

[ sida 2 ] OBS! Denna tentamen är gjord i flera delar. Om del A av tentamen inte når upp till godkänt (50%), blir betyget på tentamen Underkänd; Om del A når upp till Godkänt rättas övriga delar. För betyget Godkänd eller högre måste samtliga delar vara godkända, dvs uppnå minst 50% av möjliga poäng på delen. För betyget Väl Godkänd måste därutöver 75% av möjliga poäng ha uppnåtts på tentamen som helhet. Markera rätt svar för kryssfrågorna med ett tydligt X i därför avsedd ruta i svarsfälten nedan. På kryssfrågorna är endast ett svar korrekt. Om mer än en ruta är ikryssad på en fråga räknas det som ett felaktigt svar. Svarsformulär för del A (huvudfråga 1) 1 6 11 16 21 2 7 12 17 22 3 8 13 18 23 4 9 14 19 24 5 10 15 20 25 Varje korrekt svar ger 1 poäng, dvs max 25 poäng för denna del. Glöm inte att lägga denna sida i det gula tentamenshäftet!

[ sida 3 ] Frågor för del A (Huvudfråga 1). Fyll i dina svar på sidan 2! 1. I diagrammet till höger betyder # att attributet ankomst har synlighet a. public b. protected c. private d. internal 2. I diagrammet till höger betyder - att attributet namn har synlighet a. public b. protected c. private d. internal 3. Diagrammet till höger innehåller ett exempel på designmönstret a. decorator b. facade c. composite d. iterator 4. Att Resa är i kursiv stil innebär att den klassen är.. a. ett interface b. abstrakt c. en subklass d. indikativ 5. Triangeln innebär att Enkelresa a. är en superklass b. ärver alla egenskaper Resa har c. kan ha högst tre instanser d. ingår i klassen Resa 6. Romben betyder att en instans av Rundresa a. har ett högre värde än andra instanser b. automatlagras persistent c. aggregerar instanser av Resa eller någon av dess subklasser d. får implementeras i C# 7. I diagrammet betyder 2..* att a. en Rundresa associeras till högst 2 instanser av Resa b. en Resa associeras till högst 2 instanser av Rundresa c. en Rundresa associeras till minst 2 instanser av Resa d. en Resa associeras till minst 2 instanser av Rundresa 8. Två associationer i diagrammet till höger har pilhuvuden. Dessa pilhuvuden betyder a. att Resa sänder meddelandena till respektive från till Ort b. att ett meddelande inte får en retur-respons c. att associationen är uni-directional d. att associationen är bi-directional 9. En komposition innebär.. a. en svagare koppling än ett aggregat, men starkare än en enkel association b. en svagare koppling än en enkel association, men starkare än ett aggregat c. en starkare koppling än både aggregat och en enkla associationer, d. en svagare koppling än både aggregat och en enkla associationer 10. Med multipelt arv menas a. att en klass kan vara superklass till flera subklasser b. att en klass kan vara subklass till flera superklasser c. att ett interface kan implementeras utav flera klasser d. att en klass kan implementera flera interface

[ sida 4 ] 11. Med dynamisk bindning avses a. att ett anrop av en metod i ett annat objekt redan vid kompileringstillfället binds till en adress dit exekveringen skall hoppa (läsa instruktionerna) b. att ett anrop av en metod i ett annat objekt först vid själva exekveringen binds till en adress dit exekveringen skall hoppa (läsa instruktionerna) c. att en operation i en subklass blir en annan metod om vi har en annan signatur d. att en operation i en subklass har samma signatur som en operation i dess basklass 12. Med överskuggning avses a. att ett anrop av en metod i ett annat objekt redan vid kompileringstillfället binds till en adress dit exekveringen skall hoppa (läsa instruktionerna) b. att ett anrop av en metod i ett annat objekt först vid själva exekveringen binds till en adress dit exekveringen skall hoppa (läsa instruktionerna) c. att en operation i en subklass blir en annan metod om vi har en annan signatur d. att en operation i en subklass har samma signatur som en operation i dess basklass 13. Ett grundbegrepp inom OO är inkapsling, som egentligen är två skilda principer. Vad kan sägas att vara en generell princip om den del som avser information hiding? a. att attribut bör ha synligheten private eller protected b. att attribut bör ha synligheten public eller internal c. att operationer bör ha synligheten private d. att operationer bör implementeras med privata metoder 14. I klassbeskrivningen till höger så är tabell a. ett interface b. en klass c. ett attribut d. en stereotyp 15. I klassdiagrammet till höger, så är Listener a. ett event b. ett meddelande c. ett interface d. en operation 16. Vilket GoF-mönster kan diagrammet i fråga 15 sägas illustrera? a. Decorator b. Mediator c. Memento d. Observer 17. Vilken av följande kodrader skulle kunna existera i en direkt implementation av klassdiagrammet på föregående sida? a. private namn string; b. protected string ankomst; c. public class Ort : Resa d. private List<Resa> resor = new List<Resa>(); 18. Inom objektorienteringen innebär "reflektion" a. att varje objekt kan ha flera exekveringsvägar b. en särskild iteration i analysfasen c. att en applikation vid exekvering kan hämta information om ett objekt från objektet självt d. att objekt exekverar en metod som svar på ett meddelande 19. Ett Deployment diagram är ett exempel på ett a. Structure diagram b. Behavior Diagram c. Interaction Diagram d. Activity Diagram 20. Sekvensdiagrammet till höger innebär att a. meddelandet NextActivity loopas b. meddelandet NextActivity är villkorat c. NextActivity refererar till ett annat sekvensdiagram d. NextActivity refererar till ett aktivitetsdiagram

[ sida 5 ] 21. Diagrammet till höger illustrerar a. ett hashtable-aggregat b. low coupling c. en kvalificerad association d. ett komponentdiagram 22. Nedan finns 4 diagram. Vilket utav dem (A, B, C eller D) illustrerar ett Communication Diagram? 23. Nedan finns 4 diagram. Vilket utav dem (A, B, C eller D) illustrerar ett State Machine Diagram? 24. Nedan finns 4 diagram. Vilket utav dem (A, B, C eller D) illustrerar ett Composite Structure Diagram? 25. Nedan finns 4 diagram. Vilket utav dem (A, B, C eller D) illustrerar ett Component Diagram? Glöm inte att lägga svarssidan (sida 2) för ovanstående svar i det gula tentamenshäftet! För de följande delarna skall svaret för respektive fråga skrivas/ritas på ett separat blad, tydligt angivet vilken fråga det är ett svar på.

[ sida 6 ] Del B (Inception/Analys) Fråga 2 (8p) Objektorienterad utveckling sker företrädesvis under många iterationer. Viktigt inför varje iteration är att rangordna/ranka de olika delar som ska implementeras. Vilka aspekter är bra att utgå ifrån (ledtråd: jag och boken har tagit upp tre) och vilka frågor kan man ställa i samband med det? Ge även ett exempel där du rangordnar fyra-fem olika delar/funktioner i valfritt påhittat system enligt följande modell: Ranking Användningsfall/feature Kommentar (och så vidare) Fråga 3 (2 p) INCEPTION IS NOT THE REQUIREMENTS PHASE stod som tagline till filmen Inception på en av mina slides. Citatet är förstås hämtat från Larman. Men vad menar han? Och vad är det som avgörs i inception-fasen? Fråga 4 (12 p) Både jag och kursboken har tagit upp begreppet kontrakt (operation contracts). Beskriv med ord och figurer hur kontrakt används, vad de används till och när de används. Utgå t.ex. från följande frågor: Vad är kontrakt (operation contract)? Vad har man för glädje av kontrakt? Hur ser ett kontrakt ut (ge exempel)? Vad har kontrakten för roll i utvecklingsprocessen, dvs. när används de? Fråga 5 (3 p) I ett ER-diagram (som inte har med denna kurs att göra) visas sambandet mellan olika entiteter via relationer. Även i OOSU visas hur relationer, kallade associationer, binder samman olika ting, men ibland är de noterade två gånger. Studera figuren nedan. Flight * Flyger till 1 Flygplats * Flyger från a) Vad heter diagramtypen? (1p) b) Varför går relationen åt två håll? (2p) 1

[ sida 7 ] Del C (Elaboration/Design) Läs noga igenom uppgifterna och förutsättningarna innan Du börjar med uppgifterna. I de fall där Du tycker att förutsättningar saknas får Du göra egna antaganden. Egna antaganden skall redovisas med motivering. Musikmogulen Bert Larsson i Vara skall utveckla ett bokningssystem för sina artister. Så här ser klassdiagrammet för klasserna i systemet ut just nu: Vi förutsätter här att typen Date kan endast datum och typen Time endast klockslag. På en och samma konsert kan det delta många artister, men en artist uppträder på en konsert bara vid en tidpunkt. Med Artist avses såväl soloartister som grupper, men det kan i förekommande fall även handla om specialkonstellationer utav grupper och soloartister som uppträder under en gemensam beteckning.

[ sida 8 ] Fråga 6 (8 p) I diagrammet på föregående sida finns inga operationer utskrivna, men systemet kommer ändå att ha metoder. Vilka typer av operationer behöver inte ritas ut i ett UML-diagram? Ge ett exempel för varje sådan typ med utgångspunkt från Berts system. Fråga 7 (9 p) Gör ett objektdiagram med namnsatta objekt som illustrerar alla tänkbara kombinationer av associationer mellan instanser utav klasserna i diagrammet. Alla attribut skall ha ifyllda värden, hitta själv på data. Uppgift 8 (8 p) Nedanstående exempel i C# illustrerar implementationen utav en utav klasserna från diagrammet på föregående sida, men med namn på identifierare utbytta. Exemplet kan i övrigt ses som den fullständiga klassen! public class A : B Vad skall stå istället för A respektive B i exemplet, för att verkligen utgöra en implementation utav klassen från diagrammet? Motivera vad som gör att ditt svar utgör det enda rätta svaret. Vilken nytta kan den klassen göra i Berts bokningssystem, fastän den till synes är helt tom?

[ sida 9 ] Del D (Construction/Implementation) Läs noga igenom uppgifterna 9-11 och förutsättningarna nedan innan Du börjar med uppgifterna. I de fall där Du tycker att förutsättningar saknas får Du göra egna antaganden. Egna antaganden skall redovisas med motivering. Schemaläggning IT-avdelningen på Högskolan i Mitterås har påbörjat utvecklingen utav ett system för schemaläggning. Koden på följande sidor är resultatet utav en tidig iteration, så många attribut och operationer saknas. Tyvärr har UML-diagrammen som använts för att generera koden förkommit, och det är din uppgift att återskapa dem med så korrekt UML-notation som möjligt. Uppgift 9 (10 p) Gör ett klassdiagram (Class Diagram) som så exakt som möjligt motsvarar koden nedan och på följande sidor. Du kan undanta beroenden till andra paket ( using namespaces). Uppgift 10 (8 p) Gör ett sekvensdiagram (Sequence Diagram) som så exakt som möjligt motsvarar koden nedan och på följande sidor, med startpunkt i ett anrop av operationen Boka i klassen Control. Uppgift 11 (7 p) Gör ett tillståndsdiagram (State Machine Diagram) som så exakt som möjligt motsvarar ett objekt ur klassen Rum. public class Lärare : Person, People // Attribut private string title; // Metoder public string Title get return title; public Lärare(string firstname, string lastname, string title, string email) : base(firstname, lastname, email) this.title = title; public int Antal get return 1;

[ sida 10 ] using System.Collections.Generic; class Klass : People // Attribut private string klassbeteckning; private int startår; // Association public List<Student> students = new List<Student>(); // Metoder public int Antal get return students.count; public void AddStudent(Student s) if (!students.contains(s)) students.add(s); public Klass(string klassbeteckning, int year) this.klassbeteckning = klassbeteckning; this.startår = year; class Student : Person // Association Klass klass; // Metoder public Klass Klass get return klass; public Student(string firstname, string lastname, Klass klass, string email) : base(firstname, lastname, email) this.klass = klass; klass.students.add(this);

[ sida 11 ] /// Implementeras av de klasser för individer och grupper som skall /// ingå i en bokning, för att kunna allokera ett rum av rätt storlek interface People int Antal get; public abstract class Person // Attribut private string firstname; private string lastname; private string email; // Metoder public string Firstname get return firstname; public string Lastname get return lastname; public string Email get return email; public Person(string firstname, string lastname, string email) this.firstname = firstname; this.lastname = lastname; this.email = email;

[ sida 12 ] using System; using System.Collections.Generic; class Bokning // Attribut private DateTime start; private DateTime slut; // Association private List<People> persons; // Metoder public DateTime Slut get return slut; set slut = value; public DateTime Start get return start; set start = value; public Bokning(List<People> lista, DateTime start, DateTime slut) Start = start; Slut = slut; persons = lista; public bool Overlaps(DateTime start, DateTime slut) if ((start >= Start && start <= Slut) (slut >= Start && slut <= Slut) (start <= Start && slut >= Slut)) return false; else return true;

[ sida 13 ] using System; using System.Collections.Generic; class Control // Associationer private List<Person> personer = new List<Person>(); private List<Rum> rummen = new List<Rum>(); private List<Klass> klasser = new List<Klass>(); // Metoder public List<Person> Personer get return personer; protected List<Klass> Klasser get return klasser; protected List<Rum> Rummen get return rummen; public void AddRum(Rum r) rummen.add(r); rummen.sort(); public void AddPerson(Person p) personer.add(p); public void AddClass(Klass p) klasser.add(p); public void Boka(List<People> lista, DateTime start, DateTime slut) int antal = 0; foreach (People p in lista) antal += p.antal; foreach (Rum r in rummen) if (r.antalplatser >= antal) if (r.boka(lista, start, slut)) return;

[ sida 14 ] using System; using System.Collections.Generic; class Rum : IComparable<Rum> // Attribut private int antalplatser; // Association private List<Bokning> bokningar = new List<Bokning>(); // Metoder public int AntalPlatser get return antalplatser; set antalplatser = value; public Rum(int antal) antalplatser = antal; public int CompareTo(Rum other) return this.antalplatser.compareto(other.antalplatser); public bool Boka(List<People> lista, DateTime start, DateTime slut) foreach (Bokning b in bokningar) if (b.overlaps(start, slut)) return false; Bokning nb = new Bokning(lista, start, slut); bokningar.add(nb); return true; Detta är sista sidan Glöm inte att lägga dina svar (inklusive sida 2) i rätt ordning i det gula tentamenshäftet!