Kmom02: Objektorientering

By . Latest revision .

Vi skall bygga grunderna till ett kortspel i vår webbplats för att träna på objektorientering och hur man skapar egna klasser och applikationer i ramverket Symfony.

Vi skall programmera med objektorienterade konstruktioner för att bygga ett antal klasser som samverkar. Det handlar om klasser i PHP med metoder och medlemsvariabler. Vi försöker använda både arv och komposition så vi ser skillnader och likheter mellan dessa konstruktioner. Lyckas vi även få in konstruktioner som interface och traits så är det bonus.

Vi tar hjälp av allmän problemlösning i form av top-down/bottom-up, pseudokod och flödesdiagram och använder det för att bygga upp och designa flödet i vårt blivande kortspel.

(Detta är instruktionen för kursmomentet och omfattar det som skall göras inom ramen för kursmomentet. Momentet omfattar cirka 20 studietimmar inklusive läsning, arbete med övningar och uppgifter, felsökning, problemlösning, redovisning och eftertanke. Läs igenom hela kursmomentet innan du börjar jobba. Om möjligt – planera och prioritera var du vill lägga tiden.)

#Läs & Studera

(ca: 4-6 studietimmar)

För att lösa uppgifterna och redovisningen bör du studera enligt följande.

#Föreläsning

Titta igenom följande föreläsningar.

  1. PS. Enligt dialog i chatten så är denna föreläsning flyttad till kmom03 pga av upplevd arbetsbelastning. Det går dock bra att välja om man tittar på den i detta eller nästa kmom. Problemlösning och design av algoritmer för programmerare som visar på olika arbetssätt i hur man kan jobba med problemlösning innan man sätter igång och programmerar.

  2. Klasser och objekt i PHP - arv, komposition, interface och trait där vi studerar konstrukturer för arv, komposition, interface och trait. Vi pratar också om hur man skall tänka när man kodar objektorienterat och vad som är god kodsed och riktlinjer när man designar och implementerar sina klasser.

#Litteratur

Läs enligt följande.

  1. Jobba igenom guiden “Kom igång med Objektorienterad programmering i PHP” för att främst lära dig hur arv och komposition fungerar. Trait och interface kan du göra som överkurs. Välj själv om du enbart använder guiden som läsresurs eller om du kodar dess övningsprogram.

  2. Komplettera med att översiktligt titta igenom referensmanualen där dessa ämnen hanteras, “Classes and Objects”.

  3. Titta översiktligt på någon av de guider som ligger i dokumentationen för Symfony “The Symfony Framework Best Practices”. När du tittar så bör du ha i åtanke att “best practice” ibland behöver sättas in i sammanhanget av just den webbplats man själv bygger och den kunskapsnivå man själv står på. Det kan finnas alternativa lösningar som är mer lämpliga för just din specifika applikation.

  4. I dokumentet PHP The Right Way, finns en sektion som berör kodstil i PHP. Läs igenom den.

#Övningar & Uppgifter

(ca: 8-14 studietimmar)

Jobba igenom övningar för att träna. Uppgifterna skall utföras och redovisas.

#Övningar

Jobba igenom övningarna, de förbereder dig inför uppgifterna.

Spara dina filer under me/report och bygg vidare på den webbplatsen.

  1. Jobba genom övningen “Symfony with GET, POST, SESSION” för att träna på hur du kan jobba med GET, POST, SESSION och formulär i Symfony.

  2. Jobba igenom övningen “Kodstil med Symfony” för att skriva koden på rätt sätt.

  1. Jobba igenom övningen “Mina egna klasser i Symfony” för att komma igång och se hur du kan skriva dina egna klasser inklusive arv och komposition samt integrera dem med en kontroller i Symfony.

#Uppgifter

Följande uppgifter skall utföras och resultatet skall redovisas.

  1. Lös uppgiften “Bygg kort och kortlek i PHP och Symfony enligt MVC”. Spara dina filer under me/report och bygg vidare på den webbplatsen.

#Resultat & Redovisning

(ca: 1-2 studietimmar)

Läs instruktionen om hur du skall redovisa.

Se till att följande frågor besvaras i din redovisningstext.

  • Förklara kort de objektorienterade konstruktionerna arv, komposition, interface och trait och hur de används i PHP.

  • Berätta om din implementation från uppgiften. Hur löste du uppgiften, är du nöjd/missnöjd, vilken förbättringspotential ser du i din koden och dina klasser?

  • Berätta hur det kändes att modellera ett kortspel med flödesdiagram och psuedokod. Var det något som du tror stödjer dig i din problemlösning och tankearbete för att strukturera koden kring en applikation?

  • Vilken är din TIL för detta kmom?

#Revision history

  • 2022-04-05: (C, mos) Nytt kmom inför mvc-v2 och vt22.
  • 2021-05-26: (B, mos) Läsresurs om semantisk versionshantering.
  • 2021-04-02: (A, mos) Första utgåvan i mvc-v1.

Document source.