Le vendredi 11 septembre 2009,
  jnmrclg...@free.fr a écrit :
======================================================================
> Bonjour à toute la liste. 
> 
> Suite à vos réponses et quelques lectures supplémentaires sur les
> arborescences de projets Zope 3, je me suis décidé à faire un 1er
> projet à partir de la feuille blanche, histoire de bien comprendre ce
> qui se passe. 
> 
> J'en suis aujourd'hui à étudier de près l'exemple BookMarker décrit
> dans " Zope 3 in 30 Minutes ", et j'ai une petite question sur les
> conteneurs. 
> 
> 1. utilisation des containers : quel intérêt y a-t-il à utiliser
> l'interface IBookMarker(IContainer)? Pour des applis très basiques
> genre Hello World, on se contente d'une simple IHelloWorld, et ça
> fonctionne. J'ai cru comprendre que les conteneurs permettent de
> classer des objets comme dans des dossiers, et une réponse serait :
> le conteneur contient des objets fabriqués à partir d'autres objets
> "providant" d'autres interfaces. Ce qui permet en particulier de
> classer des objects suivant certains critères (contraintes), comme le
> font l'interfaces class IMarkContained(IContained). 
> 
> 2. utilisation des conteneurs (suite) : j'étudie cet exemple pour
> créer une petite appli d'impression automatique d'étiquettes pour
> livrer des clients. Il s'agit d'enregistrer des clients (nom prénom
> adresse) et de créer des étiquettes sous forme de pdf qui
> s'imprimeront automatiquement. L'interface IClient est simple, mais
> l'interface IEtiquette me pose pb, puisque justement, elle fait appel
> aux objets client... Est-ce que par hasard, IEtiquette ne serait pas
> justement un conteneur ? Auquel cas j'aurai pigé le concept. 
> 
> Merci d'avance de m'aider dans mes premiers pas de fourmi. J'aime
> comprendre ce que je fais... et il paraît que "felix, qui potuit
> rerum cognoscere causas" (la phrase complète signifiant : «Heureux
> celui qui a pu pénétrer les cause secrètes des choses, et qui,
> foulant aux pieds toute crainte, méprise l'inexorable destin et les
> menaces de l'avance Achéron !»)... tout un programme ! 
======================================================================


Bonjour,

L'interface IContainer permet, comme son nom l'indique, de définir une
interface pour des objets devant en contenir d'autres, donc une
composition au sens UML du terme ; typiquement, un dossier dans une
arborescence implémente l'interface IContainer.
Certaines propriétés de cette interface permettent de spécifier les
interfaces que les objets contenus doivent fournir, via des contraintes.
Une interface IContainer étant elle-même la consolidation de deux
interfaces (IReadContainer et IWriteContainer), il est possible de
définir précisément les permissions nécessaires aux opérations de
lecture et d'écriture pour chacune de ces deux interfaces.

Le fait que certains conteneurs soient capables de définir et de
maintenir un ordre pour les objets contenus repose sur une extension de
cette interface et à des implémentations spécifiques (IOrderedContainer
et OrderedContainer par exemple).

Dans le cas de l'exemple avec des étiquettes et des clients, j'imagine
qu'une étiquette est associée à un client ; ce n'est donc pas a
priori une composition mais simplement une association. Si l'on
considère qu'une étiquette "pointe" vers un client mais que la durée de
vie des deux objets est indépendante (supprimer un client ne supprime
pas ses étiquettes et vice-versa), on pourrait avoir :
 - un premier conteneur pour les clients
 - un second conteneur pour les étiquettes
 - un attribut au niveau de l'interface IEtiquette qui va référencer un
   client (client = Object(IClient) au niveau du schéma de IEtiquette).
Mais ce n'est qu'une option, il faut voir exactement comment le modèle
UML est conçu pour choisir la définition des interfaces.

J'espère avoir été clair... ;-)

A+
Thierry
-- 
Chef de projets intranet/internet
Office National des Forêts - Département Informatique
2, Avenue de Saint-Mandé
75570 Paris Cedex 12
Tél. : 01 40 19 59 64
Fax. : 01 40 19 58 85
Mél. : thierry.flo...@onf.fr
Web. : http://www.onf.fr

_______________________________________________
zope3-french-user mailing list
zope3-french-user@lists.afpy.org
http://lists.afpy.org/mailman/listinfo/zope3-french-user

Répondre à