Alexandre Brillant
Freelance / Indépendant

10 années d'expérience

- Consultant Java, XML
    - Expertise Java, XML
        - Service Java, XML
           - Formateur Java, XML
              - Développement Java, XML        

SIRET :
44163934100037

Port. :
(+33) 06 83 86 59 68

Tél
:
(+33) 01 64 79 05 71
FAX :
(+33) 01 64 79 05 71

Ouvrages :

ouvrage XML

Livre Java 5 TP

livre java 6


Architecture :

Unix/Linux :
UML :
SOAP :
Fiches de développement :



Articles / Developpez.com :

     

Découverte de Ruby - Partie II

Commençons par créer une classe et un objet. La méthode initialize correspond à notre constructeur. Les variables préfixées par @ sont des variables d'instances (servant à définir un état pour chaque objet créé). La méthode new habituelle sert à construire l'objet en invoquant initialize avec les bons arguments.

class Mammifere
def initialize( unNom )
 @nom = unNom
end
end

lesChiens = Mammifere.new( "Chien" )

Pour observer l'état de notre objet, on dispose de la fonction inspect.

puts lesChiens.inspect

On obtient alors : #<Mammifere:0x2b69318 @nom="Chien">

La méthode to_s sert à obtenir un identifiant de l'objet (façon toString en java). On peut la surcharger.

class Mammifere
def initialize( nom )
@nom = nom
end
def to_s()
return @nom
end

end

lesChiens = Mammifere.new( "Chien" )
# On obtient en sortie le nom

puts lesChiens

Il est possible de compléter une définition de classe ailleurs par exemple :

class Mammifere
def qui()
puts "Les #{@nom}"
end
end

Les objets de la classe Mammifere ont alors à disposition la méthode qui même s'ils ont été créés avant.

Héritage

L'héritage est obtenu par l'opérateur <. La surcharge d'un constructeur se fait en réécrivant une méthode initialize et le mot-clé super désigne le constructeur parent.

class MammifereTerrestre < Mammifere
 def initialize( nom, nbPatte )
 super( nom )
  @patte = nbPatte
 end
end

Lorsque l'on surcharge une méthode, l'appel à la méthode parente se fait aussi par le mot-clé super. Ci-dessous une surcharge de la méthode to_s().

class MammifereTerrestre < Mammifere
def initialize( nom, nbPatte )
 super( nom )
 @patte = nbPatte
end
def to_s()
 "#{super()} avec #{@patte} pattes"
end
end

A note que le mot-clé return n'est pas obligatoire.

Un attribut n'est pas accessible en lecture. Pour accéder à la valeur d'un attribut, on peut bien sûr créer une fonction de lecture qui retourne cette valeur, mais plus simplement le mot-clé attr_reader va indiquer à Ruby de créer lui-même ces fonctions.

class MammifereTerrestre
 attr_reader :nom, :patte
end

puts lesChats.nom

Voici le code qui monde clairement que Ruby a ajouté du code :

class VerifMammifereTerrestre < MammifereTerrestre
def nom
 puts "Accès à la surcharge de nom"
 super
end
end

lesChats = VerifMammifereTerrestre.new( "Chat", 4 )
puts lesChats.nom

Maintenant si nous souhaitons modifier la valeur d'un attribut, on dispose également d'une astuce qui donne l'illusion qu'il n'y pas de fonction pour modifier sa valeur.

class MammifereTerrestre
def nom=(evolution)
@nom=evolution
end
end

lesChats.nom = "Petit chat"
puts lesChats.nom

On peut également utiliser le mot-clé attr_writer avec la même syntaxe de attr_reader pour laisser Ruby générer ces méthodes.

Variables et méthodes de classe

Les variables de classes commençent par @@ et doivent toujours être initialisées. Les méthodes de classes commençent par le nom de la classe.

class Mammifere
@@compteur = 0
def initialize(nom)
super( nom )
@@compteur+=1
end
def Mammifere.combien
@@compteur
end

end

puts Mammifere.combien

Contrôle d'accès

Grâce aux mot-clés private, protected, public vous allez gérer les accès aux attributs et méthodes de la classe. On peut les employer pour créer des groupes ou leur passer des "références" de méthodes.

class Mammifere
private

def leNourir()
 puts "miam miam"
end

private :qui

public
 def quelAnimal?
  qui
  leNourir
 end
end

Pour récupérer les sources



Tips Java :

- Icônes multiples en swing
- datasource et jndi

Tips ASP :

- Accès BD avec MySql
- Algo de Levenshtein

Tests d'application :

- Nvu
- Demos

Tutoriaux :

- Ruby I
- Ruby II


Autre :

- Quelques photos

© 2007 Alexandre Brillant