12
Visuell Programutveckling med C# 7,5 högskolepoäng Provmoment: Tentamen Ladokkod: NVC01G Tentamen ges för: Systemvetarutbildningen och dataekonomutbildningen Namn: (Ifylles av student) Personnummer: (Ifylles av student) Tentamensdatum: 2012-01-10 Tid: 14.00 19.00 Hjälpmedel: Inga hjälpmedel 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 12/20 poäng på den teoretiska delen (uppgift 1-4). Om studenten inte uppnår 12 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 det) 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 Terenius Telefonnummer: 033 435 4214 (5945)

Visuell Programutveckling med C# 7,5 högskolepoäng · B. Windows Presentation Foundation. C. Windows Forms. D. Swing GDI. (e) Vilket eller vilka av följande påståenden är sanna

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Visuell Programutveckling med C# 7,5 högskolepoäng · B. Windows Presentation Foundation. C. Windows Forms. D. Swing GDI. (e) Vilket eller vilka av följande påståenden är sanna

Visuell Programutveckling med C# 7,5 högskolepoäng Provmoment: Tentamen Ladokkod: NVC01G Tentamen ges för: Systemvetarutbildningen och dataekonomutbildningen Namn:

(Ifylles av student) Personnummer:

(Ifylles av student) Tentamensdatum: 2012-01-10 Tid: 14.00 – 19.00 Hjälpmedel: Inga hjälpmedel

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 12/20 poäng på den teoretiska delen (uppgift 1-4). Om studenten inte uppnår 12 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 det) 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 Terenius Telefonnummer: 033 435 4214 (5945)

Page 2: Visuell Programutveckling med C# 7,5 högskolepoäng · B. Windows Presentation Foundation. C. Windows Forms. D. Swing GDI. (e) Vilket eller vilka av följande påståenden är sanna

Svarsblankett Namn:

(Ifylles av student) Personnummer:

(Ifylles av student)

Uppgift 1:

R1 R2 R3 R4

A □ □ □ □ B □ □ □ □ C □ □ □ □ D □ □ □ □

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.

Page 3: Visuell Programutveckling med C# 7,5 högskolepoäng · B. Windows Presentation Foundation. C. Windows Forms. D. Swing GDI. (e) Vilket eller vilka av följande påståenden är sanna

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 stol är en möbel.

B: En sittgrupp består av ett bord och fyra stolar.

C: En fotpall hör till fåtöljen.

D: En bokhylla består av stomme och hyllplan.

(4p)

Page 4: Visuell Programutveckling med C# 7,5 högskolepoäng · B. Windows Presentation Foundation. C. Windows Forms. D. Swing GDI. (e) Vilket eller vilka av följande påståenden är sanna

2. Svara med något av de angivna alternativen på följande frågor.

(a) En implicit typomvandling kan göras__?

Alternativ: A. Från en abstrakt klass till en subklass. B. Från en superklass till en subklass. C. Till alla klasser i the .NET Framework Class Library. D. Från alla klasser till Object.

(b) En metod som kan anropas utan en instans kallas för en ___ ?

Alternativ: A. Publik metod. B. Statisk metod. C. Abstrakt metod. D. Privat metod.

(c) Hur skriver man för att visa ett modalt fönster i Windows Forms, efter denna

inledande rad? formAbout abbe = new formAbout();

Alternativ:

A. abbe.Show();. B. abbe.ShowDialog();. C. abbe.ShowModal();. D. abbe.ShowModWin();.

(d) Synligheten som i UML anges med ’-’ ger synlighet i _____?

Alternativ: A. Alla klasser i samma namespace. B. Klassens metoder. C. Klassen och alla subklasser till klassen. D. Alla klasser som har en referens till ett objekt av klassen.

(e) Vilken av följande typkonverteringar kan ske implicit i C# ?

Alternativ: A. Konvertering av ett Double värde till Float.

B. Konvertering av ett värde av flyttalstyp till en heltalstyp.

C. Konvertering av godtycklig typ till string.

D. Konvertering av ett värde av heltalstyp till en flyttalstyp.

(f) En array är uppbyggd enligt nedan. Hur skriver man för att kopiera den till en lista

av den generiska typen List? int[] arr = new int[3]; arr[0] = 2; arr[1] = 1; arr[2] = 7;

Alternativ: A. List list = arr; B. List<int> list = arr(); C. List<int> list = new List(arr); D. List<int> list = new List<int>(arr);

(6p)

Page 5: Visuell Programutveckling med C# 7,5 högskolepoäng · B. Windows Presentation Foundation. C. Windows Forms. D. Swing GDI. (e) Vilket eller vilka av följande påståenden är sanna

3. Svara med något eller några av de angivna alternativen på följande frågor.

(a) Vilka av följande påståenden om arv i C# är sanna?

Alternativ: A. Arv gör det lättare att lägga till nya attribut i efterhand. B. Metoder får bara ärvas av högst tio klasser i C#. C. Arv skapar möjligheter för en verklighetsnära modellering. D. Arv innebär att avsevärt mycket mer kod måste skrivas.

(b) Vilka sorters metoder kan ärvas från en basklass?

Alternativ: A. private och shared. B. public och protected. C. shared och public. D. static och private.

(c) Parallellt (samtidigt) arbete (kod) kan i ett .NET program startas och köras som

instanser av klassen/erna ____?

Alternativ: A. System.Threading.Thread. B. System.Threading.Process. C. System.Threading.Tasks.Parallel. D. System.Threading.Tasks.Task.

(d) Vilken/vilka av nedanstående tekniker tillhandahåller ramverk för grafiska

gränssnitt i .NET?

Alternativ: A. Windows Graphics Library B. Windows Presentation Foundation. C. Windows Forms. D. Swing GDI.

(e) Vilket eller vilka av följande påståenden är sanna för ett interface?

Alternativ: 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. Ett interface definierar vilka metoder klasser som implementerar interface:t

måste ha. D. En klass får implementera maximalt ett interface.

(5p)

Page 6: Visuell Programutveckling med C# 7,5 högskolepoäng · B. Windows Presentation Foundation. C. Windows Forms. D. Swing GDI. (e) Vilket eller vilka av följande påståenden är sanna

4. Studera följande givna program. Svara med ett eller flera av de givna alternativen.

(a) Vad skrivs ut av följande sats?

Console.WriteLine(5 % 2);

Alternativ: A. 0. B. 1. C. 2. D. 3.

(b) Givet följande klass definition:

abstract class Arwen { public void Ettan() {/* plats för kod */ } protected void Tvåan(int kilo) { /* plats för kod */ } public virtual int Trean(int km, int hastighet) { /* plats för kod */ } public abstract double Fyran(); }

Vilka metoder kan (ev. måste) överlagras (eng. override) av en klass som ärver

från klassen Arwen?

Alternativ: A. Ettan. B. Tvåan. C. Trean. D. Fyran.

Page 7: Visuell Programutveckling med C# 7,5 högskolepoäng · B. Windows Presentation Foundation. C. Windows Forms. D. Swing GDI. (e) Vilket eller vilka av följande påståenden är sanna

(c) Vilket eller vilka av nedanstående påståenden är sanna för kodfragmentet object s = new SomeObject(31, 42)

givet definitionerna nedan?

class SomeObject

{

public object data;

public object moreData;

public SomeObject(int count)

{

data = count;

}

public SomeObject(int count, int number) : base()

{

moreData = number;

}

}

Alternativ: A. Attributet moreData i instansen s får värdet 31. B. Attributet data i instansen s får sitt defaultvärde null. C. Attributet data i instansen s får värdet 31. D. Attributet moreData i instansen s får värdet 42.

(d) Vilket eller vilka av nedanstående påståenden är sanna 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 abstract int g(int b);

}

public class B : A

{

public override int f(int b)

{

return 1 + b;

}

}

Alternativ: A. Koden kompilerar inte eftersom klassen A och/eller B är felaktig. 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.

Page 8: Visuell Programutveckling med C# 7,5 högskolepoäng · B. Windows Presentation Foundation. C. Windows Forms. D. Swing GDI. (e) Vilket eller vilka av följande påståenden är sanna

(e) Följande UML-diagram beskriver relationer mellan klasser. En delmängd av dessa

relationer kan uttryckas i text som ______ ?

D

a

E

fC

G

1..*

1..*

1 0..*

b

Alternativ: A. En instans av a är en C. B. En instans av G är en b. C. En instans av G består av en eller flera instanser av E. D. En instans av D är en C.

(5p)

Page 9: Visuell Programutveckling med C# 7,5 högskolepoäng · B. Windows Presentation Foundation. C. Windows Forms. D. Swing GDI. (e) Vilket eller vilka av följande påståenden är sanna

5. På ett zoo för däggdjur i Danmark finns två apor (Bertil 4år och Strutharald 12 år), en

kamel (Gösta 82år) och två japanska giraffer (Greger 15år och Knut 2år). Alla

däggdjur har namn och ålder, dessutom låter de på ett specifikt sätt. Nedan återfinns

de kodrader som skall ligga i en lämplig metod som tar ett argument, kallat output,

av typen System.IO.TextWriter i respektive klass för att återge djurets läte på

ett korrekt sätt. (OBS! det är som alltid fel att explicit skriva ut till

Console.Out/consolefönstret från en logisk klass därför används en metod som kan

skriva till valfri TextWriter.)

Apa: output.WriteLine(”heeeheeyaeeya”);

Kamel: for(int i = 0 ; i < 3 ; i++) output.WriteLine (”uuuhre”);

Giraff: for(int i = 0 ; i < Age ; i++) output.WriteLine (”shitaaeete”);

Konstruera en generell applikation som modellerar ovanstående beskrivning

objektorienterat, d.v.s. lämpligt indelad i klasser.

Det är viktigt att ni skapar en metod public void DoZoo()

vars syfte är att alla djur i djurparken få chansen att uttrycka sig, dvs. respektive djurs

läte skrivs ut till consolefönstret / Console.Out (som har typen

System.IO.TextWriter) m.h.a. polymorfism.

Skapa även en metod public double ComputeAverageAge()

som beräknar genomsnittsåldern för djuren i djurparken.

Sätt sedan upp ovanstående scenario i main, låt djuren yttra sig och beräkna sedan

deras medelålder och skriv ut denna i consolefönstret.

(10p)

Page 10: Visuell Programutveckling med C# 7,5 högskolepoäng · B. Windows Presentation Foundation. C. Windows Forms. D. Swing GDI. (e) Vilket eller vilka av följande påståenden är sanna

6. Uppgiften går ut på att skapa nedanstående fönster. I fönstret visas hela tiden tre

grafiska former. Vardera formen kan antingen vara en rektangel, triangel eller en

cirkel. Vilken form som visas väljs med den övre ComboBox:en nedanför formen.

Med den undre ComboBox:en väljs formens färg, alternativen skall vara röd, grön blå,

svart och gul. När programmet startar skall de förbestämda valen vara som i bilden

nedan.

Formerna skall ritas med hjälp av GDI+ metoder (d.v.s. med klassen Graphics) och

med pen tjockleken 5.0. All inmatning som sker, i någon av ComboBox:arna, skall få

visuellt genomslag direkt. Layouten skall göras så att formerna ändrar höjd när

fönstrets höjd ändras.

För full poäng skall formerna vara instanser av en egendefinierad grafisk kontroll som

kan styras med en egenskap (property) för formens typ och en egenskap för färgen.

Vidare skall formens storlek bestämmas av kontrollens storlek.

Tips: Lös problemet stegvis, exempelvis börja med att implementera en form som en

grafisk komponent.

För layouten är det lämpligt att rita formerna med en marginal på 5% av kontrollens

höjd och bredd.

Formens typ kan lämpligen anges som ett värde av uppräkningstypen public enum ShapeType { RECTANGLE, TRIANGLE, CIRCLE };

(10p)

Page 11: Visuell Programutveckling med C# 7,5 högskolepoäng · B. Windows Presentation Foundation. C. Windows Forms. D. Swing GDI. (e) Vilket eller vilka av följande påståenden är sanna

7. Uppgiften går ut på att skapa en applikation för ett bokregister. Tabellstrukturen för

applikationens databas books finns nedan. Applikationen skall vid start visa

nedanstående fönster.

När användaren matat in en del av ett författarnamn i textboxen Author: och tryckt på

knappen Search skall efternamn, förnamn för de författare i databasen som har ett

matchande för- eller efternamn visas i en ListBox (obs! inget annat) under Authors.

När en författare väljs i listans så skall titlarna på de böcker denne är medförfattare till

visas i den andra ListBox:en (under Books). När en bok väljs i Books-listan så skall

all information om boken visas i en detaljvy enligt bild nedan. Listan över böcker och

detaljvyn skall automatiskt uppdateras när en annan författare eller bok väljs i listorna

och när listorna töms på grund av en ny sökning.

Page 12: Visuell Programutveckling med C# 7,5 högskolepoäng · B. Windows Presentation Foundation. C. Windows Forms. D. Swing GDI. (e) Vilket eller vilka av följande påståenden är sanna

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. Ni kommer åt den med hjälp av de

inloggningsuppgifter (till SQL Server) som finns med i tentan. Databasen har följande

tabeller och nyckelrelationer:

Tips: Lös problemet stegvis. Skapa logikklasserna först och fyll sen metoder och

properties med innehåll.

(10p)