Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 21
  1. #1

    Classi: qualcuno mi aiuta a capirle?

    Salve. Dovevo creare un modulo per il login degli utenti ed ho letto l'articolo su freephp.it. Mi sono accorto che lì usano le classi e quindi ho deciso di leggere gli articoli sulle classi. Il risultato? Non ci ho capito assolutamente niente! Cioè, qualcosa ci ho capito ma ho tutto confuso in testa. In particolare mi trovo spaesato nell organizzare il tutto e non so nemmeno come proghrammarlo! Quindi vi chiedo aiuto. Magari partendo da un esempio concreto.

    Prendiamo per esempio la validazione dei campi di un form.

    Il form ha tanti campi, alcuni sono obbligatori, alcuni non lo sono, alcuni è necessario siano riempiti con dati numerici, altri devono contenere una e-mail, altri un indirizzo web, altri un tot numero di caratteri, ecc.

    Come organizzereste voi il tutto? Io non ne ho la minima idea

  2. #2
    non è certamente la risposta che attendi ma per l'esempio che stai usando (validare i campi di un form) mi sembra ci sia uno (più) articoli si freephp che parla proprio di questo usando le classi. Usano addirittura delle classi "astratte" in PHP4 (adesso con PHP5 le cose posson esser fatte meglio) per validare i differenti tipi di campi.

  3. #3
    Credo che tu ti riferisca a questo articolo.
    L'avevo già letto ma per sicurezza l'ho rifatto.
    Sarò stupido ma io non ci ho capito niente un'altra volta!!!
    Non è proprio il mio modo di ragionare!!!
    Se mi potessi spiegare il ragionamento che va seguito nell'affrontare un problema con la programmazione OO mi faresti un gran piacere!

  4. #4
    Utente di HTML.it L'avatar di VaLvOnAuTa
    Registrato dal
    Jun 2002
    Messaggi
    2,003
    Originariamente inviato da mircov
    Se mi potessi spiegare il ragionamento che va seguito nell'affrontare un problema con la programmazione OO mi faresti un gran piacere!
    La programmazione ad oggetti è un concetto che esula dal linguaggio che si decide di usare.
    E' un metodo leggermente diverso di programmare rispetto alla programmazione procedurale cui siamo abituati.
    Io non ne so molto.. è da poco che mi sono affacciato a questo tipo di programmazione, non so neanche se il concetto che ho io è corretto.

    Un oggetto è un elemento ce ha delle caratteristiche e svolge delle funzioni, come nella vita reale.
    Una bicicletta ha come caratteristiche
    - un colore
    - due ruote
    - un sellino
    - due pedali
    e svolge delle funzioni
    - frena
    - sterza
    - si sposta

    Una variabile di tipo "oggetto" ha le stesse caratteristiche. In pratica, se stiamo descrivendo una bicicletta siamo abituati a creare tante variabili quante sono le caratteristiche e le funzioni che questa svolge.
    Es.
    $colore_bicicletta = "rosso";
    $numero_ruote = 2;
    e così via.
    Una classe racchiude in sè tutte queste caratteristiche per assegnarle ad una singola variabile.
    In questo modo è possibile accedere (o assegnare) ad un unico oggetto diverse caratteristiche (che è compito del programmatore predefinire nella classe).
    $bicicletta = new Bicicletta()
    $bicicletta->Colore()
    $bicicletta->Ruote().

    Quando ti accingi a creare una classe devi considerare l'idea di astrarre quanto più possibile il concetto di "bicicletta" per poi utilizzarlo a seconda del contesto.
    Qual è quindi il compito di colui che programma una classe?
    Creare una serie di funzioni (in fondo di questo si tratta) che permettano a chi utilizza la classe di "descrivere" l'oggetto in questione (assegnandogli delle caratteristiche), conoscerne le caratteristiche (cioè accedere alle informazioni della bicicletta che ho creato), e fargli compiere alcune azioni.
    Esempio della bicicletta:
    io che uso la classe "bicicletta" devo poter assegnare alla mia bicicletta un colore ed accedere a questa caratteristica.

    Questa spiegazione è proprio terra terra, non so neanche quanto sia corretta, però credo dia un'idea di cosa sia un oggetto e cosa una classe.

  5. #5
    Cioè è un modello da poter applicare a qualsiasi cose del suo genere?!

    Mi sa tanto di filosofia!
    Platone aveva elaborato la OOP molto tempo fa:

    Le cose che sono sulla terra non sono altro che una manifestazione imperfetta delle idee che risiedono se non sbaglio nell'iperuranio.

    Alla fine le classi sono questo! (Se non ho capito male)

    Una classe alla fine è la rappresentazione ideale di qualcosa.

    Se ho la classe albero per poter essere tale questa classe deve poter essere applicata a qualsiasi albero e poterlo descrivere.

    Ho capito bene?

  6. #6
    No, ho sbagliato!
    Un oggetto è la rappresentazione ideale di qualcosa!
    E allora la classe cos'è?

  7. #7
    Allora, credo di aver fatto un passo avanti.
    Sto rileggendo questo articolo per l'ennesima volta e credo di aver capito.

    In partica un oggetto è un insieme di metodi.
    Ritornando all'esempio di prima della bicicletta possiamo dire che la bicicletta è l'oggetto (e fin qui c'eravamo) mentre le sue caratteristiche (colore, num ruote, sterza, avanti, indietro, ecc) sono i suoi metodi.

    Poi c'è un metodo (cioè una caratterstica della bicicletta) che è detto "costruttore".
    Questo metodo ha il compito di inizializzare l'oggetto. Nel nostro esempio potrebbe essere il metodo "sali" (cioè l'azione di salire sulla bicicletta).

    Ho capito bene?

  8. #8
    Da una classe può essere creato un numero arbitrario di oggetti che ne costituiscono le istanze, quindi
    Questo è un pezzo dell'articolo sulla OOP.

    In partica io ho sbagliato.

    La classe è l'idea mentre l'oggetto è l'oggetto che realmente voglio descrivere attraverso la classe!

    Non ci sto capendo niente!

  9. #9
    Allora...
    Praticamente:

    Classe: è la descrizione di qualcosa (in pratica l'idea astratta, il modello)

    Oggetto: è l'applicazione concreta della classe

    Se voglio identificare, tra tutti gli uomini, un uomo preciso utilizzo la classe "uomo". Identifico "Mario" che è un uomo specifico. Mario quindi sarà un oggetto.

    La classe uomo prevede che un uomo possa correre.

    Se io voglio far correre "Mario" (che è un oggetto) utilizzo "corri" (che è un metodo dell'oggetto in quanto caratteristica propria della classe "uomo")

    Lo so che forse vi sto confondendo le idee ma alla fine capiremo finalmente cosa diavolo vogliono dire tutti questi termini e come si usa questa diavolo di OOP!

  10. #10
    Originariamente inviato da mircov
    Questo è un pezzo dell'articolo sulla OOP.

    In partica io ho sbagliato.

    La classe è l'idea mentre l'oggetto è l'oggetto che realmente voglio descrivere attraverso la classe!

    Non ci sto capendo niente!
    diciamo che se proprio vuoi citare Platone ora sei sulla strada giusta

    - una Classe è un insime di proprietà (variabili di classe) e metodi (funzioni della classe), una classe di per se non è che un particolare tipo di dato una specie di array dotato delle funzioni per operare sui suoi elementi (tant'è che in PHP4 dove la OOP è carente oggetti ed array sono molto simili a basso livello)

    - un oggetto è una istanza di una classe, è in sostanza una variabile il cui tipo è la classe di cui è istanza

    la OO non si ferma a queste 4 cosette, ma implica un totale cambiamento del modo di pensare l'applicazione, scrivere codice ad oggetti semplicemente usando classi come se fossero funzioni *non* è OOP.

    la OOP consta anche dei concetti fondamentali di eredirarietà, incapsulamento e data hiding, polimorfismo, etc ... quando si cominciano ad applicare tali concetti allora si programma ad oggetti

    ... v'è poi il discorso a parte dei Design Patterns
    <?php echo ' Emiliano Gabrielli (aka AlberT) ',"\n",
    ' socio fondatore e membro del direttivo del GrUSP ',"\n",
    ' AlberT_at_SuperAlberT_it - www.SuperAlberT.it ',"\n",
    ' IRC: #php,#AES azzurra.com ',"\n",'ICQ: 158591185'; ?>

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.