Pe t4 perl-oggetti

612 views

Published on

Published in: Technology, Travel
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
612
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
8
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Pe t4 perl-oggetti

  1. 1. Parte 2 Programmazione ad oggetti in Perl Linguaggi dinamici – A.A. 2009/2010 1
  2. 2. Introduzione T Unità fondamentale degli oggetti: classe T Contenitore di variabili (attributi) e funzioni (metodi) T Strumenti a di St ti disposizione della OOP i i d ll T Astrazione: capacità di ridurre il numero di dettagli implementativi d li i l i i T Incapsulamento: capacità di nascondere i dettagli ai moduli esterni T Ereditarietà: capacità di perfezionare il comportamento di una classe T Polimorfismo: capacità di adattare il comportamento in funzione di ingressi e uscita Linguaggi dinamici – A.A. 2009/2010 2
  3. 3. Definizione di classe in Perl T Una classe è definita all'interno di un package o di un modulo, e non richiede istruzioni modulo T Una classe è una reference ad una variabile anonima, anonima che contiene una informazione extra riguardante il fatto di essere una classe T Questa informazione extra viene fornita alla Q t i f i t i f it ll variabile battezzandola (blessing) in un tipo di classe l T Istruzione bless anon_hash, $class_type T Cambia il tipo di dato da hash a classe Linguaggi dinamici – A.A. 2009/2010 3
  4. 4. Il metodo costruttore T Il blessing avviene nel metodo costruttore, che solitamente viene chiamato new T Il primo parametro in ingresso è un puntatore a: T nome della classe (se istanzio un oggetto direttamente) T i t istanza di un oggetto (se istanzio un oggetto tt ( i t i tt da una sottoclasse) T Gli altri parametri possono essere usati per lt i ti ti definire gli attributi iniziali dell'oggetto T Si crea una h h anonima e la si inizializza hash i l i i i i li T Si battezza la hash T Si ritorna la hash battezzata Linguaggi dinamici – A.A. 2009/2010 4
  5. 5. Creazione di un oggetto T Il programma che vuole creare una istanza di un oggetto deve eseguire le seguenti operazioni T Importare il modulo corrispondente (in alternativa: si definisce un package main all interno all'interno dello stesso file) use MyClass; T Invocare il metodo costruttore della classe ed assegnare il risultato ad una variabile reference my $obj ref = MyClass->new(); y $ j_ y (); Linguaggi dinamici – A.A. 2009/2010 5
  6. 6. Costruttori parametrici T I costruttori parametrici sono banali T All'interno del costruttore Tsi usano più istruzioni shift per estrarre tutti i parametri (dal secondo in poi!) t i (d l d i i!) T si inizializzano i campi della hash anonima con i valori desiderati l i d id i T Si può passare una hash di coppie arg_name=value T All'interno del programma invocante T si crea un'istanza di un oggetto tramite il metodo costruttore, che riceve una lista di parametri Linguaggi dinamici – A.A. 2009/2010 6
  7. 7. Distruttori T È possibile definire un metodo distruttore, invocato quando scompare l'ultimo riferimento l ultimo all'oggetto T È sufficiente definire un metodo DESTROY() all'interno del package Linguaggi dinamici – A.A. 2009/2010 7
  8. 8. Ereditarietà T All'interno di un package, l'array speciale @ISA contiene la lista dei nomi delle superclassi T Nel caso in cui un attributo o un metodo non sia direttamente definito in una classe, gli classe elementi di @ISA sono scanditi in ordine FIFO T Per d fi i P definire una sottoclasse: tt l T Si importa il modulo della superclasse use superclasse; T Si dichiara la sottoclasse: our @ISA = ( “superclasse” ) Linguaggi dinamici – A.A. 2009/2010 8
  9. 9. Ereditarietà T Il Perl definisce due parole chiave nel contesto dell ereditarietà dell'ereditarietà T PARENT: si riferisce alla prima superclasse T SUPER si riferisce ad una qualunque SUPER: i if i d l superclasse (la prima in cui viene trovato un attributo o metodo mancante) tt ib t t d t ) Linguaggi dinamici – A.A. 2009/2010 9
  10. 10. Polimorfismo T È sufficiente ridefinire un metodo all'interno di una sottoclasse per sostituirlo alle definizioni presenti nelle superclassi T L interprete L'interprete Perl gestisce il polimorfismo automaticamente, andandosi a cercare il metodo con la signature adatta Linguaggi dinamici – A.A. 2009/2010 10
  11. 11. Metodi di classe e di istanza T Un package può contenere metodi di classe (detti anche singleton) validi per qualunque singleton), istanza di oggetto appartenente a quella classe T Non esiste una sintassi particolare per definire i metodi di classe ed i metodi di istanza T I metodi di classe sono invocati tramite il nome t di l i ti t it della classe, ed il primo parametro è il nome della l d ll classe: my $result = Class->method(args); T I metodi di istanza sono invocati tramite un di i i i i oggetto, ed il primo parametro è una reference: my $ $result = $ bj lt $obj->method(args); th d( ) Linguaggi dinamici – A.A. 2009/2010 11
  12. 12. MOOSE T Esistono moduli che forniscono costrutti più eleganti e semplici per la programmazione ad oggetti T Ad es., moose es T http://www.iinteractive.com/moose/index.html T Ispirato al modello ad oggetti di Perl 6 Linguaggi dinamici – A.A. 2009/2010 12

×