Kmom06: Planeringsverktyg MyPlanner2
Du ska göra vidareutveckla planeringsverktyget *MyPlanner som innehåller en “Att göra-lista”. Testerna du gjorde i kmom05 ska fortfarande fungera.
Förkunskaper
Section titled “Förkunskaper”Du har jobbat igenom Kmom05 eller har motsvarande kunskaper.
Introduktion
Section titled “Introduktion”Ditt planeringsprogram MyPlanner har mottagits väl men det behöver uppdateras lite för att säljas in. Kunderna vill ha olika uppgifter och någon av kunderna vill ha en webbsida som gränssnitt istället för terminalprogrammet. De vill att du ska skapa MyPlanner2.
Tips: Under utvecklingen av programmet så använd gärna huvudprogrammet till att testa så att varje klass funkar som du tänkt.
Kodregler
Section titled “Kodregler”- Använd this och base
- Använd namngivningsreglerna
- Gör minst en explicit konstruktor i varje klass
- Använd hjälpmetoder för att få ner antalet kodrader. En vanlig rekommendation är max 20 rader per metod.
- Använd de kodkonstruktioner som finns på kursens webbsida.
- Använd inte (inte tillåtet) lambda-funktioner.
- Använd inte (inte tillåtet) med paket som LINQ, dynamiska typer, goto och extension metoder.
Katalogstruktur MyPlanner2
Section titled “Katalogstruktur MyPlanner2”Det finns en påbörjad testplan till projektet MyPlanner att ladda ner. Fortsätt gärna fylla i den eller kopiera innehållet och lägg i ett eget dokument. Lägg testplanen TestplanMyPlanner2.docx eller TestplanMyPlanner2.pdf på samma ställe som koden på detta sätt:
// i din kmom06 katalog├── MyPlanner2├── MyPlanner2.Tests└── TestplanMyPlanner2.pdf-
I kmom05 gjorde du testfall och nu ska du uppdatera testplanen för MyPlanner2. Ladda ner den påbörjade testplanen med
task download-code -- kmom06/TestplanMyPlanner2.pdfellertask download-code -- kmom06/TestplanMyPlanner2.docxoch fyll i den med testfall för klasserna MyTask, PrivateTask och WorkTask. -
Det har varit en kodanalys och eftersom vi eftersträvar DRY kod ska den abstrakta metoden
GetContentAsStringsSpecific()läggas till i klassen MyTask. Uppdatera koden i MyTask så att den anropas iGetContentAsStrings().
Vad får denna ändring för konsekvenser avseende dina tester? Funkar dina tester på MyTask fortfarande? Kan du verkligen enhetstesta en abstrakt klass? -
Finns det ställen i klasserna Planner och MyTaskHandler där det är lämpligt att lägga till
readonly? Lägg i så fall till readonly. -
Dokumentera klassen WorkTask fullständig enligt kmom06. Lägg i övriga klasser till en “summary” som beskriver klassen. “Summaryn” bör innehålla en beskrivning av klassen syfte. Vi kräver inte att du genererar dokumentationen (webbsidan) eftersom det förutsätter en del installation och konfigurering.
Extrauppgifter
Section titled “Extrauppgifter”-
Dokumentera ditt projekt och generera dokumentationen. Dubbelkolla att dokumentationen skapats genom att starta servern och titta på sidan.
-
Lägg till möjligheten att asynkront läsa ifrån fil och spara till fil i klassen Planner. Implementera klassen FileHandler. Vid start ska aktuella uppgifter läsas in från filen. Spara ner alla uppgifter på filen när programmet avslutas.
Klassen FileHandler innehåller:
ReadAsync()läser innehållet från filen tasks.txt.SaveAsync()sparar ner uppgifter till filen tasks.txt.
Demo på MyPlanner2
Section titled “Demo på MyPlanner2”Så här kan det se ut när det är klart.
Tips från coachen
Section titled “Tips från coachen”Felsöka med hjälp av utskrifter av Console.WriteLine(). Använd gärna debugger i VS Code.
Glöm inte att använda ‘dotnet format’ för att formatera din kod.
Lycka till och hojta till i forumet om du behöver hjälp!