Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    [OOP]Qualche chiarimento

    ciao a tutti
    sto facendo delle prove per creare oggetti estesi, per l'esempio uso l'azienda come superclasse, che è coposta da uffici i quali sono composti da impiegati

    Azienda
    -->Ufficio
    ->Impiegati

    Ho creato le classi
    class.php
    codice:
    //SuperClass
    class Azienda
    	{
    	//Definisco le proprità di questa classe
    	var $NomeAzienda;
    	var $PIva;
    	//Costruisco un metodo di aggiunta
    	function Add_Azienda($name,$piva)
    		{
    		$this->NomeAzienda= $name;
    		$this->PIva= $piva;
    		}
    	} 
    	/*
    	Costruita la SuperClasse, creo la classe ufficio che è una estensione della classe precedente
    	*/
    	class Ufficio extends Azienda
    		{
    		var $Stanza;
    		var $Scrivanie;
    		var $Test;
    		function Add_Ufficio($room,$table)
    			{
    			$this->Stanza = $room;
    			$this->Scrivanie = $table;
    			$this->Test = "pippo";
    			}
    		} 
    
    ?>
    testclass.php
    codice:
    <?
    include("class.php");
    $a="Società";
    $b="0123456789";
    $c="531";
    $d=10;
    $Azienda = new Azienda;
    $Ufficio = new Ufficio;
    $Azienda->Add_Azienda($a,$b);
    echo "NOME: ".$Azienda->NomeAzienda."
    ";
    echo "PIVA: ".$Azienda->PIva."
    ";
    echo "TEST:".$Azienda->Ufficio->Test."
    ";
    ?>
    non mi stampa

    echo "TEST:".$Azienda->Ufficio->Test."
    ";

    dove sbaglio?

  2. #2
    scusate..impiegati è una sottoclasse di ufficio e ufficio è una sottoclasse di azienda

  3. #3
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    E' normale.

    Definisci Ufficio che estende azienda, quindi devi usare Ufficio e non azienda.

    echo "TEST:".$Ufficio->Test."
    ";

    Poi usi $Test viene settato dentro un metodo che non richiami... quindi il valore sarà sempre vuoto.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  4. #4
    si è vero che non lo richiamo..stavo provando a capire se posso creare un oggetto ad albero e richiamare le variabili in questo modo

    ogg1->va1
    ogg1->ogg2->var1_oggetto2

  5. #5
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Originariamente inviato da lbottoni
    si è vero che non lo richiamo..stavo provando a capire se posso creare un oggetto ad albero e richiamare le variabili in questo modo

    ogg1->va1
    ogg1->ogg2->var1_oggetto2
    Lo puoi fare ma non cosi.
    Estendendo una classe, prendi e/o sostituisci ( è un modo di dire ) dei metodi creati nella classe madre. Ma in nessun caso usi la classe madre.

    Se vuoi fare come da te indicato devi usare un istanza di una classe all'interno di un'altra.

    Esempio :
    codice:
    <?
    //SuperClass
    class Azienda
    	{
    	//Definisco le proprità di questa classe
    	var $NomeAzienda;
    	var $PIva;
    	//Costruisco un metodo di aggiunta
    	function Add_Azienda($name,$piva)
    		{
    		$this->NomeAzienda= $name;
    		$this->PIva= $piva;
    		}
    	} 
    	/*
    	Costruita la SuperClasse, creo la classe ufficio che è una estensione della classe precedente
    	*/
    	class Ufficio
    		{
    		var $Stanza;
    		var $Scrivanie;
    		var $Test;
    		var $Azienda;
    		
    		function Ufficio() {
    		 $this->Azienda = new Azienda;		
    		}
    		
    		function Add_Ufficio($room,$table)
    			{
    			$this->Stanza = $room;
    			$this->Scrivanie = $table;
    			$this->Test = "pippo";
    			}
    		} 
    
    $a="Società";
    $b="0123456789";
    $c="531";
    $d=10;
    $Ufficio = new Ufficio;
    $Ufficio->Azienda->Add_Azienda($a,$b);
    echo "NOME: ".$Ufficio->Azienda->NomeAzienda."
    ";
    echo "PIVA: ".$Ufficio->Azienda->PIva."
    ";
    echo "TEST:".$Ufficio->Test."
    ";
    ?>
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  6. #6
    quindi classe in questo modo sarebbe una sottoclasse di ufficio?

    immagina che io dovrò avre molti uffici in una singola azienda come ideologia di oggetto.

  7. #7
    quindi classe "Azienda" in questo modo sarebbe una sottoclasse di ufficio?

    immagina che io dovrò avre molti uffici in una singola azienda come ideologia di oggetto.

    Segnala ad un moderatore | IP: Collegato | Permalink

  8. #8
    solution

    codice:
    class Azienda
    	{
    	//Definisco le proprità di questa classe
    	var $NomeAzienda;
    	var $PIva;
    	var $Office;
    	//Costruisco un metodo di aggiunta
    	function Add_Azienda($name,$piva)
    		{
    		$this->NomeAzienda= $name;
    		$this->PIva= $piva;
    		}
    	function NewOff()
    		{$this->Office = new Ufficio;}
    	} 
    	/*
    	Costruita la SuperClasse, creo la classe ufficio che è una estensione della classe precedente
    	*/
    	class Ufficio extends Azienda
    		{
    		var $Stanza;
    		var $Scrivanie;
    		var $Test;
    		function Add_Ufficio($room,$table)
    			{
    			$this->Stanza = $room;
    			$this->Scrivanie = $table;
    			}
    		}
    altro file

    codice:
    <?
    include("class.php");
    
    $a="Società";
    $b="0123456789";
    $c="531";
    $d=10;
    $ITnet = new Azienda;
    $ITnet->Add_Azienda($a,$b);
    //creo la sotto classe
    $ITnet->NewOff();
    $ITnet->Office->Add_Ufficio($c,$d);
    
    echo "NOME: ".$ITnet->NomeAzienda."
    ";
    echo "PIVA: ".$ITnet->PIva."
    ";
    //echo "TEST:".$ITnet->Office->Test."
    ";
    ?>

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.