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 l'interface ou les textes ? Ou savez-vous comment améliorer l'interface utilisateur de StudyLib ? N'hésitez pas à envoyer vos suggestions. C'est très important pour nous!