Upload
maurizio-delmonte
View
670
Download
0
Embed Size (px)
DESCRIPTION
una vecchia presentazione preparata per il webbit 2003
Citation preview
Z o p eZ 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 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
ZopeZenZopeZen
Maurizio Delmonte, Giuseppe Masili, Paolo DinaMaurizio Delmonte, Giuseppe Masili, Paolo Dina
[email protected]@kware.it
il web? Un oggetto...il web? Un oggetto...AnonimoAnonimo
Z o p eZ 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 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
Che cos'è Zope?Che cos'è Zope?
Zope è una piattaforma che permette a Zope è una piattaforma che permette a sviluppatori con differenti livelli di competenza sviluppatori con differenti livelli di competenza di costruire applicazioni web. di costruire applicazioni web.
Una Una applicazione webapplicazione web è un programma per è un programma per computer che viene eseguito dagli utenti computer che viene eseguito dagli utenti utilizzando un qualsiasi browser web tipo: utilizzando un qualsiasi browser web tipo: Mozilla, Galeon, Opera, Ms Internet Explorer...Mozilla, Galeon, Opera, Ms Internet Explorer...
Z o p eZ 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 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
Il web è un oggettoIl web è un oggetto
Il web è un comparto dell'informatica piuttosto Il web è un comparto dell'informatica piuttosto giovane, perciò poco giovane, perciò poco teorizzatoteorizzato rispetto ad altri rispetto ad altri (es. (es. DBMSDBMS, , Linguaggi di programmazioneLinguaggi di programmazione, etc.), etc.)
Per questo, ogni Per questo, ogni application serverapplication server offre un suo offre un suo modello di sviluppo e gestione. modello di sviluppo e gestione.
Prerogativa di Zope è quella di trasformare il Prerogativa di Zope è quella di trasformare il web in una gerarchia di web in una gerarchia di oggettioggetti..
Z o p eZ 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 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
Orientamento agli oggetti Orientamento agli oggetti
Per utilizzare Zope al meglio, è necessario Per utilizzare Zope al meglio, è necessario digeriredigerire il concetto di il concetto di OObject Orientedbject Oriented. .
L'orientamento agli oggetti è un modello di L'orientamento agli oggetti è un modello di sviluppo del software che viene utilizzato in sviluppo del software che viene utilizzato in molti linguaggi di programmazione(C++, Java, molti linguaggi di programmazione(C++, Java, Python, ed altri).Python, ed altri).
In Zope non ci si limita ad utilizzare un In Zope non ci si limita ad utilizzare un linguaggio di sviluppo OO: il web stesso è OO.linguaggio di sviluppo OO: il web stesso è OO.
Z o p eZ 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 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
ZZOObject bject PPublishing ublishing EEnvironment nvironment
In Zope il concetto di file, di dato si perde: al In Zope il concetto di file, di dato si perde: al centro di tutto ci sono gli oggetti.centro di tutto ci sono gli oggetti.
In un sistema orientato agli oggetti (come In un sistema orientato agli oggetti (come Zope), le applicazioni vengono plasmate Zope), le applicazioni vengono plasmate attraverso gli oggetti. attraverso gli oggetti.
In estrema sintesi, un oggetto è un In estrema sintesi, un oggetto è un ""contenitorecontenitore" di " di datidati e di e di metodimetodi ( (logica di logica di controllocontrollo))..
Z o p eZ 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 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
Applicazione NON orientata agli oggettiApplicazione NON orientata agli oggetti
In una In una normalenormale applicazione applicazione nonnon orientata agli orientata agli oggetti, si possono distinguere due parti:oggetti, si possono distinguere due parti:
CodiceCodice. Ad esempio, in una classica . Ad esempio, in una classica applicazione web basata su CGI potete avere applicazione web basata su CGI potete avere una parte logica sotto forma di script Perl.una parte logica sotto forma di script Perl.
DatiDati. Potreste avere le informazioni relative . Potreste avere le informazioni relative agli impiegati memorizzate in una base di agli impiegati memorizzate in una base di dati gestita da MySQL o Oracle, su cui opera dati gestita da MySQL o Oracle, su cui opera il vostro codice.il vostro codice.
Z o p eZ 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 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
Applicazione orientata agli oggetti Applicazione orientata agli oggetti
Ci sarà una ed una sola cosa: Ci sarà una ed una sola cosa:
OggettiOggetti. Gli oggetti sono collezioni di codice . Gli oggetti sono collezioni di codice e di dati assemblati assieme. e di dati assemblati assieme.
Per esempio potreste avere un oggetto che Per esempio potreste avere un oggetto che rappresenta un impiegato. Al suo interno rappresenta un impiegato. Al suo interno avreste i dati sull'impiegato (nome, cognome, avreste i dati sull'impiegato (nome, cognome, telefono, ...), e anche la "logica" (il codice) in telefono, ...), e anche la "logica" (il codice) in grado di manipolare questi dati.grado di manipolare questi dati.
Z o p eZ 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 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
Perciò: Perciò:
In una applicazione In una applicazione nonnon OO, i dati sono OO, i dati sono separati dal codice. separati dal codice.
In una applicazione OO invece sia i dati che il In una applicazione OO invece sia i dati che il codice sono codice sono immagazzinatiimmagazzinati in uno o più oggetti. in uno o più oggetti.
Gli oggetti possono modellare praticamente Gli oggetti possono modellare praticamente ogni situazione possibile: ogni situazione possibile:
in Zope ogni cosa è un oggetto!in Zope ogni cosa è un oggetto!
Z o p eZ 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 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
Attributi Attributi
I dati relativi ad un oggetto sono definiti dai I dati relativi ad un oggetto sono definiti dai suoi attributi. suoi attributi.
Ad esempio, considerando l'oggetto Ad esempio, considerando l'oggetto "impiegato", "impiegato", dei possibili attributi sono dei possibili attributi sono "first_name""first_name" e e "last_name""last_name", rispettivamente una serie di , rispettivamente una serie di caratteri che ne rappresentano il nome e il caratteri che ne rappresentano il nome e il cognome.cognome.
Z o p eZ 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 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
Metodi Metodi
L'insieme di azioni che un oggetto può L'insieme di azioni che un oggetto può compiere è definita dai suoi metodi. compiere è definita dai suoi metodi.
Per esempio, un metodo "Per esempio, un metodo "getFirstNamegetFirstName" può " può restituire il valore dell'attributo "restituire il valore dell'attributo "first_namefirst_name" " dell'oggetto, mentre il metodo "dell'oggetto, mentre il metodo "setFirstNamesetFirstName" " può modificare il valore dell'attributo può modificare il valore dell'attributo ""first_namefirst_name".".
Z o p eZ 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 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
Classi Classi
Una classe Una classe definiscedefinisce il comportamento di un il comportamento di un oggetto e ne rappresenta il oggetto e ne rappresenta il costruttorecostruttore. .
E' una cosa piuttosto normale trovare alcuni E' una cosa piuttosto normale trovare alcuni oggetti in un sistema che sono essenzialmente oggetti in un sistema che sono essenzialmente similisimili ad altri, salvo per il valore dei loro ad altri, salvo per il valore dei loro attributi.attributi.
Z o p eZ 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 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
Esempio: Esempio:
Potete avere molti oggetti di tipo "Potete avere molti oggetti di tipo "impiegatoimpiegato" " nel vostro sistema, ognuno dei quali con gli nel vostro sistema, ognuno dei quali con gli attributi "attributi "first_namefirst_name" e "" e "last_namelast_name". ".
L'unica differenza è il valore contenuto L'unica differenza è il valore contenuto all'interno degli attributi. all'interno degli attributi.
L'attributo "L'attributo "first_namefirst_name" di un oggetto può essere " di un oggetto può essere "Fred", mentre un altro può contenere "Jim". "Fred", mentre un altro può contenere "Jim".
Questi oggetti sono membri della stessa Questi oggetti sono membri della stessa classeclasse. .
Z o p eZ 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 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
Istanze Istanze
Gli oggetti che vengono costruiti da una classe Gli oggetti che vengono costruiti da una classe sono chiamati sono chiamati istanzeistanze della classe o, più spesso, della classe o, più spesso, semplicemente istanze. semplicemente istanze.
Per esempio, la "Per esempio, la "cartellacartella" " TestTest ha un attributo ha un attributo ididil cui valore è il cui valore è TestTest, mentre un'altra ", mentre un'altra "cartellacartella" " può avere l'attributo può avere l'attributo idid impostato a impostato a Test2Test2 ma ma entrambe sono istanze della classe "entrambe sono istanze della classe "cartellacartella" e si " e si comporteranno allo stesso modo.comporteranno allo stesso modo.
Z o p eZ 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 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
Zope: ogni cosa è un oggetto Zope: ogni cosa è un oggetto
Tutti gli oggetti con cui avete a che fare Tutti gli oggetti con cui avete a che fare utilizzando l'interfaccia di amministrazione di utilizzando l'interfaccia di amministrazione di Zope sono Zope sono istanzeistanze di classi specifiche. di classi specifiche.
Generalmente le classi che costruiscono questi Generalmente le classi che costruiscono questi oggetti sono definite tramite oggetti sono definite tramite ProdottiProdotti di Zope, di Zope, pluginplugin creati dagli sviluppatori di Zope, dai creati dagli sviluppatori di Zope, dai membri della comunità o da voi stessi. membri della comunità o da voi stessi.
Z o p eZ 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 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
Zope: il Zope: il WebWeb è un oggetto! è un oggetto!
http://localhost:8080/Project/Doc?index=2
Project.Doc(index=2)
Z o p eZ 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 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
Ereditarietà secondo ZopeEreditarietà secondo Zope
L'L'ereditarietàereditarietà permette di costruire nuovi permette di costruire nuovi oggetti oggetti basati basati su oggetti già esistenti.su oggetti già esistenti.
Zope Zope trasportatrasporta questo concetto su web grazie a: questo concetto su web grazie a: AquisizioneAquisizione, , AttraversamentoAttraversamento, , REQUESTREQUEST..
Uno Uno zobjectzobject “implementa”“implementa” proprietà e metodi proprietà e metodi propri, oltre a quelli che propri, oltre a quelli che ereditaeredita dal suo dal suo contesto ...contesto ...
Z o p eZ 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 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
AcquisizioneAcquisizione
Uno Uno zobjectzobject “acquisisce”“acquisisce” (vede) un altro (vede) un altro zzobject,object, se è all'interno della stessa gerarchia di se è all'interno della stessa gerarchia di Folder.Folder.
Acquisizione Acquisizione ≃≃ Fattorizzazione algebrica Fattorizzazione algebrica
es.es.: un insieme di righe uguali in script diversi : un insieme di righe uguali in script diversi può essere può essere inglobatoinglobato in un solo script posto nel in un solo script posto nel minimo Folderminimo Folderpadrepadre di tutti gli altri script, che di tutti gli altri script, che potranno richiamarlo a piacere.potranno richiamarlo a piacere.
Z o p eZ 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 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
Uno Uno zobjectzobject vedevede un altro un altro zobject,zobject, se è se è acquisibileacquisibile tramite il tramite il pathpath descritto dalla URL descritto dalla URL..
es.es.: C1, C2: cartelle di : C1, C2: cartelle di paripari livello; livello;A, B: figli rispettivi di C1 e C2;A, B: figli rispettivi di C1 e C2;
http://server/C1/A http://server/C1/A (A (A nonnon acquisisceacquisisce B) B)
http://server/C1/C2/Ahttp://server/C1/C2/Ahttp://server/C2/C1/Ahttp://server/C2/C1/A
Z o p eZ o p e
Attraversamento (Attraversamento (URL traverseURL traverse))
(A (A acquisisceacquisisce B per B per attraversamento)attraversamento)
Nb: l'acquisizione ha precedenza sull'attraversamento
Z o p eZ 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 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
REQUEST è l'oggetto contenente tutte le REQUEST è l'oggetto contenente tutte le informazioni che il informazioni che il browserbrowser passa al passa al serverserver((variabili di sessione, form, cookies, etc.variabili di sessione, form, cookies, etc.).).
lo lo zobjectzobject pubblicato pubblicato eredita eredita da REQUEST, per da REQUEST, per cui lavorare con variabili di sessione, form, etc. cui lavorare con variabili di sessione, form, etc. è praticamente trasparente all'oggetto.è praticamente trasparente all'oggetto.
Nb: verificate cosa si ottiene scrivendo in un Nb: verificate cosa si ottiene scrivendo in un DTML method: DTML method: <dtmlvar REQUEST><dtmlvar REQUEST>
REQUESTREQUEST
Z o p eZ 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 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
Dove posso reperire informazioni?Dove posso reperire informazioni?
http://www.zope.orghttp://www.zope.org
http://www.zope.ithttp://www.zope.it
http://www.plone.orghttp://www.plone.org
http://www.python.orghttp://www.python.org
http://www.python.it http://www.python.it
http://lists.zope.orghttp://lists.zope.org
irc.debian.org 6667 #zope #zopeit #ploneirc.debian.org 6667 #zope #zopeit #plone
Z o p eZ 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 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
In particolare In particolare Zope.itZope.it::
Questo sito nasce con un'idea: mettere a Questo sito nasce con un'idea: mettere a disposizione esperienze e nozioni dei tanti disposizione esperienze e nozioni dei tanti sviluppatori italiani in Zope.sviluppatori italiani in Zope.
Zope.itZope.it sfrutta la potenza del sfrutta la potenza del CMFCMF. .
Al Webbit 2003 ci sarà il primo Sprint Zope.it Al Webbit 2003 ci sarà il primo Sprint Zope.it nel quale nel quale CMFCMF sarà potenziato da sarà potenziato da PlonePlone..
Z o p eZ 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 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
Grazie per l'attenzione :)Grazie per l'attenzione :)
ZopeZope MaurMauriizio Delmontezio Delmonte [email protected] [email protected]
Giuseppe MasiliGiuseppe [email protected]@linux.it
Paolo DinaPaolo [email protected]@PHP3.it