Cours 1

Transcription

Cours 1
Cours 1
Contenu du cours :
"
"
"
"
"
"
"
"
Premières applications
Compilation, Exécution, Chemin
Affichage et saisie
Types de données
Flux de contrôle
Applets
Arrays
OO de base
1
Edition
Le fichier texte HelloWorld.java
Une seule classe publique par fichier source.
C'est elle qui donne le nom au fichier.
Les classes exécutables ont une méthode main.
2
3
Programmation
Edition
Compilation
Exécution
Correction d'erreur
Il faut compiler et exécuter souvent un programme. Cela permet de
vérifier chaque partie individuellement plutôt que tout le programme
4
Compilation
C:\>cd
C:\Program Files\Java\jdk1.5.0_15\bin
C:\Program Files\Java\jdk1.5.0_15\bin\> javac HelloWorld.java
HelloWorld.class
HelloWorld.java
Source
Code
Byte Code
Génération du
byte code
reconnu par JVM
On compile un fichier « .java » avec la commande javac
5
Correction d'erreur
Fichier contenant
l'erreur
N° de ligne de
l'erreur
Endroit
exact de
l'erreur
Nombre
d'erreurs
Le compilateur aide à trouver les erreurs.
(Nombre d'erreurs, ligne de l'erreur, type d'erreur...)
6
Exécution
C:\Program Files\Java\jdk1.5.0_15\bin\> java
HelloWorld.class
HelloWorld
Bonjour
On exécute une classe, pas un fichier « .class »
La JVM exécute la méthode main de la classe spécifiée.
7
Affichage
Dans la console
System.out.println
Changement du chemin
• Pour ne pas toujours enregistrer dans le bin de java
• Changer le chemin du bin pour avoir accès à javac et java
Affichage
9
Importation
de la classe
JOptionPane
Affichage
dans une
fenêtre.
Force la sortie du programme.
(Obligatoire en mode
graphique)
On peut utiliser différentes options d'affichage avec JOptionPane
10
Affichage
Dans une fenêtre
JOptionPane.showMessageDialog
On peut afficher des messages dans une fenêre de dialogue
à l'aide de la classe JOptionPane.
Saisie en mode textuel
// Un programme Java qui calcule le carré d’un nombre
// importer la classe Scanner
import java.util.Scanner ;
public class Carre {
public static void main (String args[]) {
Scanner entree;
int nombre;
int carre;
System.out.print("Donner un nombre : ");
entree = new Scanner(System.in) ;
nombre = entree.nextInt() ;
carre = nombre * nombre ;
System.out.print("Le carré du nombre est : " + carre);
}
}
Saisir en mode textuel
11
12
Saisie en mode graphique
Commentair
e multi
lignes
Commentaire
sur une ligne
Permet la saisie
Convertion en entier
On peut faire afficher une fenêtre pour faire
saisir une chaîne à l'utilisateur à l'aide de showInputDialog
Types de données
Types de données
Types primitifs
Types objets
String , HelloWorld, etc.......
Numériques
byte
"short
"int
"long
"float
"double
boolean
"
char
Les types de données primitifs sont les types de base.
Il existe différentes méthodes de convertion entre ces types.
13
Contrôle de flux et évaluation
if ( noteEtudiant >50)
System.out.println(“L’étudiantE passe” );
else
System.out.println(“L’étudiantE échoue”
);
Syntaxe du langage C
14
15
Utiliser la documentation de la jdk
http://java.sun.com/j2se/1.5.0/docs
La documentation de la JDK est l’outil de base de programmation en java !
Utiliser la documentation des APIs
16
http://java.sun.com/j2se/1.5.0/docs/api
Liste des
paquets
Documentation
de la classe
sélectionnée
Liste des
classe du
paquet
sélectionn
é
La documentation des classes de la JDK est facile et rapide à utiliser.
17
Applets Java
Internet
Serveur
HTTP
HTML
+
Applet
Navigateur
Java
JVM
Une applet Java est un programme téléchargeable qui peut
s'exécuter dans un navigateur.
Il est installé en visionnant une page HTML.
Première Applet
18
Balise <applet>
19
Paramètres de la
balise applet
Balise
applet
Le paramètre "code" indique le nom de la classe à exécuter.
Le paramètre "codebase" indique l'URL où le code à télécharger réside.
Exécution d'une applet
C:\>temp\appletviewer HelloApplet.html
HelloApplet.html
Avec appletviewer, on exécute une page « .html » ,
pas un fichier « .class » ni une classe !
Ouvrir le fichier .html dans un browser quelconque
20
Tableaux
Les tableaux ont une taille fixe.
Ils ne sont pas redimmensionnables.
21
Tableaux
Les tableaux sont indexés à partir de 0
En java, les tableaux sont considérées comme des classes sans
méthode.
La variable membre « length » donne la longueur du tableau.
Le dernier élément d'un tableau de taille n se trouve à l'index n-1.
22
Tableaux
Les variables de types primitifs sont initialisées à 0 pour les types
numériques et à false pour les booléens.
Les références sur les objets sont initialisées à null.
23
Tableaux
Une référence indique un emplacement mémoire.
Cet emplacement ne représente rien en dehors de la JVM.
24
Tableaux à plusieurs dimensions
0
1
matI2[0] est
un tableau à
une dimension
En java, les tableaux à plusieurs dimensions sont vus comme
des tableaux de tableaux (de tableaux, de tableaux, etc)
25
Passage de tableaux en paramètres
26
Passage de tableaux en paramètres
En java, les tableaux sont considérées comme des classes sans méthode.
Ils sont passés par références, le mode de passage d’un élément du tableau
dépend du type de l’élément (primitif ou objet).
27
28
Structure d’un fichier java
Commentaire
de classe
Déclaration
de classe
Données membres
Commentaire
de méthode
Déclaration
de méthode
Paramètre
(variable locale)
Variable locale
Les instructions java sont autorisées UNIQUEMENT dans les méthodes.
Variable déclarée dans une méthode  variable locale
Variable déclarée dans la classe  donnée membre
Création de classes
Modificateur:
Tout le monde
peut appeler
cette classe
pour lui
demander des
services.
Définition de classe
Nom de la classe
Début et
fin de la
classe
Une classe rend des services.
Pour accéder à un de ses services,
on invoque (=appelle) une de ses méthodes.
29
30
Création de méthodes
signature
bloc
d'instrcutions
Trois méthodes de la classe MaClasseMath.
Une méthode est composée d'une signature et d'un bloc d'instructions
Signature de méthode
Cette méthode est
accessible à tous.
Type de retour
Nom de la méthode
Argument ou liste d'arguments
(séparés par une virgule)
Une signature de méthode est une déclaration de service.
La façon dont le service est réalisé ne regarde pas l'appelant.
On parle d'encapsulation.
31
Constructeurs et instanciations
Un constructeur est une méthode particulière d'une classe.
Il peut y avoir plusieurs constructeurs dans/pour une même classe.
Les constructeurs n'ont pas de type de retour.
Les constructeurs portent le même nom que la classe.
32
Constructeurs et instanciations
Pour créer de nouveaux objets (=instances) d'une classe,
on appelle un des constructeurs de cette classe.
Un appel à un constructeur est toujours précédé du mot-clef "new".
On dit que personne2 réfère à un objet de la classe Personne.
33
34
Références et objets
Code java
personne0
Code java
personne0
personne1
Code java
personne0
personne1
JVM
personne
JVM
personne
personne
JVM
personne
personne
En java, on ne manipule que des références qui pointent vers des objets.
Dès qu’un objet n’est plus référencé, il est garbage collecté.
Données membres (1)
Ces 2 champs sont des variables d'instances.
Leur contenu varie pour chaque objet, elles sont accessibles à tous.
35
Données membres (2)
L’age de jean est 20 ans
L’age de jean est -1 ans
Petite astuce pour
faire une pause
Lorsque les données sont publiques, il est impossible de contrôler la
façon dont elle sont utilisées. Cela peut rendre vos objets incohérents
36
Masquage de données (1)
On masque les données aux clients en les rendant privées.
Et on donne des méthodes d’accès publiques.
Les méthodes d’accès ont un nom standardisé.
37
Masquage de données (2)
38
L’age de jean est 20 ans
L’age de jean est 0 ans
Les clients doivent passer par les méthodes du serveur pour
manipuler leurs données.
39
Masquage de données (3)
Le masquage de données permet:
 de valider les donnéees en entrée
 de formater les données en sortie
 de cacher aux clients les structures de données manipulées
 de s’assurer de la cohérence interne des objets.
En règle générale :
 les données sont privées
 les méthodes sont publiques (sauf celles qui sont utilisées en
interne par une classe)
 Principe du moindre privilège
40
Portées des variables & this
La variable locale
maValeur masque la
donnée membre
maValeur
8
5
Les données membres ont une portée globale dans la classe.
On utilise le mot clef « this » pour accéder à une donnée membre lorsqu’une
variable locale porte le même nom.