Programmation Objet et JAVA - Retour au site des enseignements d

Programmation Objet et
JAVA
Phelma 2015
1
Organisation du cours
10 séances de CM/TD/TP Les chapitres essentiels
Java, la notion d’Objet et de Classes
L’héritage et le polymorphisme
Les collections, Les exceptions, les fichiers
Les interfaces graphiques en Swing
x sujets de TD/TP
Sujets donnés à l’avance
1 examen écrit de 2h
Documents :
Site : http://tdinfo.phelma.grenoble-inp.fr/2APOO/
Le poly
Les sujets de TD
Site indispensable :
http://java.sun.com/j2se/1.5.0/docs
http://java.sun.com/javase/6/docs/api
2
Introduction
3
Objet :
Inspiré du C++, Objective C et Smalltalk : Java fortement objet.
Simple
Suppression des sources d’erreurs classiques : pas de pointeurs, pas de
gestion mémoire par le programmeur
Robuste
Nombreuses vérifications sont faites à la compilation (protection des classes,
)
Sécurisé à la conception du langage
Les notions de sécurité réseau sont incluses (SecurityManager), en
particulier pour les applets
Compact
Java a été conçu pour fonctionner dans un environnement évolutif.
L'interpréteur Java n'a besoin que de 215Ko.
Chargement dynamique des classes
Caractéristiques
Introduction : caractéristiques
Langage Interprété
Traduit et exécuté à chaque chargement
Développement plus simple
Temps d’exécution plus long
Fichier *.class
Indépendant du
processeur et de l!’OS
dépend de la définition
de la machine virtuelle
Fichier *.java
Indépendant du
processeur et de l!’OS
dépend de la définition
de la machine virtuelle
Pas de Fichier Executable
Dépendant du processeur et
de l!’OS
Dépend de la Réalisation de
la machine virtuelle
Indépendant de l'architecture : Portable
Conçu pour cela (machine virtuelle)
Ensemble complet d’exécution : machine à pile 32 bits
Jeu d’instructions précis
Des registres
Une pile
Interprète du byte_code : intermédiaire entre compilation et interprétation
Seule, la JVM change entre MAC, PC, Windows, Unix.
Les types de base ont des tailles fixes
Multithread
Gestion de plusieurs tâches prévue
Réseau
Ensemble de classes pour utiliser des protocoles TCP/IP tels que HTTP et FTP
Gestion des langues
Deux types de programmation différents
Applications
Programmes écrits en Java
Exécuté sur une machine qui possède un interpréteur java. Ce programme pourra se lancer
indifféremment sous n'importe quelle machine/OS.
Applets
Introduction : caractéristiques
Introduction : Applets
Applets : intégration de java au www
Programmes écrits en Java, installés
généralement sur un serveur Web
L'applet est téléchargée depuis le
serveur Web sur le poste client
Exécutés sur le poste Client par la
JVM du navigateur à la demande
de celui-ci
Testés grâce à appletviewer
Serveur www
distant
Poste client
netscape, IE, ...
1 : demande
2
chargement
applet
(.class)
3 execution
Java versus C
JAVA est portable sans recompilation sur toutes les plates formes
(processeur/OS)
PC, Mac,
PDA, telephone, etc
Même syntaxe, même structure de contrôle que C et C++
Principales différences
Pas de variables globales
Pas de préprocesseur #define, #include #ifdef
Pas de pointeurs
Le main est une fonction interne à une classe
C++ : Pas de surcharge des opérateurs
C++ : Pas d'héritage multiple
Nombreuses bibliothèques standard
Réseau,Système, thread
Graphisme, Interface utilisateur, Multimédia
E/S, chaînes et expressions régulières`
RMI : applications réparties sur plusieurs machines
Securité, cryptographie
Base de données, xml
8
Types de base
Langage fortement typé comme C++
huit types de base
Type Taille Valeur
int 4 bytes -2147483648 à + 2147483647 ( 231)
short 2 bytes -32768 à +32767
long 8 bytes 263
byte 1 byte -128 à +127
float 4 bytes +/- ( 1,4.10 - 45 à 3.4 10 + 38 )
double 8 bytes +/- ( 4,94 .10 -324 à 1,79 . 10 + 308 )
char 2 bytes 65536 caractères (internationaux)
boolean true or false
Valeurs extrémales par Type.MAX_VALUE, type.MIN_VALUE
char c = Byte.MAX_VALUE
9
POO et UML
Notions de base
10
Concept de classe : le point 2D
Problème posé
Définir les outils nécessaires pour un logiciel de géométrie tel que cabri ou pour un logiciel de
dessin
Exemple : définir la symétrie centrale et les translations et homothéties sur des points dans le
plan cartésien
Qu’est ce qu’un point du plan
Définition statique : ce sont les champs ou attributs
Une entité comportant 2 coordonnées
abscisse
ordonnée
Que doit on pouvoir faire avec : ce sont les méthodes
Entrées/sorties
Le créer : mettre des valeurs dans les coordonnées
L’afficher : ecrire les valeurs à l’écran
L’utiliser pour résoudre un problème
Translation d’un vecteur donné
Homothétie par un facteur k
Trouver le symétrique d’un point
11
class point
Le point 2D en procédural ou en objet
12
Structure point
avec champs x et y
Fonctions
void affiche (point)
void translate(point*, double,double)
point homothetie(point, double)
point symetriecentrale(point)
Attributs x et y
Méthodes
void affiche ()
void translate(double,double)
point homothetie(double)
point symetriecentrale()
En C, pas de liens entre les fonctions
et les structures de données qu’elles
manipulent
Exemple : on peut utiliser affiche sur
un entier par erreur
En POO, on regroupe champs et
fonctions au sein de la classe
il existe un lien physique entre
attributs, méthodes et objets
On ne peut pas utiliser affiche sur un
int
En C, le point 2D et ses fonctions
typedef struct Point {
/* Definition des champs d'un point */
double x;
double y; } POINT;
/* definition des fonctions sur un point */
/* Comment afficher un point */
void affiche(POINT a) {printf("x:%lf y:%lf\n",a.x,a.y);}
/* Comment translater un point */
void translate(POINT* ax, double a, double b) {
ax->x += a; ax->y += b;
}
/* constante x point ==> point */
POINT multcste(POINT a, double k) { POINT res;
res.x = k*a.x; res.y = k*a.y;
return res;
}
/* Symetrie centrale d’un point : ==> point */
POINT symetriecentrale(POINT a) {POINT res;
res.x = -a.x; res.y = -a.y;
return res;
}
}
Point : 2 coordonnées
Quelles sont les actions
réalisables sur un point ?
13
En C, le point 2D et ses fonctions
void main() { int i;
POINT p1, p2, p3;
printf("Premier exemple");
p1.x=2; p1.y=8;
affiche(p1);
translate( &p1, 1,-6); // Attention aux pointeurs !!!
affiche(p1);
p2 = multcste(p1, 10.0);
affiche(p2);
p3=symetriecentrale(p1);
affiche(p3);
affiche(i);
// Rien n’empeche cela : il n’y a aucun lien entre affiche
et la structure POINT
}
14
Exemple de classe : le point 2D
public class Point {
/* Definition des champs d'un point */
private double x;
private double y;
/* definition des methodes d'un point */
/* Constructeur : valeurs initiales d'un point */
public Point () { x = 0; y = 0; }
public Point (double a, double b) { x = a; y = b; }
/* Comment afficher un point */
public void affiche() { System.out.println("Abcisse "+x+"
ordonnee : "+y);}
/* Comment translater un point */
public void translate(double a, double b) { x += a; y += b; }
/* constante x point ==> point */
public Point multcste(double k) {
Point res;
res = new Point(this.x, this.y); // Ou Point(x,y)
res.x = k*res.x; res.y = k*res.y;
return res;
}
/* Symetrie centrale d’un point : ==> point */
public Point symetriecentrale() { return new Point(-x,-y); }
}
Point : 2 coordonnées
Comment initialiser
un point : 2 possibilités
Quelles sont les actions
réalisables sur un point ?
15
Exemple d’objet : des points particuliers
public class Ex1b {
public static void main (String[] args){
Point p1, p2, p3;
System.out.println("Premier exemple");
p1 = new Point(2,8);
p1.affiche();
p1.translate(1,-6);
p1.affiche();
p2 = p1.multcste(10.0);
p2.affiche();
p2=null;
p3=p1.symetriecentrale();
p3.affiche();
}
}
3 Points : p1 p2 p3
Creation de p1
Affichage de p1
16
POO : concepts de base
Héritage
Graphe de parenté entre des Classes
Héritage des méthodes et données qui ne sont pas à redéfinir
Ajouter des nouvelles fonctionnalités à ce qui existe déjà
Isole les éléments nouveaux pour la sécurité du code existant
Encapsulation : données+méthodes+sécurité
Données et méthodes dans une même entité : la classe
données : les informations propres à un objet,
méthodes : les actions réalisables sur/avec cet objet
Objet : instance d'une classe
Sécurité : Cloisonne l’intérieur et l’extérieur de l’objet
privé : inaccessible de l'extérieur de la classe ou de l’objet
public : ce qui l'extérieur à le droit d'utiliser
Réutiliser
sans connaître le fonctionnement interne
Sans risquer de modifier ce qui est fait
Polymorphisme : une même méthode prend plusieurs formes
Une méthode est typée par ses paramètres. Le même nom est utilisable
par plusieurs classes ou type de données
Quand on utilise une classe donnée, elle sait quelle est la bonne
fonction à utiliser ! pas de test de type en POO.
1 programme ; 1 ensemble d’objets qui s’envoient des messages
17
Conception, Modèles et Diagrammes en POO
UML : Unified Modeling Langage
Langage graphique de modélisation de projet informatique orienté
objet :
Définition des classes/attributs et des méthodes (modèle statique)
Définition des aspects dynamiques et temporels (modèle dynamique).
Le modèle statique permet
de structurer les besoins de l’utilisateur du logiciel : diagramme use-cases
de structurer les attributs et les méthodes en les répartissant dans des classes,
reliées entre elles par des liaisons de trois types : héritage, agrégation, relation :
diagrammes d’objets, de classes,
De structurer l’application en terme de modules (diagramme de composants) et
de matériel utilisé (diagramme de déploiement)
Le modèle dynamique décrit le comportement dynamique et temporel du
système :
Structurer les interactions entre objets (diagramme de collaboration) et leur
séquencement temporel, ie ordre d'exécution des méthodes (diagramme de
séquence)
Spécifier les séquences d’etats possibles des objets (automates) : diagramme
d’etat-transition
18
Diagramme de classe : UML
Nom de la classe
+ : public
# : protégé
- : private
méthodes
Attributs ou champs
Une classe
19
Questions
Faire le diagramme de classe d’un complexe
Quels sont ses attributs ?
Donnez les prototypes de 4 méthodes utiles
20
1 / 50 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !