Astratti e astrazioni
Obiettivo: risolvere un problema complesso tramite la sua semplificazione in singoli problemi indipendenti di complessità minore.
Sottoproblemi
Ogni sottoproblema deve avere le caratteristiche:
- Risolvibile indipendentemente dagli altri, consentendo di concentrarsi solo su quel problema
- Stesso livello di competenza degli altri
- Insieme possono combinarsi per risolvere il problema.
Solid-software
Modello di sviluppo SW in cui ogni modulo (metodo) ha una singola responsabilità indipendente in cui gli altri moduli si basano ed utilizzano.
Astrazione
Ignorare alcuni dettagli non necessari, relativi ad un alto livello di astrazione. Astrazione e i relativi livelli sono usati per suddividere il problema in sottoproblemi dello stesso tipo.
Astrazione per parametri e per specifica
- Consente di evitare il codice per ulteriori usi, generalizza l'uso del codice. Es: procedura generale scritta in una funzione separata invece che nel main → Riutilizzo
- Consente di rimuovere dettagli implementativi per l'elasticità (di una funzione) tramite la definizione dei contratti. Per esempio, le API consentono l'uso di una funzione senza conoscere l'implementazione. Consente di concentrarsi su di una cosa in meno.
Contratto
Definizione di che cosa fa una funzione, che dati modifica, di che input ha bisogno e che cosa restituisce. Usato per indicare adeguatamente le condizioni per l'uso di tale funzione. Si basa sul fatto che: se le precondizioni (condizioni sull'input) sono valide, allora sono garantite quelle sull'output.
Astrazione per parametri
Alla funzione vengono passati parametri; si consente così il suo riutilizzo evitando che questa operi soltanto su parametri globali (e quindi non passati).
Funzione parziale
Una funzione è parziale se il suo comportamento non è deterministico solo per un insieme degli input validi secondo l'argomento. Ad esempio, l'argomento int[] e creare una funzione append che raddoppia se la lunghezza di tale vettore deve sempre essere gestita in un certo modo.
-
Appunti di Programmazione orientata agli oggetti e Java
-
Appunti per Esame Programmazione orientata agli oggetti
-
Appunti corso Programmazione 2
-
Appunti Programmazione 1