Libro sulla OOP

Area di discussione libera.

Moderatore: Staff

Regole del forum
1) Rispettare le idee altrui.
2) Evitare le offese dirette.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Avatar utente
conraid
Staff
Staff
Messaggi: 13631
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Libro sulla OOP

Messaggio da conraid »

Qualcuno ha un titolo, possibilmente in italiano, da consigliarmi per apprendere le basi della programmazione ad oggetti? Preferivo qualcosa di teorico, non relativo ad un linguaggio specifico.
Mi hanno consigliato questo, che ne pensate? Qualcuno lo conosce?

La maggior parte dello sviluppo dopo sarà con PHP, ma mi piaceva tornare su questo metodo visto che non l'ho mai digerito, e gli unici approcci risalgono alla fine degli anni '90 con Java

Avatar utente
acrive
Linux 2.x
Linux 2.x
Messaggi: 306
Iscritto il: mar 27 dic 2005, 0:24
Slackware: 12.0
Località: Brindisi <-> Bologna

Messaggio da acrive »

Io ho un buon ebook, ma usa degli esempi Java.. che ne dici?

Avatar utente
conraid
Staff
Staff
Messaggi: 13631
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Messaggio da conraid »

acrive ha scritto:Io ho un buon ebook, ma usa degli esempi Java.. che ne dici?
Se pensi che sia fatto bene volentieri. Per gli esempi non c'è problema, purtroppo alcuni usano specifiche precise e particolari di un linguaggio

Avatar utente
acrive
Linux 2.x
Linux 2.x
Messaggi: 306
Iscritto il: mar 27 dic 2005, 0:24
Slackware: 12.0
Località: Brindisi <-> Bologna

Messaggio da acrive »

Credo di si.. ho aggiunto il tuo contatto su msn.

Avatar utente
conraid
Staff
Staff
Messaggi: 13631
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Messaggio da conraid »

acrive ha scritto:Credo di si.. ho aggiunto il tuo contatto su msn.
ricevuto, thanks, ora ci do un'occhiata

sir_alex
Linux 3.x
Linux 3.x
Messaggi: 735
Iscritto il: lun 21 mar 2005, 0:00
Kernel: 2.6.35-22
Desktop: KDE4
Distribuzione: Ubuntu
Località: Milano - Corbola (RO)
Contatta:

Messaggio da sir_alex »

Bè, dubito esista un libro di OOP che non faccia esempi in alcun linguaggio... :-) chiaramente i più vecchi magari usano C++, adesso trovi libri con Java, o C#... io personalmente sono per i Deitel&Deitel, spiegano le cose molto chiaramente; altrimenti penso ci siano classici che spiegano le cose, ma non ne conosco!

Avatar utente
conraid
Staff
Staff
Messaggi: 13631
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Messaggio da conraid »

Esempi va bene, ma non che parlasse esclusivamente di un linguaggio con le sue specifiche e basta.

Avatar utente
Paoletta
Staff
Staff
Messaggi: 3975
Iscritto il: lun 25 apr 2005, 0:00
Slackware: 14.2 - 64 bit
Desktop: fluxbox
Località: Varese

Messaggio da Paoletta »

questo é bello:

Giovanni Pighizzini e Mauro Ferrari. Dai Fondamenti agli Oggetti: Corso di Programmazione Java. Pearson Addison-Wesley, 2003.

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6643
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Messaggio da targzeta »

conraid ha scritto:Esempi va bene, ma non che parlasse esclusivamente di un linguaggio con le sue specifiche e basta.
Guarda che passare da un linguaggio ad un altro non crea problemi di nessun tipo. All'università mi hanno insegnato il Java come linguaggio per la programmazione ad oggetti (ed ora odio il Java), con i concetti acquisiti è stata una passeggiata studiare sia il C++ che il PHP. Il mio consiglio è di non preoccuparti più di tanto, scegli un libro, cerca di capire i fondamenti e applicali con un linguaggio qualsiasi.

Spina
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama

Avatar utente
conraid
Staff
Staff
Messaggi: 13631
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Messaggio da conraid »

spina ha scritto: Guarda che passare da un linguaggio ad un altro non crea problemi di nessun tipo. All'università mi hanno insegnato il Java come linguaggio per la programmazione ad oggetti (ed ora odio il Java), con i concetti acquisiti è stata una passeggiata studiare sia il C++ che il PHP. Il mio consiglio è di non preoccuparti più di tanto, scegli un libro, cerca di capire i fondamenti e applicali con un linguaggio qualsiasi.
si, lo so.
Anche io ho studiato Java, ma la programmazione ad oggetti non mi è mai entrata in testa. Volevo riprendere un po', e mi sono accorto che i libri che avevo, o leggendo in rete, alla fine non mi danno le "basi", ma solo infarinatura. Quindi cercavo qualche libro teorico sulla OOP, che poi sia relativo ad un linguaggio ok. Ma se è un capitolo introduttivo per poi spiegare il linguaggio ho visto che non riesco a farmelo entrare bene in testa.
Molti mi hanno consigliato di dimenticare la programmazione procedurale, fare finta di riprendere da capo, ma come si fa? Sembra facile a dirsi :-)

Avatar utente
targzeta
Iper Master
Iper Master
Messaggi: 6643
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Messaggio da targzeta »

conraid ha scritto:...Molti mi hanno consigliato di dimenticare la programmazione procedurale, fare finta di riprendere da capo, ma come si fa? Sembra facile a dirsi :-)
Ma cos'è che non ti entra in testa? Il concetto fondamentale è essere il più generici possibili.
Faccio un esempio. Supponi di avere un Form per l'immissione di dati, supponiamo di avere 10 campi. Alcuni campi devono essere controllati, ad esempio il campo telefono non può contenere lettere, ma solo cifre numeriche e al più un + iniziale.
Supponi ora di non aver sempre la necessità di controllare i campi del form.

Una prima soluzione è quella di fare un oggetto Form che abbia al suo interno tante variabili per quanti sono i campi. Ovviamente il costruttore dell'oggetto si occupa solo di inizializzare le variabili. Poi, a seconda che si voglia o meno controllare i campi si può eseguire un metodo dell'oggetto chiamato, ad esempio, "check_fields()".

Una soluzione con il paradigma ad oggetti invece è quella di creare un oggetto Form, il cui costruttore si limita ad inizializzare le variabili. Successivamente si crea un altro oggetto chiamato Form_check che estende l'oggetto Form. Il costruttore di questo secondo oggetto potrebbe richiamare il costruttore del padre (Form) e poi controllare i campi.

La seconda soluzione ti permette di spostare tutti i compiti relativi al Form all'oggetto Form, gli altri compiti vengono svolti da altri oggetti e non da metodi del Form (che concettualmente non dovrebbero stare nel Form).

Infatti supponi ora che hai la necessità di controllare che tutti i campi siano stati inseriti e correttamente. Potresti creare una sottoclasse di Form_check che, oltre a controllare i campi, richiamando il costruttore di Form_check, controlla anche se tutti i campi sono stati inseriti.

Se hai dubbi chiedi pure,
Spina
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama

Avatar utente
conraid
Staff
Staff
Messaggi: 13631
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Messaggio da conraid »

spina ha scritto: Ma cos'è che non ti entra in testa? Il concetto fondamentale è essere il più generici possibili.
Più che altro è che alla fine mi torna meglio procedere con funzioni e vecchio stile.
L'esempio che hai fatto tu io lo vedo bene nella mia testa con uno stile procedurale.
Solo che siccome mi accorgo che a volte uso le funzioni come se fossero oggetti, volevo riprendere un po' a studiarci su.
Cosa non mi entra? A suo tempo le relazioni tra oggetti per esempio.
Ma non ho mai approfondito e volevo farlo adesso.

spina ha scritto: Se hai dubbi chiedi pure,
Thanks, appena mi rimetto a studiarci un po' su tornerò a "rompervi" :-)

Avatar utente
gallows
Staff
Staff
Messaggi: 3471
Iscritto il: lun 20 set 2004, 0:00
Desktop: cwm
Distribuzione: OpenBSD
Località: ~/
Contatta:

Messaggio da gallows »

Perché non inizi a fare qualche piccolo programma con le gtkmm (o PyGTK al limite)? Secondo me per fare pratica con l'OOP lo sviluppo di widget e finestre aiuta tantissimo. Io ho imparato così.

Avatar utente
conraid
Staff
Staff
Messaggi: 13631
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Messaggio da conraid »

gallows ha scritto:Perché non inizi a fare qualche piccolo programma con le gtkmm (o PyGTK al limite)? Secondo me per fare pratica con l'OOP lo sviluppo di widget e finestre aiuta tantissimo. Io ho imparato così.
Perché non conosco Python o C++
Dovrei anche studiare il linguaggio. Mi manca il tempo purtroppo.
Però il consiglio di widget e finestre può essere interessante, magari guardo come è fatto GTKPHP, ai tempi che studiavo Java era proprio la parte più "noiosa" :-)

sir_alex
Linux 3.x
Linux 3.x
Messaggi: 735
Iscritto il: lun 21 mar 2005, 0:00
Kernel: 2.6.35-22
Desktop: KDE4
Distribuzione: Ubuntu
Località: Milano - Corbola (RO)
Contatta:

Messaggio da sir_alex »

gallows ha scritto:Perché non inizi a fare qualche piccolo programma con le gtkmm (o PyGTK al limite)? Secondo me per fare pratica con l'OOP lo sviluppo di widget e finestre aiuta tantissimo. Io ho imparato così.
Secondo me non è invece utile imparare i meccanismi di OOP con interfacce grafiche, perchè a parte la costruzione di questa come codice (di solito autogenerato dai tools), spesso i metodi degli handlers degli eventi sono più simili al procedurale... invece la parte di logica dei programmi è molto più adatta a questo, con (parlo di Java) ad esempio JavaBeans per le parti di dato ed altri oggetti che ne gestiscano le operazioni...

Rispondi