Följande uppgift ersätter de workshops som under kursens gång varit examinerande. Är du godkänd på någon av dessa så kommer det att tas i beaktande när du lämnar in uppgiften, men du behöver ändå göra uppgiften i sin helhet.
Uppgiften går i korthet ut på att göra en applikation som motsvarar tärningsspelet Yatzy. Du skall göra en domänmodell, en designmodell och implementation av spelet. Förslagsvis arbetar du med domänmodellen först, för att sedan iterativt designa, implementera och testa. Spelet behöver inte vara grafiskt snyggt (en konsollapplikation duger) utan fokus ligger på en bra och hållbar design och en stabil implementation. Följande krav ställs på applikationen:
- Spela spelet Yatzy enligt orginalregler och minst en regelvariant av spelet t.ex. Maxi-Yatzy
- Man skall kunna välja antal spelare (1-5)
- Spelare har ett namn
- Spelare kan vara en människa eller en datorspelare
- Ett pågående spelet skall kunna sparas, applikationen avslutas och omgången skall sedan kunna återupptas.
- Spelet skall sparas efter avslutad omgång
- Två olika listor över sparade spel skall kunna visas
- En kompakt lista som visar datum, spelare och deras respektive slut-poäng
- En fullständig lista som visar datum och hela spelbrickan.
- Model-View-Controller arkitektur
- God kodkvalité (t.ex. konsekvent kodstandard, ingen kodduplicering)
- Objektorienterad Design och Implementation. Detta innefattar men är inte begränsat till:
- Objekt kopplas samman med associationer inte med text eller sifferbaserade nycklar.
- Klasser har hög sammanhängighet (high cohesion) och är inte onödigt stora eller har onödigt mycket ansvar.
- Klasser har låg kopplingsgrad (low coupling) och är inte kopplade till onödigt mycket.
- Statiska variabler eller operationer används inte.
- Det finns inga dolda beroenden.
- Information skall vara inkapslad.
- Designen är naturlig och man kan se domänmodellen i designen
- Vältestad – applikationen skall fungera och inte bete sig konstigt under normalt användande.
- Leverans med klassdigaram (domänmodell), klassdiagram (designmodell som stämmer med implementation), källkod, körbar version.