Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    286

    [OOP]Aiuto con proprietà e access modifiers

    Mi sto documentando/dilettando sulla programmazione ad oggetti e per ora un punto che ho poco chiaro è quali sono le proprietà da assegnare all'inizio della classe.
    Penso di aver capito l'uso di public private e protect abbastanza bene...

    ...per ora ho fatto una classe che ha solo un paio di metodi, praticamente è come se programmassi procedurale e avessi messo tutto il codice dentro class { }...piano piano spero di capire encapsulatione e l'uso di access modifiers al fine di usare meglio OOP

    Spero di essere stato chiaro..


    Un esempio, non so se ha senso...
    class MyClass{
    private $property1;
    private $property2;


    private static MyMethod($property1, $property2){
    // eseguo del codice
    }
    }

    Grazie
    Kirk

  2. #2
    Utente di HTML.it L'avatar di garlick
    Registrato dal
    Dec 2001
    Messaggi
    385
    Non ho capito se nel tuo post c'è una domanda a cui rispondere.

    Se chiedi "quali sono le proprietà da assegnare all'inizio della classe", la risposta è che ovviamente dipende da cosa ci devi fare con quella classe. E' come chiedere che metodi vanno dentro una classe... ovviamente dipende da cosa devi farci.

    Esempio di classe che rappresenta una particella che si può muovere:

    class Particella{

    private $x;
    private $y;

    private function Muovi(newX, newY){

    $this->x = newX;
    $this->y = newY;

    }


    }

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    286
    La domanda grosso modo era quella (mal formulata ) ...no non voglio sapere le proprietà da dichiarare
    Vorrei cercare di capire: Le proprietà sono delle variabili da dichiarare prima di usarle in modo da evitare che un valore diverso venga assegnato

    Giusto per essere semplici....
    Nel mio metodo ad un certo punto decido di usare la variabile $x allora è meglio dichiararla prima come private $x;???

    Più o meno come farei nella programmazione procedurale, ad una variabile di default assegno un valore null per motivi di sicurezza...

    grazie
    Kirk

  4. #4
    Originariamente inviato da beipink
    La domanda grosso modo era quella (mal formulata ) ...no non voglio sapere le proprietà da dichiarare
    Vorrei cercare di capire: Le proprietà sono delle variabili da dichiarare prima di usarle in modo da evitare che un valore diverso venga assegnato

    Giusto per essere semplici....
    Nel mio metodo ad un certo punto decido di usare la variabile $x allora è meglio dichiararla prima come private $x;???

    Più o meno come farei nella programmazione procedurale, ad una variabile di default assegno un valore null per motivi di sicurezza...

    grazie
    Kirk
    Una proprietà dichiarata e non assegnata ha valore NULL di default.
    Da quello che leggo mi sa che tu confondi le seguenti tipologie:
    - variabili di classe
    - variabili d'istanza
    - variabili di metodo
    - parametri del metodo

    Sono 4 cose differenti, anche se in soldoni di variabili si tratta.

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    286
    direi proprio di si... confondo le 4 tipologie!

    - variabili di classe
    (le proprietà, e sono quelle che si trovano all'inizio della classe, possono essere public, private e protette. Non ho capito come si usano)
    - variabili d'istanza
    (non so bene cosa sono)
    - variabili di metodo
    (credo siano le variabili del metodo...hanno a che fare con le variabili di classe??)
    - parametri del metodo
    (esempio: function ($parametro1, parametro2)....etc..., hanno a che fare con le variabili di classe??)

    Grazie per l'aiuto
    kirk

  6. #6
    Quelle che tu definisci variabili di classe sono in realtà le variabili d'istanza.
    Le variabili di classe vere e proprie non esistono in PHP, diciamo che possono essere ricondotte in un certo senso alle variabili d'istanza definite come static.

    Le variabili di metodo sono quelle definite ed usate dentro al metodo.

    Codice PHP:
    class MyClass {
    public 
    $foo;

    public 
    method MyMethod() {
    $foo 3;
    }

    $foo variabile di metodo non è $foo variabile d'istanza.

  7. #7
    Utente di HTML.it L'avatar di garlick
    Registrato dal
    Dec 2001
    Messaggi
    385
    Originariamente inviato da beipink
    La domanda grosso modo era quella (mal formulata ) ...no non voglio sapere le proprietà da dichiarare
    Vorrei cercare di capire: Le proprietà sono delle variabili da dichiarare prima di usarle in modo da evitare che un valore diverso venga assegnato

    Giusto per essere semplici....
    Nel mio metodo ad un certo punto decido di usare la variabile $x allora è meglio dichiararla prima come private $x;???

    Più o meno come farei nella programmazione procedurale, ad una variabile di default assegno un valore null per motivi di sicurezza...

    grazie
    Kirk
    Le variabili di classe (o di istanza) sono sì semplici variabili, ma hanno un valore concettuale particolare: rappresentano infatti delle "proprietà" del concetto che stai rappresentando attraverso una classe. Ti faccio un altro esempio:

    Immagina di dover rappresentare con una classe un cane:

    Codice PHP:

    class Cane{

      private 
    $nome;
      private 
    $colore;
      private 
    $razza;

    private function 
    cambiaNome(nuovoNome){

      
    $this->nome nuovoNome;

    }


    Vedi che $nome non è concettualmente una semplice variabile come può essere un contatore in programmazione procedurale. $nome rappresenta una proprietà della classe "cane", che contraddistingue quel tipo particolare di cane.
    In OOP devi ragionare utilizzando per i problemi un modello a oggetti: questo vuol dire che dividerai il problema nelle sue entità fondamentali e che per ognuna di queste individuerai delle proprietà (come ad es. il colore) e dei metodi (ossia "azioni" che questa enità può svolgere)

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    286
    mi sembra più complicato di quanto pensassi...
    Io credevo che dichiarare le proprietà fosse + o - come assegnare un valore e delle autorizzazioni per l'appunto public, private e protect.

    Immagino che l'esempio sotto non sia corretto....
    Codice PHP:
    class MyClass {
    public 
    $foo '2';

    public 
    method MyMethod() {
    $foo 3;
    }

    ...il margine di miglioramento è piuttosto ampio...
    Grazie cmq per l'aiuto,
    kirk

  9. #9
    Originariamente inviato da beipink
    mi sembra più complicato di quanto pensassi...
    Io credevo che dichiarare le proprietà fosse + o - come assegnare un valore e delle autorizzazioni per l'appunto public, private e protect.

    Immagino che l'esempio sotto non sia corretto....
    Codice PHP:
    class MyClass {
    public 
    $foo '2';

    public 
    method MyMethod() {
    $foo 3;
    }

    ...il margine di miglioramento è piuttosto ampio...
    Grazie cmq per l'aiuto,
    kirk
    L'esempio sopra è sintatticamente corretto.
    Immagino però che tu ti aspetti che dopo alla chiamata di metodo la variabile d'istanza valfa 3.
    In quel caso no, vale sempre 2.

    La variabile d'istanza si richiama $this->foo.

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.