« Salut, Amigo. Aujourd'hui, je vais te dire à quoi ressemble un programme Java typique. L'idée générale est que tout programme écrit en Java se compose de classes et d'objets. »
« Je sais déjà ce que les classes sont. Mais les objets ? »
« Commençons par une analogie. Supposons que tu veux construire un petit navire. Tu travailles à sa conception et tu envoies le plan à l'usine, où un navire est assemblé en suivant tes dessins. Ou dix navires ; autant que tu veux en fait. L'important, c'est que tu peux faire des dizaines de navires identiques avec ton plan d'origine. »
« C'est exactement pareil en Java. »
« Les programmeurs Java sont comme des ingénieurs, sauf qu'au lieu de concevoir des plans, ils écrivent des classes. Les pièces de navire sont fabriquées en suivant les plans, et les objets sont créés en suivant les classes. »
« D'abord, on écrit des classes (ou dessine des plans). Ensuite, quand le programme est exécuté, la machine Java crée des objets à partir de ces classes. C'est exactement comme la façon dont les navires sont fabriqués sur la base d'un plan. Un seul plan pour beaucoup de navires. Les navires sont différents. Ils ont des noms différents et transportent des cargaisons différentes. Mais ils n'en sont pas moins similaires. Ils ont tous une conception identique, et sont capables d'effectuer les mêmes tâches. »
« D'accord, j'ai compris l'analogie avec les navires. Tu pourrais me donner d'autres exemples pour que je sois sûr de bien avoir compris ce que tu dis ? »
« Prenons les abeilles, par exemple... »
« Non, oublie ça. J'ai eu une mauvaise expérience avec les abeilles. On va plutôt prendre des fourmis. »
« Une colonie de fourmis est un bon exemple pour illustrer la façon dont les objets interagissent. Toute colonie de fourmis se compose de trois classes : la reine, les soldats et les fourmis ouvrières. Le nombre de fourmis dans chaque classe varie. En général, une colonie a une seule reine, des dizaines de soldats et des centaines d'ouvrières. Trois classes pour des centaines d'objets. Les fourmis suivent des règles strictes quand elles interagissent avec les fourmis de leur propre classe et celles des autres classes. »
« C'est l'exemple parfait. Un programme typique fonctionne exactement comme cela. Il y a un objet principal qui crée des objets dans toutes les classes. Les objets interagissent les uns avec les autres et avec le monde extérieur. Et le comportement des objets est câblé (programmé) à l'intérieur. »
« J'ai du mal à comprendre. Ou plutôt, je n'ai rien compris du tout. »
« Ces deux explications sont les deux faces d’une même médaille. La vérité se trouve quelque part entre les deux. Le premier exemple (sur les plans et les navires) nous montre la connexion entre une classe et ses objets. C'est une analogie puissante. L'analogie de la colonie de fourmis montre la relation entre les objets, qui sont décrits par des classes et existent uniquement quand un programme est exécuté. »
« Tu veux dire qu'on doit écrire des classes pour tous les objets utilisés dans un programme, puis décrire leurs interactions ? »
« Oui, mais c'est plus facile que ça en a l'air. En Java, quand un programme est exécuté, toutes les entités sont des objets. Écrire un programme revient à décrire les différentes façons dont les objets peuvent interagir. Les objets appellent simplement les méthodes des autres et leur passent les données nécessaires. »
« C'est encore un peu flou, mais je commence à saisir. »
« Comment sait-on quelles méthodes appeler et quelles données passer ? »
« Chaque classe a une déclaration, qui indique son utilisation prévue. De la même façon, chaque méthode a une déclaration qui indique ce qu'elle peut faire et les données que nous devons lui passer. Pour utiliser une classe, tu dois avoir une compréhension générale de ce qu'elle fait. Nous devons savoir exactement ce que chaque méthode fait, mais pas exactement comment elle le fait. C'est comme une baguette magique. »
« Hm ! Intéressant, dit comme ça. »
« Là. Observe le code d'une classe qui copie des fichiers : »
package com.codegym.lesson2;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileCopy
{
public static void main(String[] args) throws IOException
{
FileInputStream fileInputStream = new FileInputStream("c:\data.txt");
FileOutputStream fileOutputStream = new FileOutputStream("c:\result.txt");
while (fileInputStream.available() > 0)
{
int data = fileInputStream.read();
fileOutputStream.write(data);
}
fileInputStream.close();
fileOutputStream.close();
}
}
« Je mentirais en disant que j'ai tout compris, mais je pense avoir saisi l'essentiel. »
« Parfait. On se revoit la prochaine fois, alors. »
« Ah, j'avais presque oublié. Voici ta mission de la part de Diego. »
GO TO FULL VERSION