-->

Intelligenza Artificiale

A un certo punto non fu più la biologia a dominare il destino dell'uomo, ma il prodotto del suo cervello: la cultura.
Cosicché: "Le uniche leggi della materia sono quelle che la nostra mente deve architettare e le uniche leggi della mente sono architettate per essa dalla materia".
JAMES CLERK MAXWELL

Tecniche di Programmazione Oggetti


In sintesi la programmazione oggetti: classe e oggetti, metodi

BREVE DESCRIZIONE DELLA PROGRAMMAZIONE OGGETTI

Fino ad ora abbiamo visto script PHP scritto con il linguaggio Procedurale
Nella creazione di un sito Ecommerce useremo invece in prevalenza la programmazione oggetti
Questa programmazione si basa sul concetto di CLASSE e OGGETTI Per spiegarla si usa spesso la macchina.
Esiste la classe delle macchine che ha:
• Proprieta’: marca,Lunghezza, Larghezza, trazione etc..
• Metodi o funzioni: marcia , accellerazione etc..
Pero’ nella vita di ogni giorno non vediamo classi di macchine generiche, ma specifiche autovetture

SUZUKY lunghe 3mt, larghe 2 mt, 4 ruote motrici

Questa autovettura corrisponde all’instanza della classe cioè l’oggetto
Attraverso l’oggetto la CLASSE diventa una realta’ specifica e identificata
Oppure attraverso l’oggetto dall’insieme generico delle macchine identifichiamo l’elemento specifico.

Una altro esempio è la classe degli umani che ha:
• Proprieta’: Lunghezza,peso, nome etc..
• Metodi/proprietà: cammina eretto, parla, pensa etc…
Ma in strada non vediamo la classe degli umani, ma persone fisiche, ognuno con Il proprio nome, peso e altezza. Che camminano, parlano ognuno in modo differente
Vediamo quindi

ALBERTO alto 1,83 cm, peso 82 kg etc

Noi esseri umani, ogni con il proprio nome etc siamo l’oggetto della classe Umani e usiamo i metodi della classe in modo differente.

Tutto questo lungo discorso si scrive in PHP con due file Definizione della Classe Auto.php



class Auto
{
    //proprietà
    public $marca;
    public $trazione;
    public $dimensione;
    //metodi
    public function leggoMarca()
    {
        return $this->marca;
    }

    public function trazione()
    {
        return "trazione " . $this->trazione;
    }
}

Uso della classe attraverso un altro file che include Auto.php



  
    include 'auto.php';
    $nuovauto = new Auto();
   $nuovauto->marca = 'fiat';
    $nuovauto->trazione = 'integrale';
   
      echo 'la marca è ' . $nuovauto->leggoMarca();
   
    
      echo 'la trazione: ' . $nuovauto->trazione();

Creo un oggetto, istruzione
• $nuovauto = new Auto();
Do un valore alle proprietà della classe
• $nuovauto->marca = 'fiat';
• $nuovauto->trazione = 'integrale';
Uso i metodi della classe
• echo 'la marca è ' . $nuovauto->leggoMarca();
• echo 'la trazione: ' . $nuovauto->trazione();
Con queste operazioni avro’ una autovettura
• marca = FIAT
• trazione = INTEGRALE
Grazie all’istruzione $nuovauto = new Auto(); otteniamo una oggetto reale e non generico capace di circolare!!.

$this

Da notare che all’interno della classe si usa $this->trazione.
$this-> è il modo per chiamare una proprietà ma anche un metodo. Nella programmazione oggetto, all’interno di una classe $variabile si scrive $this->variabile.

Costruttore

Un’ altro modo per inizializzare le proprietà della classe è il costruttore
Una funzione all’interno della classe che viene eseguita automaticamente, per prima.

auto_costr.php



Class Auto{
    //proprietà
public $marca;
public $trazione;
public $dimensione ;
//costruttore
    public function __construct($v1,$v2,$v3){
            
        $this->marca=$v1;
        $this->trazione=$v2;
        $this->dimensione=$v3;
    }
    
}
?>



Questa classe verrà poi inizializzata attraverso l’istruzione
include 'auto_costr.php';
$nuovauto= new Auto('volvo', 'normale', 'utilitaria');
Cioè l’oggetto passa i parametri che il costruttore deve utilizzare

Extends e Incapsulamento


Class Auto extends Padre{
protected $marca;
protected $trazione;
//costruttore
    public function __construct($v1,$v2){
       $this->marca=$v1;
        $this->trazione=$v2;
    }
    public function getMarca(){
        return $this->marca;
    }
     public function getTrazione(){
        return $this->trazione;
    }
}


In questa classe due tecniche:
• Extends: cioè la classe Auto utilizza le proprietà e i metodi della classe Padre
• Le proprietà sono dichiarate protected, quindi possono essere utilizzate solo all’interno della classe, per poter settare e ottenere il loro valore sono state create due funzioni set e get.
Questa tecnica si chiama incapsulamento.

Statico

Quando voglio usare metodi senza dover creare (instanziare) un oggetto allora uso il metodo statico

class Persona
{
    public static $nome = "Mario";
    public static $cognome = "Rossi";

    public static function mostraDati()
    {
        echo "il mio nome: ".self:: $nome. "
"; echo "il mio cognome: ". Persona::$cognome."
"; } } Persona::mostraDati(); echo "in alternativa ".Persona::$cognome."
";

Da notare:
• All’interno della classe si usa l’espressione self::
In alternativa nomeClasse::
• Per usare all’ esterno della classe proprieta’ o metodi si usa NomeClasse::metodo(), per i metodi, NomeClasse::$proprietà per le proprietà.

Parents


class Scimmia
{
    public function baseScimmia()
    {
        echo "I metodi  delle scimmie";
    }
}
$scimmia= new Scimmia();

class Umani extends Scimmia
{
    public function baseUomo()
    {
        echo "Gli umani hanno molti metodi ma anche: 
"; parent::baseScimmia(); } } $Uomo = new Umani(); echo $Uomo ->baseUomo();

In questo codice si noti parent::baseScimmia. La classe Umani extends la classe Scimmia, quindi sono parents e posso richiamare il metodo baseScimmia.
L’istruzione:
echo $Uomo ->baseUomo();
Avra’ quindi come output:
Gli umani hanno molti metodi ma anche:
I metodi delle scimmie


Accedi alla Area Riservata per scaricare il codice


download

Se vuoi Saperne di piu’

Accedi all'area Riservata

Scarica il codice dell'articolo