Design pattern
- forniscono schemi generali per la soluzione di problematiche ricorrenti che si incontrano durante lo sviluppo del software
- favoriscono il riutilizzo di tecniche di design di successo nello sviluppo di nuove soluzioni
- evitano al progettista di riscoprire ogni volta le stesse cose
- permettono di sviluppare un linguaggio comune che semplifica la comunicazione tra le persone coinvolte nello sviluppo del software
Approfondiremo molti dei design pattern introdotti nel 1994 dal celebre gruppo di quattro autori noto con il nome di Gang Of Four (GOF)
Introspection e Reflection
- introspection = capacità di esaminare un oggetto durante l’esecuzione del programma
- reflection = strumento che permette di esaminare gli oggetti ma anche di modificarne la struttura e il comportamento durante l’esecuzione del programma
Programmazione funzionale
- nei linguaggi orientati agli oggetti tutto ruota intorno agli oggetti
- le funzioni sono sempre collegate alle classi
- non è possibile invocarle indipendentemente dalle classi o dagli oggetti
La programmazione funzionale in Python
- consente una separazione tra oggetti e funzioni
- il risultato delle funzioni dipende solo dall’input
- non dallo stato dell’oggetto
- fornisce le modalità con cui combinare le funzioni
- permette di trattare le funzioni come un qualsiasi altro oggetto
- possono essere assegnate a variabili, passate come argomenti ad altre funzioni, usate come valori di ritorno di altre funzioni
Generatori
I generatori sono funzioni
- la cui esecuzione può essere sospesa e ripresa
- restituiscono oggetti su cui si può iterare
- al contrario di altri oggetti iterabili, producono gli elementi uno alla volta e solo quando sono richiesti → uso molto efficiente della memoria quando si ha a che fare con grandi quantità di dati