Université Claude Bernard Lyon 1 MASTER 2 – IR, 2015–2016
ISFA
Remise à Niveau Java
TD1. Notions de bases
André FABBRI
Compétences indispensables à acquérir :
Acquérir les notions de base du langage Java (classe/objet, héritage ...) ;
Savoir mettre en place un projet Java sous NetBeans (création, paramètres).
1 Introduction
Java n’est pas seulement une île tropicale du Sud-Est asiatique mais correspond aussi
à un langage de programmation informatique. C’est à dire qu’il permet notamment
d’écrire certains des programmes informatiques que vous manipulez tous les jours sur
votre ordinateur. Pour ce faire, vous avez « simplement » à écrire dans un fichier source
(c’est à dire celui avec l’extension .java), un ensemble d’instructions rédigées suivant la
syntaxe du langage Java. Ce fichier sera ensuite compilé en Bytecode (c’est à dire des
fichiers avec l’extension .class). Les fichiers en Bytecode ne seront pas dépendant des
librairies d’exécution propre à la plateforme (Windows, Linux, Mac) sur laquelle vous
avez compilé, à la différence d’autres langages de programmation informatique (comme
le langage C). Les librairies nécessaires au programme seront chargées lors de son exé-
cution par la JVM (Java Virtual Machine). En d’autres termes, votre programme sera
portable sur n’importe quelle plateforme pourvue que Java soit installé.
Figure 1 – Processus d’exécution d’un projet Java
Lors du lancement du programme, la méthode principale sera exécutée main. En Java,
elle doit disposer de l’entête suivante (dans des IDEs comme Netbeans, l’entête de cette
méthode est en général écrite automatiquement) :
public static void main[] (String args){ ... }
1
1.1 Exercice - Calcul de somme
Question 1 Ecrire le programme java Somme (classe Somme) qui permet de calculer
et d’afficher à l’écran la somme des 10 premiers entiers
Ce programme affichera à l’écran : « La somme des 10 premiers entiers est : 55 »
NB Création d’un projet NetBeans :
1. Fichier -> New Project ;
2. Sélectionner dans la catégorie Java un projet de type « Java Application » ;
3. Choisir le nom de la classe contenant le main afin de répondre à l’énoncé.
NB Affichage dans un terminal en Java : System.out.println("mon texte");
Question 2 Modifier ce programme pour que celui-ci puisse prendre en paramètre le
nombre d’entiers à sommer.
1. Modification de la fonction main :
Dans la fonction public static void main(String[] args),args[0] repré-
sente le premier paramètre passé au programme sous la forme d’une chaîne de
caractères (de type String).
NB Transformation d’une chaîne en entier :
int monEntier = Integer.parseInt(maChaîne); // par ex. maChaîne = «4»
2. Appeler la fonction main avec paramètre :
depuis NetBeans (ou eclipse) : explorer les paramètres d’exécution du projet
(click droit sur le nom du projet depuis l’arborescence, puis sélectionner les
propriétés) ;
en ligne de commande : trouver le répertoire contenant les classes compilées
(Bytecode), et exécuter : java monPackage.Somme 55
Question 3 (bonus) Modifier le programme de façon à ce que la somme soit désormais
celle de la série suivante : 1 + 1/2 + 1/3 + 1/4 + ... + 1/n. Veillez à limiter la perte
de précision (vous testerez avec des float pour n= 107).
2
2 Un langage orienté objet
Java est un langage orienté objet. En d’autres termes, les composantes du programme
sont décrites par des briques logicielles (appelés objets) qui sont définies arbitrairement
par le concepteur du programme. Un objet peut correspondre par exemple à un concept
comme une droite ou un point mais il peut aussi décrire des éléments du « monde
physique » comme un étudiant, une voiture.
En pratique, chaque objet créé par le programme est l’instance d’une classe définie
par le concepteur du programme. Une classe définit en quelque sorte les spécifications
des objets créés ; c’est à dire de quoi est composé un objet et comment il est possible
de l’utiliser. Une classe est composée d’un ensemble d’attributs (variables internes
propres à l’objet) et d’un ensemble de méthodes (fonctions spécifiques aux objets
de cette classe). Les attributs et les méthodes forment ce que l’on appelle les membres
de la classe. En UML, une classe se représente graphiquement de la manière suivante :
Figure 2 – Présentation graphique d’une classe
En Java, le code source associée à une classe doit être dans un fichier portant
le même nom ! Ainsi le code source associé à la classe présentée ci-dessus devra être
stocké dans un fichier appelé NomDeLaClasse.java. Il contiendrait alors les instructions
Java suivantes :
class NomDeLaClasse{
//attributs
private TypeA A_attributPrive;
public TypeB B_attributPublic;
protected TypeC C_attributProtege;
//methodes
public TypeMethodeD D_methodePublique() {
//code de la fonction
}
private TypeMethodeE E_methodePrivee() {}
protected TypeMethodeF F_methodeProtegee(){}
public TypeMethodeG G_avecParametres(Type1 param1,Type2 param2){}
};
3
2.1 Attributs d’une classe
En Java, les attributs d’une classe s’écrivent de la manière suivante :
(Visibilité)Type Nom (= valeur par défaut);
La visibilité : public,private,protected ou rien (cf. section 2.4) ;
Le type : de l’attribut comme float,String ou une classe déjà existante ;
Le nom : de l’attribut, c’est à dire comment il sera identifié dans votre code source.
Il est par ailleurs possible d’attribuer une valeur par défaut à un attribut lorsqu’un
objet est créé.
2.2 Méthodes d’une classe
En Java, les méthodes d’une classe s’écrivent de la manière suivante :
(Visibilité)Type de retour Nom ( paramètres ) { code }
La visibilité : public,private ou protected ou rien (cf. section 2.4) ;
Le type : de variable renvoyée à la fin de la fonction (instruction return)a;
Le nom : pour appeler la fonction ;
Les paramètres : de la fonction sous la forme Type nom, ;
Le code de la fonction à exécuter lorsque celle-ci est appelée.
En mémoire, toute méthode est identifiée, de façon unique, par sa signature. La signa-
ture est la combinaison du Nom, des Paramètres (en particulier le type et l’ordre
de chacun des paramètres) et le Type de retour. Cela veut dire par exemple que deux
méthodes avec des noms et des types identiques mais des paramètres différents
seront différentes : on parle alors de surcharge de méthode.
a. Si aucune valeur est renvoyée, le mot clé void est nécessaire.
2.3 Constructeur d’une classe
Un constructeur est une méthode particulière d’une classe qui permet de créer
de nouvelles instances de cette classe : des objets. Il définit notamment le code à
exécuter lors de la création de l’objet (initialisation des attributs, éventuel affichage).
Un constructeur possède le même nom que la classe et ne possède pas de type de
retour. Il peut avoir cependant des paramètres pour initialiser les attributs de l’objet
par exemple. Une même classe peut avoir différents constructeurs avec des
paramètres différents (le constructeur sera alors surchargé). Par exemple pour la
classe précédente on peut avoir les constructeurs :
4
class NomDeLaClasse{
//attributs
private TypeA A_attributPrive;
//...
//methodes
public NomDeLaClasse() { A_attributPrive =0; }
public NomDeLaClasse(TypeA paramA) { A_attributPrive = paramA; }
};
En Java, l’appel du constructeur d’une classe est réalisé par l’opérateur new. Par
exemple pour créer un nouvel objet de type NomDeLaClasse, il suffit d’écrire :
NomDeLaClasse monObjet = new NomDeLaClasse(objetDuTypeA);
2.4 Accès aux membres d’un objet
Chaque objet mettra en oeuvre les spécifications correspondant à sa classe. En d’autres
termes, la création d’un nouvel objet implique : l’allocation en mémoire d’un espace
pour chacun des attributs et des références à chacune des méthodes de la classe. Pour
accéder aux membres d’un objet il est nécessaire d’utiliser l’opérateur .(« Point »).
Par exemple :
NomDeLaClasse monObjet = new NomDeLaClasse(); // Creation de l’objet
monObjet.B_attributPublic; // accès à l’attribut B_attributPublic
monObjet.D_methodePublique(); // appel de la méthode B_methodePublique()
La visibilité d’un membre définit le contexte depuis lequel il est possible d’ac-
céder à celui-ci. Dans les langages orienté objet comme Java, il existe en général 3
niveaux de visibilité :
public : le membre est accessible depuis n’importe quel contexte (i.e. depuis n’im-
porte quel fichier du projet) ;
private : le membre est accessible uniquement depuis des objets appartenant à
cette même classe (i.e. seulement depuis le fichier de la classe) ;
protected : il s’agit d’un niveau intermédiaire entre public et private que nous
reverrons plus longuement dans la section 3.1.
En Java, lorsque aucune visibilité n’est spécifiée dans la classe, le membre dispose par
défaut d’une visibilité package-private : le membre est accessible depuis des objets
appartenant au même package (i.e. seulement depuis des fichiers appartenant au
même sous-dossier que celui de la classe).
2.5 Exercice - Point, rectangle et cercle
Nous souhaitons créer un programme de géométrie euclidienne. Dans le cadre d’un
langage de programmation « orienté objet », nous aurons besoin de définir les classes
correspondant aux concepts comme un point, un rectangle et un cercle.
Question 1 Réalisez ce programme en suivant les spécifications ci-dessous et testez.
5
1 / 9 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 !