Kmom02: Objektorientering
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.
(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.
- 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.
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.
Komplettera med att översiktligt titta igenom referensmanualen där dessa ämnen hanteras, “Classes and Objects”.
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.
I dokumentet PHP The Right Way, finns en sektion som berör kodstil i PHP. Läs igenom den.
#Git och skriva bra commits
Det kan vara en konst att skriva bra commit-meddelande så att man får en bra historik när man tittar på koden via ens commits.
- Läs artikeln “How to Write a Git Commit Message” för att få sju gyllene regler som kan hjälpa dig till bättre commit-meddelanden.
#Ö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.
Jobba igenom övningen “Kodstil med Symfony” för att skriva koden på rätt sätt och få hjälp att formattera din kod.
Jobba genom övningen “Write your application code in Symfony” för att träna på hur du kan skriva applikationskod i Symfony och hur du jobbar med HTML formulär och sessionen.
#Uppgifter
Följande uppgifter skall utföras och resultatet skall redovisas.
- 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?
Vilka är dina reflektioner så här långt med att jobb i Symfony med applikationskod enligt MVC?
Vilken är din TIL för detta kmom?
#Revision history
- 2023-04-04: (D, mos) Genomgången inför vt23.
- 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.