Skip to content

Kmom06: Planeringsverktyg MyPlanner2

Image description

Du ska göra vidareutveckla planeringsverktyget *MyPlanner som innehåller en “Att göra-lista”. Testerna du gjorde i kmom05 ska fortfarande fungera.

Du har jobbat igenom Kmom05 eller har motsvarande kunskaper.

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.

  • 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.

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:

Terminal window
// i din kmom06 katalog
├── MyPlanner2
├── MyPlanner2.Tests
└── TestplanMyPlanner2.pdf
  1. 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.pdf eller task download-code -- kmom06/TestplanMyPlanner2.docx och fyll i den med testfall för klasserna MyTask, PrivateTask och WorkTask.

  2. 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 i GetContentAsStrings().
    Vad får denna ändring för konsekvenser avseende dina tester? Funkar dina tester på MyTask fortfarande? Kan du verkligen enhetstesta en abstrakt klass?

  3. 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.

  4. 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.

  1. Dokumentera ditt projekt och generera dokumentationen. Dubbelkolla att dokumentationen skapats genom att starta servern och titta på sidan.

  2. 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.

Så här kan det se ut när det är klart.

Play

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.

När du gör en PR så körs först dina tester på din kod och sen lärartester på kmom05 och kmom06. Där testar vi enligt krav och klassdiagram samt följer koden (Planner och MyTaskHandler) som ni laddade ner.

Kolla här om du behöver hjälp att få testerna att passera för din PR för kmom06

Kolla i slutet av PRn och där är det information om:

  • Studenttester (dina)
  • Lärartester för kmom05 & kmom06, med två tabeller med testresultat från kmom05 och en från kmom06. Saknas tabellerna så kompilerar inte din kod med testerna och därför körs inte testerna.
  • Sammanfattning, som ska se ut så här när allt är ok.
Sammanfattning:
Student test result
student tests kmom05 ok
Test result
kmom05 ok
kmom06 ok
Everything is ok. Wait for a teacher to do a code review and correct the task!

Om du har kompileringsfel, så hittar du dem på GitHub, under Actions:

  • Välj senaste kmom06 som är röd.
  • Klicka på call-decider/run-tests
  • Klicka på Run TEACHER tests for both/submit/kmom06 och gå ner till rad 61, där hittar du första felet.
  • Lös felen tills kompileringen går igenom och du får en tabell med testresultat.

Testerna följer kraven och koden du laddade ner för klassen Planner och MyTaskHandler.
Exempel på ett fel:

  • kmom05/MyPlanner.Tests/WorkTaskTest.cs(21,38): error CS1503: Argument 1: cannot convert from ‘int’ to ‘string’ - troligen är parametrarna när du skapar eller uppdaterar en WorkTask i fel ordning eller med fel datatyp. Dubbelkolla att klassdiagrammen i uppgiften i kmom05 så ser du att argument 1 ska vara en string och du har en int.
  • kmom05/MyPlanner.Tests/WorkTaskTest.cs(21,65): error CS1503: Argument 3: cannot convert from ‘string’ to ‘System.DateTime’ - troligen är parametrarna när du skapar eller uppdaterar en WorkTask i fel ordning eller med fel datatyp. Dubbelkolla att klassdiagrammen i uppgiften i kmom05 så ser du att argument 3 ska vara en string och du har en DateTime.

Lycka till och hojta till i forumet om du behöver hjälp!