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
|
|