Rappels sur la Programmation java

publicité
RAPPELS SUR LA
PROGRAMMATION JAVA
NSY208 / 2010-2011
Plan (1)
•
•
•
•
•
•
•
Concepts Programmation OO
Fondamentaux de Java
Interfaces et Classes
Exceptions
Collections et généricité
Programmation événementielle
Assertions et JUNIT
DJBEL- 16-122010
2
Plan (2) pour le 14.12.2010
•
•
•
•
•
•
XML et sérialisation
Programmation concurrentielle
Introspection
Persistance
RMI
Programmation native
DJBEL- 2010
3
Concepts de la
programmation
Orientée Objet
DJBEL- 2010
4
Concepts POO (1)
• Abstraction
– Toute entité est un objet
• Encapsulation
– Modéliser au sein d’une seule entité Class, les
propriétés et le comportement de l’objet
• Héritage
– étendre une classe existante pour la spécialiser
– modélisation de la relation « est »
DJBEL- 2010
5
Concepts POO (2)
• Polymorphisme :
– Possibilité pour un objet de modéliser plusieurs
comportements
• Surcharge et redéfinition
– une même méthode avec différents paramètres
– adapter une méthode spécifiquement
• Agrégation et Composition
– regrouper et structurer un ensemble de classes
DJBEL- 2010
6
Concepts POO (3) Les polygones
DJBEL- 2010
7
Fondamentaux
de Java
DJBEL- 2010
8
Fondamentaux de Java (1)
• C’est un langage interprété
– Les programmes sont compilés dans un code
intermédiaire (byte code) qui s’exécute sur une
machine virtuelle : JVM
• Utilisation d’un Garbage Collector
• Langage entièrement à base d’objets
– Exception des types primitifs (int, boolean,
char…) : Boxing
– Une hiérarchie arborescente : toutes les classes
héritent d’une classe de base Object
– Un objet  une instance de la classe
DJBEL- 2010
9
Fondamentaux de Java (2)
• Une syntaxe similaire à C ou C++
– Toutes les instructions sont définies dans une classe
• Des outils pour compiler :
– JDK, Eclipse, Netbeans, BlueJ
• Un environnement d’exécution (JRE)
• Un seul point d’entrée par application :
static void main
• Organisation des classes sous la forme de
paquetages
DJBEL- 2010
10
Fondamentaux de Java (3)
Une hiérarchie unique sur la base
Object
Méthode
Description
boolean equals (Object obj)
Déterminer si deux objets sont égaux
void finalize()
Appelée par le GC pour libérer les ressources
int hashCode()
Renvoie le code hash de l’objet
final void notify()
Réveille un objet en attente de verrou
final void notifyAll()
Réveille tous les objets en attente
final void wait()
Suspendre le thread en cours
String toString()
Renvoie la forme texte d’un objet
DJBEL- 2010
11
Fondamentaux de Java (4)
• Déclaration : [portée] [static] [final] type nom
• Portée :
Visibilité
Public
Protected
Default
Private
Depuis la même classe
Oui
Oui
Oui
Oui
Depuis les autres classes du
paquetage
Oui
Oui
Oui
Non
Depuis une sous-classe du
même paquetage
Oui
Oui
Oui
Non
Depuis une sous-classe ou une
classe définie dans un
paquetage externe
Oui
Non
Non
Non
DJBEL- 2010
12
Fondamentaux de Java (5)
DJBEL- 2010
13
Interface et
Classe
DJBEL- 2010
14
Interface et classe (1)
• Interface  « contrat», non instanciée ?:
– Déclaration de méthodes pour le comportement
– Doit être implémentée : implements
– Etendre (extends) une ou plusieurs interfaces
• Class abstraite (abstract), non instanciée ? :
– Peut contenir des méthodes abstraites ou non
– Peut partiellement implémenter une interface
– Ne peut pas être déclarée final
– Méthodes abstraites ne doivent pas être privées
DJBEL- 2010
15
Interface et classe (2)
• Classe concrète
– Doit implémenter toutes les méthodes abstraites
– Peut être interne ou anonyme
– Hérite (extends) d’une seule et une seule classe, « Héritage »
multiple par le biais d’interfaces
– Une classe final ne peut pas être étendue
– Opérateur this pointe vers l’instance courante en exécution
– Un Constructeur par défaut, sur-chargeable
– Peut redéfinir ou surcharger une méthode de la classe de base,
elle n’a pas accès aux membres privés de la base, super pour
appeler le constructeur de la super classe
DJBEL- 2010
16
Interface et Classe (3)
DJBEL- 2010
17
Interface et Classe (4)
• Les membres de
l’interface sont par
défaut public
• Une classe abstraite
peut partiellement
implémenter une
interface
• Exemple de surcharge
de la fonction somme
DJBEL- 2010
18
Interface et Classe (5)
• La classe concrète doit
implémenter toutes les
méthodes qui sont
encore abstraites
DJBEL- 2010
19
Interface et Classe (6)
• Classe interne et classe
anonyme
DJBEL- 2010
20
Exceptions
DJBEL- 2010
21
Exceptions (1)
• Exception : occurrence d’un évènement qui
interrompt l’exécution normale du programme
– Anomalie système :le fichier est inexistant
– Bug programmeur : utilisation d’un objet null
• A l’occurrence de l’événement une exception est
levée (thrown)
• Elle doit être attrapé (catch) par le processus
appelant (handler)
• Il y a au moins un handler celui du main
DJBEL- 2010
22
Exceptions (2)
• Une hiérarchie d’exceptions :
– Erreurs, on ne peut pas les intercepter
– Exceptions qui sont recouvrable
DJBEL- 2010
23
Exceptions (3)
• Encadrer le code « suspect » par un block try
• Possibilité d’utiliser autant de blocks catch
que d’exception qu’on veut attraper
• Utiliser un block finally pour libérer les
ressources
• Finally peut générer lui-même des erreurs
DJBEL- 2010
24
Collection et
Généricité
DJBEL- 2010
25
Collection et généricité (1)
• Une collection est un container qui a pour
but de regrouper un ensemble d’objets
• Possibilité de manipuler cet ensemble
comme formant un tout
• Elle expose un comportement :
– Ajouter un élément
– Retirer un élément
– Connaitre sa taille
– Accéder directement à un élément
– Itérer
DJBEL- 2010
26
Collection et généricité (2)
Class
Map
HashMap
Set
List
Ordre
Tri
Oui
Non
Non
Hashtable
Oui
Non
Non
TreeMap
Oui
Oui
Naturel
LinkedHashMap
Oui
Insertion
Non
HashSet
Oui
Non
TreeSet
Oui
Oui
LinkedHashSet
Oui
Insertion
Naturel
ArrayList
Oui
Index
Non
Vector
Oui
Index
Non
LinkedList
Oui
Index
Non
DJBEL- 2010
27
Collection et généricité (3)
DJBEL- 2010
28
Collection et généricité (4)
DJBEL- 2010
29
Collection et généricité (5)
DJBEL- 2010
30
Programmation
événementielle
DJBEL- 2010
31
Programmation événementielle (1)
http://java.sun.com/blueprints/patterns/MVC-detailed.html
DJBEL- 2010
32
Programmation événementielle (2)
• EventObject : véhicule le contexte d’un
évènement
• Des éléments actifs qui réagissent à une
action utilisateur
• Le modèle qui alerte sur son changement
d’état
• ActionListener, PropertyChangeListener qui
interceptent les événements
• Des Panels qui se rafraichissent (repaint)
DJBEL- 2010
33
Programmation événementielle (3)
DJBEL- 2010
34
Programmation événementielle (4)
DJBEL- 2010
35
Programmation événementielle (5)
DJBEL- 2010
36
Téléchargement