Systemvetarutbildningen och dataekonomutbildningen

Relevanta dokument
Systemvetarutbildningen och dataekonomutbildningen

Systemvetarutbildningen och dataekonomutbildningen

Namn: (Ifylles av student) Personnummer: (Ifylles av student) Tentamensdatum: Tid: Hjälpmedel: Inga hjälpmedel

Viktigt! Glöm inte att skriva TentamensKod (ditt anonyma student-id) på alla blad du lämnar in.

Namn: (Ifylles av student) Personnummer: Tentamensdatum: Tid: Hjälpmedel: Inga hjälpmedel

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

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

PROGRAMMERINGSTEKNIK TIN212

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

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

Classes och Interfaces, Objects och References, Initialization

Allmänna anvisningar: Skriv dina svar på svarsblanketten (se nästa sida) Markera och ange alla svar tydligt och entydigt efter instruktionerna.

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

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }

Namn: (Ifylles av student) Personnummer: (Ifylles av student) Tentamensdatum: Tid: Hjälpmedel: Inga hjälpmedel

DAT043 - Föreläsning 7

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

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

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

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

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

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

Tentamen ID1004 Objektorienterad programmering October 29, 2013

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 1

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

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

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

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

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

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

Objektorienterad Systemutveckling 1 (7,5 hp)

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

Omtentamen i OOSU2, 21 augusti 2014

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

Föreläsning 13 Innehåll

Tentamen NOA011 Systemarkitektprogrammet. 51 poäng

Tentamen NOA011 Systemarkitektprogrammet

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

Programmering i C++ EDA623 Objektorienterad programutveckling. EDA623 (Föreläsning 5) HT / 33

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

Objektorientering: Lagring, räckvidd och livstid

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

Tentamen i Objektorienterad modellering och diskreta strukturer

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

DAT043 Objektorienterad Programmering

Objektorienterad programmering

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6

TENTAMEN OOP

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

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

Klasshierarkier - repetition

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 2

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

Laboration 1: Figurer i hierarki

Programmering för språkteknologer II, HT2014. Rum

kl Tentaupplägg

Tentamen OOP

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

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

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

Objektorienterad Programkonstruktion, DD1346 FACIT. Tentamen , kl

Tentamen, EDAA10 Programmering i Java

Föreläsning 5-6 Innehåll

Del av projektuppgiften. Systemarkitektprogrammet

Tentamen ID1004 Objektorienterad programmering May 29, 2012

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

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

Tentamen i Grundläggande programmering STS, åk 1 lördag

Arbeta med databas. Översikt. Lektion 1: Arbeta med Entity Data Models. Arbeta med Entity Data Models. LINQ (Language Integrated Query).

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

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

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

kl Tentaupplägg

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

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

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

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

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

Laboration 1 - Grunderna för OOP i Java

Objektorienterad Programmering (TDDC77)

Tentamen i Objektorienterad modellering och design Helsingborg

Agenda. Objektorienterad programmering Föreläsning 13

TENTAMEN I DATAVETENSKAP

Innehåll. 1 Kort om dynamisk polymorfism. 2 Arv i C++ 3 Multipelt arv. 4 Något om statisk polymorfism. class Container {

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

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

Statistik över heltal

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

Objektinteraktion. Objektorienterad programmering Laboration 2. Syfte Att konstruera ett litet objektorienterat program med flera samverkande objekt.

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

Tentamen i TDP004 Objektorienterad Programmering Teoretisk del

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

Del2 Klasser, medlemmar och arv Ämnesområden denna föreläsning:

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

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34

Inkapsling (encapsulation)

Omtentamen i OOSU2, 16 maj 2014

OOP Objekt-orienterad programmering

Transkript:

Visuell Programutveckling med C# Provmoment: Ladokkod: Tentamen ges för: Namn: (Ifylles av student) Personnummer: (Ifylles av student) Tentamensdatum: 2012-08-22 Tid: 09.00 14.00 Hjälpmedel: Inga hjälpmedel 7,5 högskolepoäng Omtentamen NVC01G Systemvetarutbildningen och dataekonomutbildningen Totalt antal poäng på tentamen: 50 poäng För att få respektive betyg krävs: G=25, varav minst 12 poäng på teoridelen och minst 12 poäng på praktikdelen. VG=38, varav minst 12 poäng på teoridelen och minst 12 poäng på praktikdelen. OBS! For att få den praktiska delen (uppgift 5-7) rättad måste studenten ha uppnått minst 10/20 poäng på den teoretiska delen (uppgift 1-4). Om studenten inte uppnår 10 poäng på den teoretiska delen kommer den praktiska delen ej att rättas och 0 poäng kommer därmed att tilldelas på respektive uppgift. Allmänna anvisningar: Skriv dina svar på separata blad Spara alla filer på F: (OBS! Ingen annanstans, då försvinner de) Logga ur datorn när du är klar med tentamen (men stäng INTE av!). 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: Anders Gidenstam, Petter Dessne Telefonnummer: 033 435 4214 (5945)

Svarsblankett Namn: (Ifylles av student) Personnummer: (Ifylles av student) Uppgift 1: A B C D R1 R2 R3 R4 Uppgift 2: A B C D a) b) c) d) e) f) Uppgift 3: A B C D a) b) c) d) e) Uppgift 4: A B C D a) b) c) d) e) Observera: Det minimala resultatet på uppgift 1 till 4 är 12 poäng. Om detta inte uppnås, kommer inte uppgift 5 till 7 att beaktas och automatiskt få 0 poäng.

1. Matcha följande definitioner inom objektorientering med motsvarande exempel (samma relation kan förekomma flera gånger). R1: Association (eng. association) R2: Komposition (eng. composition) R3: Aggregat (eng. aggregation) R4: Arv (eng. inheritance) A: En person kan äga hundar. En hund har en ägare. B: Ett huvud har två ögon. C: En fisk kan vara en haj, en abborre eller en sill. D: En armé har soldater. (4p)

2. Svara med något av de angivna alternativen på följande frågor. (a) En definition av de egenskaper som kan ingå i ett objekt är känd som? A. en metod B. ett objekt C. en instans D. en klass (b) En metod som endast kan anropas inifrån en instans eller klass, kallas för en? A. statisk metod B. publik metod C. abstrakt metod D. privat metod (c) Typen för en variabel, som det vid kopiering eller användning som parameter skapas en ny instans av innehållet, är klassificerad som en? A. värdetyp B. referenstyp C. instanstyp D. objekttyp (d) För att få ett handtag till en valfri metod med en specificerad signatur används nyckelordet? A. enumerator B. delegate C. iterate D. foreach (e) Kod som skrivs i finally blocket vid felhantering exekveras? A. bara om koden i try-blocket har exekveras (inget fel uppstod) B. bara om koden i catch-blocket har exekveras (ett fel uppstod) C. alltid, oberoende om ett fel uppstod eller ej D. det finns inget finally block, programmet kompilerar inte eller kraschar under körning (f) När en händelsehanterare (metod) kopplas till en händelse (event) används? A. ett värde av den delegat typ som hör till händelsen B. ett värde av godtycklig delegat typ C. en funktionspekare D. en instans av metoden (6p)

3. Svara med något av de angivna alternativen på följande frågor. (a) En egenskap (eng. Property) i en klass beter sig vid exekvering (programkörning) som? A. en instans B. en eller två metoder C. ett attribut D. en händelse (eng. event) (b) Vilken av följande typkonverteringar måste göras explicit i C#? A. Konvertering av ett värde av typen List<int> till Object. B. Konvertering av ett värde av flyttalstyp till en heltalstyp. C. Konvertering av ett värde av typen Windows.Forms.Form till Windows.Forms.Control. D. Konvertering av ett Float-värde till Double. (c) Vilket av följande påståenden om multitrådning i C# och.net är sant? A. Trådar i C# (System.Threading.Thread) är billiga att skapa. B. Klassen Monitor kan användas för att synkronisera trådar. C. Det grafiska gränssnittet Windows Forms är trådsäkert. D. Konstruktioner som Parallel.For() eliminerar risken för synkroniseringsbuggar. (d) Metoderna för en bas- eller superklass kan nås i subklassen via nyckelordet? A. override B. super C. this D. base (e) Vilket av följande påståenden om interface är sant? A. En referens till en klass som implementerar ett visst interface kan implicit konverteras till en interface-referens för det interfacet. B. En interface-referens kan implicit konverteras till en referens till ett objekt som implementerar interfacet. C. En klass kan implementera noll eller ett interface. D. Ett interface är en klass där alla metoder är definierade som abstract. (5p)

4. Studera följande givna program. Svara med något av de givna alternativen. (a) Vilket värde har average efter exekveringen av följande program? A. 0. B. 1. C. 2. D. 3. int average = 0; int[] numbers = new int[] 1, 2, 3, 4, 5 ; foreach (int nr in numbers) if (average == 0) average = average / numbers.length; else average = average + nr; (b) Vad har attributet foo för värde i en instans som skapats med konstruktoranropet Counter(4)? class Counter public int foo; public Counter(object foo) foo = foo; A. null. B. 0. C. 4. D. Inget programmet kompilerar inte eller kraschar under körning.

(c) Vad har attributet data för värde i en instans som skapats med konstruktoranropet SomeObject(3, 7)? class SomeObject public object data; public object moredata; public SomeObject(int count) data = count; public SomeObject(int count, int number) : this(count) moredata = number; A. null. B. 3. C. 7. D. Inget programmet kompilerar inte eller kraschar under körning. (d) Vilket av nedanstående påståenden är sant för kodfragmentet A a = new B(); a.g(4); givet definitionerna nedan? public class A public virtual int f(int a) return 2*a; public virtual int g(int b) return 1 + f(b); public class B : A public override int f(int b) return 1 + b; A. Koden kompilerar inte eftersom klassen B inte har någon metod g(). B. Metoden f() i klassen A kommer att anropas. C. Metoden f() i klassen B kommer att anropas. D. Ett undantag kommer genereras eftersom värdet är av typen B men variabeln a har typen A.

(e) Följande UML-diagram beskriver relationer mellan klasser. Vilket eller vilka påståenden är korrekta enligt diagrammet? a b C D f 1 0..* 1..* E 1..* G A. En instans av E är en b. B. En instans av a är en C. C. En instans av f är en b. D. En instans av C hör ihop med noll eller flera instanser av D. (5p)

5. På en skola vill man skapa ett register över sina lärare. Lärarna kan delas upp i adjunkter, lektorer och professorer. För alla lärare vill man lagra namn, ämnesområde, undervisningstimmar och lön. För adjunkterna vill man dessutom lagra årtal för kandidatexamen och för lektorerna vill man lagra årtal för doktorsexamen. För professorerna vill man lagra samma information som för lektorer och dessutom årtal för professorsbefordran. Skapa lämpliga klasser för att representera hierarkin av lärare samt registret. Strukturen skall vara objektorienterad och informationen om respektive lärare skall lagras i attribut med ändamålsenliga typer och åtkomsträttigheter. Informationen som lagrats om en lärare skall inte kunna ändras efter att läraren har skapats. I registret skall det finnas en metod för utskrift av information (namn, ämnesområde och undervisningstimmar samt beroende på typen av lärare även årtal för examen/befordran som kandidat (fil. kand.), doktor (fil. dr.) eller professor (prof.)) om en lärare samt en metod som skriver ut informationen om samtliga lärare som finns på skolan. Varje lärare ansvarar själv för att skapa textuell information om sig själv men skall inte befatta sig med utskrift av denna. Registret skall också ha en metod för att lägga till en lärare (som kan vara en adjunkt, lektor eller professor). Knyt ihop programmet genom att lägga till konstruktorer och eventuellt ytterligare erforderliga metoder i befintliga klasser. Tillverka ett icke interaktivt huvudprogram där programmet skapar några lärare och sedan lägger till dem i registret för att slutligen skriva ut hela lärarbeståndet. (10p)

6. Uppgiften går ut på att skapa nedanstående fönster. I fönstret visas hela tiden tre grafiska representationer av en räknare som kan ta värden mellan (och inklusive) 0 och 40. Den första grafiska representationen är en textbox som visar det nuvarande värdet, den andra en TrackBar-kontroll som visar det nuvarande värdet och den tredje en streckräknare som visar det nuvarande värdet med ett antal streck grupperade i grupper om 0,1, 2, 3, 4 eller 5 streck. Streckräknaren skall ritas med hjälp av GDI+ metoder (d.v.s. med klassen Graphics) och skall kunna visa värden mellan 0 (inga streck) och 5 i varje grupp, tillsammans skall de 8 grupperna kunna visa från 0 till 40 streck. All inmatning som sker, antingen i textboxen eller i TrackBar-kontrollen, skall få visuellt genomslag direkt och alla tre representationerna skall uppdateras. När värdet i textboxen inte är ett giltigt heltal mellan 0 och 40 skall ett felmeddelande omedelbart visas enligt bilden nedan (räknarna fortsätter visa det senast giltiga värdet, här 33). För full poäng skall streckräknarens grupper vara instanser av en egendefinierad grafisk kontroll som kan styras med en egenskap (property) för värde. Tips: Lös problemet stegvis, exempelvis börja med att implementera en streckräknare (0-5 streck) som en grafisk komponent. (10p)

7. Uppgiften går ut på att skapa en applikation för ett leverantörsregister. Tabellstrukturen för applikationens databas NORTHWND finns nedan. Applikationen skall vid start visa nedanstående fönster. När användaren matat in en del av ett leverantörsnamn i textboxen Supplier: och tryckt på knappen Search skall företagsnamnet för de leverantörer i databasen som har ett matchande namn visas i en ListBox (obs! inget annat) under Suppliers. När en leverantör väljs i listans så skall företagets namn och listan av alla dess produkter, på formen namn, kategori, enhetspris (obs! inget annat) visas i en detaljvy enligt bild nedan. Detaljvyn skall automatiskt uppdateras när en annan leverantör väljs i listan och när listorna töms på grund av en ny sökning.

Applikationens GUI skall arbeta mot logikklasser som du skapar och vars publika gränssnitt skall vara enligt nedanstående klassdiagram. Koden i GUI-delen får endast kommunicera med databasen via logikklassernas publika gränssnitt. All databashantering skall ske internt i logikklasserna och skall ske med hjälp av LINQ. Databasen är redan skapad och fylld med data. Du kommer åt den med hjälp av de inloggningsuppgifter (till SQL Server) som finns med i tentan. Databasen har många tabeller men följande tabeller och nyckelrelationer är relevanta för uppgiften: Tips: Lös problemet stegvis. Skapa logikklasserna först enligt klassdiagrammet ovan och fyll sedan klassernas metoder och properties med innehåll. Använd LINQtoSQL klassernas styrkor, som t.ex. de automatiska kopplingarna mellan raderna de olika tabellerna! (10p)