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

    OOP Programmazione a oggetti con PHP

    Ciao a tutti.
    Ho iniziato ieri sera a studiare la guida di html.it riguardante la programmazione ad oggetti con PHP 5 e sono arrivato a studiare le basi delle classi,dopo aver visto vantaggi e svantaggi tra OOP e struttura procedurale...

    Prima di andare avanti però voglio essere sicuro di aver capito quello che ho imparato e vorrei chiarire alcuni concetti.

    Dopo aver creato una classe,per instanziare l'oggetto posso richiamare la classe scrivendo il nome della classe in minuscolo/maiuscolo?
    Ad esempio:

    Codice PHP:
    class classe {
    //variabili
    //funzioni
    }

    $classe1 = new CLASSE//si può fare?
    $classe1 = new classe//oppure devo scrivere in questo modo? 
    Dopo c'è scritto all'inizio della guida che per il corretto funzionamento della classe è necessario scrivere prima dei dati la keyword "public"...per quale motivo?

    Inoltre c'è scritto nella guida "instanziare un oggetto"...si intende la creazione dell'oggetto con "new nome classe"??

    Grazie per le risposte!

  2. #2
    Utente di HTML.it L'avatar di Grino
    Registrato dal
    Oct 2004
    Messaggi
    739
    Non ho mai letto la guida di HTML nè mai lo farò, ma posso dirti che purtroppo è vero... se hai una classe

    class Pippo{...

    puoi scrivere

    $oggetto=new Pippo;
    $oggetto=new piPPo;
    $oggetto=new pippo();

    io però preferirei

    $oggetto=new Pippo();

    mantenendo la formattazione del testo e un bel paio di parentesi alla fine a ricordarci che stiamo invocando il metodo costruttore della classe Pippo, anche se non è stato esplicitato nella classe.

    Istanziare un oggetto vuol dire creare una istanza con l'istruzione new.

    public è un modificatore di accesso (insieme a private e protected). va posto prima di un elenco di variabili (proprietà o attributi) o della parola parola chiave fucntion:
    es:
    Codice PHP:
    class Scatola{
        private 
    $dimensioni;
        private 
    $colore,$contenuto;
        ...
        public function 
    __construct(){
            
    $this->dimensioni=new Dimesnioni();
            ...
        }
        ...
        public function 
    AggiungiContenuto($contenuto){
            ...
        }
        ...
        public function 
    ImpostaDimensioni($altezza,$larghezza,$profondita){
            if(
    $altezza>and $larghezza>and $profondita>0){
                
    $this->dimensioni->ImpostaAltezza($altezza);
                
    $this->dimensioni->ImpostaLarghezza($larghezza);
                
    $this->dimensioni->ImpostaProfondita($profondita);
            }else
                throw new 
    Exception("dimesione inaccettabile");
        }
        ...

    Tutto ciò che è public è accessibile dall'oggetto tramite l'operatore ->
    Tutto ciò che è private è accessibile solo all'interno della classe con $this trmite l'operatore ->
    Tutto ciò che è protected è accessibile solo all'interno della classe e dai suoi discendenti tramite $this e l'operatore ->

    Solitamente se omesso, viene assunto per default public, ma è buona norma rendere chiare le proprie intenzioni, migliorando la leggibilità del codice, esplicitando il modificatore d'accesso.

    E' bene evitare di rendere public degli attributi, ma limitarsi ai soli metodi, ovvero i messaggi cui l'oggetto risponde e che delineano l'interfaccia o tipo dell'oggetto stesso.
    Siamo sempre troppo gelosi delle nostre grandi piccole opere! - Grino inedito.
    Lavori e Lavoretti

  3. #3
    Grazie sei stato chiarissimo.
    Anche io comunque instazierò gli oggetti scrivendo nello stesso modo in cui ho scritto la classe,per una migliore visibilità del codice.
    se avrò altri dubbi chiederò!


    ps Se posso chiedertelo,tu come hai imparato a programmare con gli oggetti?

  4. #4
    Utente di HTML.it L'avatar di Grino
    Registrato dal
    Oct 2004
    Messaggi
    739
    Le mie origini? Un Olivetti Prodest PC128 a cassette. Ma il suo BASIC illustrato nel manuale a corredo non era OO. Qualcosina ho iniziato a vedere a scuola (ITIS indirizzo Informatica Industriale) con il Turbo Pascal 5.5, che conoscevo come le mie tasche, prendendo in prestito da quest'ultima il manuale originale della borland "Turbo Pascal 5.5 - Guida alla programmazione object-oriented" (anche perchè a scuola di oo non se ne parlava ed internet non si sapeva ancora cosa fosse ). Quasi simultaneamente procedevo sul mio Mac con il Think Pascal della Symantc (Object Pascal, decisamente più evoluto dell'object pascal del TP5.5, acquistato originale dopo una stagione di lavoro in campagna) anche lui dotato di un bel manuale in inglese per la programmazione oo. Lo studio è proceduto sul Think C++. Libri di testo (correvano gli anni '90) di Peter Coad OOA (analisi dei sistemi orientati agli oggetti), OOD (progettazione dei sistemi oriantati agli oggetti) e OOP (programmazione dei sistemi orientata agli oggetti) editi dalla ormai defunta Jackson Libri. Della Addison-Wesley acquistai "il linguaggio C++" di Bjarne Stroustrup e "teach yourself think C++ in 21 days"; il mio primo libro in lingua originale volontariamente acquistato. Si può anche leggere in 21 giorni ma senza capirci una mazza. Ovviamente non sono stati solo questi i libri fonte di sapere, ma posso affermare che questi sono quelli che hanno segnato la strada.

    Io ho sempre vissuto lo scrivere software come il giocare con i mattoncini della Lego. Prima devi conoscere bene i costrutti del inguaggio (i mattoncini a tua dispsizione), quindi puoi-devi divertirti a legarli tra loro in molti modi differenti. E' importante all'inizio avere la possibilità di produrre software per gioco, in modo da potersi raffinare proprio come fanno i bambini che nel gioco raffinano le proprie capacità. Con il tempo, e tanti errori, le produzioni diverranno sempre più plastiche ed evolute permettendoti di fare assumere al tuo software le forme più svariate. Imparerai a riconoscere gli "inganni software" in cui si può cadere, e l'utilizzo di macro strutture, anch'esse sempre più raffinate dal tempo e dalla pratica, che tendi ad applicare per risolvere problemi ricorrenti. L'esperienza però non la puoi apprendere da nessun libro, la puoi maturare solo sul campo quando l'idea deve diventare software. Per lo meno io non mi sono imbattuato ancora in nessun libro capace di tanto. I libri dal canto loro ti instradano verso un certo modo di pensare portandoti ad evitare gli errori più banali fin da subito. Ora che ci penso è un po' alla MATRIX ... i libri ti indicano la soglia ma sei tu che devi attraversarla e potrai farlo solo con l'esperienza.

    Porca puzzola che profondità di pensiero...

    Nota: Il PHP l'ho studiato in prima istanza (anno 2002) dal libro PHP&MySQL la guida della McGrawHill (non l'ho letto tutto ma solo ciò che mi interessava). da lì in poi ho sempre studiato direttamente la documentazione on line su php.net
    Siamo sempre troppo gelosi delle nostre grandi piccole opere! - Grino inedito.
    Lavori e Lavoretti

  5. #5
    e pensare che io negli anni 90 guardavo i cartoni e giocavo coi videogiochi...quanto tempo sprecato...
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  6. #6
    Grazie mille per avermi raccontato la tua storia Grino

    Anche io adesso per la programmazione a oggetti sto provando a creare diverse classi semplici e istanziando oggetti....quando ci avrò preso la mano cerchèero di integrare quello che ho imparato per completare il mio progetto!

    Un'altra domanda...sto leggendo la parte riguardante l'ereditarietà delle classi attraverso extends...


    Se io ho una classe A con $a=10 e $b=11 e uso classe A extends classe B e poi classe C extends classe B...

    La classe C erediterà le variabili $a e $b,giusto?

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.