SlideShare ist ein Scribd-Unternehmen logo
1 von 22
Downloaden Sie, um offline zu lesen
 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 
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 
 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 
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 
Z­Object Publishing Environment 
 In Zope il concetto di file, di dato si perde: al 
 centro di tutto ci sono gli oggetti.

 In  un  sistema  orientato  agli  oggetti  (come 
 Zope),  le  applicazioni  vengono  plasmate 
 attraverso gli oggetti. 

 In  estrema  sintesi,  un  oggetto  è  un 
 "contenitore"  di  dati  e  di  metodi  (logica  di 
 controllo).
 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 
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 
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 
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 
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 
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 
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 
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 
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 
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, 
 plug­in  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 
Zope: il Web è un oggetto! 

 http://localhost:8080/Project/Doc?index=2




       Project.Doc(index=2)



 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 
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  z­object  “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 
Acquisizione
 Uno  z­object  “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 Folder­padre  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 
Attraversamento (URL traverse)
 Uno  z­object  vede  un  altro  z­object,  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 
REQUEST
REQUEST  è  l'oggetto  contenente  tutte  le 
informazioni  che  il  browser  passa  al  server
(variabili di sessione, form, cookies, etc.).
lo  z­object  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: <dtml­var 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 
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 #zope­it #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 
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 
                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 

Weitere ähnliche Inhalte

Ähnlich wie Zope zen

Lo sai che si può fare DDD in Javascript grazie a Typescript? Visual Studio e...
Lo sai che si può fare DDD in Javascript grazie a Typescript? Visual Studio e...Lo sai che si può fare DDD in Javascript grazie a Typescript? Visual Studio e...
Lo sai che si può fare DDD in Javascript grazie a Typescript? Visual Studio e...Marco Parenzan
 
Semantic SEO nell’Era Post Hummingbird e WordLift 3.0
Semantic SEO nell’Era Post Hummingbird e WordLift 3.0 Semantic SEO nell’Era Post Hummingbird e WordLift 3.0
Semantic SEO nell’Era Post Hummingbird e WordLift 3.0 Andrea Volpini
 
Sviluppare su OpenOffice.org con Java
Sviluppare su OpenOffice.org con JavaSviluppare su OpenOffice.org con Java
Sviluppare su OpenOffice.org con JavaMarcello Teodori
 
Introduzione a..django
Introduzione a..djangoIntroduzione a..django
Introduzione a..djangoLuca Forzutti
 
C#, imparare a programmare e sopravvivere
C#, imparare a programmare e sopravvivereC#, imparare a programmare e sopravvivere
C#, imparare a programmare e sopravvivereMatteo Valoriani
 
Confronto fra web services framework (open source)
Confronto fra web services framework (open source)Confronto fra web services framework (open source)
Confronto fra web services framework (open source)Alberto Lagna
 
Sviluppare app native per iOS
Sviluppare app native per iOSSviluppare app native per iOS
Sviluppare app native per iOSGaspare Novara
 
Sviluppare apps native per iOS - Lo Stretto Digitale
Sviluppare apps native per iOS - Lo Stretto DigitaleSviluppare apps native per iOS - Lo Stretto Digitale
Sviluppare apps native per iOS - Lo Stretto Digitalelostrettodigitale
 
How I did it (in .NET): idiomatic Domain Driven Design
How I did it (in .NET): idiomatic Domain Driven DesignHow I did it (in .NET): idiomatic Domain Driven Design
How I did it (in .NET): idiomatic Domain Driven DesignAndrea Saltarello
 
Introduzione a Node.js
Introduzione a Node.jsIntroduzione a Node.js
Introduzione a Node.jsMichele Capra
 
Programmazione funzionale e Stream in Java
Programmazione funzionale e Stream in JavaProgrammazione funzionale e Stream in Java
Programmazione funzionale e Stream in JavaCristina Attori
 

Ähnlich wie Zope zen (20)

Sviluppare moduli per il client web
Sviluppare moduli per il client webSviluppare moduli per il client web
Sviluppare moduli per il client web
 
Lo sai che si può fare DDD in Javascript grazie a Typescript? Visual Studio e...
Lo sai che si può fare DDD in Javascript grazie a Typescript? Visual Studio e...Lo sai che si può fare DDD in Javascript grazie a Typescript? Visual Studio e...
Lo sai che si può fare DDD in Javascript grazie a Typescript? Visual Studio e...
 
Semantic SEO nell’Era Post Hummingbird e WordLift 3.0
Semantic SEO nell’Era Post Hummingbird e WordLift 3.0 Semantic SEO nell’Era Post Hummingbird e WordLift 3.0
Semantic SEO nell’Era Post Hummingbird e WordLift 3.0
 
Office & VBA - Giorno 7
Office & VBA - Giorno 7Office & VBA - Giorno 7
Office & VBA - Giorno 7
 
Sviluppare su OpenOffice.org con Java
Sviluppare su OpenOffice.org con JavaSviluppare su OpenOffice.org con Java
Sviluppare su OpenOffice.org con Java
 
Introduzione a..django
Introduzione a..djangoIntroduzione a..django
Introduzione a..django
 
Corso Java - Introduzione
Corso Java - IntroduzioneCorso Java - Introduzione
Corso Java - Introduzione
 
C#, imparare a programmare e sopravvivere
C#, imparare a programmare e sopravvivereC#, imparare a programmare e sopravvivere
C#, imparare a programmare e sopravvivere
 
Confronto fra web services framework (open source)
Confronto fra web services framework (open source)Confronto fra web services framework (open source)
Confronto fra web services framework (open source)
 
Wcf data services
Wcf data servicesWcf data services
Wcf data services
 
ORM - Introduzione
ORM - IntroduzioneORM - Introduzione
ORM - Introduzione
 
Sviluppare app native per iOS
Sviluppare app native per iOSSviluppare app native per iOS
Sviluppare app native per iOS
 
Sviluppare apps native per iOS - Lo Stretto Digitale
Sviluppare apps native per iOS - Lo Stretto DigitaleSviluppare apps native per iOS - Lo Stretto Digitale
Sviluppare apps native per iOS - Lo Stretto Digitale
 
How I did it (in .NET): idiomatic Domain Driven Design
How I did it (in .NET): idiomatic Domain Driven DesignHow I did it (in .NET): idiomatic Domain Driven Design
How I did it (in .NET): idiomatic Domain Driven Design
 
Office & VBA - Giorno 6
Office & VBA - Giorno 6Office & VBA - Giorno 6
Office & VBA - Giorno 6
 
Lamp Ld2008
Lamp Ld2008Lamp Ld2008
Lamp Ld2008
 
Introduzione a node.js
Introduzione a node.jsIntroduzione a node.js
Introduzione a node.js
 
Introduzione a Node.js
Introduzione a Node.jsIntroduzione a Node.js
Introduzione a Node.js
 
Programmazione funzionale e Stream in Java
Programmazione funzionale e Stream in JavaProgrammazione funzionale e Stream in Java
Programmazione funzionale e Stream in Java
 
Drupal + Apache SOLR
Drupal + Apache SOLRDrupal + Apache SOLR
Drupal + Apache SOLR
 

Mehr von Maurizio Delmonte

Content's quality for Plone editors
Content's quality for Plone editorsContent's quality for Plone editors
Content's quality for Plone editorsMaurizio Delmonte
 
Contents' quality for plone editors: how to improve Plone out-of-the-box capa...
Contents' quality for plone editors: how to improve Plone out-of-the-box capa...Contents' quality for plone editors: how to improve Plone out-of-the-box capa...
Contents' quality for plone editors: how to improve Plone out-of-the-box capa...Maurizio Delmonte
 
Content Strategy. Interesse Contenuti e CMS.
Content Strategy. Interesse Contenuti e CMS.Content Strategy. Interesse Contenuti e CMS.
Content Strategy. Interesse Contenuti e CMS.Maurizio Delmonte
 
Content Management professionale con Python nel 2012
Content Management professionale con Python nel 2012Content Management professionale con Python nel 2012
Content Management professionale con Python nel 2012Maurizio Delmonte
 
Non solo Django: MVC orientato agli oggetti con Plone e Zope Toolkit
Non solo Django: MVC orientato agli oggetti con Plone e Zope ToolkitNon solo Django: MVC orientato agli oggetti con Plone e Zope Toolkit
Non solo Django: MVC orientato agli oggetti con Plone e Zope ToolkitMaurizio Delmonte
 
Come costruire un'azienda distribuita con Python
Come costruire un'azienda distribuita con PythonCome costruire un'azienda distribuita con Python
Come costruire un'azienda distribuita con PythonMaurizio Delmonte
 

Mehr von Maurizio Delmonte (10)

Viaggio di una User Story
Viaggio di una User StoryViaggio di una User Story
Viaggio di una User Story
 
Content's quality for Plone editors
Content's quality for Plone editorsContent's quality for Plone editors
Content's quality for Plone editors
 
Contents' quality for plone editors: how to improve Plone out-of-the-box capa...
Contents' quality for plone editors: how to improve Plone out-of-the-box capa...Contents' quality for plone editors: how to improve Plone out-of-the-box capa...
Contents' quality for plone editors: how to improve Plone out-of-the-box capa...
 
Content Strategy. Interesse Contenuti e CMS.
Content Strategy. Interesse Contenuti e CMS.Content Strategy. Interesse Contenuti e CMS.
Content Strategy. Interesse Contenuti e CMS.
 
Plone nel 2013
Plone nel 2013Plone nel 2013
Plone nel 2013
 
Content Management professionale con Python nel 2012
Content Management professionale con Python nel 2012Content Management professionale con Python nel 2012
Content Management professionale con Python nel 2012
 
Non solo Django: MVC orientato agli oggetti con Plone e Zope Toolkit
Non solo Django: MVC orientato agli oggetti con Plone e Zope ToolkitNon solo Django: MVC orientato agli oggetti con Plone e Zope Toolkit
Non solo Django: MVC orientato agli oggetti con Plone e Zope Toolkit
 
Come costruire un'azienda distribuita con Python
Come costruire un'azienda distribuita con PythonCome costruire un'azienda distribuita con Python
Come costruire un'azienda distribuita con Python
 
Come Avviene Plone
Come Avviene PloneCome Avviene Plone
Come Avviene Plone
 
Plone Cms
Plone CmsPlone Cms
Plone Cms
 

Zope zen

  • 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 
  • 5. Z­Object Publishing Environment  In Zope il concetto di file, di dato si perde: al  centro di tutto ci sono gli oggetti. In  un  sistema  orientato  agli  oggetti  (come  Zope),  le  applicazioni  vengono  plasmate  attraverso gli oggetti.  In  estrema  sintesi,  un  oggetto  è  un  "contenitore"  di  dati  e  di  metodi  (logica  di  controllo). 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,  plug­in  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 
  • 15. Zope: il Web è un oggetto!  http://localhost:8080/Project/Doc?index=2 Project.Doc(index=2) 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  z­object  “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  z­object  “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 Folder­padre  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  z­object  vede  un  altro  z­object,  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  z­object  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: <dtml­var 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 #zope­it #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