Introduction à la programmation Objet (2)

vaisseau_java_2

Dans mon exemple d’hier, je vous donnais les clés de la compréhension des fondamentaux de l’orienté objet. Nous gagnons aujourd’hui un petit peu en complexité. Cette classe est la même que celle d’hier, mais enrichie par l’arrivée de différentes nouveautés.

  • Comme vous pouvez le remarquer, il est possible d’initialiser les attributs de la classe à l’extérieur du constructeur. C’est une facilité qui permet d’apporter de la clarté dans le code, car comme ça seuls les champs qui doivent varier sont initialisés dans le constructeur.
  • Vous remarquez également que nous avons ici deux constructeurs, la chose est rendue possible par le fait que les deux ne prennent pas le même nombre ni le même type de paramètres. Ce n’est d’ailleurs pas réservé aux constructeurs, c’est le cas de n’importe quelle fonction. Par exemple vous pouvez avoir une fonction chargerPreferences(String nomFichier) et une fonction chargerPreferences(FileReader fichier), étant entendu que la première va ouvrir le fichier spécifié puis faire appel à l’autre. Et dans le cas présent, vous remarquerez qu’effectivement le constructeur qui prend le plus de paramètres fait appel au constructeur simple par le biais du mot clé « this ». Ce mot clé permet soit de désigner le constructeur de la classe s’il est utilisé comme fonction, soit de désigner une instance de la classe. Bien sûr il n’est pas obligatoire de lier les constructeurs, on aurait pu recopier le premier dans le deuxième, et éviter le renvoi. Mais en règle général en programmation, on évite de dupliquer le code tout simplement parce que s’il y a une modification à faire, on aime bien n’avoir à la faire qu’une seule fois.
  • Vous remarquerez enfin l’apparition du mot clé « static ». Ce mot clé permet de désigner une fonction ou un paramètre comme indépendant d’un objet particulier, mais au contraire commun à tous les objets de la classe. C’est un peu l’analogue d’une variable globale. Vous pouvez créer 100 vaisseaux, tous de nom, de couleur et de nombre de canons différents, mais si vous modifiez la variable nombre de vaisseaux, tous seront affectés, parce que c’est une variable dite « de classe et non d’instance », c’est à dire qu’elle ne s’applique pas à un objet particulier de la classe, mais à l’ensemble de ces objets.
  • et puis il y a la fonction public static void main(String args). Comme vous le remarquerez, cette fonction est « static », donc ne s’applique pas à un objet particulier mais à l’ensemble de la classe. En particulier, par convention, ce nom et cette signature de fonction désignent le bout de code qui doit être appelé pour lancer le programme.
  • Que dire d’autre, System.out.println() est une fonction qui permet d’afficher la chaine de caractères spécifiée à l’écran. On peut concaténer deux chaines de caractères avec des ‘+’. Il est également possible de concaténer des entiers avec une chaine de caractères, et comme vous le voyez, si jamais ça sort de l’écran, on peut étaler sur plusieurs ligne, le programme s’en fout du moment qu’il y a bien le point virgule à la fin de l’instruction ;).

Je sens que vous êtes légèrement perdus, donc je vais faire un bref rappel sur les variables:

  • On appelle variable d’instance un attribut qui décrit une caractéristique d’un objet de la classe. Chaque objet de la classe possède cet attribut (couleur, nombre de canons, nom…) mais il peut être différent en fonction de l’objet. On y accède en utilisant le nom de la variable suivit d’un point et du nom de l’attribut, par exemple vaisseau1.couleur pour obtenir la couleur du vaissau1 ou encore vaisseau2.nombre_de_canons pour obtenir le nombre de canons du vaisseau2.
  • On appelle méthode d’instance une méthode (fonction) qui peut s’appliquer à une instance (un objet) particulier de la classe, exemple accelerer(), que  l’on applique à un objet particulier, par exemple vaisseau1.accelerer() pour faire bouger le vaisseau1.
  • On appelle variable de classe une variable qui ne dépend pas d’un objet de la classe, mais qui est commun à tous les objets. Ces variables sont repérées par le mot clé « static ». Exemple, nombre_vaisseaux est une variable de classe. Si on la modifie, elle change pour tous les objets. On peut y accéder par le nom de la classe suivit d’un point et du nom de la variable, par exemple VaisseauSpatial.nombre_vaisseaux permettrait d’y accéder depuis une autre classe,
  • de même qu’une autre classe pourrait lancer la méthode main par l’instruction VaisseauSpatial.main(args); En effet la méthode main elle non plus ne s’applique pas à un objet particulier, mais comme toutes les méthodes statiques, elle s’applique à manipuler des objets de la classe.

J’espère avoir été suffisamment compréhensible. Ce que je raconte est un peu dur à suivre, parce que malgrès tout je suis obligé d’introduire peu à peu le vocabulaire de base du programmeur java. Enfin vous avez l’exemple du code source pour comprendre, et en extrapolant un peu par rapport aux autres langages vous devriez avoir les outils pour piger le truc. Je précise que j’ai utilisé le logiciel très connu Eclipse pour programmer ma classe. Ceci dit vous n’en avez absolument pas besoin pour débuter. N’importe quel éditeur de texte basique comme Notepad++ sous Windows, et Gedit sous Linux vous permettrons d’avoir le minimum de coloration syntaxique sans avoir besoin de passer par des choses plus compliquées. Disons que c’est pour moi une habitude et un outil de travail. Je consacrerai sans doute prochainement un article aux environnements de développement.

Pour finir, voici ce que l’on vois lorsqu’on lance ce programme:

vaisseau_java_2-exe

Comme vous le voyez, le main a été appelé, il a déclaré deux vaiseaux qui ont été construits d’après ses spécifications, et il leur a appliqué quelques méthodes d’instance. La variable nombre_vaisseaux a bien été incrémentée deux fois, autant de fois que des vaisseaux ont été construits (elle n’a été initialisée q’une seule fois lors du premier appel de la classe).

Publicités

2 réflexions au sujet de « Introduction à la programmation Objet (2) »

  1. Ping : Compiler et exécuter un fichier java. « Aldian’s Blog

  2. BA

    C’est vraiment bien ce que tu fais, tes articles sont d’un grand
    secours pour les débutants . Courage et jespère que tu va continuer encore longtemps

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s