Differences
This shows you the differences between two versions of the page.
dvprog_14 [2017-09-01 14:00] Daniel Viström |
dvprog_14 [2022-07-18 13:20] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Genomgång 11 - Objektorienterad programmering ====== | ||
- | Viktgt att du lär dig vad som menas med följande och att du kan skilja dem åt: | ||
- | Klass | ||
- | Objekt | ||
- | Attribut | ||
- | Metod | ||
- | Arv | ||
- | |||
- | [[https:// | ||
- | |||
- | ==== Exempel 1 ==== | ||
- | |||
- | <code php> | ||
- | <?php | ||
- | |||
- | // Klassen kan ligga i samma fil som huvudprogrammet, | ||
- | |||
- | class Counter{ | ||
- | |||
- | private $value; | ||
- | | ||
- | public function __construct(){ | ||
- | $this-> | ||
- | } | ||
- | | ||
- | public function klick(){ | ||
- | $this-> | ||
- | } | ||
- | | ||
- | public function getValue(){ | ||
- | return $this-> | ||
- | } | ||
- | | ||
- | public function zero(){ | ||
- | $this-> | ||
- | } | ||
- | } | ||
- | |||
- | |||
- | // Här börjar huvudprogrammet. | ||
- | |||
- | include(' | ||
- | |||
- | $a = new Counter(); | ||
- | echo $a-> | ||
- | |||
- | // $a-> | ||
- | |||
- | $i = 0; | ||
- | while ($i < 20){ | ||
- | $a-> | ||
- | $i++; | ||
- | } | ||
- | echo $a-> | ||
- | |||
- | $b = new Counter(); | ||
- | $b-> | ||
- | echo $b-> | ||
- | |||
- | $b-> | ||
- | echo $b-> | ||
- | |||
- | include(' | ||
- | |||
- | </ | ||
- | |||
- | ==== Exempel 2 ==== | ||
- | |||
- | <code php> | ||
- | <?php | ||
- | include(' | ||
- | include(' | ||
- | |||
- | |||
- | $a1 = new Animal(); | ||
- | echo 'Djur 1 har vikt: ' . $a1-> | ||
- | |||
- | $a2 = new Animal(23); // Skapar en ny instans (objekt) av klassen Animal med vikt 23. | ||
- | $a2-> | ||
- | echo 'Djur 2 har vikt: ' . $a2-> | ||
- | echo 'Djur 2 har ' . $a2-> | ||
- | echo $a2-> | ||
- | |||
- | $d1 = new Dog(18); // Skapar en ny instans (objekt) av klassen Dog. | ||
- | $d1-> | ||
- | echo 'Hund 1: ' . $d1-> | ||
- | echo 'Hund 1: ' . $d1-> | ||
- | echo $d1-> | ||
- | |||
- | include(' | ||
- | |||
- | </ | ||
- | |||
- | Klasserna ligger i en separat fil, **animals.php**. Här har jag två klasser i samma fil, men ofta har man en fil per klass. | ||
- | <code php> | ||
- | <?php | ||
- | |||
- | class Animal { | ||
- | |||
- | // Alla attribut ska vara private eller protected för att kapsla in dem. | ||
- | // Metoder som ska gå att komma åt utifrån deklareras som public. | ||
- | protected $weight; | ||
- | private $legs; // Kommer inte åt denna variabel i underklassen Dog om det är satt som private. | ||
- | |||
- | public function __construct($weight=1000){ | ||
- | $this-> | ||
- | $this-> | ||
- | } | ||
- | |||
- | public function getWeight() { | ||
- | return $this-> | ||
- | } | ||
- | |||
- | public function setWeight($weight) { | ||
- | $this-> | ||
- | } | ||
- | |||
- | public function getLegs() { | ||
- | return $this-> | ||
- | } | ||
- | |||
- | public function setLegs($legs) { | ||
- | $this-> | ||
- | } | ||
- | |||
- | public function info() { | ||
- | return 'vikt: ' . $this-> | ||
- | } | ||
- | } | ||
- | |||
- | |||
- | class Dog extends Animal { | ||
- | | ||
- | // Ny definition av konstruktorn som sätter antal ben till 4. | ||
- | public function __construct($weight=1000){ | ||
- | $this-> | ||
- | parent:: | ||
- | } | ||
- | | ||
- | // Ny definition av funktionen som också finns i Animal så att det inte ska gå att ändra antal ben. | ||
- | public function setLegs($legs){ | ||
- | } | ||
- | |||
- | // Ny definition av funktionen som också finns i Animal. | ||
- | public function getWeight(){ | ||
- | return ' | ||
- | } | ||
- | | ||
- | // Ny definition av funktionen som också finns i Animal. | ||
- | public function getLegs() { | ||
- | return ' | ||
- | } | ||
- | | ||
- | // Övriga funktioner ärvs från klassen Animal (parent) till klassen Dog (child). | ||
- | |||
- | } | ||
- | </ |