Gissa det hemliga talet

Relevanta dokument
Gissa det hemliga talet

TIMREDOVISNINGSSYSTEM

ANVÄNDARHANDLEDNING FÖR

Kvinnor som driver företag pensionssparar mindre än män

Hur du arbetar med VFU-portfölj i Mondo. en lathund för student

4-3 Vinklar Namn: Inledning. Vad är en vinkel?

Klasser och objekt i C#

Riktlinjer - Rekryteringsprocesser inom Föreningen Ekonomerna skall vara genomtänkta och välplanerade i syfte att säkerhetsställa professionalism.

Lathund, procent med bråk, åk 8

SANNOLIKHET. Sannolikhet är: Hur stor chans (eller risk) att något inträffar.

Diskussionsfrågor till version 1 och 2

Erfarenheter från ett pilotprojekt med barn i åldrarna 1 5 år och deras lärare

Administration Excelimport

Presentationsövningar

Manual för BPSD registret. Version 6 /

Avsikt På ett lekfullt sätt färdighetsträna, utveckla elevers känsla för hur vårt talsystem är uppbyggt samt hitta mönster som uppkommer.

Ha det kul med att förmedla och utveckla ett knepigt område!

konstanterna a och b så att ekvationssystemet x 2y = 1 2x + ay = b 2 a b

Instruktioner för beställning och kontoadministration för abonnenter av inlästa läromedel

NATIONELLA MATEMATIKTÄVLING

Snabbslumpade uppgifter från flera moment.

DOP-matematik Copyright Tord Persson. Bråktal Läs av vilka tal på tallinjen, som pilarna pekar på. Uppgift nr

Tränarguide del 1. Mattelek.

Friskoleurval med segregation som resultat

Du ska nu skapa ett litet program som skriver ut Hello World.

TIMREDOVISNINGSSYSTEM

Boken om Teknik. Boken om Teknik är en grundbok i Teknik för åk 4 6.

Laborationsanvisning. Digital väckarklocka. Steg 2, laborationsuppgift 2. Författare: Mats Loock Kurs: Inledande programmering med C# Kurskod:1DV402

Vi skall skriva uppsats

Har vi lösningen för en bättre hemtjänst? Självklart.

Träning i bevisföring

Sannolikhet och Odds

Mätningar på op-förstärkare. Del 3, växelspänningsförstärkning med balanserad ingång.

För dig som är valutaväxlare. Så här följer du reglerna om penningtvätt i din dagliga verksamhet INFORMATION FRÅN FINANSINSPEKTIONEN

Sammanfattning på lättläst svenska

VÄRDERINGSÖVNINGAR. Vad är Svenskt?

Kapitel 6. f(x) = sin x. Figur 6.1: Funktionen sin x. 1 Oinas-Kukkonen m.fl. Kurs 6 kapitel 1

Webb-bidrag. Sök bidrag på webben Gäller från

Två konstiga klockor

Fullför installation av ELIQ

Syftet med en personlig handlingsplan

Introduktion till Open 2012

Axiell Arena. Samarbeta om bilder Regionbiblioteket i Kalmar län

Rätt till heltid i Stockholms stad Skrivelse från Sara Pettigrew och Åsa Jernberg (båda MP)

VoteIT Documentation. Utgåva 0.1. VoteIT and contributors

Datorövning 2 Statistik med Excel (Office 2007, svenska)

Nedfrysning av spermier. Information om hur det går till att lämna och frysa ned spermier.

EN BÄTTRE KREDITAFFÄR

Partnerskapsförord. giftorättsgods görs till enskild egendom 1, 2. Parter 3. Partnerskapsförordets innehåll: 4

ELEV- HANDLEDNING (Ansökan via webben)

Examensarbete är det en kurs? Inst. för Samhällsbyggnad 2009

Personlig assistans med Kiruna Kommun som assistansanordnare

Väga paket och jämföra priser

Kampanj kommer från det franska ordet campagne och innebär att man under en tidsbegränsad period bedriver en viss verksamhet.

Skriva B gammalt nationellt prov

SOLCELLSBELYSNING. En praktisk guide. Råd & Tips SOLENERGI LADDA MED. Praktiska SÅ TAR DU BÄST HAND OM DIN SOLCELLSPRODUKT

Hemsida Arbetsrum. Skapa arbetsrumslista

Efter att du har installerat ExyPlus Office med tillhörande kartpaket börjar du med att göra följande inställningar:

Repetitivt arbete ska minska

Säkerhet. De onda. Vilka är farorna?

Utbildningsplan för arrangörer

FINLAND I EUROPA 2008

Timeline dropbox för lärare och elever

En lönerevision görs i flera steg; Initiering - Lönerevision Attestering - Skapa förmån - Uppdatera lön.

Lathund för validering av avhandlingar i LUCRIS

4-6 Trianglar Namn:..

Guide för att hitta markavvattningssamfälligheter och täckdikningsplaner

Att koda en magnetremsa i plastkortskrivare med inbyggd magnetkodare.

Varför är det så viktigt hur vi bedömer?! Christian Lundahl!

Svenska Du kan med flyt läsa texter som handlar om saker du känner till. Du använder metoder som fungerar. Du kan förstå vad du läser.

Enkät i förskoleklass

Sammanfatta era aktiviteter och effekten av dem i rutorna under punkt 1 på arbetsbladet.

När du som vårdpersonal vill ta del av information som finns hos en annan vårdgivare krävs det att:

Föräldrar i Skola24. Schema

Statsbidrag för läxhjälp till huvudmän 2016

Rapport Agilityverksamhetens framtid

Information sid 2 4. Beställning sid 5. Ändring/Nytt SIM sid 6. Avsluta abonnemang sid 7. Fakturafråga sid 8. Felanmälan/fråga sid 9.

Visma Proceedo. Beställa IT-produkter - beställare. Version 2.0 /

Likabehandlingsplan för läsåret

ÄT RÄTT NÄR DU TRÄNAR

Individuellt Mjukvaruutvecklingsprojekt

KURSPLAN,! KUNSKAPSKRAV! ELEVARBETEN!

Vad är WordPress? Medlemmar

Laborativ matematik som bedömningsform. Per Berggren och Maria Lindroth

Arbeta bäst där du är Dialect Unified Mi

Distribuerade Informationssystem VT-04

MÖJLIGHETERNAS TÄBY Barnomsorg

Assistenten instruktioner Starta assistenten

Registrera betalning. Motsvarande vägledningar för vänstermeny hittar du längre ner i dokumentet

Till dig som vill bli medlem i SEKO

FOLKUNIVERSITETET 1 (11) Bildmanér för Webb3. Vår referens: Fredrik Suter Version 1. Stockholm

Användarvänlighet och tillgänglighet Workshop II

Manual HSB Webb brf

Gruppenkät. Lycka till! Kommun: Stadsdel: (Gäller endast Göteborg)

Systematiskt kvalitetsarbete

MOTIONER TILL REPRESENTANTSKAP 2015

Klassen kom tillsammans fram till vilka punkter som vi skulle ta hänsyn till. Dessa var:

Sid i boken Rekrytering. Författare Annica Galfvensjö, Jure Förlag

FRÅN A TILL Ö LäraMera Ab / och Allemansdata Ab / FRÅN A TILL Ö

Transkript:

Laborationsanvisning Gissa det hemliga talet Steg 1, laborationsuppgift 1 Författare: Mats Loock Kurs: ASP.NET MVC Kurskod:1DV409

Innehåll Problem 4 Modell 4 Den uppräkningsbara typen Outcome 5 Strukturen GuessedNumber 5 Klassen SecretNumber 5 Vymodell 6 Controller 7 Vy 7 Körexempel 8 Krav 11 2011 Mats Loock 1DV409, ASP.NET MVC 3 (12)

Problem Skriv webbapplikation med hjälp av ASP.NET MVC och C# där användaren ska ha sju försök på sig att gissa ett hemligt tal i det slutna intervallet mellan 1 och 100. Figur 1. När en användare gjort en gissning ska resultatet av gissningen presenteras, det vill säga om gissningen var för låg, för hög eller rätt. Har användaren gissat rätt, eller förbrukat samtliga gissningar, ska det inte gå att göra fler gissningar innan ett nytt hemligt tal slumpats. Modell I klassdiagrammet nedan ser du ett förslag på hur du kan utforma typerna som ska utgöra modellen i applikationen. Du behöver inte utforma dina typer på samma sätt utan kan skapa en egen om du så vill Figur 2. 2011 Mats Loock 1DV409,ASP.NET MVC 4 (12)

Den uppräkningsbara typen Outcome Typen Outcome används för att representera utfallet av en gissning. Figur 3. Innan en gissning gjort är utfallet obestämt (Indefinite). En gissning på ett tal mindre än det hemliga talet är för låg (Low). En gissning på ett tal större än det hemliga talet är för hög (High). En gissning på ett tal lika med det hemliga talet är för rätt (Right). Har sju gissningar redan gjorts och fler försök att gissa görs saknas fler möjligheter att gissa (NoMoreGuesses). En gissning på ett tal överstämmande med en tidigare gissning är en gammal gissning (OldGuess). Strukturen GuessedNumber Instanser av strukturen GuessedNumber används för att lagra information om genomförda gissningar. Figur 4. Fältet Number Publikt fält av typen int? som innehåller en gissnings värde. Fältet Outcome Publikt fält av typen Outcome som innehåller utfallet av en gissning. Klassen SecretNumber Klassen måste implementeras så den som minst innehåller medlemmarna enligt klassdiagrammet i Figur 5 och har den funktionalitet som beskrivs för respektive medlem för att klara samtliga tester. Figur 5. Klassdiagram över SecretNumber. Observera att set-blocken för egenskapen Number ska vara privat. Fältet _guessednumbers Privat fält, av typen List<GuessedNumber>, som innehåller gjorda gissningar med tillhörande utfall sedan det hemliga talet slumpats fram. Kapslas in av egenskapen GuessedNumbers. Fältet _number Privat fält av typen int? som innehåller det hemliga talet. Kapslas in av egenskapen Number. 2011 Mats Loock 1DV409,ASP.NET MVC 5 (12)

Konstanten MaxNumberOfGuesses Publik konstant, av typen int, med värdet 7 som definierar hur många gissningar en användare har på sig att gissa rätt. Egenskapen CanMakeGuess Publik read only -egenskap, av typen bool, vars värde ger om användaren kan gissa eller inte. Så länge användaren kan göra en gissning ska egenskapen ge värdet true. Egenskapen ska ge värdet false då en användare förbrukat sju gissningar eller lyckats gissa rätt. Egenskapen Count Publik read-only -egenskap, av typen int, vars värde ger antalet gjorda gissningar sedan det hemliga talet slumpades fram. Egenskapen Guess Egenskap, av typen int?, vars värde ger det senast gissade talet. Innan någon gissning gjorts ska egenskapen ha värdet null. Egenskapen GuessedNumbers Read-only -egenskap, av typen IList<GuessedNumber> som ger en read-only -referens till det privata fältet _guessednumbers. OBS! För att undvika en privacy leak får under inga omständigheter en referens till det privata fältet _guessednumbers returneras av egenskapen. (Ett tips är att använda metoden AsReadOnly() som löser alla(?) problem.) Egenskapen LastGuestNumber Read-only -egenskap, av typen GuestNumber?, vars värde ger utfallet av den senaste gissningen. Innan någon gissning gjorts ska egenskapen ge värdet null. Egenskapen Number Egenskap, av typen int?, där get är publik och set är privat, som innehåller det hemliga talet. Så länge som det går att gissa ska egenskapen ge värdet null. Går det inte att gissa ska egenskapen ge värdet den privata egenskapen _number har. Metoden Initialize Publik metod som initierar klassens fält och egenskaper. List-objektet _guessednumbers refererar till ska återanvändas och måste därför rensas på gjorda gissningar. Number ska tilldelas ett slumpat heltal i det slutna intervallet mellan 1 och 100. Guess ska tilldelas värdet null. Metoden MakeGuess Publik metod som anropas för att göra en gissning av det hemliga talet. Beroende om det gissade talets värde är för högt, lågt eller överensstämmer med det hemliga talet ska lämpligt värde av typen Outcome returneras. En gissning på ett tidigare gissat tal ska inte räknas. Om egenskapen Guess vid anrop av metoden MakeGuess()inte är i det slutna intervallet mellan 1 och 100 ska metoden, efter att undersökt egenskapens värde, kasta ett undantag av typen ArgumentOutRangeException. Konstruktorn Konstruktorn har till uppgift att se till att ett SecretNumber-objekt är korrekt initierat. Det innebär att fält och egenskaper har blivit tilldelade lämpliga värden, vilket enklast görs genom att låta konstruktorn anropa metoden Initialize(). Konstruktorn ska även ansvara för att instansiera List-objektet som håller ordning på gjorda gissningar. Vymodell Beroende på hur du väljer att utforma modellklassen kan det vara lämpligt att skapa vymodellklasser som hanterar datat vyer presenterar. 2011 Mats Loock 1DV409,ASP.NET MVC 6 (12)

Controller Tänk på att det hemliga talet, eller snarare objektet som utgör modellen, ska kommas ihåg mellan postningar. I en controller har du tillgång till egenskapen Session Vy Hur många vyer behöver du? Fler än en? Använder du flera vyer och behöver visa samma data i flera kan det vara en god idé att placera gemensam kod i en eller flera partial views så att du bara har koden på ett ställe (bryt inte mot DRY-principen, Don t Repeat Yourself). 2011 Mats Loock 1DV409,ASP.NET MVC 7 (12)

Körexempel Figurerna nedan är ett förslag på hur gränssnittet kan utformas. Det står dig fritt att utforma det som du finner lämpligt. Figur 6. Användaren står i begrepp att göra en sjätte gissning. Figur 7. Användaren gissar på ett tal användaren redan gissat på. 2011 Mats Loock 1DV409,ASP.NET MVC 8 (12)

Figur 8. Användaren har gissat rätt hemligt tal. Figur 9. Användaren misslyckas med att gissa det hemliga talet. 2011 Mats Loock 1DV409,ASP.NET MVC 9 (12)

Figur 10. Användaren gissar på ett tal större än 100. Figur 11. Användaren gissar då textfältet är tomt. 2011 Mats Loock 1DV409,ASP.NET MVC 10 (12)

Krav Du får fritt utforma formuläret, där inmatningen av en gissning görs. Följande krav måste uppfyllas: 1. Användaren har sju (7) försök på sig att gissa rätt tal vilket ska lagras i en namngiven konstant i modellen. 2. Det ska bara gå att genomföra en gissning då användaren gissar på ett heltal mellan 1 och 100. Validering av en gissning innan den skickas till servern måste göras i största möjligaste mån. Självklart ser du till att validera på servern också. 3. Användaren ska informeras om den senaste gissningen var för hög eller för låg jämfört med det hemliga talet. 4. Användaren ska informeras om en gissning är korrekt och hur många gissningar som krävdes samt därefter kunna välja att få gissa på ett nytt hemligt tal. 5. Antalet gissningar som gjorts sedan det hemliga talet slumpats fram ska lagras i egenskapen Count, där get-metoden ska vara publik och set-metoden privat. 6. Gissar användaren på ett tal som redan han/hon gissat på ska det inte räknas som en gissning utan användaren ska informeras om att han/hon redan gissat på talet. 7. Användaren ska kunna se en historik över tidigare gissningar och om de var för höga eller för låga jämfört med det hemliga talet. 8. Klienten ska inte på något sätt kunna komma åt det hemliga talet, som slumpas fram. Det hemliga talet får under inga omständigheter lämna servern. 9. Alla hantering av det hemliga talet placerar du i en klass som får utgöra modellen. Klassen ansvara för att på lämpligt sätt informera om användaren gissat rätt tal, gissat för lågt, gissat för högt, redan gissat på talet och om användaren förbrukat alla gissningar. 10. En gissning görs lämpligen genom att en metod i modellklassen anropas. Metoden kan exempelvis returnera, och/eller sätta en egenskap till, lämpligt värde (enligt punkten ovan) beroende på resultatet av gissningen. Mycket lämpligt är att använda en uppräkningsbar typ (enum) som returvärde. Metoden ska returnera lämpligt värde, förslagsvis av typen Outcome, beroende på resultatet av gissningen. a) Är det gissade talet inte i det slutna intervallet mellan 1 och 100 ska ett undantag av typen ArgumentOutOfRangeException kastas. b) Användaren har sju (7) försök på sig att gissa rätt tal. Det ska inte gå att göra fler gissningar utan att ett nytt hemligt tal slumpas fram. Görs ytterligare försök utöver de stipulerade sju ska värdet Outcome.NoMoreGuesses returneras. c) Är det gissade värdet samma som en tidigare gissnings värde ska inte gissningen räknas och värdet Outcome.OldGuess returneras. d) Är det gissade värdet lägre än det hemliga talet ska värdet Outcome.Low returneras. e) Är det gissade värdet högre än det hemliga talet ska värdet Outcome.High returneras. f) Är det gissade värdet samma som det hemliga talet ska och värdet Outcome.Right returneras. 11. Går det att genomföra en gissning ska det hemliga talet inte kunna kommas. 12. Går det inte att genomföra en gissning ska det hemliga talet finnas tillgängligt via en egenskap. 13. Några privacy leaks får under inga omständigheter förekomma i modellklassen. 2011 Mats Loock 1DV409,ASP.NET MVC 11 (12)

2011 Mats Loock 1DV409,ASP.NET MVC 12 (12)