C'est ce que j'essaie de faire depuis le début.
Mais seul et sans prof, c'est pas si facile que ça
C'est ce que j'essaie de faire depuis le début.
Mais seul et sans prof, c'est pas si facile que ça
Cadeau: http://bruce-eckel.developpez.com/li...aduction/tij2/
(c'est une version un poil ancienne, par exemple pas de référence aux generics et autres bestioles de ce genre, mais elle suffit plus que largement pour s'initier à la POO en java)
Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.
Reprenons le type de base List<Layer> (car comme Sinok te l'a dis utiliser une liste t'evite de devoir gerer manuellement certaines choses comme ce qu'il faut faire lorsque tu retires un elements d'un tableau ou que tu rajoutes qq chose et que ton tableau est trop petit).
Il existe de base au moins 2 implementations de List (j'oublie Vector volontairement) : ArrayLis et LinkedList.
- ArrayList, c'est un tableau encapsule dans une liste, cad que c'est la liste et pas toi qui gere le probleme des trous (calque enleve) ou le redimensionnement (changement de capacite). Comme tous les elements sont dans un tableau, un acces a un element d'indice i est tres rapide, en cas de parcours dans une boucle on peut donc se permettre d'acceder au ieme element sans probleme. Par contre en cas d'ajouts ou de suppression important(e) d'elements, il se peut que le tableau soit realloue a une nouvelle capacite (la capacite de la liste ce n'est pas la meme chose que la taille de la liste) et qu'il y ait une recopie des elements depuis l'ancien conteneur vers le nouveau (donc ca c'est lent).
- LinkedList, c'est une liste chainee constitue de cellules independantes reliees entre elles par des references. Ici l'ajout suppression d'elements est rapide puisqu'il n'y a pas d'allocation de nouveau tableau en cas de changement de capacite (en fait il n'y a pas de capacite du tout). L'acces a des element d'indice i sont par contre plus lent car il faut parcourir la liste et sauter de reference en references. Donc, en cas de parcours, on privilegiera un parcours via un iterateur, plutot qu'un parcours qui accede a un element d'indice particulier.
Donc ces deux variantes de la liste sont a utiliser dans des cas precis quand on sait que l'on peut gagner en optimisation, par exemple :
- on utilisera LinkedList lorsqu'on ne connait pas a l'avance le nombre d'elements a inserer dans la liste mais qu'on est sur d'avoir beaucoup d'insertions : par exemple lors du chargement de fichier de definition.
- une fois le chargement effectue, on recopira le contenu dans une ArrayList, ce qui permet d'assurer un acces rapide. Meme si l'utilisateur peut ajouter / supprimer des calques via la GUI en general ca reste des operation effectuees en petites quantites donc il n'est pas critique d'essayer d'optimiser (trop) les changements de capacite de la liste.
Dans les deux cas, de toute maniere, on utilisera l'interface List, les methodes qu'elles contient sont suffisantes dans la plupart des cas.
Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.
suivez mon blog sur Développez.
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook
En cherchant ce matin en lisant un peu des designs et patterns, je me suis rendu compte qu'il existais bien des choses ressemblant à ceci.
Donc, je me dis qu'ensuite c'est une histoire de propriété à utilisé.Classe mère titre = new Classe enfante();
En poursuivant mes investigations, j'ai commencé à regroupé les différentes fonctions nécessaire au composants. Je vais donc pouvoir lancé un UML rapidement
Je vous montrerais ce qu'il en est et je retoucherais ce qu'il y aura à retoucher.
J'ai fais un choix drastique de mettre tout ce qui concerne ma classe composant, commandes manuelles, point dans le même package. Ainsi chaque fonctions sont faites pour le package et le tout est complet.
Je reviens un peu par ici afin d'exposé mon uml.
Donc en me penchant un peu sur qui devais faire quoi, en simplifiant à l'extrême (j'ai volontairement pas tout représenté, car il y a des points soumis à discussions), j'ai établi ce diagramme.
On aperçois deux interfaces. La première gère les couches de calque, la seconde les affiche et inter-agit avec l'utilisateur au travers de menu flottant. (on y reviendra car il faut aussi que je l'implémente).
J'espère être sur la bonne voie pour réalisez mon composant qui sera dans un package de façon à pouvoir le réutiliser dans d'autres logiciels.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager