Objektorienterad Systemutveckling (7,5 hp)

Relevanta dokument
Objektorienterad Systemutveckling (7,5 hp)

Objektorienterad Systemutveckling 1 (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

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

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

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

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

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

OOP Objekt-orienterad programmering

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

Del av projektuppgiften. Systemarkitektprogrammet

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

Arv. Objektorienterad och komponentbaserad programmering

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

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

TENTAMEN OOP

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

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

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

Tentamen på kursen Webbdesign, 7,5 hp

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

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

Tentamen NOA011 Systemarkitektprogrammet

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

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

Tentamen NOA011 Systemarkitektprogrammet. 51 poäng

PROGRAMMERINGSTEKNIK TIN212

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

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

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

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

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

TENTAMEN OOP

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

Polymorfi. Objektorienterad och komponentbaserad programmering

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

Systemvetarutbildningen och dataekonomutbildningen

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

Objektorientering. Grunderna i OO

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

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

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

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

Tentamen i TDP004 Objektorienterad Programmering Lösningsförslag

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

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

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

Tentamen på kursen Webbdesign, 7,5 hp

Tentamen på kursen Informationsdesign, 7,5 hp

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

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

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

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

Generiska konstruktioner. Kursbokens kapitel 13

Laboration 1 - Grunderna för OOP i Java

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

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

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

DAT043 - Föreläsning 7

Omtentamen på kursen Webbdesign, 7,5 hp

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 1

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

UML: Exempel. Ett modelleringsspråk. UML: Ansvar. UML: tre huvudanvändningar. Exempel: En klass position storlek. UML Unified Modelling Language

Systemvetarutbildningen och dataekonomutbildningen

Objektorientering Användning

Tentamen ID1004 Objektorienterad programmering May 29, 2012

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

Inkapsling (encapsulation)

OOP Tenta

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.

Tentamen i Objektorienterad modellering och design Helsingborg

Föreläsning 13 Innehåll

Klasshierarkier - repetition

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

LÖSNINGSFÖRSLAG TENTAMEN

Introduktion till arv

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

Objektorienterad programmering

Objektorienterad Programmering (TDDC77)

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

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

TENTAMEN OOP

Objektorienterad analys och design

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

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

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

Föreläsning 5-6 Innehåll

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

729G75: Programmering och algoritmiskt tänkande. Tema 3, föreläsning 2

Objektorienterad analys och design

Objektorienterad Programmering (TDDC77)

Översikt. Programmering tillämpningar och datastrukturer. Vad kursen täcker. Lärare. Rekommenderad litteratur. Kursmål 729G58 (HKGBB7)

Tentamen i Objektorienterad modellering och design

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 2

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

TDDC76 Programmering och datastrukturer

OOP Objekt-orienterad programmering

Tentamen i Objektorienterad modellering och diskreta strukturer

DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin

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

Transkript:

[ sida 1 ] Objektorienterad Systemutveckling (7,5 hp) Provmoment: Ladokkod: Tentamen ges för: Tentamen 21OS1B DE11, IMIT11, SYST11 (omtentamen) Datum och tid: 2013-08-22, kl 09.00 13.00 Hjälpmedel: Inga hjälpmedel tillåtna Tentamen är färdigrättad inom 4 veckor (2013-09-20). Därefter kan inregistreringen av resultatet ta ca en vecka, dvs att resultatet bör vara synligt på MittKonto senast 2013-08-27. Betyg: OBS! Denna tentamen är gjord i flera delar. Eventuella godkända delar från tentamen 2013-02-25 eller 2013-05-22 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! Björn Abelli 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 titel har synlighet a. public b. protected c. private d. internal 2. I diagrammet till höger a. Ärver BokRegister från IList b. Ärver IList från BokRegister c. Implementeras BokRegister av IList d. Implementeras IList av BokRegister 3. Diagrammet till höger kan tolkas som ett exempel på GoF-mönstret a. low cohesion b. observer c. adapter d. composite 4. Att BokProxy ä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 BokDBMS a. är en superklass b. ärver alla egenskaper BokProxy har c. kan ha högst tre instanser d. ingår i klassen BokProxy 6. Att HämtaBok i BokProxy är i kursiv stil innebär a. att operationen inte får överskuggas b. att subklasser måste implementera egna metoder för den operationen c. att HämtaBok är en löv-operation d. att den får implementeras i C# 7. I diagrammet betyder att a. en Bok associeras till endast en instans av BokRegister b. ett BokResister associeras till endast en instans av Bok c. en Bok kan associeras till valfritt antal instanser av BokRegister d. ett BokRegister kan associeras till valfritt antal instanser av Bok 8. Två associationer i diagrammet till höger har pilhuvuden. Dessa pilhuvuden betyder a. att BokRegister är mottagare av meddelandena från Bok och BokProxy 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 enkla associationer, d. en svagare koppling än både aggregat och enkla associationer

[ sida 4 ] 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 11. Med protokoll avses inom objektorienteringen a. att ett anrop av en metod i ett annat objekt vid kompileringstillfället binds till en adress dit exekveringen skall hoppa (läsa instruktionerna) b. paketeringen av meddelandesändning vid datakommunikation över ett nätverk c. samlingen utav operationer hos ett objekt d. att man har koll på skyddade (protected) attribut och operationer 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 diagrammet till höger så innebär opt a. att rutan refererar till ett annat sekvensdiagram b. att meddelandesändningarna endast utförs om villkoret är uppfyllt c. att meddelandesändningarna utförs flera gånger (loop) d. Att koden måste optimeras för bästa prestanda 15. Meddelandet NextHandler är a. ett anrop till en statisk metod b. ett rekursivt anrop c. ett anrop med synlighet self d. ett anrop till ett samlingsobjekt 16. Vilket GoF-mönster kan diagrammet till höger sägas illustrera? a. Abstract Factory b. Bridge c. Chain of Responsibility d. Observer 17. Vilken av följande kodrader skulle kunna existera i en direkt implementation av klassdiagrammet på föregående sida? a. private isbn string; b. public string titel; c. public class BokRegister : IList d. private void HämtaBok(string isbn) 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

[ sida 5 ] 19. Ett Deployment diagram är ett exempel på ett a. Structure diagram b. Behavior Diagram c. Interaction Diagram d. Activity Diagram 20. Med en metodsignatur menas a. digital signering av en metod b. en metod för digital signering c. kombinationen utav metodnamn, formella parametrar och returtyp d. kombinationen utav metodnamn, argument, returtyp och anrop 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 (9 p) I varje iteration i ett objektorienterat systemutvecklingsprojekt sker både objektorienterad analys och objektorienterad design. Vad analyserar respektive designar man i Inception-fasen? Vilka UML-diagram använder man för detta? På vilka avgörande sätt skiljer sig detta från efterföljande faser (elaboration, construction, etc)? Fråga 3 (9 p) Användningsfall (Use Cases) skrivas i inception-fasen vanligen i ett av de tre vanligaste formaten, som svarar mot tre olika grader av formalitet. Vilka är dessa tre format? eskriv varje format kortfattat, dvs vad skiljer dem åt? Fråga 4 (7 p) I Inception-fasen påbörjas framtagandet av systemkrav (requirements), men som Larman säger: Inception is not the Requirements phase, dvs att detta fortsätter även in i de andra faserna. Ett sätt att se till att man täcker alla nödvändiga krav är att utgå från FURPS+. Vilka kategorier av krav anges med FURPS+?

[ 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. Ett dataföretag säljer dataprodukter (artiklar) och konsulttjänster till privatkunder och andra företag. Varje uppdrag från en kund resulterar i en order. Ordern kan avse flera olika artiklar och/eller konsultuppdrag från en eller flera konsulter. Konsulterna debiterar kunderna ett fast timpris. Timpriset för konsulterna kan vara olika för olika konsulter. De uppgifter som skall finnas om artiklarna på ordern är: artikelnummer, artikelnamn, antal artiklar av angivet artikelnummer, styckepris samt en summa per artikelnummer. För varje konsulttjänst skall uppgifter finnas om konsultens namn, konsultens timpris och antal arbetade timmar. En delsumma per konsult och order skall också finnas på ordern. På ordern skall det dessutom finnas uppgifter om kundens namn, adress samt telefonnummer. Man skall kunna beräkna orderns totalsumma. Man skall också kunna beräkna totalsumman för samtliga order som är lagda. En påbörjad konceptuell modell för dessa klasser kan något förenklat ritas så här: Kund Order Controller + adress : string + namn : string + datum : DateTime + BeräknaOrdersumma() : int + BeräknaTotalsumma() : int Konsult Orderrad Artikel - namn : string - antal : int + BeräknaRadsumma() : int - artikelnr : int - namn : string - styckepris : int Fråga 5 (7 p) Komplettera den konceptuella modellen ovan till ett mer komplett klassdiagram med associationer, arv, aggregat, attribut, kardinaliteter (multiplicity) och operationer (metoder) över ovanstående. Du kommer att behöva komplettera med bland annat ytterligare klasser, arv, operationer, samt att vissa nya klasser kan behöva byta plats med existerande klasser.

[ sida 8 ] Del C (Elaboration/Design) Forts. En exklusiv auktionshandlare på Internet har påbörjat utvecklingen av ett auktionssystem. För att kunna sälja eller bjuda på varor i auktionen måste man vara medlem. När man lägger ett bud, så skall systemet kontrollera att inte sluttiden passerats, att det nya budets belopp är högre än utgångspriset, samt att det är högre än senast lagda bud. Om villkoren uppfyllts läggs budet in i systemet. Så här ser klassdiagrammet ut som du skall utgå ifrån i uppgifterna nedan: AuktionControl + NyMedlem(namn : string, id : string, lösen : string, adress : string) + NyttBud(budgivare : Medlem, vara : Vara, belopp : int) + NyVara(säljare : Medlem, beskrivning : string, sluttid : DateTime, utgångspris : int) medlemmar varor Medlem Vara säljare varor - adress : string - lösenord : string - medlemsnr : int - namn : string Bud - sluttid : DateTime - utgångspris : int + HögstaBud() : int + NyttBud(budgivare : Medlem, belopp : int) budgivare vara bud + belopp : int + tidpunkt : DateTime bud + GetBelopp() : int + GetTidpunkt() : DateTime Fråga 6 (10 p) Rita ett sekvensdiagram för händelsen Lägg ett bud med startpunkt i ett anrop av operationen NyttBud i klassen AuktionControl. (OBS! Du får endast använda de operationer som finns i diagrammet ovan) Fråga 7 (4 p) I klassdiagrammet ovan finns klassen DateTime inte utritad trots att den används i systemet. Rita ett alternativt klassdiagram till auktionen, där DateTime är utritad som egen klass istället för som attributtyp (för att förenkla saken; tag inte med klassernas operationer i det nya diagrammet). iskutera varför man kan göra på båda sätten, samt när det ena alternativet är att föredra framför det andra. Fråga 8 (4 p) Det finns två situationer, där man i ett sekvensdiagram i UML ritar ut pilar som i en meddelandesändning, men som inte i sig innebär att det är ett meddelande som sänds till ett existerande objekt. Vilka är dessa två situationer, och hur ritas de i UML? Vad är det som egentligen sker i dessa två situationer? Beskriv utifrån vad som sker i det sändande objektet.

[ sida 9 ] Del D (Construction/Implementation) Läs noga igenom uppgifterna 11-13 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. UppsatsHandledare IT-avdelningen på Högskolan i Mitterås har påbörjat utvecklingen utav ett system för att administrera uppsatshandledning. 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 AllokeraHandledare 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 Uppsats. public abstract class Person protected string namn; protected string personnr; public abstract string GetTyp(); public class Student : Person public override string GetTyp() return "Student";

[ sida 10 ] using System; using System.Collections.Generic; /// <summary> /// Klassen implementerar interfacet IComparable<Lärare> för att /// kunna sortera Lärare efter antalet allokerade uppsatser /// </summary> public class Lärare : Person, IComparable<Lärare> // Association private List<Uppsats> uppsatser = new List<Uppsats>(); public int AntalUppsatser() return uppsatser.count; public override string GetTyp() return "Lärare"; public int CompareTo(Lärare other) return this.antaluppsatser().compareto(other.antaluppsatser()); using System; using System.Collections.Generic; public class Control // Associationer public List<Uppsats> uppsatser = new List<Uppsats>(); public List<Lärare> lärare = new List<Lärare>(); public void AllokeraHandledare() foreach (Uppsats uppsats in uppsatser) bool harhandledare = uppsats.harhandledare(); if (!harhandledare) Lärare handledare = lärare[0]; uppsats.addhandledare(handledare); lärare.sort();

using System; using System.Collections.Generic; [ sida 11 ] public class Uppsats private string titel; private string nivå; private string termin; // Associationer public List<Student> studenter = new List<Student>(); public Lärare handledare; /// <summary> /// Konstruktor /// </summary> /// <param name="titel">uppsatsens titel</param> /// <param name="nivå">kandidat magister eller masternivå</param> /// <param name="termin">termin för förstaregistrering, i formen "VT13"</param> /// <param name="s">första studenten i uppsatsgruppen</param> public Uppsats(string titel, string nivå, string termin, Student s) this.titel = titel; this.nivå = nivå; this.termin = termin; studenter.add(s); // En uppsats har alltid minst en student public bool AddStudent(Student s) // Får inte lägga till fler studenter när handledare är allokerad if (HarHandledare()) return false; // En uppsatsgrupp får ha max 3 studenter if (studenter.count >= 3) return false; else studenter.add(s); return true; public bool HarHandledare() if (handledare == null) return false; else return true; public void AddHandledare(Lärare h) if (handledare!= null) throw new Exception("Har redan handledare allokerad"); else handledare = h; Detta är sista sidan Glöm inte att lägga dina svar (inklusive sida 2) i rätt ordning i det gula tentamenshäftet!