PDA

Visualizza la versione completa : ereditarietÓ


evil80
08-11-2002, 00:53
Ciao a tutti,
mi sono da poco tuffato nel mondo della OOP!

Penso di aver capito i concetti fondamentale come ereditarietÓ,prevalenza dei metodi,sovraccarico dei metodi e degli operatori,ma adesso ho bisogno di capire i risvolti pratici.

Nel senso capita davvero cosi spesso nei programmi di utilizzare l'ereditarietÓ ?
Avevo scritto un gestionale per prenotazioni in VB6 e pi¨ avanti mi piacerebbe riscriverlo in C# ma sfruttando i concetti della OOP...quindi volevo chiedervi consigli.

Se vi capitasse di scrivere un gestionale per prenotazioni seguendo la OOP,come lo progettereste ?
In che cosa sfruttereste l'ereditarietÓ ?
Non sono i concetti che non capisco ma piuttosto il loro utilizzo reale!

Vi prego non fatemi esempi tipo la classe padre mammiferi e poi le sottoclassi leoni,tigri e roba del genere...a livello di concetto penso di aver capito,ma vorrei proprio sapere come scrivereste un gestionale per prenotazioni (visto che l'ho giÓ scritto in vb6 e quindi mi risulterebbero molto pi¨ chiare le differenze).

Grazie 1000 delle risposte!
Ciao

laccamen
08-11-2002, 09:51
Originariamente inviato da evil80
Ciao a tutti,
mi sono da poco tuffato nel mondo della OOP!

Penso di aver capito i concetti fondamentale come ereditarietÓ,prevalenza dei metodi,sovraccarico dei metodi e degli operatori,ma adesso ho bisogno di capire i risvolti pratici.

Nel senso capita davvero cosi spesso nei programmi di utilizzare l'ereditarietÓ ?
Avevo scritto un gestionale per prenotazioni in VB6 e pi¨ avanti mi piacerebbe riscriverlo in C# ma sfruttando i concetti della OOP...quindi volevo chiedervi consigli.

Se vi capitasse di scrivere un gestionale per prenotazioni seguendo la OOP,come lo progettereste ?
In che cosa sfruttereste l'ereditarietÓ ?
Non sono i concetti che non capisco ma piuttosto il loro utilizzo reale!

Vi prego non fatemi esempi tipo la classe padre mammiferi e poi le sottoclassi leoni,tigri e roba del genere...a livello di concetto penso di aver capito,ma vorrei proprio sapere come scrivereste un gestionale per prenotazioni (visto che l'ho giÓ scritto in vb6 e quindi mi risulterebbero molto pi¨ chiare le differenze).

Grazie 1000 delle risposte!
Ciao


Guarda, lavoro con vb6 da ormai 4 anni e non ho mai sentito la mancanza della vera ereditarietÓ.

evil80
08-11-2002, 10:30
daccordo,so che si possono scrivere programmi anche in vb6...ma io voglio impapare a scrivere programmi object oriented(che per i suoi principi genera progetti molto pi¨ organizzati e riutilizzabili).

C# mi piace davvero molto e voglio imparare a sfruttarne le potenzialitÓ !

Comunque grazie 1000.

xegallo
08-11-2002, 10:55
sinceramente faccio fatica a capire cosa intendi per opportunitÓ pratiche

supponi di avere creato una classse poligoni una quadrilateri una rettangoli e una quadrati che ti pu˛ servire per un programma di grafica

la classe genitore Ŕ quella dei poligoni che sono l'insieme + grande mentre quadrati Ŕ quello + piccolo


il quadrato differenzia dal rettangolo solo per il fatto che il suoi lati sono uguali
ma la procedura che tu hai giÓ creto per calcolare l'area del rettangolo puoi riutilizzarla per quella del quadrato mentre nel caso del perimetro non ti interessa + sommare i lati ma prenderne uno e moltiplicare per 4

evil80
08-11-2002, 11:02
i concetti li ho capiti...ma se tu per esempio dovessi scrivere un gestionale per prenotazioni come lo progetteresti ?
OVVIAMENTE non ti chiedo di scrivermi il codice ma solo di dirmi che classi scriveresti e in quale modo le relazioni tra loro.

Mi basterebbe che mi mettessi in evidenza 3 o pi¨ classi in maniera puramente logica e mi indicassi le "relazioni" tra loro.

xegallo
08-11-2002, 11:13
supponendo si tratta di una prenotazione di un viaggio
avrei :
- classe cliente
--->il cliente Ŕ un'oggetto (con sue problematiche e aspetti comuni)
- classe Location
---> ogni location diventa una classe che prende come modello la principale(esempio a cortina ci sarÓ da tenere conto dell'albergo come in ogni altra localitÓ ma non del mare)
- classe mezzo
---> ogni mezzo diventa una classe che prende come modello la principale(esempio in treno ci sarÓ da tenere conto del biglietto come in ogni altro mezzo ma non del check-in)

evil80
08-11-2002, 11:20
ok ti ringrazio,ma Ŕ evidente che con la OOP prima di metterti a scrivere codice devi aver ben chiara la progettazione delle classi e i suoi legami con le altre.
Dove trovo documentazione che illustra come procedere in questo senso,voglio dire esisterÓ un criterio di progettazione ?

Andrea Simonassi
08-11-2002, 11:51
Acquista un libro di software engineering.

Per˛ non ti fossilizzare sull'uso del linguaggio C#, il linguaggio e' solo uno strumento, la progettazione OOP e' un argomento molto piu vasto.

Quando si usa in pratica l'ereditarietÓ?

Allora esempio scemo: in un anagrafica hai clienti e fornitori, sono sempre elementi anagrafici: ragione sociale eccetera, per˛ col fornitore fai acquisti col cliente fai vendite , giusto?

allora crei una classe base anagrafico con metodi ragione sociale eccetera.

Poi crei due classi derivate CLiente e Fornitore, la prima col metodo Vendi(Prodotto p), e la seconda col metodo Acquista(Materiale m).

Ad un certo livello ti interessera' solo il numero di telefono e allora usi i metodi in comune della classe base, nel secondo caso ti interessera il metodo specifico.

Esempio:
hai una classe che visualizza i numeri di telefono di un anagrafico

Cliente Rossi = new Cliente("Rossi");
Rossi.Vendi(new Product("Automobile", 1)); //qua lo uso come cliente
Fornitore Bianchi = new Fornitore("Bianchi");
Bianchi.Acquista(new Product("Pneumatici", 4));

....

Visualizzatore.stampa(Rossi); //qua lo uso come anagrafico
Visualizzatore.stampa(Bianchi);

Non so se rendo l'idea
Ciao

evil80
08-11-2002, 11:58
il prossimo semestre avr˛ l'esame di ingegneria del software,allora imparer˛ li come progettare le classi e le loro relazioni ?

Grazie 1000!

Andrea Simonassi
08-11-2002, 14:33
Si, ma ti insegnano molto di piu, a progettare in grande, un gradino sopra all'essere solo programmatori.

Loading