Kmom02: Arv och Komposition

By , . Latest revision .

Vi jobbar vidare med programmering av klasser och objekt. Vi tar fler grundkonstruktioner i objektorientering och PHP. Vi tittar på arv och komposition för att se hur klasser kan samverka och bygga på varandra. Vi använder namespace för att strukturera koden och vi använder en autoloader enligt PSR-4.

Vi ser hur ett klassdiagram kan ritas i UML, för att skissa på relationerna mellan klasserna. Vi ser också hur man kan bygga upp automatisk dokumentation från koden via docblock-kommentarer.

Vi börjar koda inuti ramverket och använder oss av konstruktioner som routes, vyer och placerar klasserna inuti ramverket med givna namespaces och använder oss av ramverkets autoloader. Som övning tar vi och flyttar vårt spel “Gissa mitt nummer” in i ramverket.

Ett antal tärningar representerade med olika grafiska metoder.

Ett antal tärningar representerade med olika grafiska metoder.

(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: 3-6 studietimmar)

#Bok & Artiklar

Läs följande för att skaffa dig bakgrundskunskap i PHP och objektorientering. Gör din egen läsplan så att du hinner läsa igenom dem innan kursen är slut, du behöver inte läsa allt i detta kmom.

  1. Följande böcker nämndes i första kmomet, det finns dock inga specifika läsanvisningar till dem, således fri läsning efter behov och intresse.

    1. Webbutveckling med PHP och MySQL
    2. PHP Apprentice - An online book for learning PHP
  2. PHP-manualen är läsvärd och specifikt det stycket som handlar om “Klasser och Objekt”. Försök läsa igenom hela stycket innan kursen är slut, det ger dig en god insyn i objektorienterad PHP.

  3. Läs dokumentet PHP The Right Way, skrivet och underhållet av PHP communityn ger det dig en god översikt till de verktyg, processer och begrepp som är viktiga ur ett helhetsperspektiv.

#Namespace och autoloader

En viktig del i detta kmom är begreppen namespace och autoloader. Här är en samling av läsvärt material som ger dig grundkunskapen.

  1. Läs igenom, men hoppa över detaljer, det stycke i PHP manualen som handlar om begreppet namespace. Skaffa dig en översikt vad det handlar om och hur man definierar och använder namespace.

  2. När det gäller namespace så använder vi oss av PHP-FIG och standarden PSR-4: Autoloader.

  3. Vi använder composers implementation av autoloadern, läs om Autoloading i manualen för composer.

#Modellering och UML

Kika igenom följande lästips om UML och modellering, ägna tid åt dem om du finner det intressant.

  1. I kursen databas introducerades du till ritverktyg för ER-modellering, du kan använda samma verktyg till UML-modellering. Här är två verktyg att välja bland.

  2. När man pratar om objektorienterad programmering så underlättar det om man har en viss bas i objektorienterad modellering. Därför kan du läsa kort om UML, “Unified Modelling Language”. En bra plats att starta är någon av följande:

#Dokumentation och PHPDoc

Följande handlar om att automatgenerera dokumentation baserad på kommentarer i koden. Det är bakgrundsinformation till en av uppgifterna nedan.

  1. I dokumentet PHP The Right Way, finns en sektion som berör dokumentering av koden.

  2. Bekanta dig kort med verktyget phpDocumentor som kan automatgenerera dokumentation av din kod, genom att bland annat läsa informationen från dina docblock kommentarer. Läs översiktligt så att de är medveten om vad verktyget kan göra.

  3. Kika snabbt och översiktligt igenom referensen till PHPDoc, det ger dig en bas för information om hur du skriver dina egna docblock kommentarer.

#Ramverk Anax

Följande referenser är relevanta för ramverket Anax, studera dem snabbt, kort och översiktligt.

  1. Följande Anax moduler är extra relevanta i detta kmom, läs deras README för en översyn av hur de fungerar.

#Video

Det finns generellt kursmaterial i video form.

  1. Kursen innehåller genomgångar och föreläsningar som spelas in (streamas) och därefter läggs i en spellista. Du kan nå spellistan på “oophp streams vt19”.

  2. Uppgifter och övningar kan innehålla extra videomaterial i form av spellistor kopplade till respektive artikel. Ofta syns dessa videor i inledningen av artikeln.

#Övningar & Uppgifter

(ca: 10-14 studietimmar)

#Uppgifter

Gör följande uppgifter.

  1. I guiden “Kom igång med Objektorienterad programmering i PHP” jobbar du igenom följande del. Spara koden i me/guide.

  2. Gör uppgiften “Flytta spelet Gissa mitt nummer till me-sidan (v5)”. Du skall kopiera koden för ditt gissa-spel och integrera in det i din me-sida och använda ramverkets struktur. Koden sparar du i me/redovisa.

  3. Gör uppgiften “Dokumentera PHP med phpdoc och phpDocumentor”. Spara uppdateringarna du gör i ditt me/redovisa.

  4. Pusha och tagga ditt repo me/redovisa allt eftersom och sätt en avslutande tagg (2.0.*) när du är klar med alla uppgifter och redovisningstext i kursmomentet. Gör även en avslutande make test som en sista avstämning, innan du sätter sista taggen.

#Resultat & Redovisning

(ca: 1-2 studietimmar)

Läs instruktionen om hur du skall redovisa.

Se till att följande frågor besvaras i texten:

  • Berätta om din syn på modellering likt UML jämfört med verktyg som phpDocumentor. Fördelar, nackdelar, användningsområde? Vad tycker du om konceptet make doc?
  • Hur gick det att överföra spelet “Gissa mitt nummer” in i din me-sida, hade du en bra grundstruktur du kunde behålla eller fick du skriva om mycket av koden?
  • Hur känns det att skriva kod utanför och inuti ramverket, ser du fördelar och nackdelar med de olika sätten?
  • Vilken är din TIL för detta kmom?

#Revision history

  • 2019-04-05: (E, mos) Publicerat till v5.
  • 2018-09-10: (D, mos) Flyttade tärningsspelet till kmom03.
  • 2018-09-03: (C, mos) Ingen ändring gjord inför hösten.
  • 2018-03-27: (B, mos) Uppdaterad oophp v4.
  • 2017-03-31: (A, mos, lew) Första versionen.

Document source.