22
Z o p e 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 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   ZopeZen ZopeZen      Maurizio Delmonte, Giuseppe Masili, Paolo Dina Maurizio Delmonte, Giuseppe Masili, Paolo Dina   [email protected] [email protected] il web? Un oggetto... il web? Un oggetto... Anonimo Anonimo

Zope zen

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 

ZZ­­OObject 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, plug­inplug­in  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  z­objectz­object   “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  z­objectz­object   “acquisisce”“acquisisce”  (vede)  un  altro  (vede)  un  altro  z­z­object,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 Folder­padre­padre  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  z­objectz­object   vedevede  un  altro  un  altro  z­object,z­object,  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  z­objectz­object  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: <dtml­var REQUEST><dtml­var 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 #zope­it #ploneirc.debian.org 6667 #zope #zope­it #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