ENPC - Objets et Patterns - Séance 2

La programmation orientée objet

La programmation objet, c'est à dire celle qu'on est sensé mettre en oeuvre lorsqu'on écrit des programmes avec un langage à objet (ou langage orienté objet) tel que Java, fait intervenir différents concepts tels que celui de classe, d'objet, de responsabilité, d'encapsulation, etc.
Le premier concept auquel on est confronté lorsqu'on écrit un programme est celui de classe: le mot-clé class MaClasse { ... } permet de définir (entre les accolades) les membres de la classe MaClasse.

La programmation "tout court" !

Avant de s'intéresser aux spécificités de la programmation orientée objet, nous allons nous familiariser avec la programmation "tout court", c'est à dire aux instructions simples, à leurs enchaînements, aux structures de contrôle, etc. Pour mettre en oeuvre ces concepts simples, nous n'avons pas besoin d'objets (instances) ayant des états et des fonctionnalités. Dans ce cas, il nous faut des méthodes pouvant être exécutées indépendament de l'existence d'une instance. De telles méthodes sont dites statiques ou encore méthodes de classe.

Une méthode statique a pour propriété de pouvoir être exécutée avec pour cible la classe elle-même (tandis qu'une méthode non statique doit impérativement être appelée sur une instance de la classe. La définition d'une méthode statique se fait avec le mot clé static. Exemple:
static void maMethode(Type1 param1, Type2 param2) {...}

En dehors des modificateurs de visibilité (public, protected, private), qui peuvent s'appliquer selon le cas aux classes, aux méthodes ou aux variables d'instance et sur lesquels nous reviendrons plus tard, la définition d'une méthode est de la forme suivante:

typeRetour nomMethode(Type1 param1, ..., TypeN paramN) { ... }
Dans le cas des méthodes statiques, nous ferons simplement précéder le type de retour (le type de la valeur renvoyée par l'exécution de la méthode) par le mot-clé static.

Les types en Java

Toutes les variables que l'on peut manipuler en Java sont typées et on distingue deux grandes catégories de types:

Les tableaux

Les tableaux, en Java, sont des instances de classes invisibles (elles n'apparaissent pas dans les API). Ils permettent de stocker un nombre établi d'éléments, tous du même type. Une variable de type tableau se déclare avec la syntaxe suivante:
TypeElement[] nomVariable;
Un objet tableau de ce type, de taille N, s'alloue comme ceci:
nomVariable = new TypeElement[N];
Il existe d'autres syntaxes, mais celle ci est la plus répandue.

Lorsqu'un tableau est alloué, tous ses éléments sont initialisés à la valeur par défaut du type des éléments. Cette valeur est 0 pour tous les types numériques, false pour le type boolean et null pour tous les types référence. Ce null correspond à "la référence vers rien" et c'est une erreur que d'essayer d'y accéder. Ces initialisations par défaut sont également effectuées pour les variables d'instance (champs) d'un objet lors de sa création.

Exercices

  1. Afficher les carrés des n premiers entiers dans la méthode principale. Créer ensuite une méthode de signature public static void premiersCarres(int n) qui s'en charge, et l'appeler dans la méthode principale.
  2. Définir (déclarer et initialiser) un tableau tab de 10 entiers. Écrire une méthode d'affichage des éléments d'un tableau d'entier. L'initialiser chaque élément au carrré de son indice (t[5] = 25)
  3. Écrire une méthode de tri d'un tableau d'entier.
  4. Écrire un programme qui accepte une liste d'entiers sur la ligne de commande, les place dans un tableau d'entiers créé pour l'occasion et les affiche dans l'ordre après avoir trié ce tableau. Exemple:
      % java TriEntiers 34 65 12 7 27 12
      7 12 12 27 34 65 
  5. Écrire une méthode de tri d'un tableau de String.

Etienne.Duris[at]univ-mlv.fr - © École Nationale des Ponts et Chaussées - Octobre 2000 - http://www-igm.univ-mlv.fr/~duris/ENPC/index2000.html