Metodologie di Programmazione = decomposizione basata su astrazioni Di cosa ci occuperemo



Scaricare 515 b.
13.11.2018
Dimensione del file515 b.


Metodologie di Programmazione = decomposizione basata su astrazioni


Di cosa ci occuperemo

  • Metodologie di Programmazione

  • testo di riferimento (fino al Cap. 10):

    • Barbara Liskov, Program Development in Java, Abstraction, Specification and Object-Oriented Design, Addison-Wesley 2001


Vari programmi possono risolvere lo stesso problema

  • Efficienti (Algoritmi)

  • Ben Strutturati:

  • Facili da capire e su cui ragionare (per esempio per convincersi della loro correttezza)

  • Facili da mantenere e da modificare (per esempio che ammettono modifiche locali e che siano estendibili)

  • Questi aspetti sono spesso in contrasto tra loro, e’ necessario un compromesso

  • Esistono delle tecniche da seguire per strutturare in modo efficace un programma?



Osservazione di partenza…

  • quando si devono sviluppare programmi abbastanza grandi e’ necessario decomporre in moduli

    • i moduli risolvono sotto-problemi piu’ semplici
    • i moduli che risolvono i sotto-problemi devono riuscire a cooperare nella soluzione del problema originale
  • moduli il piu’ possibile indipendenti

  • le interazioni tra i moduli che risolvono il problema devono essere chiare e facili da capire



Importanza dei “moduli”

  • persone diverse possono/devono essere coinvolte

    • si deve poter lavorare in modo indipendente (ma coerente) nello sviluppo dei diversi moduli
    • deve essere possibile eseguire “facilmente” (da parte di persone diverse da quelle coinvolte nello sviluppo) modifiche e aggiornamenti (manutenzione)
      • a livello dei singoli moduli, senza influenzare il comportamento degli altri


Servono meccanismi di Astrazione

  • noi studieremo alcuni meccanismi di astrazione legati alla programmazione, quelli presenti nei linguaggi ad alto livello (in particolare Java)

  • come utilizzare i meccanismi di astrazione per sviluppare programmi di buona qualita’ (in base alle caratteristiche dette in precedenza)





Il più comune tipo di astrazione

  • l’astrazione procedurale

    • presente in tutti i linguaggi di programmazione
  • la separazione tra “definizione” e “chiamata” rende disponibili nel linguaggio i due meccanismi fondamentali di astrazione

    • l’astrazione attraverso parametrizzazione
    • l’astrazione attraverso specifica


Astrazione via parametrizzazione

  • l’introduzione dei parametri permette di descrivere un insieme (anche infinito) di computazioni diverse con un singolo programma che le astrae tutte

  • x * x + y * y

    • descrive una computazione
  • x,y:int.(x * x + y * y)

    • descrive tutte le computazioni che si possono ottenere chiamando la procedura, cioè applicando la funzione ad una opportuna n-upla di valori
  • x,y:int.(x * x + y * y)(w,z)

    • ha la stessa semantica dell’espressione w * w + z * z


Astrazione via specifica

  • astrarre dalla specifica computazione descritta nel corpo della procedura, associando ad ogni procedura una specifica

    • semantica intesa della procedura (cosa fa e non come la fa)
  • la specifica deve contenere tutte le informazioni necessarie a chi usa la procedura, e’ di fatto l’interfaccia con l’esterno

  • chi utilizza la procedura vede cosa fa (la specifica) e non come lo fa (l’implementazione)



Vantaggi

  • Se la specifica e l’implementazione sono progettati in modo opportuno, ovvero sono chiaramente separate e l’implementazione e’ invisibile a chi usa la procedura

  • si rende la procedura indipendente dai moduli che la usano

  • l’implementazione per esempio puo’ essere cambiata, estesa



Astrazione via specifica





Il punto di vista di chi usa la procedura







Tipi di astrazione

    • astrazione procedurale
      • si aggiungono nuove operazioni a quelle della macchina astratta del linguaggio di programmazione
    • astrazione di dati
      • si aggiungono nuovi tipi di dato a quelli della macchina astratta del linguaggio di programmazione
    • iterazione astratta
      • permette di iterare su elementi di una collezione, senza sapere come questi vengono ottenuti
    • gerarchie di tipo




Condividi con i tuoi amici:


©astratto.info 2019
invia messaggio

    Pagina principale