Les interface homme-machine
et le langage Java
DUT premi`ere ann´ee
Henri Garreta, Facult´e des Sciences (Luminy)
Cyril Pain-Barre & S´ebastien Nedjar, IUT d’Aix-Marseille (Aix)
Cours 1: Java et les objets
c
H. Garreta, 2014 IHM et Java 1 / 21
Java et les objets
Ressources
infodoc.iut.univ-aix.fr/~ihm/ : sujets des TP, pointeurs utiles, polys,
ces transparents, etc.
java.sun.com (en r´ealit´e www.oracle.com/technetwork/java) : logiciel
et documentation, dont
JRE (Java Runtime Environment) : machine java + biblioth`eques,
ce qu’il faut pour ex´ecuter les programmes java
JDK (Java Development Kit) : compilateur et outils pour evelopper les
programmes – contient un JRE
la doc en ligne de l’API (docs.oracle.com/javase/7/docs/api)
avec le JDK n’importe quel ´editeur de textes, mais
JDK + eclipse (ou JDK + NetBeans) pour plus d’efficience
henri.garreta.perso.luminy.univmed.fr : diverses ressources,
dont : «Le langage Java »(poly tr`es complet)
c
H. Garreta, 2014 IHM et Java 2 / 21
Java et les objets
POO, esprit de la chose
un programme est un ensemble d’objets
un objet est d´etermin´e par un ´etat et un comportement
´etat : donn´e par les valeurs d’un ensemble de donn´ees membres,champs ou
variables d’instance
comportement : impl´ement´e par un ensemble de fonctions membres ou
m´ethodes d’instance
une classe est la description d’une sorte d’objets de mˆeme type, les instances
de la classe
il y a aussi des donn´ees et des fonction non attach´ees aux objets :
les donn´ees membres static ou variables de classe
les fonctions membres static ou m´ethodes de classe
c
H. Garreta, 2014 IHM et Java 3 / 21
Java et les objets
POO, esprit de la chose (suite)
les objets interagissent en s’envoyant des messages
un message a toujours un destinataire
un message dit quoi faire, mais non comment : il incombe au destinataire du
message de savoir les d´etails que prend chez lui l’ex´ecution du message
indice : si pet qrepr´esentent des points
r = distance(p, q)
s’´ecrit plutˆot
r = p.distance(q)
l’ensemble des messages qu’un objet accepte constitue son interface
l’interface est la partie publique de l’objet ; elle doit ˆetre simple,robuste,
document´ee
c
H. Garreta, 2014 IHM et Java 4 / 21
Java et les objets
Structure g´en´erale d’un fichier source
En Java, il n’y a pas
des directives pour le pr´eprocesseur (lignes commen¸cant par #)
notamment, il n’y a pas besoin de #include
des fichiers de sp´ecification («.h ») et des fichiers d’impl´ementation («.cpp ») s´epar´es
des variables globales
des fonctions autonomes
Fichier Liste.java
package mesOutils.mesListes;
import java.outil.Vector;
import java.awt.*;
class Maillon {
eclaration des membres (variables et fonctions) de la classe Maillon
}
public class Liste {
eclaration des membres (variables et fonctions) de la classe Liste
}
recommandation : une seule classe par fichier
obligation : une seule classe «public »par fichier
c
H. Garreta, 2014 IHM et Java 5 / 21
Java et les objets
package
subdivision de l’espace des noms, `a la mani`ere des namespace
Fichier Liste.java
package mesOutils.mesListes;
class Maillon {
...
}
public class Liste {
...
}
le nom complet de la classe Liste est : mesOutils.mesListes.Liste
l’instruction package doit ˆetre la premi`ere du fichier
si absente, la classe est dans le «paquet sans nom »(unnamed package)
une classe publique (qualifi´ee public) est accessible partout
une classe non publique l’est uniquement dans les autres classes du mˆeme package
pour une classe publique, le package et le nom imposent le chemin du fichier source :
la classe mesOutils.mesListes.Liste
doit se trouver dans le fichier ./mesOutils/mesListes/Liste.java
c
H. Garreta, 2014 IHM et Java 6 / 21
Java et les objets
import
d´efinition d’une certaine classe :
package mesOutils.mesListes;
public class Liste {
...
}
utilisation de cette classe dans le mˆeme package :
Liste L = new Liste();
utilisation de cette classe dans un autre package :
mesOutils.mesListes.Liste L = new mesOutils.mesListes.Liste();
dans ce cas, import permet d’utiliser le nom court :
import mesOutils.mesListes.Liste;
...
Liste L = new Liste();
forme «collective »:
import mesOutils.mesListes.*;
cela d´esigne toutes les classes du paquet mesOutils.mesListes
import n’est pas «#include »
c
H. Garreta, 2014 IHM et Java 7 / 21
Java et les objets
Compiler et ex´ecuter une classe
Les ex´ecutables Java sont de plusieurs sortes :
les applications s’ex´ecutent sur une machine virtuelle Java
qui, elle-mˆeme, s’ex´ecute sur un couple (processeur, syst`eme),
les applets s’ex´ecutent dans les navigateurs web,
les servlets s’ex´ecutent dans les serveurs d’applications.
les applications Java sont compil´ees et interpet´ees :
le compilateur produit un bytecode que la machine java interpr`ete
l’application la plus simple (en rouge, les ´el´ements invariables)
Fichier Bonjour.java
public class Bonjour {
public static void main(String[] args) {
System.out.println("Bonsoir !");
}
}
compilation :
Ijavac Bonjour.java
ex´ecution :
Ijava Bonjour
Bonsoir !
c
H. Garreta, 2014 IHM et Java 8 / 21
Java et les objets
Java, le langage
Sauf indication contraire, Java = C : mˆeme syntaxe, mˆemes concepts de base...
...avec la surcharge des noms des fonctions, comme en C++
Types primitifs (simples) :
byte (1 octet) short (2 octets) int (4 octets) long (8 octets)
float (4 octets) double (8 octets) char boolean
Tous les entiers sont «avec signe ». De plus
Les types primitifs ob´eissent `a la s´emantique de l’acc`es par valeur
Exemple : x == y signifie «xet yont eme valeur »
Types objets :
tableaux
chaˆınes de caract`eres (String, une classe avec privil`eges)
toutes les autres classes
Les objets ob´eissent `a la s´emantique de l’acc`es par r´ef´erence
Exemple : x == y signifie «xet yont mˆeme adresse »
c
H. Garreta, 2014 IHM et Java 9 / 21
Java et les objets
Notion de r´ef´erence en Java
ef´erence = pointeur g´er´e discr`etement par Java. Exemple
(on suppose avoir d´efini une classe Point) :
Point p; p contiendra une r´ef´erence sur un objet Point.
Pour l’instant, pcontient null ou «non initialis´e »
instantiation (cr´eation) d’un objet :
p = new Point(25, 50); Maintenant ppointe un morceau de m´emoire
contenant (au moins) les coordonn´ees (25,50).
on peut aussi associer d´eclaration et instantiation :
Point q = new Point(100, 200);
d´esignation des membres (sous r´eserve que xet distance soient membres de la
classe Point et qu’on ait le droit de les mentionner)
p.x
p.distance(q)
( en C++ cela s’´ecrirait Point *p; puis p->x et p->distance(q) )
les r´ef´erences sont modifiables. Par la suite, on pourra ´ecrire :
p = new Point(300, 0); la pec´edente valeur de p est «oubli´ee »
c
H. Garreta, 2014 IHM et Java 10 / 21
Java et les objets
Tableaux
eclaration :
UnType tab[]; ou UnType[] tab; (ici tab vaut null)
Cr´eation du tableau :
tab = new UnType[nombre d’´el´ements];
Acc`es au ieme ´el´ement :
tab[i]
Nombre d’´el´ements du tableau :
tab.length
Un exemple :
public class Echo {
public static void main(String args[]) {
for (int i = 0; i < args.length; i++)
System.out.println(i + " : " + args[i]);
}
}Ijavac Echo.java
Ijava Echo poids 200+30 ’au revoir’
0 : poids
1 : 200+30
2 : au revoir
I
c
H. Garreta, 2014 IHM et Java 11 / 21
Java et les objets
Chaˆınes de caract`eres
Les objets String repesentent des chaˆınes de caract`eres immuables.
Notation :
String s = "Bonjour";
Concat´enation :
s + " `a tous" "Bonjour `a tous"
Propri´et´e remarquable : si seul exp1est de type String
exp1+exp2exp1+conversionEnString(exp2)
exemple :
System.out.println("x = " + x);
Comment ¸ca marche ? Deux cas : a) si exp2est d’un type primitif
exp1+exp2exp1+ String.valueOf(exp1)
b) si exp2est un objet
exp1+exp2exp1+exp2.toString()
(tous les objets poss`edent une telle m´ethode toString())
c
H. Garreta, 2014 IHM et Java 12 / 21
Java et les objets
Classes, variables, m´ethodes
En Java il n’y a pas :
des variables ou des m´ethodes d´efinies en dehors de toute classe
des m´ethodes qualifi´ees inline
le compilateur se charge de d´etecter certaines m´ethodes qui le m´eritent
des classes ou m´ethodes amies (friend)
mais ˆetre du mˆeme paquet est une forme d’amiti´e
d’op´erateur “::”pour la r´esolution de port´ee ; au lieu de
UneClasse::unMembre
on ´ecrit
UneClasse.unMembre
c
H. Garreta, 2014 IHM et Java 13 / 21
Java et les objets
Une classe simple
Fichier Point.java
public class Point {
int x, y;
void placer(int a, int b) {
test de la validit´e de a et b
x = a;
y = b;
}
double distance(Point q) {
int dx = x - q.x;
int dy = y - q.y;
return Math.sqrt(dx * dx + dy * dy);
}
public String toString() {
return "(" + x + "," + y + ")";
}
}exemple d’emploi :
Point p;
p = new Point();
p.placer(10, 20);
System.out.println("p : " + p);
p : (10,20)
c
H. Garreta, 2014 IHM et Java 14 / 21
Java et les objets
Le pointeur this
Fichier Point.java
public class Point {
int x, y;
void placer(int x, int y) {
test de la validit´e de a et b
this.x = x;
this.y = y;
}
double distance(Point q) {
int dx = this.x - q.x;
int dy = this.y - q.y;
return Math.sqrt(dx * dx + dy * dy);
}
public String toString() {
return "(" + this.x + "," + this.y + ")";
}
}exemple d’emploi :
Point p;
p = new Point();
p.placer(10, 20);
System.out.println("p : " + p);
p : (10,20)
c
H. Garreta, 2014 IHM et Java 15 / 21
Java et les objets
Constructeurs
Fichier Point.java
public class Point {
int x, y;
Point(int x, int y) {
test de la validit´e de a et b
this.x = x;
this.y = y;
}
Point(int x) {
test de la validit´e de x et 0
this.x = x;
this.y = 0;
}
Point() {
this.x = this.y = 0;
}
...
}emploi :
Point p = new Point(10, 20);
Point q = new Point(30);
Point r = new Point();
c
H. Garreta, 2014 IHM et Java 16 / 21
Java et les objets
Collaboration entre constructeurs
Fichier Point.java
public class Point {
int x, y;
Point(int x, int y) {
test de la validit´e de a et b
this.x = x;
this.y = y;
}
Point(int x) {
this(x, 0);
}
Point() {
this(0, 0);
}
...
}emploi :
Point p = new Point(10, 20);
Point q = new Point(30);
Point r = new Point();
c
H. Garreta, 2014 IHM et Java 17 / 21
Java et les objets
Construction par d´efaut, destruction des objets
Constructeur par d´efaut : si le programmeur n’a ´ecrit aucun constructeur,
alors le compilateur fournit le constructeur sans argument
qui consiste `a initialiser tous les champs avec 0(ou 0.0, ou null).
L’´ecriture d’un constructeur quelconque suspend ce m´ecanisme.
—————————–
Destruction des objets : il n’y a rien `a faire, la machine Java s’en occupe.
Autrement dit : quand un objet n’est plus utile il suffit de l’«oublier »
Point p = new Point(x1, x1);
...
p = new Point(x2, x2);
ecanisme du garbage collector, ou nettoyeur de m´emoire
d´eclenchement lorsque la m´emoire manque ou la machine est oisive
1˚) marquage des cellules occup´ees par des objets accessibles
2˚) r´ecup´eration des cellules non marqu´ees : chaˆınage, parfois regroupement
c
H. Garreta, 2014 IHM et Java 18 / 21
Java et les objets
Droits d’acc`es
Quatre niveaux de visibilit´e :
le membre est accessible dans...
public class UneClasse {
private int x; ...les m´ethodes de sa classe
exclusivement
int y; ...les m´ethodes de sa classe et celles
des autres classes du mˆeme paquet
protected int z; ...les m´ethodes de sa classe, des classes
du mˆeme paquet et des sous-classes
public int t; ...les m´ethodes de n’importe quelle classe
...
}
c
H. Garreta, 2014 IHM et Java 19 / 21
Java et les objets
Droits d’acc`es, exemple
Fichier Point.java
public class Point {
private int x, y;
public Point(int x, int y) {
test de la validit´e de x et y
this.x = x;
this.y = y;
}
public int getX() { accesseurs (getters)
return x;
}
public int getY() {
return y;
}
public void setX(int x) { mutateurs (setters)
test de la validit´e de x
this.x = x;
}
public void setY(int y) {
test de la validit´e de y
this.Y = y;
}
...
}
c
H. Garreta, 2014 IHM et Java 20 / 21
1 / 6 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !