Vous êtes sur la page 1sur 56

Programmation JAVA

Mécanismes de base

Ahmed ZELLOU

UM6P, LPSM1, 2020-2021.


POO JAVA

Variables
 Variable: contient une valeur
x 11
 Types
 int: entier, long,

 Integer: classe entier, avec méthodes

 float: nombre réel, double

 String: chaîne de caractères ("UMP6", "ENSIAS")

 char: un caractère en Unicode ('a', '$', 'é', …)

 booleen: true/false

 Tout est objet


 A part les types primitifs
2
@A.ZELLOU
POO JAVA

La type char

3
@A.ZELLOU
POO JAVA

Quelques chars
Primitive Syntaxe
char ‘x’
\b : arrière
\f : saut de page
\n : saut de ligne
\r : retour chariot
\t : tabulation horizontale
\\ : backslash
\’ : guillemet simple
\” : guillemet double
\Ooo : caractère dont code est oo en octal
\uxxxx: code unicode est xxxx en hexa

4
@A.ZELLOU
POO JAVA

Variables
 Définition
 Type nomDeVariable;

 Exemple: int age;

 Affecter une valeur à une variable


 int age = 25;

 float f=3.14;

 char c=‘c’;

 String nom="ZELLOU Ahmed";

 bool rep=true; // or 1

 int age = "vingt cinq";


 Error
5
@A.ZELLOU
POO JAVA

Casting
 Attention au Typage
 byte i=55 ; //correcte

 byte i=300 ; //fausse

 Casting (moulage)
 réaliser une conversion d’un type vers un autre type

 Exemple
 float a=(float) 5.5;

 short b=(short) ’x’;

 double c=(double) 5;

 byte f=(byte) 300; //afficher f, vous obtiendrez 44 6


@A.ZELLOU
POO JAVA

Constantes
 Variables qui ne changent pas de valeur
 Java ne comporte pas de constantes à proprement parler
 L’utilisation des constantes peut être simulée à l’aide du mot
clé final
final int NOTE_VALIDATION = 10;
System.out.println(NOTE_VALIDATION);
NOTE_VALIDATION=12; //Erreur

 Convention : en majuscule
 Les variables déclarées final peuvent être initialisées lors de
l’exécution et non seulement lors de leur déclaration
7
@A.ZELLOU
POO JAVA

Les opérateurs
 Arithmétique
 *, /, +, -, %

 Logiques
 &&, | |, !

 Comparaison
 >, >=, < , <=, ==, !=

 Assignement
 *=, /=, +=, -=, %=

 Pas
 ++, --
 Concaténation
 + 8
@A.ZELLOU
POO JAVA

Output : print
 printf classique
int x=3;
float y=(float) 5.2;
String ch="TUIF";
System.out.printf("x
= %d, y = %f et ch
=
%s\n", x, y,ch);
 print
System.out.print("ch
aine. ");
 println
System.out.println("
chaine."); 9
@A.ZELLOU
POO JAVA

Output : print
 Opérateurs dans print
int x = 5, y = 6;
System.out.println(x+y); //11
System.out.println(1 + x + y); //12
System.out.println("output " + (x + y)); //
11
System.out.println("output " + x + } // 56
y);
 Exemple
char c = 67, d = 'C';
System.out.println(c+d); //134
System.out.println(d); // C C

10
@A.ZELLOU
POO JAVA

Input : Scanner
 Une bibliothèque pour lecture, disponible dans le package
java.util.
 La méthode nextLine() permet de lire une chaine.

 Sortie :
11
@A.ZELLOU
POO JAVA

Scanner
 Quelques méthodes de Scanner :
méthode Description
nextLine() Lit une valeur String
nextBoolean() Lit une valeur booléenne
nextByte() Lit une valeur byte
nextDouble() Lit une valeur double
nextFloat() Lit une valeur float
nextInt() Lit une valeur int
nextLong() Lit une valeur long
nextShort() Lit une valeur short
hasNext() Lit une nouvelle entrée
reset() Réinitialise le scanner
findInLine(String pattern) Retourne la ligne si elle contient le pattern 12

@A.ZELLOU
POO JAVA

Scanner

13
@A.ZELLOU
POO JAVA

Condition
 Correspond à vrai ou faux
if (age < 18)
System.out.println("mineur");
else
System.out.println("majeur");

 Pour les valeurs primitives


 <, >, <= >=, ==, !=, comparaison de valeur

 Pour les objets


 x.compareTo(y)

 Retourne un entier positif, negatif ou 0 selon l’ordre entre

le contenu des objets


14
 Sensible à la casse
@A.ZELLOU
POO JAVA

Condition
 Exemple

15
@A.ZELLOU
POO JAVA

Atelier
 Exercice 1:
 Ecrivez un programme qui permet de lire un entier saisie au

clavier, si l’entier est positif affichez « entier positif »,


sinon afficher « entier négatif ».

 Exercice 2:
 Modifiez le programme précédent pour traiter aussi les
valeurs nulles. Si l’entier est nul, le programme affichera «
entier null ».

16
@A.ZELLOU
POO JAVA

Condition
 Switch
 Simplifie le test de plusieurs valeurs d'une variable.

 Opération compliquée (mais possible) avec des if/else.

switch (Voyelle)
{
case 'a' : System.out.println("Oui, c’est a"); break;
case 'e' : System.out.println("Oui, c’est e");
break;
.........
case 'y' : System.out.println("Oui, c’est y"); break;
default:
} System.out.println("Non"); break; // facultatif 17
@A.ZELLOU
POO JAVA

Boucles
 Pour un traitement répétitif
public static void main(String[] args)
public static void main(String[] args)
{
{
int i=1, somme = 0;
int i, somme = 0;
while (i<=10) { somme = somme + i;
for (i = 1; i<=10; i++) somme = somme +
i++; }
i; System.out.println(“somme ="+somme);
System.out.println(“somme ="+somme);
}
}

public static void main(String[] args)


{
int i=1, somme = 0;
do{ somme = somme + i;
i++; } while (i<=10) ;
System.out.println(“somme ="+somme);
18
}
@A.ZELLOU
POO JAVA

Concept
 s nombre
Exemple : Factorielle d’un

public class Factorielle


{
public static void main(String[] args) {
int entree = Integer.parseInt(args[0]);
double fact =1.0;
if (x < 0) fact =
0.0; while (x > 1)
{
fact = fact *
x; x = x - 1;
}
System.out.println("le
résultat est "+fact);
} 19
@A.ZELLOU
POO JAVA

Exercice
 Exercice 1:
 Saisir un entier, calculer n! via la boucle for.

 Exercice 2 :
 Écrire un programme qui affiche les nombres de 1 à 10.

 Exercice 3 :
 Écrire un programme qui calcule la somme des entiers de 1

à 500.
 Exercice 4 :
 Écrire un programme qui affiche les nombres de 20 à 1 de

trois en trois.
 Exemple : 20 19 18
17 16 15
14 13 12
20
@A.ZELLOU
POO JAVA

Tableaux
 Pour stocker une suite de données de même nature
 Déclaration
 int [] nombre; // un tableau à 1 dimension

 String [][] etiquette; // un tableau à 2 dimensions

 Création
 T = new int[10]; // crée les cases T[0] à T[9]
 int[] nombre = {1, 2, 3, 5, 7, 7+4}; // déclare
et initialise
 Utilisation
nombre[0] = 4;
for (int i=0; i<nombre.length; i+
+) nombre[i]=nombre[i]+1;

21
@A.ZELLOU
POO JAVA

Tableaux
 Boucle: Syntaxe
for (type var : array)
{
statements using var;
}
 Exemple
int[] nombre = {1, 2, 3, 4,
5};
for (int x : nombre)
{
System.out.println(x);
}

22
@A.ZELLOU
POO JAVA

Chaines de caractères
 string: un objet qui stocke une suite de caractères de type char.
 Déclaration
 String nom = "Mas. TUIF";

index 0 1 2 3 4 5 6 7 8
character M a s . T U I F

 Exemple:

 + : l'opérateur de concaténation.
23
@A.ZELLOU
POO JAVA

Chaines de caractères
 Exemples de fonctions

24
@A.ZELLOU
POO JAVA

String : Liste des fonctions


Prototype Expliction
String() Construit une chaîne vide
String(byte[] bytes) Construit une chaîne à partir d’un tableau
String(byte[] bytes, int offset, int length) Construit une chaîne à partir d’une partie de tableau
String(String value) Construit une chaîne à partir d’une autre chaîne.
int length() la longueur de la chaîne de caractères
int compareTo(String autre) Compare une chaîne à une autre.
int compareToIgnoreCase(String str) Compare, ignorant la casse.
char charAt(int i) Retourne le caractère à l’indice spécifié.
String substring(int d) Sous-chaîne depuis d jusqu’à la fin
String substring(int d, int f) Sous-chaîne depuis d jusqu’au f .
boolean startsWith(String prefix) Renvoie true si prefix est un préfixe de la chaîne
Vérifie si prefix est un préfixe de la chaîne à partir
boolean startsWith(String prefix, int i)
de i.
25
boolean endsWith(String suffix) Retourne true si suffix est un suffixe de
la@cAhaZ. înEeLLO U
POO JAVA

String : Liste des fonctions


Prototype Expliction
String toLowerCase() Retourne la chaîne convertie en minuscules.
String toUpperCase() Retourne la chaîne convertie en majuscules.
String trim() Retourne la chaîne sans les espaces de début et de fin.
String replace(char x, char y) Retourne la chaîne ou tous les x sont remplacés par y.
byte []getBytes() Convertit la chaîne en tableau de byte.
int indexOf(int ch) Retourne l’indice de la première occurrence du caractère
int indexOf(String str) Retourne l’indice de la première occurrence de la chaîne
int lastIndexOf(int ch) Retourne l’indice de la dernière occurrence du caractère
int lastIndexOf(String str) Retourne l’indice de la dernière occurrence de la chaîne
boolean matches(String regex) Retourne true si la chaîne respecte l’expression régulière.
Découper la chaîne en plusieurs chaînes et les retourner dans
String[]split(String regex)
un tableau.

26
@A.ZELLOU
POO JAVA

Chaines de caractères

 La méthode ne modifie pas la chaine, elle construit et retourne


une nouvelle chaine.
 Pour modifier la valeur de la chaine.

27
@A.ZELLOU
POO JAVA

Comparaison de String
 Les opérateurs de comparaison <, <=, >, >= == != ne
fonctionnent pas pour les objets.
Scanner console = new Scanner(System.in);
System.out.print("What is your name?
");
String name = console.next();
if (name == "Zellou")
System.out.println("He’s a
Professor");
 Le code se compile, mais ne fonctionne pas.
 Les objets sont comparés via la méthode equals.
if (name.equals("Zellou"))
System.out.println("He’s a Professor");
 Autres :
28
equals(str), equalsIgnoreCase(str),
@A.ZELLOU
startsWith(str), endsWith(str), contains(str)
Démarche Objet
POO JAVA

Démarche Objet

Opérations
Compte
Classe nom
solde Création de la classe Compte
déposer() Création des objets : cl1 et
retirer()
avoirSolde() cl2 cl1 depose 7500
Instanciation
cl2 depose 1200
cl1 demande le
solde cl1 retire
Compte:cl1 Compte:cl2 1000
nom="Alaoui" nom="Baroudi"
Objets solde=7500.0
cl2 demande le
solde=41500.0 solde cl2 depose
2000
…..
30
@A.ZELLOU
POO JAVA

Première Classe
 La classe Personne Compte

public class Personne { String nom


String Prenom
public String nom; int age
public String Prenom; float taille

public int age; Personne()


public float taille;
Personne(String nom, String Prenom, int age, float taille)
main()

{this.nom=nom;
this.Prenom=Prenom;
this.age=age;
this.Taille=Taille;}
public static void
main(String[] args)
{
Personne p=new
Personne("zellou","a 31
}}
hmed",1, @A.ZELLOU
(float)86.50);
POO JAVA

Constructeu
 Méthode publiquerspéciale avec même nom que la
classe
 Sa fonction est d'instancier un objet

 Une classe peut posséder plusieurs

constructeurs
 Si indéfini, java attribue automatiquement un

constructeur sans paramètres


 Pas de type de retour (void n'est pas utilisé)
Personne(String nom, String Prenom, int age, float taille)
{
this.nom=nom;
this.Prenom=Prenom;
this.age=age;
this.Taille=Taille;
} 32
@A.ZELLOU
POO JAVA

Visibilité
 Public
 variables et méthodes visibles par toutes les

classes
 private
 variables et méthodes visibles seulement dans la

classe
 protected
 variables et méthodes visibles dans les classes

dérivées et toutes les classes du module

33
@A.ZELLOU
POO JAVA

Encapsulation
 Interdire l’accès aux attributs et fournir l’accès via
des méthodes
public class Personne {
public String sportPrefere;
Personne
private String nom; + String sportPrefere
protected String - String nom
nationalite;
String platPrefere;
# String nationalite
~ String platPrefere
public String getNom() {
return nom;
}
public void setNom(String
nom)
{
this.nom = nom;
}
….
} 34
@A.ZELLOU
POO JAVA

Héritage
 Permet la classification hiérarchique des classes
 Classe Mère et classe dérivée
véhicule

voiture camion moto

4x4 utilitaire
 La classe dérivées possède tous les attributs/méthodes
de la classe mère.
 Mais comporte des informations supplémentaires 35
@A.ZELLOU
POO JAVA

Héritage
 Permet à un objet d’acquérir les propriétés
d’un autre objet
 Permet de factoriser les connaissances
 La classe mère est plus générale
 Contient les propriétés communes à toutes les

classes filles (classes dérivées ou héritées).


 Les classes filles ont des propriétés plus
spécifiques.
 Contient les propriétés propres à

elles.
36
@A.ZELLOU
POO JAVA

Héritage
 Exemples d’héritages :
 Une Voiture est un Véhicule
 Un Vélo est un Véhicule
 Une VTT est un Vélo
 Un Employe est un Personne
 Une ImageGIF est un Image
 Un PointColore est un Point
 Un Polygone est une figure géométrique

 En Java, on hérite d’une seule et unique classe.


37
@A.ZELLOU
POO JAVA

Héritage
Employé Personne

public class Employe extends


Personne{ protected double
salaire;
public Employe (String nom, String prenom, int age,
double salaire)
{
super(nom,prenom);
super.setAge(age);
this.salaire= salaire;
}
}
 Deux références pour parcourir la hiérarchie :
 this : une référence sur l’instance de la classe.
38
 super : une référence sur l’instance mère @A.ZELLOU
POO JAVA

Héritage
 Ce que peut faire une classe fille :
 Ajouter des attributs
 Ajouter des méthodes
 Définir des constructeurs
 Redéfinir des méthodes (même signature)
 Surcharger des méthodes (même nom mais pas
même signature)

39
@A.ZELLOU
POO JAVA

Héritage
 Ce que ne peut pas faire une classe fille :
 Retirer un attribut
 Retirer une méthode
 Accéder aux attributs/méthodes privés
 Ces attributs/méthodes sont utilisés pour le bon
fonctionnement de la classe, mais elle ne peut pas
les utiliser explicitement
 Utilisez la visibilité protected

Un constructeur de la classe mère est toujours


exécuté avant les autres instructions du
constructeur. 40
@A.ZELLOU
POO JAVA

Héritage
 Empêcher l'héritage : mesure de sécurité
 Le mot-clé final : pour empêcher la surcharge
d'une classe/méthode.
public class Employe extends
Personne{ public final class A {
public void ouSuisJe()
{ System.out.println("Je suis dans
A !") ;
}
}

public B {
public final void ouSuisJe()
{ System.out.println("J'y suis j'y
reste !") ;
}
} Les API standard de Java sont finales : String,
Arrays, Files, … 41
@A.ZELLOU
POO JAVA

Polymorphisme
 Capacité d'une entité à posséder plusieurs
formes.
 De deux types :
 Polymorphisme statique ou la surcharge de

méthode
 plusieurs méthodes ayant le même nom,

mais avec des signatures différentes.


 Polymorphisme dynamique ou la redéfinition

de méthode
 méthode ayant la même signature dans les

classes mère et fille


42
@A.ZELLOU
POO JAVA

Surcharge (overloading)
public class De
Main (test1)
{ private int nbFaces;
De d=new
private int
De();
faceVisible;
d.lancer();
d.afficherResultat();
public De (int nbFaces)
//constructeur
public De ()
this.nbFaces
{ // = surchargé avec des face entre 1 et
constructeur
nbFaces;}
100 this.nbFaces = (int) (Math.random() * 100) +
1;}
public void lancer () //génère une face aléatoire
{
this.faceVisible = (int) (Math.random() * this.nbFaces)
+ 1;
}
public void afficherResultat()
{
System.out.println("La face tirée aléatoire est
}
:"+this.faceVisible); Main (test2)
} De d=new De(50);
d.lancer();
43
d.afficherResultat();
@A.ZELLOU
POO JAVA

Redéfinition (overriding)
public class Perceuses {
private int puissance;
private int
vitesse_rotation;

public Perceuses(int
puissance, int
vitesse_rotation)
{
this.puissance = puissance;
this.vitesse_rotation = vitesse_rotation;
}
public String describe()
{
return "La puissance est de"+ this.puissance+" watts et la
vitesse de rotation est de "+this.vitesse_rotation+"tr/mns");
}
public void display()
{
System.out.println(this.describe()); 44
}
@A.ZELLOU
POO JAVA

Redéfinition (overriding)
public class Perceuses_sans-fil extends Perceuses
{ private String batterie;

public Perceuses_sans-fil (int puissance, int


vitesse_rotation, String batterie)
{
super(puissance, vitesse_rotation);
this.batterie = batterie;
}

public String describe() // méthode


redéfinie
{
return super.describe()+" et la batterie est de type
"+this. batterie );
}
public void display() // méthode redéfinie, inutile
{
System.out.println(this.describe());
} 45
}
@ZELLOU
A
POO JAVA

Atelier
1. Créer la classe Cours avec la méthode
démarrer().
 Le cours a les attributs suivants : intitulé,
heure_début, heure_fin, type (majestral, TD, TP)
2. Définir au moins deux méthodes
surchargées.
3. Créer les classes Cours en présentiel, Cours à
distance, et Cours enregistré.
4. Redéfinir la méthode démarrer() dans les trois
classes.
5. Tester avec des données réelles. @A.ZELLOU
46
POO JAVA

Gestion des fichiers


 Flux d'octets ou de caractères :
 lire ou écrire des données binaires ou caractères
 Entrée
 FileInputStream : lecture de fichiers
 ObjectInputStream : lecture d'objets Java.
 Sortie
 FileOutputStream : écriture dans fichiers
 ObjectOutputStream : écriture d'objets Java

@A.ZELLOU
POO JAVA

Exemple : écriture
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
public class Persistance {
private File fichier;

public Persistance(String
fichier)
{
this.fichier=new
File(fichier);
}

public void save(Manager m)


{ ObjectOutputStream
outputStream=null; FileOutputStream
OutputFile=new
FileOutputStream(fichier);
48
outputStream = new ObjectOutputStream(OutputFile);
outputStream.writeObject(m.get(0).getNom()); @A.ZELLOU
}
POO JAVA

Exemple : lecture
public class Persistance {

public void read(Manager m)


{ ObjectInputStream
inputStreams=null;
FileInputStream inputFile=new
FileInputStream(fichier);
inputStreams = new
ObjectInputStream(inputFile);

while( inputFile.available() > 0)


{
String nom = (String)inputStreams.readObject();
System.out.println(nom);
// récupérer les autres attributs
Employe e=new Employe(num, nom, prenom,
genre, ddn, salaire);
e.display();
}
49
}
} @A.ZELLOU
POO JAVA

Atelier
1. L’objectif de cet atelier est d’utiliser les fichiers comme
support de persistance pour l’enregistrement permanent des
données du Manager.
2. Ecrivez un programme conteant une classe Persistance avec
une méthode save() qui permet de stocker les données du
Manager dans le fichier "data.txt".
3. Tester dans la méthode main.
4. Rajouter dans la classe Persistance la méthode read() qui
permet de lire le contenu du fichier, de construire le
Manager et d’afficher ces données.
5. Tester dans la méthode main.

50
@A.ZELLOU
POO JAVA

Interface Graphique
 Swing
 Fourni une boîte à outils légère pour créer des

interfaces graphiques (GUI).


 Bibliothèque riche : fenêtres, label, champ de texte,
zone de texte, case à coche, liste déroulante, champs
pour fichier, boutons, trees, color choosers, sliders,
toolbars, tables, etc.
 Swing est écrite en java, indépendante de la
plateforme.

51
@A.ZELLOU
POO JAVA

Interface Graphique
 Swing

52
@A.ZELLOU
POO JAVA

Interface Graphique
 Swing
import javax.swing.*;
class Formulaire extends JFrame {
private Container c; // Composant du Formulaire
private JLabel titre; // Composant du Formulaire
public Formulaire()
{
setTitle("Formulaire d'inscription");
setBounds(300, 90, 600, 600);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setResizable(false);
c = getContentPane(); //retourne le conteneur
Jpanel de Jframe
c.setLayout(null); //Pour supprimer le Layout par défaut d'une classe
titre = new JLabel("Insription");
titre.setFont(new Font("Arial", Font.PLAIN, 30));
titre.setSize(300, 30); //hauteur et largeur
titre.setLocation(200, 30); //la position (x,y) sur l'écran
c.add(titre);
}
public static void main(String[] args) throws Exception
{
Formulaire f = new Formulaire();
53
f.setVisible(true); //afficher ou cacher le formulaire
} @A.Z OU
} ELL
POO JAVA

Atelier
1. Créer l’interface d’ajout d’un employé

JLabel

JTextField

JRadioButton

JComboBox

JTextArea

JCheckBox

JButton 54
@A.ZELLOU
POO JAVA

Interface Graphique
 Implémenter l’interface ActionListener
import java.awt.event.*;
class Formulaire extends JFrame implements ActionListener { public void vider()
// Code Formulaire {
public void actionPerformed(ActionEvent event) { nom.setText(null);
if (event.getSource() == reset) vider(); prenom.setText(null);
if (event.getSource() == sub) masculin.setSelected(true);
{
String nomE=nom.getText(); feminin.setSelected(false);
String genre="F"; jour.setSelectedIndex(0);
if(masculin.getSelectedObjects()!=null) genreE="M"; mois.setSelectedIndex(0);
String j=jour.getSelectedItem().toString(); annee.setSelectedIndex(0);
String adresseE=adresse.getText(); adresse.setText(null);
String salaireE=salaire.getText().toString(); salaire.setText(null);
boolean contratE=false; if(contrat.getSelectedObjects()! contrat.setSelected(false);
=null) contratE=true; }
if(contratE)
{
Employe E = new Employe(nomE,prenomE,genreE,a+"-"+m+"-"+j,Float.parseFloat(salaireE));
E.display();
}
}
55
}
} @A.ZE LOU
L
Merci

A.ZELLOU

Vous aimerez peut-être aussi