Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
L2 Informatique – S4
Plan du Cours
Introduction aux concepts de l’approche orientée objets
Types de données en java
Les structures itératives et conditionnelles
Classe java
déclaration classe, constructeur d’une classe, attributs d’une classe
Création des objets
Les modificateurs d’accès (public, private, protected,…)
Les méthodes
déclaration , surcharge, redéfinition d’une méthode
Création et utilisation des packages
Les variables de classe & les constantes (static-final)
L’héritage en java
Les classes abstraites et les interfaces
Présentation de quelques packages prédéfinis de java
Les entrées et sorties
Manipulation des chaînes de caractères
Tableaux et collections de données
La gestion d’erreurs (les exceptions)
Les classes internes
Les interfaces graphiques
1
Partie I
Introduction aux concepts de l’Approche
Orientée Objets
Objectifs de la POO :
• Conception de l’organisation de grands projets informatiques autour d’entités précisément structurées (objets)
• Amélioration de la sûreté des logiciels en gérant l’accès aux données sensibles (encapsulation)
• Simplifier la réutilisation de code grâce à l’extension des objets existants (héritage) et partage des méthodes
(polymorphisme)
• Notion de classe: Elle regroupe l’ensemble des objets ayant en commun les mêmes caractéristiques
2
I. Introduction aux concepts de l’Approche Orientée Objets (2)…
Exemple de classe
Classe Personne
Personne
NCIN : entier
Nom : chaine de caractères
Les Attributs
Date Naissance : date
Taille : réel
• Encapsulation: C’est un mécanisme de protection correspondant au fait que des champs et des méthodes
privées ne soient accessibles par l’utilisateur d’une classe que par certaines méthodes publiques
(exemple des données privées)
• Héritage: Il permet de redéfinir une nouvelle classe à partir d’une classe existante.
3
I. Introduction aux concepts de l’Approche Orientée Objets (4)…
Exemple d’héritage
Personne Classe existante = classe mère
NCIN : entier
Nom : chaine de caractères
Date Naissance : date
Taille : réel
Employé Etudiant
DateEmbauche :date Matricule :entier
Service: chaine de caractères classe: chaine de caractères
Salaire:entier NomFac:chaine de caractères
Tél:entier MoyenneG: réel
QuelleDteEmbauche():date QuelleMoyenne :réel
QuelSalaire() :entier Quelleclasse: ch.de caractères
ModifMoy(réel)
Les classes Employé et Etudiant = Sous-classes de la classe Personne 7
4
I. Introduction aux concepts de l’Approche Orientée Objets (5)…
Les concepts de l’OO :
• Polymorphisme:
Personne
Employé
NCIN : entier DateEmbauche :date
Nom : chaine de caractères Service: chaine de caractères
Date Naissance : date Salaire:entier Sous-classe
Taille : réel Tél:entier de la classe Personne
MonEmployé
DateEmbauche :15/10/2012
Service: Comptabilité MonEmployé.QuelNom ( )
Salaire:180000
Tél:22 33 44 55
Objet de la sous-classe 9
MonEmployé
Personne
Employé
NCIN : entier DateEmbauche :date
Nom : chaine de caractères Service: chaine de caractères
Date Naissance : date Salaire:entier Sous-classe
Taille : réel Tél:entier de la classe Personne
MonEmployé
DateEmbauche :15/10/2012
Service: Comptabilité MonEmployé.QuelNom()
Salaire:180000
Tél:22 33 44 55
Objet de la sous-classe 10
MonEmployé
5
Partie II
Types de données en java
Types primitifs
Types objets
6
II. Types de données en java
Types primitifs
Déclaration
int x,y;
char c;
boolean rep;
Initialisation
int x,y;
int x=5,y=12; x=5;
char c=’Y’; y=12;
boolean rep=true; char c;
c=’Y’
boolean rep;
rep=true;
13
Conversion de types
14
7
II. Types de données en java
int i=16;
byte b=(byte)i;// de 32 bits vers 8 bits
i=(int)15.575; // de flottant vers entier; i ne contient que des entiers
char c=’a’;
i=’c’; // de 16 bits vers 32 bits
15
Les opérateurs
16
8
II. Types de données en java
Les opérateurs
17
Partie III
Structures de contrôle conditionnelle
et itératives
9
III. Structures de contrôle
Conditionnelles
19
10
III. Structures de contrôle
Itératives
21
Itératives
22
11
III. Structures de contrôle
Itératives
23
Itératives
continue
for(int i=1;i<12;i++)
{ Valeur de i paire = 2
Valeur de i paire = 4
if(i==6)
Valeur de i paire = 8
continue; Valeur de i paire = 10
if(i%2==0)
System.out.println(’’Valeur de i paire = ’’+i);
}
break
for(int i=1;i<12;i++)
Valeur de i = 1
{ Valeur de i = 2
if(i==8) Valeur de i = 3
break; Valeur de i = 4
else Valeur de i = 5
System.out.println(’’Valeur de i = ’’+i); Valeur de i = 6
} Valeur de i = 7
24
12
Partie IV
Classe Java et création d’Objets
Classe java
Une classe java (type complexe) est constituée:
• d’attributs
• d’un ou de plusieurs constructeurs
• de méthodes
26
13
IV. Classe Java et création d’objets
Constructeur d’une classe
27
28
14
IV. Classe Java et création d’objets
Constructeur d’une classe
Les 2 méthodes
29
class NomClasse {
//déclaration d’attributs
Type NomAttributs;
//Constructeurs de la classe
public NomClasse(arguments){
//instructions d’initialisation
}
//Méthodes de la classe
TypeRetour NomMethode1(arguments){
//instructions
}
….
TypeRetour NomMethode2(arguments){
//instructions
}
}
30
15
IV. Classe Java et création d’objets
Structure générale d’un programme java
Méthodes
La méthode main( ) permet
d’exécuter le programme après
compilation
La création d’un objet à partir d’une classe est appelée une instanciation (objet=instance de la classe)
Nécessite l’appel du constructeur
Créer un objet:
Rectangle
MonRectangle
Longueur : entier
Largeur: entier Longueur : 25
Rectangle MonRectangle =
Largeur: 15 new Rectangle(25,15);
Perimetre ( ) : entier
Surface( ) : entier
L’objet de Rectangle
32
16
IV. Classe Java et création d’objets
Exercices
33
• Un programmeur Java écrit son code source, sous la forme de classes, dans des
fichiers dont l’extension est .java. Ce code source est alors compilé par le
compilateur javac en un langage appelé bytecode et enregistre le résultat dans
un fichier dont l’extension est .class
• Le bytecode ainsi obtenu n’est pas directement utilisable. Il doit être interprété
par la machine virtuelle de Java qui transforme alors le code compilé en code
machine compréhensible par le système d’exploitation.
• C’est la raison pour laquelle Java est un langage portable : le bytecode reste
le même quelque soit l’environnement d’exécution.
34
17
Exemple
Code source
java MonProg.java
Compilateur
javac MonProg.java
Bytecode /Pseudo-code
MonProg.class
Interpréteur
java MonProg
Code machine
Virtualisation
Système d’exploitation
Système d’exploitation
35
Partie V
Les modificateurs d’accès
18
V. Les modificateurs d’accès
Accessibilité des membres d’une classe à une autre classe
On a 4 spécificateurs d’accès :
• public : les membres publics sont tous visibles
• protected : ils ne sont visibles que par les classes filles ou de même package
• private : ils ne sont pas visibles
• ’’friendly’’ (sans spécificateur d’accès), les membres ne sont visibles que par les
classes du même package.
Partie VI
Les Méthodes
19
VI. Les méthodes
Déclaration de méthodes
Les méthodes décrivent les traitements réalisés par la classe
Elles forment l’interface permettant de manipuler les objets
Elles sont protégées par des droits d’utilisation public, private, protected, final, abstract
Elles retournent le résultat du traitement (return objet ou type primitif) ou rien (void)
Prennent une liste de variables comme arguments (Type var1, Type var2, …, Type varn)
Exemple de surcharge
int somme(int a, int b) { return a + b; }
float somme(float a, float b) { return a + b; }
int somme(int a, int b, int c) { return a + b + c; }
20
Partie VII
Création et utilisation des packages
41
21
Partie VIII
Les variables de classe et les constantes
44
22
IV. Classe Java et création d’objets
45
46
23
47
48
24
49
50
25
Les Collections
Une collection est une structure de données (correspondant en fait à un objet) qui peut contenir d’autres objets.
On dispose d’une bibliothèque composée de classes et d’interfaces pour gérer les collections.
Les interfaces à utiliser par des objets qui gèrent des collections sont :
• Collection : interface qui est implémentée par la plupart des objets qui gèrent des collections
• Map : interface qui définit des méthodes pour des objets qui gèrent des collections sous la forme clé/valeur
• Set : interface pour des objets qui n'autorisent pas la gestion des doublons dans l'ensemble
• List : interface pour des objets qui autorisent la gestion des doublons et un accès direct à un élément
• SortedSet : interface qui étend l'interface Set et permet d'ordonner l'ensemble
• SortedMap : interface qui étend l'interface Map et permet d'ordonner l'ensemble
(cf. documentation)
Les interfaces des collections définissent des opérations qui peuvent être réalisées sur chaque type de collection.
La bibliothèque propose plusieurs objets qui implémentent ces interfaces et qui peuvent être directement utilisés, exemple :
• HashSet : qui implémente l'interface Set
• ArrayList : tableau dynamique qui implémente l'interface List
• LinkedList : liste doublement chaînée (parcours de la liste dans les deux sens) qui implémente l'interface List
• HashMap : HashTable qui implémente l'interface Map
…
La bibliothèque définit aussi des interfaces pour faciliter le parcours des collections et leur tri :
51
1. Les tableaux
java.util.Arrays fournit des méthodes pour la manipulation de tableaux
Pour le tri, la méthode sort(Tableau) est utilisée; elle retourne un tableau trié
Pour la recherche la méthode binarySearch(tableau, element) est utilisée, elle retourne la position à laquelle se trouve l’élément
Pour initialiser un tableau on peut utiliser la méthode fill(tableau) ou fill (tableau, IndexDep, IndexFin, Val)
La méthode fill(tableau, Val) initialise tous les éléments du tableau avec la valeur Val
La méthode fill(tableau, IndexDep, IndexFin,Val) initialise tous les éléments du tableau compris entre les
Indices IndexDep et IndexFin-1 avec la valeur Val
Exemple :
52
26
2. La classe Vector (1)…
Package java.util.* (import java.util.*;)
Un objet de la classe Vector peut être considéré comme une tableau évolué qui peut contenir un nombre indéterminé
d'objets. Ses principales méthodes sont les suivantes :
Note :Les variables de type primitif ne sont pas reconnues comme des objets. Pour les transformer en objets chaque type
primitif possède son équivalent objet (voir le tableau ci-dessous).
Il est possible de récupérer d’une chaîne de caractères un entier à partir de la méthode parseInt( ) de la classe Integer
Exemple:
String CharEntier="9"; //caractère contenant 9
int k= Integer.parseInt(CharEntier); // retourne l’entier 9 54
27
3. La classe Stack
Package java.util.* (import java.util.*;)
La classe Stack étend la classe Vector pour réaliser une structure de données en pile. Comme la classe Vector, elle est conçue pour
stocker des objets. La classe Stack possède tous les caractéristiques et comportements de Vector en plus de ses comportements spécifiques.
NB: Pour stocker de types de données primitifs, il faut utiliser leurs classes équivalentes
(Boolean, Character, Short, Integer, Long, Float, Double)
Exemple:
import java.util.*; Note:
public class Stacks {
• La méthode peek() renvoie l’élément (objet) se trouvant
static String[ ] Mois = {"Janvier", "Fevrier", "Mars", "Avril", "Mai", "Juin",
au sommet de la pile (le dernier à être inséré) sans le
"Juillet", "Aout", "Septembre", "Octobre", "Novembre", "Decembre" };
supprimer de la pile.
public static void main(String[ ] args) {
•La méthode pop() affiche l’élément du sommet de la pile et
Stack stk = new Stack();
le supprime.
for (int i = 0; i < Mois.length; i++)
stk.push(Mois[i] + " "); //Ajout au début de la pile
• La méthode push() ajoute au sommet de la pile un élément; elle fait
System.out.println("stk = " + stk); //Affiche tous les élements de la pile
exactement comme la méthode addElement() de la classe Vector.
// Traiter une pile comme un Vector :
stk.addElement("Fin de l’annee");
System.out.println("element 5 = " + stk.elementAt(5));
System.out.println("popping elements:");
while(!stk.empty())
System.out.println(stk.pop());
}
}
55
4. La classe Hashtable
Package java.util.* (import java.util.*;)
Les informations d'une Hashtable sont stockées sous la forme clé − données. Cet objet peut être considéré comme
un dictionnaire. Les clés et les données peuvent être n’importe quel type d’objet. La classe Dictionary (abstraite) est
la superclasse de la classe Hashtable.
Exemple:
Hashtable dico=new Hashtable();
Pour supprimer un élément utiliser la méthode remove (clé)
dico.put(new Integer(1), "Un" );
Exemple: dico.remove(new Integer(1)); //Supprime l’élément
dico.put(new Integer(2), "Deux" );
System.out.println((String)dico.get(new Integer(1))); //affiche la chaine "Un" int n=dico.size() //retourne la taille de dico (nbre éléments)
System.out.println((String)dico.get(new Integer(2))); //affiche la chaine "Deux"
4. L’interface Enumeration
L'interface Enumeration est utilisée pour permettre le parcours séquentiel des collections (Vector, Stack, Hashtable).
Elle définit 2 méthodes :
- hasMoreElements ( ) : de type booléen, elle retourne true si l’énumération contient encore un ou plusieurs éléments
- nextElement( ) : retourne l’objet suivant de l’énumération
On dispose également de l'interface Iterator permet aussi le parcours séquentiel des données d’une collection (Vector, Stack, Hashtable, Set). La différence
avec l’interfac Enumeration se trouve dans les noms de méthodes mais également la possibilité de supprimer le dernier élément parcouru avec l’interface
Iterator.
Vector V =new Vector()
Exemples: Vector V =new Vector()
V.add("Un");
V.add("Un");
V.add("Deux");
V.add(« Deux");
iterator it=V.iterator();
Enumeration e=V.elements();
while(it.hasNext())
while(e.hasMoreElements())
{
{
//affiche les éléments du vecteur V
//affiche les éléments du vecteur V
System.out.println(it.next ());
System.out.println(e.nextElements());
}
}
it.remove(); //Supprime le dernier élément parcouru
//V contient désormais un seul élément Un
56
Note: Les classes ArrayList, HashSet, HashMap implémentent respectivement les interfaces List, Set et Map
28