Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Collection d'objets

5 réponses
Avatar
Seblutfr
Bonjour,

Autodidacte, je butte un peu sur les premiers essais de POO...

J'ai un objet Lampe, qui comprend une propriété NumeroLampe, et 2 méthodes
Allumer et Eteindre
Mon programme doit pouvoir gérer une vingtaine de lampes.

Jusqu'à présents, j'étais passé par un tableau (Public tLampes(20) as Lampe,
Lampe étant ma classe) mais j'ai cru comprendre qu'il était conseillé de
passer par les collections.

Je tente donc de créer une classe Lampes (un ArrayList plus précisément),
mais je butte sur les liens qui doivent exister entre Lampe et Lampes.
Je ne vois plus trop comment remplacer mon tLampes(5).Allumer par une
nouvelle syntaxe / méthode dans l'une des 2 classes. Quelqu'un aurait-il
quelques précisions à me donner ?

Merci d'avance,

Séb

5 réponses

Avatar
Jacquouille14
Seblutfr a écrit :

Bonjour,

Autodidacte, je butte un peu sur les premiers essais de POO...

J'ai un objet Lampe, qui comprend une propriété NumeroLampe, et 2
méthodes Allumer et Eteindre
Mon programme doit pouvoir gérer une vingtaine de lampes.

Jusqu'à présents, j'étais passé par un tableau (Public tLampes(20) as
Lampe, Lampe étant ma classe) mais j'ai cru comprendre qu'il était
conseillé de passer par les collections.

Je tente donc de créer une classe Lampes (un ArrayList plus
précisément), mais je butte sur les liens qui doivent exister entre
Lampe et Lampes.
Je ne vois plus trop comment remplacer mon tLampes(5).Allumer par une
nouvelle syntaxe / méthode dans l'une des 2 classes. Quelqu'un aurait-il
quelques précisions à me donner ?

Merci d'avance,

Séb


Bonjour,
Pourquoi ne pas faire une collection de labels, 1 par lampe,
associée à un tableau booleen, true c'est allumé, false c'est
éteint. 1 clic sur un label fait basculer l'état de la lampe et
de la position correspondante du tableau ainsi que la couleur de fond
du label, vert lampe allumée, rouge éteinte, orange état non reconnu.
Le tableau n'est utile que si le prog ne peut par connaitre
l'état des lampes lors du démarrage et que les lampes ne peuvent
changer d'état que par le prog.

--
Jacques dit Jacquouille
Avatar
ChC2B
Jacquouille14 a écrit :
Seblutfr a écrit :
J'ai un objet Lampe, qui comprend une propriété NumeroLampe, et 2
méthodes Allumer et Eteindre
Mon programme doit pouvoir gérer une vingtaine de lampes.

Jusqu'à présents, j'étais passé par un tableau (Public tLampes(20) as
Lampe, Lampe étant ma classe) mais j'ai cru comprendre qu'il était
conseillé de passer par les collections.





T'as bien compris !


Je tente donc de créer une classe Lampes (un ArrayList plus
précisément), mais je butte sur les liens qui doivent exister entre
Lampe et Lampes.





Non! Il ne faut pas utiliser un arraylist. Mais une collection typée.

Tu as un objet lampe, codé dans une classe Lampe.
Tu veux créer ListeLampe une collection d'objets lampe (c'est mieux que
le "s" au bout de lampe car avec beaucoup d'objets on ne fait plus la
différence à l'oeil dans l'IDE entre la classe et sa collections, ceci
permet aussi un classement alph dans l'ide qui permet d'avoir toutes les
collections d'objet ensemble).

Tu créé une nouvelle classe nommée ListeLampe
' espace de nom des collections, et ce qui nous convient : les
' collections generiques

Imports System.Collections
Imports System.Collections.Generic

Public Class ListeLampe

Private m_col as System.collections.Generic.list(of Lampe)

' c'est là que tu déclare une collection de lampes

end class

Ensuite il te faut implanter les méthodes de l'objet m_col dans l'objet
ListeLampe (délégation).
Par exemple La méthode (ou propriété dans ce cas) Count de l'objet
Listelampe est

Public function count() as integer
count=m_coul.count
end function

Ou la méthode add :
Public function Add(Byval L as lampe) as lampe

try
m_col.add(L)
add=L

catch ex as Exception
add=nothing
end try

end function


Voili voilà j'espère que ça t'éclaire, j'allais oublier:

Dans le constructeur de la liste il ne faut pas oublier d'initialiser
l'objet m_col encapsulé.

Public sub new
m_col = new system.collections.generic.list(of lampe)
end sub

A+
Avatar
Richard Clark
ChC2B a écrit :
Jacquouille14 a écrit :
Seblutfr a écrit :
J'ai un objet Lampe, qui comprend une propriété NumeroLampe, et 2
méthodes Allumer et Eteindre
Mon programme doit pouvoir gérer une vingtaine de lampes.

Jusqu'à présents, j'étais passé par un tableau (Public tLampes(20) as
Lampe, Lampe étant ma classe) mais j'ai cru comprendre qu'il était
conseillé de passer par les collections.





T'as bien compris !


Je tente donc de créer une classe Lampes (un ArrayList plus
précisément), mais je butte sur les liens qui doivent exister entre
Lampe et Lampes.





Non! Il ne faut pas utiliser un arraylist. Mais une collection typée.

Tu as un objet lampe, codé dans une classe Lampe.
Tu veux créer ListeLampe une collection d'objets lampe (c'est mieux que
le "s" au bout de lampe car avec beaucoup d'objets on ne fait plus la
différence à l'oeil dans l'IDE entre la classe et sa collections, ceci
permet aussi un classement alph dans l'ide qui permet d'avoir toutes les
collections d'objet ensemble).

Tu créé une nouvelle classe nommée ListeLampe
' espace de nom des collections, et ce qui nous convient : les
' collections generiques

Imports System.Collections
Imports System.Collections.Generic

Public Class ListeLampe

Private m_col as System.collections.Generic.list(of Lampe)

' c'est là que tu déclare une collection de lampes

end class

Ensuite il te faut implanter les méthodes de l'objet m_col dans l'objet
ListeLampe (délégation).
Par exemple La méthode (ou propriété dans ce cas) Count de l'objet
Listelampe est

Public function count() as integer
count=m_coul.count
end function

Ou la méthode add :
Public function Add(Byval L as lampe) as lampe

try
m_col.add(L)
add=L

catch ex as Exception
add=nothing
end try

end function


Voili voilà j'espère que ça t'éclaire, j'allais oublier:

Dans le constructeur de la liste il ne faut pas oublier d'initialiser
l'objet m_col encapsulé.

Public sub new
m_col = new system.collections.generic.list(of lampe)
end sub

A+



Heu, je ne suis pas d'accord avec l'exemple.
Le mieux est de créer une classe LampeCollection qui dérive de
Collection(Of Lampe).
Tu auras alors toutes les méthodes (Add, Remove, etc.) déjà implémentées.

Si tu veux aller encore plus loin, hérite de List(Of Lampe)

--
Richard Clark
http://www.c2i.fr
Le 1er site .NET
Avatar
ChC2B
Richard Clark a écrit :

Heu, je ne suis pas d'accord avec l'exemple.
Le mieux est de créer une classe LampeCollection qui dérive de
Collection(Of Lampe).
Tu auras alors toutes les méthodes (Add, Remove, etc.) déjà implémentées.

Si tu veux aller encore plus loin, hérite de List(Of Lampe)




Oui c'est aussi une solution mais, pour ma part j'utilise celle là car
une listeObjet chez moi hérite de Collection et de Binding collection,
et pour l'héritage multiple il me semble que c'est la seule solution?

A+
Avatar
Seblutfr
"ChC2B" a écrit dans le message de groupe de discussion :
4afba78a$0$964$
Richard Clark a écrit :

Heu, je ne suis pas d'accord avec l'exemple.
Le mieux est de créer une classe LampeCollection qui dérive de
Collection(Of Lampe).
Tu auras alors toutes les méthodes (Add, Remove, etc.) déjà implémentées.

Si tu veux aller encore plus loin, hérite de List(Of Lampe)




Oui c'est aussi une solution mais, pour ma part j'utilise celle là car une
listeObjet chez moi hérite de Collection et de Binding collection, et pour
l'héritage multiple il me semble que c'est la seule solution?

A+




Je vais regarder tout ça, merci (tardivement) pour ces pistes et ces idées !

Séb