Introduzione Le due componenti principali dei programmi



Scaricare 584 b.
Pagina1/9
13.12.2017
Dimensione del file584 b.
  1   2   3   4   5   6   7   8   9


Introduzione al C++ e alla programmazione ad oggetti Corso Specialistico CNTC Bologna, 19-23 febbraio 2001 Andrea Dell’Acqua e Claudio Grandi


Introduzione

  • Le due componenti principali dei programmi:

    • Algoritmi: l’insieme delle istruzioni che svolgono un particolare compito
    • Dati: ciò su cui gli algoritmi agiscono per produrre una soluzione unica
  • La relazione fra queste componenti definisce il paradigma di programmazione

    • Programmazione procedurale: problemi modellati dagli algoritmi. Dati immagazzinati in aree comuni o passate agli algoritmi
    • Programmazione ad oggetti: problemi modellati dalle relazioni fra tipi di dati astratti (ADT, Abstract Data Types), chiamati generalmente oggetti


Il rapporto Dato-Algoritmo



Cos’è un oggetto?

  • Né più né meno di quello che potreste trovare scritto in un vocabolario…

    • Un oggetto è un’entità che si possa immaginare dotata di determinate caratteristiche e funzionalità.
  • Lo stato di un oggetto è rappresentato da dati che ne descrivono le caratteristiche in un certo istante

  • Le funzionalità di un oggetto sono le operazioni che può svolgere quando glie lo si richiede (cioè quando riceve un messaggio)

  • Nella nostra vita quotidiana siamo molto più abituati a ragionare per oggetti che non in modo strutturato!



Un esempio...





… cos’è un oggetto:

  • Un insieme di dati e funzioni:



Incapsulazione

  • Netta divisione fra interfaccia e implementazione

  • Da fuori si vede solo l’interfaccia che definisce i messaggi accettati dall’oggetto

  • I dettagli dell’implementazione (dati e codice delle funzioni) sono invisibili dall’esterno

  • Ogni oggetto ha in se tutto ciò che gli serve per rispondere alle chiamate (o deve sapere a chi chiedere…)

  • Il confinamento di informazioni e funzionalità in oggetti permette livelli maggiori di astrazione e semplifica la gestione di sistemi complessi.



Approccio OO

  • Sono le strutture di dati che svolgono le azioni, non le subroutines

  • Il lavoro è svolto dal server, non dal client

  • “Cos’ è?” “Com’ è fatto?”

  •  Data Oriented

  • “Cosa può fare per me?”

  • Object Oriented



Perché programmare per oggetti?

  • Programmare per oggetti non velocizza l’esecuzione dei programmi...

  • Programmare per oggetti non ottimizza l’uso della memoria...

  • E allora perchè programmare per oggetti?

  • Programmare per oggetti facilita la progettazione e il mantenimento di sistemi software molto complessi!



Caratteristiche del software non mantenibile

  • Rigidità

    • non può essere cambiato con faciltà
    • non può essere stimato l’impatto di una modifica
  • Fragilità

    • una modifica singola causa una cascata di modifiche successive
    • i bachi sorgono in aree concettualmente separate dalle aree dove sono avvenute le modifiche
  • Non riusabilità

    • esistono molte interdipendenze, quindi non è possibile estrarre parti che potrebbero essere comuni


Programmazione ad oggetti

  • La programmazione ad oggetti, attraverso l’incapsulazione, consente di:

    • ridurre la dipendenza del codice di alto livello dalla rappresentazione dei dati
    • riutilizzare del codice di alto livello
    • sviluppare moduli indipendenti l’uno dall’altro
    • avere codice utente che dipende dalle interfacce ma non dall’implementazione


C++ e Object Orientation

  • Il C++ può essere usato come linguaggio procedurale o per programmazione ad oggetti

  • Object Orientation implementata attraverso il concetto di classe

  • Prima di affrontare il problema della programmazione OO con C++ dobbiamo:

    • capire dove la programmazione procedurale fallisce
    • affrontare la sintassi del C++


Programmazione procedurale

  • Esempio: cinematica relativistica



Evoluzione del codice

  • Se cambia il formato del common block?



Il concetto di dipendenza

  • Nell’esempio precedente il codice di analisi (“alto livello”) dipende dai dettagli della struttura dati (“basso livello”).



OO riduce le dipendenze!



  1   2   3   4   5   6   7   8   9


©astratto.info 2017
invia messaggio

    Pagina principale