Visualizzazione risultati 1 fino 20 di 20

Discussione: oo e programmazione procedurale

  1. #1
    Guest

    Predefinito oo e programmazione procedurale

    Ciao a tutti! Nonostante abbia cercato da google, non ho trovato risposta alla mia domanda:

    Ma in sostanza cosa cambia dalla programmazione procedurale classica alla programmazione object oriented?

    Vediamo un esempio:

    Object Oriented
    Codice PHP:
    <?php
    class matematica {
    function
    quadrato($x) {
    return (
    $x*$x);
    }
    }

    $azione = new matematica();
    $output = $azione->quadrato(5);
    echo
    $output;
    ?>
    Sistema procedurale
    Codice PHP:
    function quadrato($x) {
    return (
    $x*$x);
    }

    $ris = quadrato(5);
    echo
    $ris;
    }
    Mi sembra che in questo caso la oop allunchi semplicemente il lavoro.

    Ho letto inoltre in giro che la oop di solito è + usata per grandi progetti (per esempio cms o forum) in quanto permette ai vari developer di lavorare distintamente su parti di codice distinte. Ma mi pare che comunque con semplici funzioni si possa fare la stessa cosa, o sbaglio?

    Gradirei la consulenza magari di qualche esperto in materia cosi da farmi veramente una idea precisa, perchè cosi documentandomi da solo con quello che ho trovato ho molte perplessità, che evidentemente altri non hanno perchè da quanto vedo la oop sta prendendo sempre più piede.

    Questi dubbi mi sono venuti anche perchè ho iniziato a fare qualcosina in java e li di object e classi ce ne sono anche troppi.

    Grazie a chiunque mi aiuterà a sciaqcuare via i miei dubbi.

    ciao!!!
    Ultima modifica di wrestlingforum : 20-07-2006 alle ore 00.02.42

  2. #2
    Guest

    Predefinito

    Più o meno hai detto tutto giusto.
    La programmazione ad oggetti fa uso, come nel tuo esempio di "classi": le classi sono praticamente oggetti ed hanno le loro function e le loro proprietà.
    Lavorare con OO permette, soprattutto in grossi progetti, di modificare (potenziare, inglobare, allargare) e gestire meglio la mole di dati con la quale spesso ci si ritrova a lavorare.
    Un esempio lampante è proprio il lavoro in team: senza l'uso di una programmazione di tipo OO sarebbe impensabile raccapezzarsi ogni volta che si rimette mano al materiale!

    Per le cose più umili questo tipo di programmazione non porta a nessun pro e, anzi, in molti casi complica la vita.


    Ciaooooo!!!!!!

  3. #3
    Guest

    Predefinito

    Innanzitutto grazie per la tua risposta!

    ho capito.. ma la facilità nella modifica del codice creato magari tempo prima sta nel fatto che magari una determinata persone prende a carico una classe e un'altra persona un'altra classe?

    Questo può essere gia più semplice di assegnare a ogni persona un insieme di funzioni sparse da sistemare...
    Ultima modifica di wrestlingforum : 20-07-2006 alle ore 00.29.36

  4. #4
    Guest

    Predefinito

    Anche, ma soprattutto avendo una classe per gestire tutto un insieme di funzioni relative a una certa cosa, capisci bene il vantaggio che se ne trae avendo tutto a portata di mano! Soprattutto se parliamo di ampliamento della stessa classe.


    Ciaooo!!!!!

  5. #5
    Guest

    Predefinito

    Citazione Originalmente inviato da debug
    Anche, ma soprattutto avendo una classe per gestire tutto un insieme di funzioni relative a una certa cosa, capisci bene il vantaggio che se ne trae avendo tutto a portata di mano! Soprattutto se parliamo di ampliamento della stessa classe.


    Ciaooo!!!!!
    ho capito, grazie mille!

  6. #6
    Guest

    Predefinito

    una cosa importante delle classi sono le variabili globali all'interno della classe che sono quelle che iniziano con $this-> e sono utili sia perchè sono globali all'interno della classe sia perchè si possono utilizzare anche all'esterno della classe.

  7. #7
    Guest

    Predefinito

    quindi in sostituizione ai define delle funzioni, giusto?

  8. #8
    Guest

    Predefinito

    si proprio cosi.

  9. #9
    Guest

    Predefinito

    benissimo, grazie!

  10. #10
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Citazione Originalmente inviato da debug
    Più o meno hai detto tutto giusto.
    La programmazione ad oggetti fa uso, come nel tuo esempio di "classi": le classi sono praticamente oggetti ed hanno le loro function e le loro proprietà.
    Lavorare con OO permette, soprattutto in grossi progetti, di modificare (potenziare, inglobare, allargare) e gestire meglio la mole di dati con la quale spesso ci si ritrova a lavorare.
    Un esempio lampante è proprio il lavoro in team: senza l'uso di una programmazione di tipo OO sarebbe impensabile raccapezzarsi ogni volta che si rimette mano al materiale!

    Per le cose più umili questo tipo di programmazione non porta a nessun pro e, anzi, in molti casi complica la vita.
    E' quasi tutto giusto, meno una cosa: piu' che alle classi io partirei a sviluppare il concetto di oggetti, che sono in pratica delle entita' con all'interno alcune variabili che ne rappresentano lo stato e sul quale si possono compiere determinate operazioni (dette metodi). Facendo un paragone con la vita reale, con la programmazione ad oggetti riusciresti a fare correttamente cose come "mangiare una torta" e "leggere un libro" e non cose assurde come "leggere una torta" e "mangiare un libro".

    Trovato l'oggetto, si definisce la classe di cui l'oggetto e' istanza: una classe infatti altro non e' che la definizione delle variabili e dei metodi di cui sopra.

    Per il resto, condivido quanto detto da debug, che c'e' modo e modo per usare la programmazione ad oggetti, e il programmino stupido che stampa a video "Hello, World!" decisamente non e' uno dei piu' appropriati...

    Statemi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  11. #11
    Guest

    Predefinito

    Grazie di aver spiegato in maniera più corretta e chiara quello che ho provato a dire io! :D ;)


    Ciaoooo!!!!!

  12. #12
    Guest

    Predefinito

    cosa intendi per "ne rappresentano lo stato"?

    ciao!

  13. #13
    Guest

    Predefinito

    continuando con l'esempio della vita reale di dementialsite, lo stato può essere rappresentato ad esempio dalla fame:

    1) IO (classe), input = mangia la torta, stato = fame, output = ok mangio la torta.

    2) IO (classe), input = mangia la torta, stato = sazio, output = no non mangio la torta.

    gli stati chiaramente possono essere più di uno:

    1) IO (classe), input = mangia la torta, stato1 = fame, stato2 = mal di pancia, output = no non mangio la torta.

    2) IO (classe), input = mangia la torta, stato1 = fame, stato2 = tutto ok, output = ok mangio la torta.

    ecc...ecc...

    In poche parole gli stati di una classe sono variabili interne il cui valore influenza l'output della classe stessa.

  14. #14
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Citazione Originalmente inviato da zerosoftware
    continuando con l'esempio della vita reale di dementialsite, lo stato può essere rappresentato ad esempio dalla fame:
    1) IO (classe), input = mangia la torta, stato = fame, output = ok mangio la torta.
    2) IO (classe), input = mangia la torta, stato = sazio, output = no non mangio la torta.
    gli stati chiaramente possono essere più di uno:
    1) IO (classe), input = mangia la torta, stato1 = fame, stato2 = mal di pancia, output = no non mangio la torta.
    2) IO (classe), input = mangia la torta, stato1 = fame, stato2 = tutto ok, output = ok mangio la torta.
    ecc...ecc...
    In poche parole gli stati di una classe sono variabili interne il cui valore influenza l'output della classe stessa.
    Non è proprio questo quello che intendevo... pensando alla torta le sue variabili di stato potrebbero essere semplicemente i suoi ingredienti e le rispettive quantità, per il libro invece qualche notizia tipo autore, titolo, codice Dewey (quello con cui lo devi cercare in biblioteca), abstract (anteprima, quella che di solito sta sul retrocopertina), e così via.
    Quelli che hai inserito tu, in realtà, sarebbero stati di un altro oggetto, chiamato "uomo": un metodo chiamato "mangia la torta" dovrà quindi effettuare prima un controllo sul suo (di "uomo") stato e solo dopo decidere se mangiarla o no. Ad essere sinceri, forse non sono stato abbastanza rigoroso nell'assegnare i metodi, ma comunque in OOP ripeto che è possibile evitare azioni assurde come "mangiare un libro" e "leggere una torta" (che però sono metodi di "uomo" e non di "torta" o di "libro")...

    Statemi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  15. #15
    Guest

    Predefinito

    è vero scusa!
    nel tuo esempio l'oggetto era la torta, nel mio l'uomo.
    ho commesso un errore madornale chiedo umilmente perdono :D

    cmq qualunque sia l'oggetto la sostanza non cambia, e cioè che nella programmazione orientata agli oggetti sostanzialmente ogni classe è un oggetto a sé che gode di vita propria, che elabora autonomamente le informazioni e che può interagire con altri oggetti, quindi si possono creare facilmente uomini che mangiano una torta, uomini che leggono un libro, torte che mangiano un libro, libri che leggono una torta :D e così via....

  16. #16
    Guest

    Predefinito

    ok l'esempio è stato senza dubbio chiaro! grazie a tutti!

  17. #17
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Citazione Originalmente inviato da zerosoftware
    ... quindi si possono creare facilmente uomini che mangiano una torta, uomini che leggono un libro, torte che mangiano un libro, libri che leggono una torta :D e così via....
    Aggiungo che questo è vero, ma è qui che entra in gioco un po' di buonsenso...

    Statemi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  18. #18
    L'avatar di heracleum
    heracleum non è connesso Utente storico
    Data registrazione
    21-01-2004
    Messaggi
    3,333

    Predefinito

    L'unico particolare da sottolineare -per chiarire ulteriormente la base dell'OO- è la distinzione tra i termini:
    Classe e Oggetto

    Una Classe è la definizione di un certo "tipo di oggetto" e dichiarazione di tutte le sue caratteristiche.
    Per Oggetto invece si intenderà l'istanza di una classe.

    Quando creo un oggetto, per es:
    $oggetto = new MiaClasse();
    dunque creo una nuova istanza di una classe.

    Un po' di esempi per chiarire:
    Se parlo di "io" non mi riferirei ad una classe.. piuttosto ad un oggetto, istanza della classe Uomo.
    La classe Uomo definirà la proprietà "peso" e potranno esserci istanze diverse, ciascuna con il proprio valore per questa proprietà...
    Avvertimento: richiedere in privato questioni tecniche produrrà inevitabilmente una supercazzola prematurata come risposta. (5 served)

  19. #19
    L'avatar di skydrake
    skydrake non è connesso Utente
    Data registrazione
    22-04-2006
    Residenza
    Verona
    Messaggi
    218

    Predefinito

    insomma... con la programmazione ad oggetti si porta nel PC quello che diceva Platone con le sue "Idee"...

    (la cosa buffa è stato parlarne alla prof di filosofia :D )

    comunque si.

    La classe è l'insieme di regole e funzioni e tipi di caratteristiche che caratterizzano una classe di cose, nonchè magari anche una serie di gestori di eventi della classe...

    mentre un istanza è un insieme di valori di quelle variabili citate nella classe.

    quindi se per esempio parliamo dell'IDEA (classe) di macchina stiamo parlando di un aggeggio che contiene:
    le variabili chiamate {modello, colore, velocità massima, velocità attuale, posizione, stato, carburante}
    i metodi associati {accendi (modifica lo stato), spegni (modifica lo stato), accellera (modifica la velocità), frena(modifica la velocità), rivernicia, distruggi}
    i rilevatori di eventi {crash tra macchine, fine benzina}

    tuttavia l'IDEA di macchina NON E' una macchina.
    fino a che una macchina non ha definita una posizione, una velocità, un colore, un modello... non esiste.

    per portarla in esistenza si crea un istanza dell' IDEA macchina. altro non si fa che creare un elenco di valori per le variabili.
    per esempio la Panda di mia mamma è l'oggetto definito da questo set: [PANDA,AZZURRO,150KM,0KM, QUI, SPENTA, 20L]

    tuttavia non mi è chiaro cosa sia definito con il termine "OGGETTO". cioè, fino a 2 sec fa pensavo che fosse l'IDEA di macchina... ma ora leggendo non sono proprio sicuro...

    (si vede che sto sperando che qualcuno risponda alla mia altra domanda? :D )
    Ultima modifica di skydrake : 22-07-2006 alle ore 15.23.50

  20. #20
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Citazione Originalmente inviato da skydrake
    ...
    tuttavia non mi è chiaro cosa sia definito con il termine "OGGETTO". cioè, fino a 2 sec fa pensavo che fosse l'IDEA di macchina... ma ora leggendo non sono proprio sicuro...

    (si vede che sto sperando che qualcuno risponda alla mia altra domanda? :D )
    Provo a risponderti continuando con il tuo esempio delle macchine:
    - questa è una classe
    MACCHINA {Marca, Modello, Colore, Cilindrata, Prezzo, Accesa, avvia(), spegni()}
    i metodi avvia() e spegni() altro non fanno che avviare e spegnere la macchina.
    - questa un'istanza della classe Macchina
    { Fiat, Panda, Azzurro, 1.0, 10.000, off }
    - questa, invece, un'altra istanza della classe Macchina
    { Ferrari, Enzo, Rosso, 5.0, 660.000, off }

    Questo, ovviamente, è un modello MOOOOLTO semplificato: si potrebbero inserire anche i consumi, la capacità del serbatoio, la situazione del serbatoio, e così via...

    Stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •