Omtentamen i OOSU2, 21 augusti 2014 Maxpoäng: 50. Betygsgränser: A: 90 % + B: 80 % + C: 70 % + D: 60 % + E: 50 % + Mindre än 50 % ger underkänd tentamen. Är det något du inte uppfattar så förklara hur du tolkar uppgiften och gör så gott du kan. Programmeringsuppgiften är ganska stor och det är helt okej att bara jobba med vissa delar om du inte kan lösa hela uppgiften. Du får dina inloggningsuppgifter till tentakontot när du lämnar in svaren till de teoretiska frågorna. Du kan därefter inte fylla i fler svar till de uppgifterna! Alltså: först teori, sedan programmering. Skriv därför svaren på teoridelarna på separata papper, inte inne i själva tentan. Observera att du inte ska logga in med ditt vanliga användarnamn på datorn utan med inloggningsuppgifterna som du får ut (t.ex. användarnamn TEN123 och lösenord 12345). Ifall det strular rent tekniskt så gå tillbaka till tentavakterna och begär nya inloggningsuppgifter. Hjälpmedel: Papper och penna, samt dator för programmeringsuppgiften (det är alltså endast EN uppgift som kräver dator). Du kan lösa flera uppgifter på samma pappersark om du vill, eftersom jag rättar alla uppgifterna. Du får ta med dig tentan när du lämnar salen om du vill. Resultatet på tentan bör vara dig tillhanda senast den 5 september. Lycka till! Petter
Teoridel Uppgift 1. (7 p) Besvara kortfattat följande småuppgifter. a) Vad blir det för färg av följande kod i hexadecimal notation? #f305ff (1p) b) Ungefär hur mycket i vårt vanliga talsystem (decimala) är 2 28? (1p) c) Vad gör (rimligen) följande kodrad? (2p) dgvkund.datasource = clsdb.frandb("select * FROM Kund ORDER BY enamn, fnamn"); d) Namnge de fyra faserna i RUP, på svenska eller engelska. (2 p) e) Vad använder man usings till i.net, dvs varför skriver man t.ex. using System.Data;? (1p) Uppgift 2. (3p) På kursen har jag nämnt uttrycken spelmotor och fysikmotor. Vad menas med det, dvs vad är de till för (översiktligt, ett par meningar räcker). Vaddå motor, asså? Uppgift 3. (5p) På föreläsningarna har jag talat om XML. Vad är det, varför har man nytta av XML generellt (inte bara i C# eller Visual Studio), var kan man stöta på det och hur används det? Rita även ett XML-formaterat dokument för lagring av data (du behöver inte kunna koden för själva dokumenthuvudet, bara den ungefärliga strukturen i dokumentet). Uppgift 4. (3 p) I konstruktionsfasen i UML används ofta dynamiska diagram som aktivitetsdiagram och kanske ännu hellre sekvensdiagram. Beskriv minst tre tillfällen till när det är bra att använda dessa diagramtyper då.
Uppgift 5. (5p) Vad gör koden nedan och vad heter det språk som används här (utöver vanlig C#)? Vad är förresten ddlfiler troligen för något? this.ddlfiler.datasource = from file in Directory.GetFiles("C:/Users/pete/Desktop") select new { FileName = Path.GetFileName(file), FullPath = file }; this.ddlfiler.databind(); Uppgift 6. (10 p) Här nedan ser du en site för en blomsterhandel (några av de mest statiska sidorna är inte medtagna). Siten är byggd i HTML. Ägarna kommer till dig eftersom de inser att Internet är så mycket mer än bara en samling statiska dokument. Ge förslag på hur några eller alla sidor som återges här kan förbättras med Asp.NET (och eventuellt med kopplingar till en databas). Ge både exempel på funktion och beskriv hur funktionen ska implementeras. Obs att du inte behöver beskriva något om inloggning och administrationsgränssnitt denna gång. Observera också poängen det är en rätt så omfattande uppgift. Tänk även på att frågan gäller Asp.NET. Skriv alltså inte om bättre bilder, bättre färgskala eller mer passande rubriknamn utan om lämpliga.net-kontroller och hur de används, samt om kopplingar till databaser mm, kort sagt det som ingår i kursen (utöver extraföreläsningarna i HTML och CSS).
1. Välkomstsidan 2. Aktuelltsidan (motsvarar kalendarium)
3. Sortimentsidan 4. Sida om kurser som ges
5. Sida med vägbeskrivning 6. Kontaktsida
Praktisk del: kodning på dator Uppgift 7. (17 p) Som du såg i Asp.Net-uppgiften har Furets plantskola ett stort sortiment av växter. Ägarna blev imponerade av dina förslag om förbättringar av siten och undrar om du också kan hjälpa dem att bygga ett register i Windows Forms över alla växtsorter de har. Jovisst, säger du och kör igång! Efter att ha haft några möten med ägarna har du kommit fram till en förhoppningsvis lämplig struktur (se nedan). Din uppgift är nu att koda programmet utifrån specifikationen! Allmänt: Ett system där man kan skriva in växtsorter och sedan visa deras data i tabellform. Växtsorterna lagras (helst) i en egen klass. Startsida: En välkomstsida med välkomsttext etc efter behag En knapp som leder till sida där du kan skriva in en ny växtsort En knapp som leder till en sida där man ser alla växtsorter i sortimentet (sortering och sök tar du som nästa uppdrag då systemet ska förfinas ) Orderformulär: Det som ska sparas för varje växtsort är dess svenska namn, dess pris i kronor, dess höjd som fullvuxen i centimeter, vad det är för typ av växt och var den ska stå. Exempel: Hallon, 250, 150, BÄRBUSKE, SOL. Textboxar och lablar läggs till efter förstånd (obs! Systemet behöver bara kunna lägga in en växtsort åt gången i denna första version). En combobox eller liknande där man kan välja typ av växt: BLOMMA, BÄRBUSKE, PRYDNADSBUSKE eller TRÄD. En combobox eller liknande där man kan välja hur växten bör placeras: SOL, HALVSKUGGA eller SKUGGA. Tabbordning ska fungera på ett logiskt och användarmässigt lämpligt sätt. Görs med attributet TabIndex för varje kontroll. När man klickar på en Lägg till-knapp ska växtsorten sparas (se nedan). Data ska alltså sparas på valfritt objektorienterat sätt, förslagsvis till en egen klass. (Ju bättre OO-lösning desto bättre, men gör så gott du kan och gör annorlunda om du fastnar.) Lämpligt är att ha en array eller List med växtsorter. Programmet ska ge felmeddelande om man glömmer att fylla i något av värdena. Du får själv bestämma om fönstret ska stängas när växtsorten är tillagd.
Växtsort-lista: Lista helt enkelt alla växtsorter i, förslagsvis, en datagridview. Rubrikerna i din datagridview ska ha lämpliga namn. Ta med alla fyra attributen (namn, pris etc) i din DGV. Listningen kan t.ex. göras med hjälp av en datatable utifrån en loopning av dina sparade data (se kod nedan!). Lyckas du inte fylla tabellen så gör så gott du kan i övrigt, alternativt lista dina data på annat sätt. Lägg också till en knapp som stänger fönstret. Övrigt: Alla sidor ska helst ärva från en base form i stället för från Page. Alla kontroller ska ha vettig namngivning. Alla metoder ska kommenteras på ett vettigt sätt. Vid bedömningen ges poäng för kodmognad och färdigställande, men också för grad av användbarhet. Obs! Stöter du på problem så strunta i kravet/egenskapen och gör så gott du kan! Exempelkod för att lägga till värden i en datatable. DataTable dt = new DataTable(); dt.columns.add("namn"); dt.columns.add("pris"); etc for (int i = 0; i < lista.växtlistan.count; i++) { dt.rows.add(new object[] { lista.[i].namn, etc }); } Det kan också gå att skriva detta enklare, beroende på hur din kod är uppbyggd. Du kan alltså eventuellt göra ungefär så här: dgvlista.datasource = listan;