Cours Java

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 14

Université Sidi Mohammed Ben Abdellah

Faculté des Sciences Dhar Mehraz


Département d’Informatique
SMI/S5

Programmation Orientée Objet sous Java

Pr. Ismail EL BATTEOUI

SMI/S5
1
A.U:2022/2023
Chapitre 5: Héritage (suite)
❑Classe Object:
❖ La classe Object est une classe dont ❖ Exemple:
dérive implicitement toute classe simple. Point p = new Point (...) ;
❖ Exemple: Point3D p3d = new Point3D (...) ;
class A{ Homme h = new Homme (...) ;
……… Object o ;
} .....
est équivalent à: o = p ; // OK
o = p3d ; // OK
class A extends Object{ o = h ; // OK
……… ❖ Cette classe peut être utilisée pour
} déclarer des objets dont on ne connaît
❖ Référence de type Object: pas le type exact .
▪ Une variable de type Object peut être ❖ L’appel d’une méthode par à un objet
utilisée pour référencer un objet de référencé par une variable de type
type quelconque : Object nécessitera d’effectuer une
SMI/S5 A.U:2022/2023
conversion adéquate. 2
Chapitre 5: Héritage (suite)
❑Classe Object:
❖ Exemple: public class Object{
Point p1 = new Point (...) ; public String toString() {……..}
Object o ; public final Class getClass() {……}
o = p1 ; public boolean equals(Object o)
o.affiche() ; // erreur de compilation {………}
((Point)o).affiche() ; // OK protected Object clone() throws
Point p2 = (Point) o ; // OK CloneNotSupportedException
p2.affiche() ; {…..}
❖ méthodes de la classe Object: ………..}
▪ Les méthodes de la classe Object ❖ Exercices:
peuvent être utilisées telles quelles ou ▪ Redéfinir la méthode toString de Point.
▪ Redéfinir la méthode equals dans Point.
redéfinies. ▪ Définir une méthode afficheNom qui affiche le
▪ Les méthodes les plus utilisées sont: nom de la classe d’un objet Point.

SMI/S5 A.U:2022/2023 3
Chapitre 6: Interfaces
❑Interfaces:
❖ Une interface est une classe abstraite avec ❖Déclaration d’une interface:
champs constants (static ou final) et dont public abstract interface UneInterface {
toutes les méthodes sont abstraites (sauf public abstract String methode1(String s);
une seule depuis Java 1.8). public abstract int methode2(double d);
❖ Le langage JAVA ne permet pas l'héritage }
multiple mais une classe peut ‘’hériter’’ ❖ Utilisation:
de plusieurs interfaces. public class A implements UneInterface {
❖ Ainsi pour ajouter de nouvelles ….
fonctionnalité à une classe qui hérite déjà }
d'une classe, la seule solution est que cette Ou
classe implémente une interface. public class A extends B implements
❖ Pour une interface, on ne parle pas d' UneInterface, UneAutreInterface {…..}
héritage mais d'implémentation. ❖ Exercice:

SMI/S5 A.U:2022/2023 4
Chapitre 7: Exceptions
❑Gestion des exceptions:
❖ une exception est une rupture d’exécution ❖ Le choix du bon gestionnaire est fait en
déclenchée par une instruction (throw) fonction du type de l’objet mentionné à
comportant une expression de type classe. throw.
❖ Java dispose donc d’un mécanisme très ❖ Exemple:
souple nommé gestion d’exception, qui class Point{
permet à la fois : public Point(int x, int y) throws AttrExcep
▪ de dissocier la détection d’une anomalie { if ( (x<0) || (y<0)) throw new AttrExcep() ;
de son traitement. this.x = x ; this.y = y ;}
▪ de séparer la gestion des anomalies du public void affiche(){
reste du code, donc de contribuer à la System.out.println ("coordonnees : " + x + "
lisibilité des programmes. " + y) ;}
❖ Il y a alors branchement à un ensemble private int x, y ;}
d’instructions nommé gestionnaire class AttrExcep extends Exception{ }
d’exception .

5
SMI/S5 A.U:2022/2023
Chapitre 7: Exceptions
❑Gestion des exceptions:
❑ Gestionnaire d’exception: ▪ faire suivre ce bloc de la définition des
❖ Pour gérer convenablement les éventuelles différents gestionnaires d’exception par
exceptions de type AttrExcep pouvant le mot clé catch.
déclencher, il faut : Exemple:
▪ inclure dans un bloc particulier dit bloc catch (AttrExcep e)
try les instructions dans lesquelles on { System.out.println ("Erreur") ;
risque de voir déclenchée une telle System.exit (-1) ;
exception ; un tel bloc se présente ainsi : }
try D’où: try
{ {
// instructions // instructions
} }
catch (AttrExcep e){
System.out.println ("Erreur") ;
}
6
SMI/S5 A.U:2022/2023
Chapitre 7: Exceptions
❑Gestion des exceptions:
class Point{ public class Test1{
public Point(int x, int y) throws AttrExcep public static void main (String args[]){
{ if ( (x<0) || (y<0)) throw new AttrExcep() ; try{
this.x = x ; this.y = y ; Point a = new Point (1, 4) ;
} a.affiche() ;
public void affiche(){ a = new Point (-3, 5) ;
System.out.println ("coordonnees : " + x + " " a.affiche() ;
+ y) ; }
} catch (AttrExcep e){
private int x, y ; System.out.println ("Erreur ") ;
} }
class AttrExcep extends Exception }
{} }

7
SMI/S5 A.U:2022/2023
Chapitre 7: Exceptions
❑Gestion des exceptions:
❑ Gestion de plusieurs exceptions class AttrExcep extends Exception{ }
class Point{ class DepExcep extends Exception{ }
public Point(int x, int y) throws AttrExce{ public class Test2{
if ( (x<0) || (y<0)) throw new AttrExcep() ; public static void main (String args[]){
this.x = x ; this.y = y ; try{
} Point a = new Point (1, 4) ;
public void deplace (int dx, int dy) throws a.affiche() ;
DepExcep{ a.deplace (-3, 5) ;
if ( ((x+dx)<0) || ((y+dy)<0)) throw new a = new Point (-3, 5) ;
DepExcep() ; a.affiche() ;
x += dx ; y += dy ; }
} catch (AttrExcep e){
public void affiche(){ System.out.println ("Erreur ") ;
System.out.println ("coordonnees : " + x + " " }
+ y) ;} private int x, y ;} catch (DepExcep e)
SMI/S5 A.U:2022/2023
{ System.out.println ("Erreur encore 8 ") ;
Chapitre 7: Exceptions
❑Gestion des exceptions:
❑ Transmission d’information au class Point{
public Point(int x, int y) throws AttrExcep{
gestionnaire d’exception: if ( (x<0) || (y<0)) throw new AttrExcep("Erreur" ) ;
❖ on peut se contenter de transmettre un this.x = x ; this.y = y ;
message au gestionnaire, sous forme }
public void affiche(){
d’une information de type chaîne en System.out.println ("coordonnees : " + x + " " + y) ;
exploitant le constructeur à un argument }
de type String de la classe Exception. private int x, y ;
}
❖ Pour récupérer la valeur de ce message, class AttrExcep extends Exception{
on utilise la méthode getMessage. AttrExcep (String message){
super(mes) ;
}
}
........
catch (AttrExcep e)
{ System.out.println (e.getMessage()) ;
}
9
SMI/S5 A.U:2022/2023
Chapitre 7: Exceptions
❑Gestion des exceptions:
❖ Clause throws: ❖ Exceptions standards
▪ Toute méthode susceptible de déclencher ▪ Java dispose de plusieurs exceptions
une exception qu’elle ne traite pas implicites ou hors contrôle qui n’ont pas
localement doit indiquer son type à l’aide à être mentionnées dans une clause
de la clause throws et ce dans son en-tête. throw et on n’est pas obligé de les
❖ Bloc finally: traiter.
▪ Le déclenchement d’une exception ▪ IOException: et ses dérivées sont
provoque un branchement inconditionnel utilisées par les méthodes d’entrées-
au gestionnaire convenable. sorties.
▪ L’exécution se poursuit avec les ▪ ArrayIndexOutOfBoundException:
instructions qui suivent ce gestionnaire. indice de tableau hors limites, utilisée
▪ Pour forcer l’exécution toujours d’un bloc par la JVM.
d’instructions qui suit try…catch (quand ▪ NegativeArraySizeException:: taille de tableau
négative, utilisée par JVM.
bien sur le bloc try s’exécute), on peut ▪ printStackTrace(): présente la succession des
utiliser le mot clé finally et ce après le différents appels ayant conduit à la méthode
10
dernier
SMI/S5
gestionnaire. A.U:2022/2023 coupable.
Chapitre 8: Collections
❑Introduction:
❖ Définition: ▪ Il existe deux hiérarchies de classes :
▪ Les collections Java sont un ensemble de o Des collections permettant de
classes définissant des structures de stocker des collections qui sont filles
données efficaces pour stocker, rechercher de l’interface Collection<Type>.
et manipuler des objets. o Des dictionnaires associatifs
▪ De nombreuses structures existent : contenant des couples clé/valeur qui
o Séquences :List sont filles de l’interface Map<k,v>.
o Ensembles : Set
o Dictionnaires: Map
❖ Organisation
▪ Ces différents types de données abstraits
sont spécifiés dans des interfaces de haut
niveau, puis implantés dans différentes
classes concrètes.

11
SMI/S5 A.U:2022/2023
Chapitre 8: Collections
❑Introduction:
❖ Parcours d'une collection : o public boolean hasNext(): retourne true
▪ les collections possèdent un point s’il reste des éléments dans l’itération.
commun : le parcours de leur contenu. o public Type next(): retourne le prochain
▪ Le parcours, séquentiellement, des élément et avance dans l’itération, s’il
éléments d’une collection est basé sur la n’y a plus d’éléments une exception de
notion d’itération. type NoSuchElementException est
▪ Toute collection possède une méthode levée.
Iterator<Type> iterator() qui retourne ❖ Utilisation d’une collection:
un itérateur permettant d'accéder aux Collection<Type> collection=new……;
éléments un par un en avançant dans la Iterator<Type> iterator=collection.iterator();
collection. //tant qu’il reste des éléments, récupére le prochain
élément et avance.
▪ Initialement, l'itérateur est placé avant le while (iterator.hasNext()){
premier élément. Type t=iterator.next();
▪ Les deux méthodes principales d'un ………………
itérateur sont : }
12
SMI/S5 A.U:2022/2023
Chapitre 8: Collections
❑Interface List:
❖ Les séquences:List ▪ remove(index).
▪ L’interface List<T> définit une séquence ❖ LinkedList<T>: basée sur une liste
d’éléments d’un index allant de 0 à doublement chainée.
size()-1. ▪ add(valeur):ajout en fin.
▪ On peut insérer des éléments au début, à ▪ addFirst(valeur);
la fin ou à une position donnée. ▪ get(index): récupérer une valeur d’un
▪ Les deux principales classes de l’interface indice donné.
List<T> sont ArrayList<T> et ▪ remove(index).
LinkedList<T>. ❖ Dictionnaire: Map
❖ ArrayList<T>:basée sur un Tableau de ▪ L’interface Map<K,V> spécifie une
taille variable. association entre une clé de type K et
▪ add(valeur):ajout en fin. une valeur de type V.
▪ set( index, valeur):ajout à une position ▪ Un Map ne peut pas contenir des clés
donnée. identiques.
▪ get(index): récupérer une valeur d’un ▪ Chaque clé n’est associée qu’à une et
13
indice donné.
SMI/S5 A.U:2022/2023
une seule valeur.
Chapitre 8: Collections
❑Interface Map:
❖ Dictionnaire:Map (suite) ❖ Parcours:
▪ Les méthodes principales sont: ▪ Pour parcourir un Map, trois méthodes
o L’ajout d’un couple: put(K k , V v). peuvent être utilisées.
o L’accés à une valeur via sa clé ▪ Ces méthodes retournent les clés ou/et
V get(K k). les valeurs dans des collections (qui
o Recherche de clé ou de valeur. peuvent être itérées).
o Suppression d’une valeur. o Collection values(): retourne une
▪ L’interface SortedMap<K,V> étend collection contenant toutes les
Map<K,V> en rajoutant une relation valeurs.
d’ordre sur les clés d’un dictionnaires. o Set<K> keySet(): retourne un
▪ Classes principales: ensemble contenant toutes les clés.
o HashMap<K,V>:table avec hachage o Set<Map.Entry<K,V>> entrySet():
sur les clés. retourne un ensemble de tous les
o TreeMap<K,V>: ensemble ordonné couples (clé,valeur).
sur les clés. o Entry<K,V>: une classe interne de Map a
deux méthode getKey() et getValue(). 14
SMI/S5 A.U:2022/2023

Vous aimerez peut-être aussi