
Le code :
class Fifo
def initialize an_array
@conten = an_array
end
def add val
@conten.push val
end
def add_sev an_arr
for i in an_arr
self.add i
end
end
def remove number = 1
temp = @conten[number, @conten.size-1]
@conten = temp
end
def lenght
@conten.size
end
def cell int
@conten[int]
end
def print
str = ""
for i in (0...@conten.size)
str = str + "[ " + @conten[i].to_s + " ]->"
end
str = str + " nil "
puts str
end
def include? val
@conten.include? val
end
end
C'est une classe très simple, qui respecte l'approche objet par son côté : pas d'accès direct aux données (sauf aux valeurs des cellules en lecture via cell). add pour ajouter un élément, add_sev pour plusieurs (idéalement, une seule méthode avec condition sur la variable d'entrée devrait suffire mais bon...) remove x pour retirer x éléments. print pour l'affichage, include? pour savoir si un objet se trouve dans la liste et enfin lenght pour obtenir la longueur de la file.
Testons, avec 2 cellules arrivant à chaque itération et entre 0 et 2 qui sortent : vous avez dit "bouchon" ?
a = Fifo.new ["first one !"]Alors, ça avance ?
for i in (0...20)
a.add_sev [rand(100), rand(100)]
a.print
a.remove rand(3)
end
0 commentaires:
Enregistrer un commentaire