Lektion 7 - Objektorienterad programmering (10/1)

Bullarna mobiliserade duktigt, men alla gick åt som vanligt.

Denna lektion handlade om Objektorienterad programmering som är en väl använd programmeringsparadigm.

Objektorientering handlar om att kapsla in egenskaper i så kallade klasser och sedan skapa objekt med klasser som mall. Många program blir snyggare och mer naturliga med klasser och objekt, faktum är att riktigt stora program nästan är omöjliga att skriva utan objekt!

Språket vi använder för att leka med objektorientering heter PHP och används mest för att göra hemsidor, vi ska istället köra PHP-skript som program. Här är ett exempel på hur det kan se ut:

#!/usr/bin/php
<?
print "Hej världen!";
?>
Allt som står mellan "<?" och "?>" är PHP-kod som ska köras. Här följer ett litet exempel som handlar om ett register över personer:

I världen finns det superhjältar, som räddar tjejer med sina superkrafter, och vanliga människor (mugglare) som bara har tråkiga jobb. Alla personer har ett namn och ett telefonnummer. Superhjältar har dessutom en superkraft och ett hemligt artistnamn medan mugglare har ett tråkigt jobb. I registret vill vi ha alla sorters personer, utan att behöva hålla reda på vilka som är vilken sort. Vi vill också kunna göra en presentation för vem som helst.

Vi skapar tre klasser:

  • "Person" som innehåller variablerna "namn" och "telefonnummer" samt en enkel metod för att presentera personen,
  • "Superhjälte" som ärver från klassen "Person" och dessutom lägger till "superkraft" och "alias",
  • "Mugglare" som också ärver från "Person", men som har den egna variabeln "jobb".
I ett enkelt klassdiagram kan det se ut såhär:
                             __________
                            |          |
                         __\|  Person  |/__
                        |  /|__________|\  |
                        |                  |
                  ______|______      ______|_____
                 |             |    |            |
                 | Superhjälte |    |  Mugglare  |
                 |_____________|    |____________|

...och så här kan klasserna se ut i PHP:
class Person
{
  public $namn;
  public $telefonnummer;

  function presentation()
  {
    return "Hej. Jag heter $this->namn.\n" .
      "Du kan nå mig på $this->telefonnummer.\n";
  }
}

class Superhjälte extends Person
{
  public $alias;
  public $superkraft;

  function presentation()
  {
    return parent::presentation() .
      "Jag är $this->superkraft och kallar mig $this->alias, " .
      "men säg det inte till någon...\n";
  }
}

class Mugglare extends Person
{
  public $jobb;

  function presentation()
  {
    return parent::presentation() .
      "Jag har tråkigt på mitt jobb som $this->jobb.\n";
  }
}
Man säger att både superhjältar och mugglare är personer, eftersom de har allt som en person ska ha. Båda sorterna kan alltså blandas i en lista över personer.

Nu kan vi göra såhär:

$stålmannen = new Superhjälte();
$stålmannen->namn = "Kal El";
$stålmannen->alias = "Clark Kent";
$stålmannen->telefonnummer = "0735769225";
$stålmannen->superkraft = "superstark";

$fantomen = new Superhjälte();
$fantomen->namn = "Kit Walker";
$fantomen->alias = "Fantomen";
$fantomen->telefonnummer = "555-PHANTOM";
$fantomen->superkraft = "hemlig";

$bert = new Mugglare();
$bert->namn = "Bert Karlsson";
$bert->telefonnummer = "08-5428543";
$bert->jobb = "mediemogul";

$kungen = new Mugglare();
$kungen->namn = "Karl Gustav Bernadotte";
$kungen->telefonnummer = "08-1";
$kungen->jobb = "konung";

$personregister = array($stålmannen, $fantomen, $bert, $kungen);

print $personregister[3]->presentation();
Koden ovan kommer att skriva ut det här när man kör den:
Hej. Jag heter Karl Gustaf Bernadotte.
Du kan nå mig på 08-1.
Jag har tråkigt på mitt jobb som konung.

Du kan se hela presentationen från föreläsningen här.

 Bulldemonen!

 Paus i klassen

 Inte ström, bullar!

 Love relaxar

 Hårt jobb

 Pontus med bulle

 Robin med bulle

 UML-design

 Sten-sax-påse dikterar livet

_allmänt_ _nyheter_ _aktiviteter_ _kontakt_