Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
dvprog_14 [2016-05-10 09:43]
Daniel Viström
dvprog_14 [2020-05-18 20:20]
Daniel Viström
Line 1: Line 1:
-====== Genomgång 11 - Objektorienterad programmering ======+====== Genomgång - Objektorienterad programmering ======
  
 Viktgt att du lär dig vad som menas med följande och att du kan skilja dem åt: Viktgt att du lär dig vad som menas med följande och att du kan skilja dem åt:
Line 6: Line 6:
   Attribut   Attribut
   Metod   Metod
 +  Konstruktor
   Arv   Arv
  
Line 11: Line 12:
  
 ==== Exempel 1 ==== ==== Exempel 1 ====
- 
 <code php> <code php>
 <?php <?php
 +include 'counter.php';
 +include 'head.php';
  
-// Klassen kan ligga i samma fil som huvudprogrammet, men försök att lägga det i separat fil som i exempel 2.+$a = new Counter(); 
 +echo $a->getValue() '<br>';
  
 +// $a->value--; // Går inte att komma åt eftersom attributet är private.
 +
 +$i = 0;
 +while ($i < 20){
 +  $a->klick();
 +  $i++;
 +}
 +echo $a->getValue() . '<br>';
 +
 +$b = new Counter();
 +$b->klick();
 +echo $b->getValue() . '<br>';
 +
 +$b->zero();
 +echo $b->getValue() . '<br>';
 +
 +include 'foot.php';
 +
 +</code>
 +
 +Klassen **Counter** ligger i en separat fil, **counter.php**. \\ 
 +Klassen kan ligga i samma fil som huvudprogrammet, men försök att lägga det i separat fil.
 +
 +<code php>
 +<?php
 class Counter{ class Counter{
  
Line 37: Line 65:
   }   }
 } }
- 
- 
-// Här börjar huvudprogrammet. 
- 
-include('head.php'); 
- 
-$a = new Counter(); 
-echo $a->getValue() . '<br />'; 
- 
-// $a->value--; // Går inte att komma åt eftersom attributet är private. 
- 
-$i = 0; 
-while ($i < 20){ 
-  $a->klick(); 
-  $i++; 
-} 
-echo $a->getValue() . '<br />'; 
- 
-$b = new Counter(); 
-$b->klick(); 
-echo $b->getValue() . '<br />'; 
- 
-$b->zero(); 
-echo $b->getValue() . '<br />'; 
- 
-include('foot.php'); 
- 
 </code> </code>
  
Line 70: Line 71:
 <code php> <code php>
 <?php <?php
-include('head.php')+include 'head.php'; 
-include('animals.php');+include 'animals.php';
  
  
 $a1 = new Animal();   // Skapar en ny instans (objekt) av klassen Animal. Vikten blir 0 (se klassen). $a1 = new Animal();   // Skapar en ny instans (objekt) av klassen Animal. Vikten blir 0 (se klassen).
-echo 'Djur 1 har vikt: ' . $a1->getWeight() . '<br />';  // -> för att komma åt objektets metoder.+echo 'Djur 1 har vikt: ' . $a1->getWeight() . '<br>';  // -> för att komma åt objektets metoder.
    
 $a2 = new Animal(23); // Skapar en ny instans (objekt) av klassen Animal med vikt 23. $a2 = new Animal(23); // Skapar en ny instans (objekt) av klassen Animal med vikt 23.
 $a2->setLegs(2);  // Ändrar till 2 ben. $a2->setLegs(2);  // Ändrar till 2 ben.
-echo 'Djur 2 har vikt: ' . $a2->getWeight() . '<br />'; +echo 'Djur 2 har vikt: ' . $a2->getWeight() . '<br>'; 
-echo 'Djur 2 har ' . $a2->getLegs() . ' ben<br />';+echo 'Djur 2 har ' . $a2->getLegs() . ' ben<br>';
 echo $a2->info(); echo $a2->info();
  
 $d1 = new Dog(18); // Skapar en ny instans (objekt) av klassen Dog. $d1 = new Dog(18); // Skapar en ny instans (objekt) av klassen Dog.
 $d1->setLegs(3);  // Versionen av setLegs i Dog körs så inget ändras. $d1->setLegs(3);  // Versionen av setLegs i Dog körs så inget ändras.
-echo 'Hund 1: ' . $d1->getLegs() . '<br />'; +echo 'Hund 1: ' . $d1->getLegs() . '<br>'; 
-echo 'Hund 1: ' . $d1->getWeight() . '<br />';+echo 'Hund 1: ' . $d1->getWeight() . '<br>';
 echo $d1->info();  // Det kan vara bra att fatta vad som händer här... echo $d1->info();  // Det kan vara bra att fatta vad som händer här...
    
-include('foot.php');+include 'foot.php';
  
 </code> </code>
Line 104: Line 105:
   private $legs; // Kommer inte åt denna variabel i underklassen Dog om det är satt som private.   private $legs; // Kommer inte åt denna variabel i underklassen Dog om det är satt som private.
    
-  public function __construct($weight=0){  //Defaultvärde kan anges.+  public function __construct($weight=1000){  //Defaultvärde kan anges.
     $this->weight = $weight;     $this->weight = $weight;
 +    $this->legs = 10;
   }   }
    
Line 133: Line 135:
      
   // Ny definition av konstruktorn som sätter antal ben till 4.   // Ny definition av konstruktorn som sätter antal ben till 4.
-  public function __construct($weight=0){+  public function __construct($weight=1000){
     $this->weight = $weight;     $this->weight = $weight;
     parent::setLegs(4); // Anropar versionen av funktionen i Animal.     parent::setLegs(4); // Anropar versionen av funktionen i Animal.
Line 139: Line 141:
      
   // Ny definition av funktionen som också finns i Animal så att det inte ska gå att ändra antal ben.   // Ny definition av funktionen som också finns i Animal så att det inte ska gå att ändra antal ben.
-  public function setLegs(){+  public function setLegs($legs){
   }   }