1. ZopeZen
Maurizio Delmonte, Giuseppe Masili, Paolo Dina
m.delmonte@kware.it
il web? Un oggetto...
Anonimo
Z o p e A P P L I C A Z I O N I W E B S E M P L I C I E P O T E N T I
2. Che cos'è Zope?
Zope è una piattaforma che permette a
sviluppatori con differenti livelli di competenza
di costruire applicazioni web.
Una applicazione web è un programma per
computer che viene eseguito dagli utenti
utilizzando un qualsiasi browser web tipo:
Mozilla, Galeon, Opera, Ms Internet Explorer...
Z o p e A P P L I C A Z I O N I W E B S E M P L I C I E P O T E N T I
3. Il web è un oggetto
Il web è un comparto dell'informatica piuttosto
giovane, perciò poco teorizzato rispetto ad altri
(es. DBMS, Linguaggi di programmazione, etc.)
Per questo, ogni application server offre un suo
modello di sviluppo e gestione.
Prerogativa di Zope è quella di trasformare il
web in una gerarchia di oggetti.
Z o p e A P P L I C A Z I O N I W E B S E M P L I C I E P O T E N T I
4. Orientamento agli oggetti
Per utilizzare Zope al meglio, è necessario
digerire il concetto di Object Oriented.
L'orientamento agli oggetti è un modello di
sviluppo del software che viene utilizzato in
molti linguaggi di programmazione(C++, Java,
Python, ed altri).
In Zope non ci si limita ad utilizzare un
linguaggio di sviluppo OO: il web stesso è OO.
Z o p e A P P L I C A Z I O N I W E B S E M P L I C I E P O T E N T I
6. Applicazione NON orientata agli oggetti
In una normale applicazione non orientata agli
oggetti, si possono distinguere due parti:
Codice. Ad esempio, in una classica
applicazione web basata su CGI potete avere
una parte logica sotto forma di script Perl.
Dati. Potreste avere le informazioni relative
agli impiegati memorizzate in una base di
dati gestita da MySQL o Oracle, su cui opera
il vostro codice.
Z o p e A P P L I C A Z I O N I W E B S E M P L I C I E P O T E N T I
7. Applicazione orientata agli oggetti
Ci sarà una ed una sola cosa:
Oggetti. Gli oggetti sono collezioni di codice
e di dati assemblati assieme.
Per esempio potreste avere un oggetto che
rappresenta un impiegato. Al suo interno
avreste i dati sull'impiegato (nome, cognome,
telefono, ...), e anche la "logica" (il codice) in
grado di manipolare questi dati.
Z o p e A P P L I C A Z I O N I W E B S E M P L I C I E P O T E N T I
8. Perciò:
In una applicazione non OO, i dati sono
separati dal codice.
In una applicazione OO invece sia i dati che il
codice sono immagazzinati in uno o più oggetti.
Gli oggetti possono modellare praticamente
ogni situazione possibile:
in Zope ogni cosa è un oggetto!
Z o p e A P P L I C A Z I O N I W E B S E M P L I C I E P O T E N T I
9. Attributi
I dati relativi ad un oggetto sono definiti dai
suoi attributi.
Ad esempio, considerando l'oggetto "impiegato",
dei possibili attributi sono "first_name" e
"last_name", rispettivamente una serie di
caratteri che ne rappresentano il nome e il
cognome.
Z o p e A P P L I C A Z I O N I W E B S E M P L I C I E P O T E N T I
10. Metodi
L'insieme di azioni che un oggetto può
compiere è definita dai suoi metodi.
Per esempio, un metodo "getFirstName" può
restituire il valore dell'attributo "first_name"
dell'oggetto, mentre il metodo "setFirstName"
può modificare il valore dell'attributo
"first_name".
Z o p e A P P L I C A Z I O N I W E B S E M P L I C I E P O T E N T I
11. Classi
Una classe definisce il comportamento di un
oggetto e ne rappresenta il costruttore.
E' una cosa piuttosto normale trovare alcuni
oggetti in un sistema che sono essenzialmente
simili ad altri, salvo per il valore dei loro
attributi.
Z o p e A P P L I C A Z I O N I W E B S E M P L I C I E P O T E N T I
12. Esempio:
Potete avere molti oggetti di tipo "impiegato"
nel vostro sistema, ognuno dei quali con gli
attributi "first_name" e "last_name".
L'unica differenza è il valore contenuto
all'interno degli attributi.
L'attributo "first_name" di un oggetto può essere
"Fred", mentre un altro può contenere "Jim".
Questi oggetti sono membri della stessa classe.
Z o p e A P P L I C A Z I O N I W E B S E M P L I C I E P O T E N T I
13. Istanze
Gli oggetti che vengono costruiti da una classe
sono chiamati istanze della classe o, più spesso,
semplicemente istanze.
Per esempio, la "cartella" Test ha un attributo id
il cui valore è Test, mentre un'altra "cartella"
può avere l'attributo id impostato a Test2 ma
entrambe sono istanze della classe "cartella" e si
comporteranno allo stesso modo.
Z o p e A P P L I C A Z I O N I W E B S E M P L I C I E P O T E N T I
14. Zope: ogni cosa è un oggetto
Tutti gli oggetti con cui avete a che fare
utilizzando l'interfaccia di amministrazione di
Zope sono istanze di classi specifiche.
Generalmente le classi che costruiscono questi
oggetti sono definite tramite Prodotti di Zope,
plugin creati dagli sviluppatori di Zope, dai
membri della comunità o da voi stessi.
Z o p e A P P L I C A Z I O N I W E B S E M P L I C I E P O T E N T I
16. Ereditarietà secondo Zope
L'ereditarietà permette di costruire nuovi
oggetti basati su oggetti già esistenti.
Zope trasporta questo concetto su web grazie a:
Aquisizione, Attraversamento, REQUEST.
Uno zobject “implementa” proprietà e metodi
propri, oltre a quelli che eredita dal suo
contesto ...
Z o p e A P P L I C A Z I O N I W E B S E M P L I C I E P O T E N T I
17. Acquisizione
Uno zobject “acquisisce” (vede) un altro z
object, se è all'interno della stessa gerarchia di
Folder.
Acquisizione ≃ Fattorizzazione algebrica
es.: un insieme di righe uguali in script diversi
può essere inglobato in un solo script posto nel
minimo Folderpadre di tutti gli altri script, che
potranno richiamarlo a piacere.
Z o p e A P P L I C A Z I O N I W E B S E M P L I C I E P O T E N T I
18. Attraversamento (URL traverse)
Uno zobject vede un altro zobject, se è
acquisibile tramite il path descritto dalla URL.
es.: C1, C2: cartelle di pari livello;
A, B: figli rispettivi di C1 e C2;
http://server/C1/A (A non acquisisce B)
http://server/C1/C2/A (A acquisisce B per
http://server/C2/C1/A attraversamento)
Nb: l'acquisizione ha precedenza sull'attraversamento
Z o p e A P P L I C A Z I O N I W E B S E M P L I C I E P O T E N T I
19. REQUEST
REQUEST è l'oggetto contenente tutte le
informazioni che il browser passa al server
(variabili di sessione, form, cookies, etc.).
lo zobject pubblicato eredita da REQUEST, per
cui lavorare con variabili di sessione, form, etc.
è praticamente trasparente all'oggetto.
Nb: verificate cosa si ottiene scrivendo in un
DTML method: <dtmlvar REQUEST>
Z o p e A P P L I C A Z I O N I W E B S E M P L I C I E P O T E N T I
20. Dove posso reperire informazioni?
http://www.zope.org
http://www.zope.it
http://www.plone.org
http://www.python.org
http://www.python.it
http://lists.zope.org
irc.debian.org 6667 #zope #zopeit #plone
Z o p e A P P L I C A Z I O N I W E B S E M P L I C I E P O T E N T I
21. In particolare Zope.it:
Questo sito nasce con un'idea: mettere a
disposizione esperienze e nozioni dei tanti
sviluppatori italiani in Zope.
Zope.it sfrutta la potenza del CMF.
Al Webbit 2003 ci sarà il primo Sprint Zope.it
nel quale CMF sarà potenziato da Plone.
Z o p e A P P L I C A Z I O N I W E B S E M P L I C I E P O T E N T I
22. Grazie per l'attenzione :)
Zope
Maurizio Delmonte Giuseppe Masili Paolo Dina
m.delmonte@kware.it giuseppe@linux.it paolo@PHP3.it
Z o p e A P P L I C A Z I O N I W E B S E M P L I C I E P O T E N T I