Ronald Kerssies, Koos Starreveld | Mar 19, 2024

Private & Public

Voorkennis

  • Basiskennis van een backend-taal zoals PHP of C#
  • Classes en daarvan objecten kunnen maken, daarop methods aanroepen

Dit ga je leren

  • Met OOP leer je gestructureerder coderen, waardoor de code inzichtelijk wordt en beter herbruikbaar is.
  • Basiskennis Objectgeoriënteerd programmeren
  • Het gebruik van klassen, objecten, methods, parameters en properties
  • Methods aanroepen binnen andere methods
  • Methods alleen binnen de class beschikbaar stellen (private)
  • Meerdere (sub)resultaten (proporties) in een method makkelijk beschikbaar maken voor hergebruik BINNEN de class (private)
  • Meerdere (sub)resultaten (proporties) in een method makkelijk beschikbaar maken voor hergebruik BUITEN de class (public)
PHP Logo C# Logo

Bronnen

OOP
php public
php private
php protected

Introductie

Een voorbeeld van het gebruik van class met private en public properties en methods; Binnen een class kunnen stukken code staan die binnen een class herbruikbaar zijn, private-methods. Ook kunnen er properties zijn die alleen binnen de class mogen worden gebruikt, private properties.

<?php
    // reading classes with methods
    class clsCalc
    {
        public $failMessage   = '';
        private $failValues   = [];
        public $valueX = 0;             // property valueX
        public $valueY = 1;             // property valueY
        
        public function setX($pX)           // setter of X
        {
            $this->valueX = $pX;
        }
    
        public function setY($pY)           // setter of Y
        {
            $this->valueY = $pY;
        }
 
        public function getSom()      
        {
            if($this->check($this->valueX ) && $this->check($this->valueY ) )     // cll to private method
            {
                return ( $this->valueX + $this->valueY );
            }
            return false;
        }
       
        private function check( $pX )                   // private method, only within class callable
        {
            if(is_numeric($pX))  {
                return true;
            }
            $this->failValues[] = $pX;      // add failed param to array
            $this->failMessage .= 'failed value is: '.$pX.'.<br>';
            return false;
        }
    }
    // initiating an object from a classes and logic
    $objectSom = new clsCalc();                     // make 1st object

    $objectSom->setY(2);	        // set value of Y (stored in property valueY)
    $renderSom =  $objectSom->getSom();           // call methode on object (must be public) with correct param
   
    $objectSom1 = new clsCalc();               // optional: make 2nd object
    $objectSom->setX('hallo');	               // set value of X (stored in property valueX)
    $renderSom1 =   $objectSom1->getSom();     // call methode on object (must be public) with incorrect param    

?>
<html>  
    <div>
         <?php echo $renderSom .' met fouten: '. $objectSom->failMessage.'<br>'; 
                //showing successful result of 1st object  ?>              
    </div>
    <br>
    <div>
         <?php 
            echo $renderSom1 .' met fouten: '. $objectSom1->failMessage.'<br>'; 
              //   showing failed result of 2nd object  
              //   print_r($objectSom1->failValues);    // not possible; calling private property
         ?>
    </div>
</html>

Opdracht

Maak een public member methode : Display, die een string teruggeeft waarin de naam, team en woonplaats netjes wordt weergegeven: Het team van de club is gevestigd in

Deze Display-methode moet gebruik maken van de ‘getter’ methodes

Om te testen roep je van de 3 eerder aangemaakte objecten deze Display methode aan

Resultaat

  • Methods binnen een class aanroepen.
  • Uitwisselen van proporties binnen methods van een class en deze evt. beschikbaar maken buiten de class.
  • Elk object krijgt verschillende parameters mee en geeft correcte resultaten terug.
  • Renderen (vergaren/verzamelen) en weergeven van het resultaat

Evaluatie

Vraag om een code-review om feedback op jouw aanpak en tips voor best-practices te krijgen.
Dit is een rubrics of checklist waaraan je kunt zien of de opdracht juist is uitgevoerd