“doc” (Col. : Science Sup 17x24) — 2007/7/19 — 18:18 — page 307 — #317
i
i
i
i
i
i
i
i
6.5 Le langage Java (partie séquentielle)
307
Dans notre système à objets cela devient :
class Factorial
meth fact(N ?F)
if N==0 then F=1
else F=N * {self fact(N-1 $)} end
end
end
Il y a quelques différences avec notre système à objets. Le mot clé this en Java a le
même sens que self dans notre système à objets. Java est statiquement typé : le type
de toutes les variables est déclaré à la compilation. Notre modèle est dynamiquement
typé : une variable peut être liée à une entité de tout type. En Java, la visibilité de fact
est déclarée comme publique. Dans notre modèle, fact est publique par défaut ; pour
avoir une autre visibilité, il faut la déclarer comme un nom.
L’entrée/sortie
Tout programme réaliste en Java doit faire de l’entrée/sortie. Java a un sous-système
compliqué d’entrée/sortie basé sur la notion de flot (« stream »). Un flot en Java est
une séquence ordonnée de données qui a une source (pour un flot d’entrée) ou une
destination (pour un flot de sortie). Il ne faut pas confondre avec les flots du chapitre 4,
qui sont des listes avec une queue non liée. Le concept de flot en Java généralise le
concept Unix d’entrée/sortie standard : l’entrée standard (« standard input ») (stdin)
et la sortie standard (« standard output ») (stdout).
Un flot peut coder beaucoup de types, y compris des types primitifs, des objets et des
graphes d’objets (un graphe d’objets est un objet avec les autres objets qu’il référence,
directement ou indirectement). Un flot peut contenir des octets ou des caractères. Un
caractère prend plus de place qu’un octet parce que Java soutient l’Unicode. Un octet
en Java est un entier positif ou zéro de 8 bits. Un caractère en Java est un caractère
Unicode 2.0, qui a un code de 16 bits.
La définition des classes
La classe Factorial est assez atypique. Elle n’a qu’une méthode et aucun attribut.
Voici une classe plus réaliste. Cette classe définit des points dans un espace bidimensionnel :
class Point {
public double x, y;
}
Les attributs x et y sont publics, ce qui signifie qu’ils sont visibles à l’extérieur de la
classe. Les attributs publics ne sont généralement pas une bonne idée ; il est presque
toujours mieux de les rendre privés et d’utiliser des méthodes d’accès :
© Dunod – La photocopie non autorisée est un délit
i
i
i
i
i
i
i
i
6.5 Le langage Java (partie séquentielle)
307
Dans notre système à objets cela devient :
class Factorial
meth fact(N ?F)
if N==0 then F=1
else F=N * {self fact(N-1 $)} end
end
end
Il y a quelques différences avec notre système à objets. Le mot clé this en Java a le
même sens que self dans notre système à objets. Java est statiquement typé : le type
de toutes les variables est déclaré à la compilation. Notre modèle est dynamiquement
typé : une variable peut être liée à une entité de tout type. En Java, la visibilité de fact
est déclarée comme publique. Dans notre modèle, fact est publique par défaut ; pour
avoir une autre visibilité, il faut la déclarer comme un nom.
L’entrée/sortie
Tout programme réaliste en Java doit faire de l’entrée/sortie. Java a un sous-système
compliqué d’entrée/sortie basé sur la notion de flot (« stream »). Un flot en Java est
une séquence ordonnée de données qui a une source (pour un flot d’entrée) ou une
destination (pour un flot de sortie). Il ne faut pas confondre avec les flots du chapitre 4,
qui sont des listes avec une queue non liée. Le concept de flot en Java généralise le
concept Unix d’entrée/sortie standard : l’entrée standard (« standard input ») (stdin)
et la sortie standard (« standard output ») (stdout).
Un flot peut coder beaucoup de types, y compris des types primitifs, des objets et des
graphes d’objets (un graphe d’objets est un objet avec les autres objets qu’il référence,
directement ou indirectement). Un flot peut contenir des octets ou des caractères. Un
caractère prend plus de place qu’un octet parce que Java soutient l’Unicode. Un octet
en Java est un entier positif ou zéro de 8 bits. Un caractère en Java est un caractère
Unicode 2.0, qui a un code de 16 bits.
La définition des classes
La classe Factorial est assez atypique. Elle n’a qu’une méthode et aucun attribut.
Voici une classe plus réaliste. Cette classe définit des points dans un espace bidimensionnel :
class Point {
public double x, y;
}
Les attributs x et y sont publics, ce qui signifie qu’ils sont visibles à l’extérieur de la
classe. Les attributs publics ne sont généralement pas une bonne idée ; il est presque
toujours mieux de les rendre privés et d’utiliser des méthodes d’accès :
© Dunod – La photocopie non autorisée est un délit
