|
Python è un linguaggio di scripting, come il PHP e il Perl. La caratteristica dei linguaggio di scripting è quella di non necessitare di compilazione: i programmi possono essere eseguiti così come sono. Ma la flessibilità dei linguaggi di scripting spesso è in contrasto con la strutturazione del linguaggio stesso. Nei linguaggi di scripting, che pure spesso supportano la programmazione ad oggetti, di solito non la gestiscono in maniera particolarmente avanzata.
Python si differenzia da questo panorama perché pur essendo un linguaggio estremamente interattivo, di fatto ha un ottimo supporto per la programmazione ad oggetti, tanto da farlo definire uno "object oriented scripting language"; ma in verità anche JavaScript, PHP e Perl hanno i costrutti di programmazione ad oggetti.
In effetti una delle principali ragioni del successo del Python è legato al suo buon supporto per un tipo di programmazione che è generalmente utilizzato per scrivere programmi abbastanza grandi.
E infatti Python si sta conquistando un posto al sole tra i linguaggi di scripting proprio perché la sua sintassi estremamente chiara si sposa bene con la programmazione ad oggetti ed è usato per scrivere programmi anche abbastanza grandi e complessi.
Uno per tutti ricordiamo l'application server Zope, che è scritto interamente in Python. E non è un sistema da poco: comprende infatti un web server, un ftp server e l'accesso DAV (ovvero la possibilità di scrivere dentro il sito Web). Ma non basta: abbiamo anche un database ad oggetti, un sistema per gestire modelli (template) di oggetti in Python e molto altro. Ovviamente un programma così complesso fa un uso intenso della programmazione ad oggetti. Quella che oggi andremo a vedere.
Non possiamo, in questo spazio ristretto, fare un trattamento completo della programmazione ad oggetti, pertanto ci limiteremo ad una trattazione introduttiva.
In generale la programmazione ad oggetti nasce dall'idea di definire un "tipo di dati astratto". Vuol dire che come esistono gli interi (un tipo di dato), che possono essere sommati e moltiplicati (operazioni sul tipo di dato), è possibile creare le Auto (che una classe), che possono essere messe in moto e fatte muovere (metodi)
Quindi in pratica possiamo definire delle classi. Una volta definita la classe (un nuovo tipo di dato); possiamo poi creare istanze di questa classe, e invocare i metodi su questa classe.
Ma la programmazione ad oggetti non finisce qui. Si possono derivare nuove classi dalle classi esistenti, "riciclando" il codice già scritto. Questa caratteristica si chiama ereditarietà.
Il riuso del software sarebbe limitato se non esistesse un meccanismo per cambiare il comportamento di un oggetto nel futuro. Questo meccanismo è noto come polimorfismo.
Di tutti questi meccanismi ne vedremo la implementazione in Python.
|