OBJECT ORIENTED TRAINING
O O T
Parte (1)
Introduzione al paradigma Object Oriented
Bruno Cesanelli 13-11-00
O O T
2
INTRODUZIONE.........................................................................................................................3
Perché Object Oriented ................................................................................................................4
Riavvicinamento al mondo Reale:..................................................................................................4
Sviluppo indipendente dal linguaggio:...........................................................................................4
Corrispondenza tra obbiettivi ed oggetti: .......................................................................................4
Modularità:.......................................................................................................................................5
Librerie (software IC):.....................................................................................................................5
Riuso:................................................................................................................................................5
Mantenimento:.................................................................................................................................5
Estensibilità:.....................................................................................................................................6
Binding dinamico:............................................................................................................................6
Leggibilità,Documentazione:..........................................................................................................6
Notazione Unica: .............................................................................................................................6
Cos’è Object Oriented...................................................................................................................8
Differenze con linguaggi procedurali:............................................................................................8
Significato: .......................................................................................................................................8
Identità....................................................................................................................................8
Classificazione.......................................................................................................................9
Polimorfismo .........................................................................................................................9
ereditarietà............................................................................................................................10
Astrazione: .....................................................................................................................................10
Incapsulamento:.............................................................................................................................10
Strumenti di sviluppo (cenni).....................................................................................................12
SmallTalk:......................................................................................................................................12
Objective-C:...................................................................................................................................12
C++:................................................................................................................................................12
O O T
3
INTRODUZIONE
Per via della sempre maggiore complessità dei sistemi e della loro continua esigenza di
aggiornamento, è necessario trovare un modo di lavorare che permetta una maggiore
robustezza, flessibiltà e manutibilità del software. L’OOA e l’OOP sono paradigmi che
rispondono in maniera efficace alle problematiche classiche dello sviluppo di sistemi
complessi da parte di un team. L’utilizzo corretto di tali metodi può rendere il lavoro di
gruppo più efficiente ed interessante. Naturalmente per far sì che questo avvenga occorre che
tutti i componenti del gruppo di sviluppo siano preparati ad usare questi metodi.
Questi sono gli obbiettivi che si vogliono raggiungere con il progetto OOT:
1. Aprire delle finestre nel mondo OO in modo da creare stimoli per ulteriori
approfondimenti.
2. Apprendere il funzionamento di alcuni strumenti che supportano l’OO. Il c++ è lo
strumento sicuramente più adatto nel nostro caso.
3. Creare una base per “cambiare il punto di vista.”
4. Rendere più interessante il nostro lavoro.
Riferimenti bibliografici:
-”C++ inside &out” Bruce Eckel,McGraw Hill (trad.: “Programmare in C++”).
-”Programmazione Orientata agli Oggetti” Brad J.Cox, ADDISON~WESLEY
-”C++” Bjarne Stroustrup, ADDISON~WESLEY MASSON
-”OOA” Coad/Yourdon,Prentice Hall
-”OOP” Coad/Yourdon,Prentice Hall
-”Object Oriented Analisys” G.Booch
-”Modelli e Progetti Object-Oriented” J.Rumbaugh/M.Blama,Prentice Hall
-”Thinking c++” Bruce Eckel
O O T
Bruno Cesanelli 13-11-00 Pag. 4
Perché Object Oriented
Riavvicinamento al mondo Reale:
L’Object Oriented riporta il programmatore a pensare in un modo naturale.
“L’OO si basa su concetti che abbiamo tutti appreso la prima volta all’asilo: oggetti,
attributi, classi e membri, tutto e parti. Spiegare perché abbiamo impiegato così tanto tempo
ad applicare questi concetti all’analisi ed alla specifica dei sistemi informativi è lasciato alla
fantasia di ognuno, forse eravamo troppo pressi a ‘seguire il flusso’ durante i giorni
dell’analisi strutturata per prendere in considerazione alternative.” Coad/Yourdon -OOA.
La tecnologia orientata a oggetti è qualcosa di più che un modo di programmare. Più
propriamente è un modo di trattare il problema in modo astratto usando concetti del mondo
reale, piuttosto che concetti informatici. Questo, per molte persone, può essere un passaggio
difficile poiché i linguaggi di programmazione più vecchi portano a pensare in termini
informatici e non nei termini dell'applicazione. Uno scopo di OOT è quello di imparare a
pensare in modo astratto senza usare i costrutti di programmazione.
Sviluppo indipendente dal linguaggio:
Uno dei vantaggi piu’ importante di un processo di sviluppo OO, viene dal rivolgersi agli
aspetti concettuali visibili, piuttosto che a questioni implementative nascoste.I difetti del
progetto che emergono durante l'implementazione sono più costosi da sistemare di quelli che
vengono trovati prima. La concentrazione su questioni implementative restringe troppo presto
le scelte di progetto e spesso porta a un prodotto di qualità inferiore. Un’approccio di
sviluppo orientato a oggetti incoraggia chi sviluppa software a lavorare e pensare in termini
del dominio dell'applicazione durante la maggior parte del ciclo di vita del software. È solo
quando i concetti intrinseci dell'applicazione sono identificati, organizzati e compresi che ci si
può occupare dei dettagli sulle strutture dei dati e sulle funzioni.
Lo sviluppo orientato a oggetti è un processo concettuale indipendente dal linguaggio di
programmazione tranne che nello stadio di implementazione. Lo sviluppo object-oriented è
fondamentalmente un nuovo modo di pensare e non una tecnica di programmazione. I suoi
più grandi vantaggi sono nell'aiuto che dà ad analisti, programmatori e clienti per esprimere
chiaramente concetti astratti e comunicarseli l'uno con l' altro.
Può essere utilizzato come mezzo per la specifica, l'analisi, la documentazione e l'interfaccia
nonché per la programmazione.
Corrispondenza tra obbiettivi ed oggetti:
L’OO fa si che sia il computer (sistema) a adattarsi al problema. Il problema sarà diviso in
diverse entità individuate non in base alla loro computerabilità, ma in base alla loro reale
esistenza fisica o concettuale e per ognuna di quest’entità si creerà un oggetto; naturalmente