Newsgroup: it.comp.lang.c++
Titolo: pensare in termini di 'classi'

salve a tutti,
una domanda da un milione di Euro ;-))
fino ad ora ho sempre programmato in C, e da poco tempo sto prendendo
confidenza con la programmazione ad oggetti ... il primo approccio l'ho avuto
con il PHP, con il quale ho creato due classi per la connessione ad un DB e per
la creazione di form dai dati del DB stesso ...
mi e' piaciuta la cosa, e quindi mi sono scaricato i due volumi di Bruce Eckel
sul C++ ... lo sto letteralmente "divorando", ma un dubbio mi rimane ...
dovrei iniziare ad applicare quello che sto imparando, ma vedo che la mia testa
non riesce a pensare ancora bene ad "oggetti" ....
mi spiego meglio ... se faccio un programma in C mi faccio uno schema mentale
sul "percorso" e mano mano che vado avanti creo le funzioni per "risolvere"
delle elaborazioni che possono essere utili in piu' parti del programma ... 
per gli oggetti, come funziona la cosa ??
ad esempio ... sto facendo un programma per le paghe di un azienda in PHP/sql
e creo le tabelle per i dati e le funzioni per interagire con i dati stessi ..
se volessi affrontare il problema pensandolo ad oggetti, l'approccio sarebbe
del tipo 
una classe per i dipendenti con funzioni membro che permettono di
interagire con le classi "contratto nazionale", "contratto aziendale",
"familiari" ecc... ??
cioe' devo partire dai vari tipi di "soggetti" del problema ??
spero che qualcuno mi chiarisca un po' le idee ;-))
ciao ...
-- 
#include <stdio.h>
int main(void){char c[]={10,65,110,116,111,110,105,111,32,98,97,114,98,111,110,
101,32,60,104,105,110,100,101,109,105,116,64,116,105,115,99,97,108,105,110,101,
116,46,105,116,62,10,10,0};printf("%s",c);return 0;}

 sul "percorso"
Ok, in C++ prima di pensare al "percorso" pensa agli oggetti che 
percorreranno quel "percorso"... 
-- 
Luc

 percorreranno quel "percorso"... 
il problema e' di identificare questi oggetti ... ma forse adesso voglio
troppo ;-))
comunque e' un inizio ... grazie per la risposta ...


 troppo ;-))
E' forse la vera difficolta' nel progettare ad oggetti, quella di... 
identificarli! :)
-- 
/**
  * Mattia Belletti - Undergraduate student @ 
cs.unibo.it
  * ICQ: 33292311   - email: 
mbel...@cs.unibo.it
  * IRC: BluShine   - site(s): 
http://cs.unibo.it/~mbellett
  * Linux registered user 299762 @ Linux registered machine 213003
  */

 per gli oggetti, come funziona la cosa ??
Beh, se in C ragioni per tipi di dati astratti sei gia' a meta' del
guado: semplicemente tutte le tue struct diventano classi e tutte le
funzioni che prendono un solo parametro del tipo "puntatore a struct
XX", piu' eventuali parametri di altri tipi, diventano funzioni membro
della classe XX e perdono il parametro corrispondente.
A questo punto puoi confrontare le tue classi e valutare se hanno
elementi in comune, sia dal punto di vista concettuale che da quello
pratico; ad esempio le classi Impiegato e Dirigente hanno in comune le
informazioni anagrafiche ed una funzione membro che ritorna lo
stipendio corrente: sono candidate all'introduzione di una classe base
comune, che so, Dipendente, nella quale sposterai la gestione di Nome
e Cognome, ed alla quale aggiungerai una funzione virtuale pura per
ottenere lo stipendio, assumendo che si calcoli in modo diverso.
Tieni presente che questo e' un esempio molto superficiale; in
generale si introducono classi base piuttosto quando ci sono entita'
diverse che in certi casi vanno trattate insieme che non per
riutilizzare l'implementazione di una classe in un'altra: pensa di
dover stampare l'elenco dei dipendenti con accanto lo stipendio. Lo
schema che ho descritto ti evita di trattare impiegati e dirigenti in
modo diverso. Questo e' piu' importante che non risparmiarti di
gestire l'anagrafica in due classi diverse.
Ciao,
Nicola
P.S. A tutti gli altri: E' un po' che mi domando quale libro
consigliare sulla programmazione a oggetti. La mia sensazione e' che
ci sia una spaccatura tra chi si occupa di metodi e ormai ragiona piu'
sul management (Grady Booch, ad esempio) e chi si occupa di uno
specifico linguaggio di programmazione. Nel mezzo manca una
trattazione teorica, ma tecnica, generale. Anche chi si occupa di
pattern da per scontato che l'OOP sia gia' nota in partenza...

 Nicola
grazie mille per l'esempio "pratico" ...
