SlideShare une entreprise Scribd logo
Programmation Orientée Objets avec JAVA
1
Abdelwahab.naji@gmail.com
2
Présentation
de la POO
La programmation orientée objet
3
Il s’agit de manipuler des types personnalisés
Ces types peuvent être:
 Prédéfinis dans les bibliothèques du langage Orienté Objet
 Ou définis par le développeur
Le type personnalisé représente une entité« Classe dans la
suite du cours » qui donne lieu à des objets
Les objets et leurs interactions dans l’environnement d’exécution
représentent le résultat « réalisation du besoin » attendu par le
programme
La méthode Orientée Objet
La programmation orientée objet
4
1. Classe et Objet
2. Encapsulation (Accessibilité)
3. Héritage
4. Polymorphisme
Les principaux concepts de la Programmation Orientée Objet:
5
Concept N° 1
Classe et Objet
Classe et Objet
6
Exemple d’introduction
L’exemple que nous allons traiter contient les éléments suivants:
 une classe « Point » qui va servir comme un type complexe et personnalisé
et dont le code source est dans le fichier Point.java
 Une classe « Program » qui va servir comme programme principal et dont le
code source est dans le fichier Program.java
 Les deux classes appartiennent au même package : com.step1
Expression des besoins du projet
7
Diagramme de cas d’utilisation
Système de gestion des points
Créer un Point
Afficher les
informations
d’un point
User
Modifier un
Point
Classe et Objet
8
Dans cette partie, nous allons traiter les concepts suivants:
 Classe
 Attributs
 Constructeur & Objet
 package
 Méthodes
 Objet courant
 Constructeur avec paramètres
 Membres statiques
NB: Durant cette partie, nous nous limitons à l’usage de la visibilité public des attributs
Classe et Objet
9
Dans cette partie, nous allons traiter les concepts suivants:
 Classe
 Attributs
 Constructeur & Objet
 package
 Méthodes
 Objet courant
 Constructeur avec paramètres
 Membres statiques
NB: Durant cette partie, nous nous limitons à l’usage de la visibilité public des attributs
Classe: Qu’est ce que c’est?
1
 Une classe représente un type personnalisé et complexe.
 Le code source d’une classe appartient à un fichier dont l’extension
est « .java»
 Une classe a des membres:
 Les attributs
 Les méthodes
 Les membres doivent avoir une visibilité
 private, public, protected, par défaut
 Une classe appartient à un package
Les éléments d’une classe
1
Nom de la classe
Les attributs
Compartiment 1
Compartiment 2
Compartiment 3 Les méthodes
Point
+abscisse: entier
+ordonne:entier
+couleur:String
+identite():void
Les classes et leurs relations sont conçues dans la phase de conception.
(CF diagramme de classes en UML)
Compartiment Désignation Exemple
Représentation UML d’une classe
1
Point
-abscisse: entier
-ordonnee: entier
-couleur:String
+identite():void
+autreMethode():type
Nom de la classe
Les attributs
Les méthodes
Les membres
Visibilité
Le nom de la classe
1
Le nom de la classe est obligatoire. Par convention il commence avec
une lettre majuscule.
class Point{// début de la classe
} //fin de la classe
Exemple
Classe et Objet
1
Dans cette partie, nous allons traiter les concepts suivants:
 Classe
 Attributs
 Constructeur & Objet
 package
 Méthodes
 Objet courant
 Constructeur avec paramètres
 Membres statiques
NB: Durant cette partie, nous nous limitons à l’usage de la visibilité public des attributs
Les attributs de la classe
1
class Point{
public double abscisse;
public double ordonnee;
public String couleur="noir";
} //fin de la classe
Exemple
Pour le moment, nous acceptons le modificateur public représente la visibilité des
attributs
CF. Encapsulation des attributs
 Les attributs d’une classe constituent les caractéristiques des objets générés
à partir de cette classe
 Un attribut est caractérisé par :
 un nom
 un type
 une visibilité (portée)
 Éventuellement une valeur initiale
Une classe et ses attributs
1
package com.setp1;
public class Point
{
public double abscisse;// attribut 1
public double ordonnee; //attribut 2
public string couleur= "noir";//attribut3;
}
La classe « Point » décrivant un type complexe
Une autre classe de tests
1
package com.setp1;
public class Program {
public static void main(String[] args) {
}
}
Une classe « Program» représentant le programme principal et
contenant la méthode main
Classe et Objet
1
package com.setp1;
public class Program {
public static void main(String[] args) {
Point p; //variable d’un type complexe(classe)//
p = new Point();
p.abscisse = 4;
p.ordonnee = 0;
p.couleur="verte";
System.out.println("Point (" + p.abscisse+ "," + p.ordonnee + "),"+p.couleur);
}
}
Un programme principal utilisant la classe « Point » Vs Programme simple
1
Un programme principal utilisant la classe « Point » Vs Programme simple
package com.tests;
public class Program{
public static void main(string[] args){
//entrée
int a;
a=3;
System.out.println("a=" + a); //ligne 3
}
}
Classe et Objet
2
Type primitif (simple) vs type classe (complexe)
Le résultat du programme utilisant la classe Point
Le résultat du programme de la variable de type primitif
Classe et Objet
2
Type primitif (simple) vs type classe (complexe)
Analyse de l’exemple de gestion de la variable de type primitif (int)
 Ligne 6: création de la variable a et allocation de l’espace mémoire nécessaire
pour stocker l’entier a
 Ligne 7: affecter la valeur 3 à la variable a
 ligne 8 : affichage de la valeur de a
Utilisation directe des types primitifs
Classe et Objet
2
Type primitif (simple) vs type classe (complexe)
Analyse de l’exemple de gestion de la variable de type complexe et personnalisé (Point)
 Ligne 6: création d’une référence de type Point
 Ligne 7: Allocation de l’espace mémoire pour stocker le Point P à l’aide du
constructeur: Point() et la commande new
 Ligne 8,9,10: affecter des valeurs aux variables (attributs) primitifs appartenant à
la classe
 ligne 11: affichage des valeurs des variables du Point p
Classe et Objet
Classe et Objet
2
Dans cette partie, nous allons traiter les concepts suivants:
 Classe
 Attributs
 Constructeur & Objet
 package
 Méthodes
 Objet courant
 Constructeur avec paramètres
 Membres statiques
NB: Durant cette partie, nous nous limitons à l’usage de la visibilité public des attributs
Constructeur
2
Mettre en commentaire la ligne 7, puis compiler et exécuter
Conclusion: L’instruction p=new Point() permet d’allouer une zone mémoire pour un point en retournant
l’adresse de cette zone. L’adresse sera affectée à la référence p.
Par abus de langage qu’on utilise le terme objet au lieu de référence.
 Cette instruction permet de créer une instance ou un objet de type Point
 On ne peut pas utiliser directement une référence d’un objet mais il faut qu’elle pointe sur une zone
mémoire récupérée à travers la commande new Point();
Le constructeur: à quoi sert?
Tests et conclusions
L’IDE eclipse signale une erreur à la première utilisation du point p.
2
Le constructeur et son rôle
 Le constructeur d’une classe permet de créer des objets à l’aide de l’opérateur new
 Le constructeur d’une classe permet d’initialiser les valeurs des attributs de l’objet
 Le constructeur représente une méthode particulière
(CF section des méthodes)
 Un constructeur peut être surchargée
(CF section de surcharge des méthodes)
 Le constructeur par défaut ne contient aucun paramètre. Il peut exister d’une manière
implicite.
 Si un constructeur avec paramètres est implémenté, le constructeur par défaut doit être
explicité.
Exemple: usage d’un constructeur par défaut
public static void main(string[] args) {
Point p;// à ce niveau, nous pouvons pas utiliser l’objet p
p=new Point();// maintenant, l’objet p est utilisable
}
Constructeur
2
 La relation entre la classe et l’objet est une relation d’instanciation
 L’instance ou l’objet est la variable de type Maclasse (ici Point)
 Un constructeur permet de créer un objet ou une instance. On dit
aussi, il permet d’instancier une classe
Classe – Objet - Constructeur
Constructeur
Classe et Objet: représentation UML
2
Classe – Objet – Constructeur: Représentation UML
Point
-abscisse: double
-ordonnee: double
-couleur:String
+Point()
+identite()
+autreMethode()
p:Point
-abscisse:1
-ordonnee:2
-couleur:"rouge";
Classe Point
Objet p
L’objet
2
Objet
 Un objet est une structure informatique définie par un état et un
comportement
 Objet=état + comportement
 L’état regroupe les valeurs instantanées de tous les attributs de
l’objet.
 Le comportement regroupe toutes les compétences et décrit les
actions et les réactions de l’objet. Autrement dit le comportement est
défini par les opérations que l’objet peut effectuer.
 L’état d’un objet peut changer dans le temps.
 Généralement, c’est le comportement qui modifie l’état de l’objet
Classe et Objet
2
Dans cette partie, nous allons traiter les concepts suivants:
 Classe
 Attributs
 Constructeur & Objet
 package
 Méthodes
 Objet courant
 Constructeur avec paramètres
 Membres statiques
NB: Durant cette partie, nous nous limitons à l’usage de la visibilité public des attributs
Package
3
Tests et conclusions
 Créer un package com.fruits;
 Créer une classe pomme dans ce package
 Les classes Pomme et Point n’appartiennent pas au même package
 le type Pomme(la classe Pomme) n’est pas connue dans la classe Program
3
Tests et conclusions
 Dans le fichier source de la classe Program, spécifier le chemin complet de la classe
Pomme: com.fruits.Pomme
 Spécifier le package de la classe à utiliser permet de la reconnaitre
 Cette méthode, nous oblige à chaque utilisation de spécifier le chemin
complet. Ceci complique l’écriture du code!!
Méthode 1
Package
3
 Dans le fichier source de la classe Program, ajouter la directive
import com.fruits.Pomme; au début du programme
 la classe Pomme est connue
 Cette méthode évite d’écrire à chaque fois le chemin complet
Méthode 2
Tests et conclusions
Package
3
 Une classe peut appartenir à un seule package
 En java, les packages permettent une structuration physique des
éléments du code source
 Un package peut contenir plusieurs classes
 Le package permet une meilleure organisation des différents
éléments du projet
NB: Pour une bonne subdivision du projet en plusieurs packages,
voir la partie diagramme de package en UML
Package
Package
3
 Les packages offrent un mécanisme général pour la partition des
modèles et le regroupement des éléments de la modélisation
 Chaque package est représenté graphiquement par un dossier
 Les packages divisent et organisent les modèles de la même
manière que les dossier organisent le système de fichier
Nom du package
Représentation UML des packages
CF: diagramme de package. Ce diagramme vient après!! le diagramme de use case
Le package-Exemple
3
Com.step1
Représentation UML des packages
Point
-abscisse: entier
-ordonnee: entier
-couleur:String
+Point()
+identite()
+autreMethode()
Classe et Objet
3
Dans cette partie, nous allons traiter les concepts suivants:
 Classe
 Attributs
 Constructeur & Objet
 package
 Méthodes
 Objet courant
 Constructeur avec paramètres
 Membres statiques
NB: Durant cette partie, nous nous limitons à l’usage de la visibilité public des attributs
Les méthodes
3
 Les méthodes ou les opérations d’une classe décrivent le
comportement des objets générés à partir de cette classe.
 Les méthodes assurent l’interaction entre les différents objets à
travers l’échange de messages
 Une méthode permet de réaliser une ou plusieurs tâches
 Une méthode représente une fonction ou une procédure qui permet
d’exécuter plusieurs instructions
 Une méthode est caractérisée par:
 Un nom
 Une signature (type de retour et paramètres)
 Une visibilité (portée)
3
public class Point{
// les attributs
public void mon_etat()
{
System.out.println ("mon état:");
System.out.println("("+abscisse+ ","+ordonnee+") "+couleur );
}
} //fin de la classe
Les méthodes
Les méthodes
3
Utilisation de la méthode
Résultat du programme
Les méthodes
4
public class Point{
// les attributs
public void changer_coordonnees(double abs,double ord){
abscisse=abs;
ordonnee=ord;
}
} //fin de la classe
Ajouter une méthode pour changer l’état d’un objet
Les méthodes
4
Utilisation de la méthode changer_coordonnees
Résultat du programme
Les méthodes
4
Surcharge des méthodes
 Soit la méthode maj_etat () suivante qui permet de changer l’état de l’objet
Le même nom avec des
signatures différentes
=
surcharge
public void maj_etat(){
abscisse=0;
ordonnee=0;
couleur="noir";
}
public void maj_etat(double abs,double ord){
abscisse=abs;
ordonnee=ord;
couleur="noir";
}
public void maj_etat(double abs,double ord,String c){
abscisse=abs;
ordonnee=ord;
couleur=c;
}
 Cette méthode peut être surchargée en changeant sa signature
Les méthodes
4
Surcharge de la méthode maj_etat
4
Utilisation de la méthode maj_etat
Résultat du programme
Les méthodes
Classe et Objet
4
Dans cette partie, nous allons traiter les concepts suivants:
 Classe
 Attributs
 Constructeur & Objet
 package
 Méthodes
 Objet courant
 Constructeur avec paramètres
 Membres statiques
NB: Durant cette partie, nous nous limitons à l’usage de la visibilité public des attributs
L’objet courant
4
 Dans une méthode, on appelle « objet courant » , l’objet sur lequel a été appelée
la méthode
 Un objet courant est représenté par la référence « this »
 l’objet sur lequel a été appelée la méthode
maj_etat(8,8) est p
 La référence p et la référence « this » pointent sur
la même zone mémoire.
public void maj_etat(double abscisse,double
ordonnee,String couleur){
this.abscisse=abscisse;
this.ordonnee=ordonnee;
this.couleur=couleur;
}
L’objet courant
4
Exemple
Classe et Objet
4
Exercice d’application
•Écrit une méthode dans la classe point qui permet de calculer la distance entre
deux points
•Utiliser la méthode sqrt de la bibliothèque Math
Math.sqrt(a): permet de calculer la racine carrée de a
Classe et Objet
4
Dans cette partie, nous allons traiter les concepts suivants:
 Classe
 Attributs
 Constructeur & Objet
 package
 Méthodes
 Objet courant
 Constructeur avec paramètres
 Membres statiques
NB: Durant cette partie, nous nous limitons à l’usage de la visibilité public des attributs
Le constructeur avec paramètres
5
 Comme pour les méthodes, un constructeur peut être surchargé
 Un constructeur peut avoir un ou plusieurs arguments pour initialiser l’objet. Ces
arguments sont fournis pendant l’initialisation avec le mot clé new
Compléter le programme pour
afficher l’état de chaque objet
Le constructeur avec paramètres
5
 Une fois un constructeur avec
paramètres est mis en place, le
constructeur sans paramètres par défaut
n’est plus implicite.
Exemple
Le constructeur avec paramètres
5
 si nous avons besoin d’un constructeur sans paramètres, il faut écrire son code.
Les instructions du constructeur par
défaut ne sont pas obligatoires. Nous
pouvons mettre:
Classe et Objet
5
Diagramme d’objets
p1:Point
abscisse:
ordonne:
couleur:
P4:Point
abscisse:3
ordonne: 3
couleur:
p3:Point
abscisse:2
ordonne: 2
couleur:
p2:Point
abscisse:1
ordonne: 1
couleur:
Classe et Objet
5
Diagramme de séquence d’intéractions
Un diagramme de séquences d’intéractions décrit les interactions entre les utilisateurs et les objets
:user p1:Point
p1=new Point(1,1)
Objet créé
:Program
demande créer point
Demande de saisie
Saisir coordonnées (1,1)
Message création
Affichage point
p1.mon_etat()
informations
Informations affichées
Classe et Objet
5
Dans cette partie, nous allons traiter les concepts suivants:
 Classe
 Attributs
 Constructeur & Objet
 package
 Méthodes
 Objet courant
 Constructeur avec paramètres
 Membres statiques
NB: Durant cette partie, nous nous limitons à l’usage de la visibilité public des attributs
Les membres statiques
5
 Dans l’exemple de la classe Point, chaque objet Point possède ses
propres variables abscisse, ordonnée et couleur. Ces variables sont
appelées variables d’instances.
 Les objets d’une même classe peuvent partager des mêmes
variables qui sont stockées au niveau de la classe. Ce genre de
variables s’appellent les variables statiques ou variables de classes.
 Un attribut statique d’une classe est un attribut qui appartient à la
classe et partagé par tous les objets de cette classe. Comme un
attribut, une méthode peut être déclarée statique, ce qui signifie
qu’elle appartient à la classe et partagée par toutes les instances de
cette classe.
 Dans la notation UML, les membres statiques d’une classe sont
soulignés.
Les membres statiques
5
Les membres statiques (attributs ou méthodes)
 Un attribut membre statique c’est une variable de la classe
 La valeur de la variable statique est indépendante de l’objet
 Quelque soit le nombre d’objet crées, cette variable a une seule valeur
 Cette variable peut avoir une valeur même si aucun objet n’existe
Un attribut statique
Les membres statiques
5
Les membres statiques (attributs ou méthodes)
 Un attribut membre non statique c’est une variable de l’objet
Un attribut non statique
Les membres statiques
5
Les membres statiques (attributs ou méthodes)
 Un attribut membre statique c’est une variable de la classe
Un attribut statique
 La valeur de la variable statique est partagée entre tous les objets de la classe point
Les membres statiques
6
Les membres statiques (attributs ou méthodes)
Un attribut statique
 La variable « var_static » est accessible à travers le nom de la classe
Les membres statiques
6
Les membres statiques (attributs ou méthodes)
 Une méthode membre statique c’est une méthode de la classe
 Les tâches d’une méthode statique sont indépendantes des comportements des objets
Une méthode statique
Les membres statiques
6
Les membres statiques (attributs ou méthodes)
 Une méthode membre statique c’est une méthode de la classe
Une méthode statique
 L’objet p peut accéder à la méthode « methode_statique() »
Les membres statiques
6
Les membres statiques (attributs ou méthodes)
 Exercice:
Des tests à faire pour vérifier ces propriétés
 La valeur d’une variable statique est accessible par tous les objets de la classe à
travers des méthodes non statiques
 Une méthode statique est accessible aux méthodes non statiques
Les membres statiques
6
Les membres statiques (attributs ou méthodes)
 Les méthodes statiques ne peuvent accéder directement aux membres non statiques
 La méthode methode_statique() ne peux pas accéder ni aux variables d’objets ni aux
méthodes non statiques
Les membres statiques
6
Exercice
Écrit le code nécessaire pour comptabiliser le nombre de points crées
Classe-objet
6
Créer une application pour gérer les segments comme étant des formes géométriques
Un segment est défini par deux extrémités qui représentent chacun un point de l’espace géométrique et par une
couleur.
•Créer le diagramme de cas d’utilisation, le diagramme de classe, le diagramme d’objets et le diagramme de
séquence de votre projet.
•Dans cette application, il faut faire appel aux différentes techniques introduites à l’étape 1 et 2. pour chaque bout
de code écrit, préciser le concept introduit.
L’application doit permettre les opérations suivantes:
•Créer un segment (Constructeurs)
•Afficher les informations d’un segment (toString())
•Calculer la longueur d’un segment (getLongueur())
•Vérifier si un point appartient au segment (Appartient (Point p))
•Comptabiliser le nombre de segments créés
•Créer un scénario d’exécution à l’aide d’une classe contenant le main()
Application N°1
Classe-objet
6
Application N°2
Conclusion
6
Dans cette partie, nous avons traiter les concepts suivants:
 Classe
 Attributs
 Constructeur & Objet
 package
 Méthodes
 Objet courant
 Constructeur avec paramètres
 Membres statiques
NB: Durant cette partie, nous nous sommes limités à l’usage de la visibilité public des attributs
Fin du cours N°2
6
Abdelwahab.naji@gmail.com
Programmation Orientée Objets avec JAVA

Contenu connexe

Tendances

Cours python avancé
Cours python avancéCours python avancé
Cours python avancé
pierrepo
 
Base de donnees Avancees et Intro à NoSQL.ppt
Base de donnees Avancees et Intro à  NoSQL.pptBase de donnees Avancees et Intro à  NoSQL.ppt
Base de donnees Avancees et Intro à NoSQL.ppt
Idriss22
 
Exercice 1 java Héritage
Exercice 1 java HéritageExercice 1 java Héritage
Exercice 1 java Héritage
NadaBenLatifa
 
Corrige tp java
Corrige tp javaCorrige tp java
Corrige tp java
Maya Medjdoub
 
Chapitre4: Pointeurs et références
Chapitre4: Pointeurs et références Chapitre4: Pointeurs et références
Chapitre4: Pointeurs et références
Aziz Darouichi
 
Ch2-Notions de base & actions élémentaires.pdf
Ch2-Notions de base & actions élémentaires.pdfCh2-Notions de base & actions élémentaires.pdf
Ch2-Notions de base & actions élémentaires.pdf
FadouaBouafifSamoud
 
Correction examen-java-avancé-1
Correction examen-java-avancé-1Correction examen-java-avancé-1
Correction examen-java-avancé-1
vangogue
 
Chp6 - De UML vers C++
Chp6 - De UML vers C++Chp6 - De UML vers C++
Chp6 - De UML vers C++
Lilia Sfaxi
 
Java
JavaJava
POO Java Chapitre 6 Exceptions
POO Java  Chapitre 6 ExceptionsPOO Java  Chapitre 6 Exceptions
POO Java Chapitre 6 Exceptions
Mouna Torjmen
 
Exercice 2 java Héritage
Exercice 2  java HéritageExercice 2  java Héritage
Exercice 2 java Héritage
NadaBenLatifa
 
Fascicule tp programmation c
Fascicule tp programmation cFascicule tp programmation c
Fascicule tp programmation c
Missaoui Abdelbaki
 
Tp java ee.pptx
Tp java ee.pptxTp java ee.pptx
Tp java ee.pptx
Eric Bourdet
 
Chapitre 6 traitement des exceptions
Chapitre 6  traitement des exceptionsChapitre 6  traitement des exceptions
Chapitre 6 traitement des exceptions
Amir Souissi
 
POO
POOPOO
Chap 6 : classes et interfaces
Chap 6 : classes et interfacesChap 6 : classes et interfaces
Chap 6 : classes et interfaces
Aziz Darouichi
 
(services)
(services)(services)
(services)
Anouar Abtoy
 
Correction Examen 2016-2017 POO .pdf
Correction Examen 2016-2017 POO .pdfCorrection Examen 2016-2017 POO .pdf
Correction Examen 2016-2017 POO .pdf
slimyaich3
 
Igl cours 3 - introduction à uml
Igl   cours 3 - introduction à umlIgl   cours 3 - introduction à uml
Igl cours 3 - introduction à uml
Mohammed Amine Mostefai
 
POO Java Introduction
POO Java IntroductionPOO Java Introduction
POO Java Introduction
Mouna Torjmen
 

Tendances (20)

Cours python avancé
Cours python avancéCours python avancé
Cours python avancé
 
Base de donnees Avancees et Intro à NoSQL.ppt
Base de donnees Avancees et Intro à  NoSQL.pptBase de donnees Avancees et Intro à  NoSQL.ppt
Base de donnees Avancees et Intro à NoSQL.ppt
 
Exercice 1 java Héritage
Exercice 1 java HéritageExercice 1 java Héritage
Exercice 1 java Héritage
 
Corrige tp java
Corrige tp javaCorrige tp java
Corrige tp java
 
Chapitre4: Pointeurs et références
Chapitre4: Pointeurs et références Chapitre4: Pointeurs et références
Chapitre4: Pointeurs et références
 
Ch2-Notions de base & actions élémentaires.pdf
Ch2-Notions de base & actions élémentaires.pdfCh2-Notions de base & actions élémentaires.pdf
Ch2-Notions de base & actions élémentaires.pdf
 
Correction examen-java-avancé-1
Correction examen-java-avancé-1Correction examen-java-avancé-1
Correction examen-java-avancé-1
 
Chp6 - De UML vers C++
Chp6 - De UML vers C++Chp6 - De UML vers C++
Chp6 - De UML vers C++
 
Java
JavaJava
Java
 
POO Java Chapitre 6 Exceptions
POO Java  Chapitre 6 ExceptionsPOO Java  Chapitre 6 Exceptions
POO Java Chapitre 6 Exceptions
 
Exercice 2 java Héritage
Exercice 2  java HéritageExercice 2  java Héritage
Exercice 2 java Héritage
 
Fascicule tp programmation c
Fascicule tp programmation cFascicule tp programmation c
Fascicule tp programmation c
 
Tp java ee.pptx
Tp java ee.pptxTp java ee.pptx
Tp java ee.pptx
 
Chapitre 6 traitement des exceptions
Chapitre 6  traitement des exceptionsChapitre 6  traitement des exceptions
Chapitre 6 traitement des exceptions
 
POO
POOPOO
POO
 
Chap 6 : classes et interfaces
Chap 6 : classes et interfacesChap 6 : classes et interfaces
Chap 6 : classes et interfaces
 
(services)
(services)(services)
(services)
 
Correction Examen 2016-2017 POO .pdf
Correction Examen 2016-2017 POO .pdfCorrection Examen 2016-2017 POO .pdf
Correction Examen 2016-2017 POO .pdf
 
Igl cours 3 - introduction à uml
Igl   cours 3 - introduction à umlIgl   cours 3 - introduction à uml
Igl cours 3 - introduction à uml
 
POO Java Introduction
POO Java IntroductionPOO Java Introduction
POO Java Introduction
 

En vedette

Structuration de données, recherche et édition
Structuration de données, recherche et éditionStructuration de données, recherche et édition
Structuration de données, recherche et édition
Equipex Biblissima
 
Utilisation du big data en entreprise
Utilisation du big data en entrepriseUtilisation du big data en entreprise
Utilisation du big data en entreprise
Pierrick Thébault
 
diagramme des cas d'utilisation
diagramme des cas d'utilisationdiagramme des cas d'utilisation
diagramme des cas d'utilisation
Amir Souissi
 
Merise exercicesmcdcorriges-121007174045-phpapp01
Merise exercicesmcdcorriges-121007174045-phpapp01Merise exercicesmcdcorriges-121007174045-phpapp01
Merise exercicesmcdcorriges-121007174045-phpapp01
SaberCraft Zeriguine
 
Design patterns - Exemples en Java
Design patterns - Exemples en JavaDesign patterns - Exemples en Java
Design patterns - Exemples en Java
Oussama BEN KHIROUN
 
Génie Logiciel : les tests
Génie Logiciel : les testsGénie Logiciel : les tests
Génie Logiciel : les tests
Mohammed Amine Mostefai
 
Alphorm.com Support de la formation Hacking & Sécurité, Expert - Vulnérabilit...
Alphorm.com Support de la formation Hacking & Sécurité, Expert - Vulnérabilit...Alphorm.com Support de la formation Hacking & Sécurité, Expert - Vulnérabilit...
Alphorm.com Support de la formation Hacking & Sécurité, Expert - Vulnérabilit...
Alphorm
 
Model Relationnel
Model RelationnelModel Relationnel
Model Relationnel
ADB2
 
La recherche orientée par la conception, une voie pour soutenir le développe...
 La recherche orientée par la conception, une voie pour soutenir le développe... La recherche orientée par la conception, une voie pour soutenir le développe...
La recherche orientée par la conception, une voie pour soutenir le développe...
Université de Sherbrooke
 

En vedette (9)

Structuration de données, recherche et édition
Structuration de données, recherche et éditionStructuration de données, recherche et édition
Structuration de données, recherche et édition
 
Utilisation du big data en entreprise
Utilisation du big data en entrepriseUtilisation du big data en entreprise
Utilisation du big data en entreprise
 
diagramme des cas d'utilisation
diagramme des cas d'utilisationdiagramme des cas d'utilisation
diagramme des cas d'utilisation
 
Merise exercicesmcdcorriges-121007174045-phpapp01
Merise exercicesmcdcorriges-121007174045-phpapp01Merise exercicesmcdcorriges-121007174045-phpapp01
Merise exercicesmcdcorriges-121007174045-phpapp01
 
Design patterns - Exemples en Java
Design patterns - Exemples en JavaDesign patterns - Exemples en Java
Design patterns - Exemples en Java
 
Génie Logiciel : les tests
Génie Logiciel : les testsGénie Logiciel : les tests
Génie Logiciel : les tests
 
Alphorm.com Support de la formation Hacking & Sécurité, Expert - Vulnérabilit...
Alphorm.com Support de la formation Hacking & Sécurité, Expert - Vulnérabilit...Alphorm.com Support de la formation Hacking & Sécurité, Expert - Vulnérabilit...
Alphorm.com Support de la formation Hacking & Sécurité, Expert - Vulnérabilit...
 
Model Relationnel
Model RelationnelModel Relationnel
Model Relationnel
 
La recherche orientée par la conception, une voie pour soutenir le développe...
 La recherche orientée par la conception, une voie pour soutenir le développe... La recherche orientée par la conception, une voie pour soutenir le développe...
La recherche orientée par la conception, une voie pour soutenir le développe...
 

Similaire à Java cours n° 2 - classe-objet-constructeur

Cours java smi 2007 2008
Cours java smi 2007 2008Cours java smi 2007 2008
Cours java smi 2007 2008
Khalil Lechheb
 
Cours java smi 2007 2008
Cours java smi 2007 2008Cours java smi 2007 2008
Cours java smi 2007 2008
Khalil Lechheb
 
c# programmation orientée objet (Classe & Objet)
c# programmation orientée objet (Classe & Objet)c# programmation orientée objet (Classe & Objet)
c# programmation orientée objet (Classe & Objet)
Mahfoud EL HOUDAIGUI
 
Pensez objets avec java
Pensez objets avec javaPensez objets avec java
Pensez objets avec java
Asmaa BENGUEDDACH
 
POO-chapitre3.pptx
POO-chapitre3.pptxPOO-chapitre3.pptx
POO-chapitre3.pptx
ImaneLoukili7
 
UML Part 4- diagrammres de classes et d'objets mansouri
UML Part 4- diagrammres de classes et d'objets mansouriUML Part 4- diagrammres de classes et d'objets mansouri
UML Part 4- diagrammres de classes et d'objets mansouri
Mansouri Khalifa
 
POO-JAVA-partie-1.pdf
POO-JAVA-partie-1.pdfPOO-JAVA-partie-1.pdf
POO-JAVA-partie-1.pdf
YasushiTsubakik
 
Formation C# - Cours 3 - Programmation objet
Formation C# - Cours 3 - Programmation objetFormation C# - Cours 3 - Programmation objet
Formation C# - Cours 3 - Programmation objet
kemenaran
 
Poo en c++ les relations entre classes
Poo en c++ les relations entre classesPoo en c++ les relations entre classes
Poo en c++ les relations entre classes
Amina HAMEURLAINE
 
POO-Cours.pdf
POO-Cours.pdfPOO-Cours.pdf
POO-Cours.pdf
BoubakerMedanas
 
programmation orienté objet c++
programmation orienté objet c++programmation orienté objet c++
programmation orienté objet c++
coursuniv
 
Java-2eme partie.pptx
Java-2eme partie.pptxJava-2eme partie.pptx
Java-2eme partie.pptx
HassanAbdel
 
Chapitre 2 classe et objet
Chapitre 2   classe et objetChapitre 2   classe et objet
Chapitre 2 classe et objet
Amir Souissi
 
POO -- (programmation orienté objet).pdf
POO -- (programmation orienté objet).pdfPOO -- (programmation orienté objet).pdf
POO -- (programmation orienté objet).pdf
hassanichaymae2903
 
Introduction à scala
Introduction à scalaIntroduction à scala
Introduction à scala
SOAT
 
Qualité de code et bonnes pratiques
Qualité de code et bonnes pratiquesQualité de code et bonnes pratiques
Qualité de code et bonnes pratiques
ECAM Brussels Engineering School
 
JAVA-UIK-CHAP6-POO HERITAGE JAVA
JAVA-UIK-CHAP6-POO HERITAGE JAVAJAVA-UIK-CHAP6-POO HERITAGE JAVA
JAVA-UIK-CHAP6-POO HERITAGE JAVA
Aymen Bedwivski
 
Java uik-chap6-poo heritage v2 java
Java uik-chap6-poo heritage v2 javaJava uik-chap6-poo heritage v2 java
Java uik-chap6-poo heritage v2 java
Amel Morchdi
 
Diagramme de Classe
Diagramme de ClasseDiagramme de Classe
Diagramme de Classe
abdoMarocco
 

Similaire à Java cours n° 2 - classe-objet-constructeur (20)

Cours java smi 2007 2008
Cours java smi 2007 2008Cours java smi 2007 2008
Cours java smi 2007 2008
 
Cours java smi 2007 2008
Cours java smi 2007 2008Cours java smi 2007 2008
Cours java smi 2007 2008
 
c# programmation orientée objet (Classe & Objet)
c# programmation orientée objet (Classe & Objet)c# programmation orientée objet (Classe & Objet)
c# programmation orientée objet (Classe & Objet)
 
Pensez objets avec java
Pensez objets avec javaPensez objets avec java
Pensez objets avec java
 
POO-chapitre3.pptx
POO-chapitre3.pptxPOO-chapitre3.pptx
POO-chapitre3.pptx
 
UML Part 4- diagrammres de classes et d'objets mansouri
UML Part 4- diagrammres de classes et d'objets mansouriUML Part 4- diagrammres de classes et d'objets mansouri
UML Part 4- diagrammres de classes et d'objets mansouri
 
POO-JAVA-partie-1.pdf
POO-JAVA-partie-1.pdfPOO-JAVA-partie-1.pdf
POO-JAVA-partie-1.pdf
 
Formation C# - Cours 3 - Programmation objet
Formation C# - Cours 3 - Programmation objetFormation C# - Cours 3 - Programmation objet
Formation C# - Cours 3 - Programmation objet
 
Poo en c++ les relations entre classes
Poo en c++ les relations entre classesPoo en c++ les relations entre classes
Poo en c++ les relations entre classes
 
POO-Cours.pdf
POO-Cours.pdfPOO-Cours.pdf
POO-Cours.pdf
 
programmation orienté objet c++
programmation orienté objet c++programmation orienté objet c++
programmation orienté objet c++
 
Java-2eme partie.pptx
Java-2eme partie.pptxJava-2eme partie.pptx
Java-2eme partie.pptx
 
Theme 10
Theme 10Theme 10
Theme 10
 
Chapitre 2 classe et objet
Chapitre 2   classe et objetChapitre 2   classe et objet
Chapitre 2 classe et objet
 
POO -- (programmation orienté objet).pdf
POO -- (programmation orienté objet).pdfPOO -- (programmation orienté objet).pdf
POO -- (programmation orienté objet).pdf
 
Introduction à scala
Introduction à scalaIntroduction à scala
Introduction à scala
 
Qualité de code et bonnes pratiques
Qualité de code et bonnes pratiquesQualité de code et bonnes pratiques
Qualité de code et bonnes pratiques
 
JAVA-UIK-CHAP6-POO HERITAGE JAVA
JAVA-UIK-CHAP6-POO HERITAGE JAVAJAVA-UIK-CHAP6-POO HERITAGE JAVA
JAVA-UIK-CHAP6-POO HERITAGE JAVA
 
Java uik-chap6-poo heritage v2 java
Java uik-chap6-poo heritage v2 javaJava uik-chap6-poo heritage v2 java
Java uik-chap6-poo heritage v2 java
 
Diagramme de Classe
Diagramme de ClasseDiagramme de Classe
Diagramme de Classe
 

Java cours n° 2 - classe-objet-constructeur

  • 1. Programmation Orientée Objets avec JAVA 1 Abdelwahab.naji@gmail.com
  • 3. La programmation orientée objet 3 Il s’agit de manipuler des types personnalisés Ces types peuvent être:  Prédéfinis dans les bibliothèques du langage Orienté Objet  Ou définis par le développeur Le type personnalisé représente une entité« Classe dans la suite du cours » qui donne lieu à des objets Les objets et leurs interactions dans l’environnement d’exécution représentent le résultat « réalisation du besoin » attendu par le programme La méthode Orientée Objet
  • 4. La programmation orientée objet 4 1. Classe et Objet 2. Encapsulation (Accessibilité) 3. Héritage 4. Polymorphisme Les principaux concepts de la Programmation Orientée Objet:
  • 6. Classe et Objet 6 Exemple d’introduction L’exemple que nous allons traiter contient les éléments suivants:  une classe « Point » qui va servir comme un type complexe et personnalisé et dont le code source est dans le fichier Point.java  Une classe « Program » qui va servir comme programme principal et dont le code source est dans le fichier Program.java  Les deux classes appartiennent au même package : com.step1
  • 7. Expression des besoins du projet 7 Diagramme de cas d’utilisation Système de gestion des points Créer un Point Afficher les informations d’un point User Modifier un Point
  • 8. Classe et Objet 8 Dans cette partie, nous allons traiter les concepts suivants:  Classe  Attributs  Constructeur & Objet  package  Méthodes  Objet courant  Constructeur avec paramètres  Membres statiques NB: Durant cette partie, nous nous limitons à l’usage de la visibilité public des attributs
  • 9. Classe et Objet 9 Dans cette partie, nous allons traiter les concepts suivants:  Classe  Attributs  Constructeur & Objet  package  Méthodes  Objet courant  Constructeur avec paramètres  Membres statiques NB: Durant cette partie, nous nous limitons à l’usage de la visibilité public des attributs
  • 10. Classe: Qu’est ce que c’est? 1  Une classe représente un type personnalisé et complexe.  Le code source d’une classe appartient à un fichier dont l’extension est « .java»  Une classe a des membres:  Les attributs  Les méthodes  Les membres doivent avoir une visibilité  private, public, protected, par défaut  Une classe appartient à un package
  • 11. Les éléments d’une classe 1 Nom de la classe Les attributs Compartiment 1 Compartiment 2 Compartiment 3 Les méthodes Point +abscisse: entier +ordonne:entier +couleur:String +identite():void Les classes et leurs relations sont conçues dans la phase de conception. (CF diagramme de classes en UML) Compartiment Désignation Exemple
  • 12. Représentation UML d’une classe 1 Point -abscisse: entier -ordonnee: entier -couleur:String +identite():void +autreMethode():type Nom de la classe Les attributs Les méthodes Les membres Visibilité
  • 13. Le nom de la classe 1 Le nom de la classe est obligatoire. Par convention il commence avec une lettre majuscule. class Point{// début de la classe } //fin de la classe Exemple
  • 14. Classe et Objet 1 Dans cette partie, nous allons traiter les concepts suivants:  Classe  Attributs  Constructeur & Objet  package  Méthodes  Objet courant  Constructeur avec paramètres  Membres statiques NB: Durant cette partie, nous nous limitons à l’usage de la visibilité public des attributs
  • 15. Les attributs de la classe 1 class Point{ public double abscisse; public double ordonnee; public String couleur="noir"; } //fin de la classe Exemple Pour le moment, nous acceptons le modificateur public représente la visibilité des attributs CF. Encapsulation des attributs  Les attributs d’une classe constituent les caractéristiques des objets générés à partir de cette classe  Un attribut est caractérisé par :  un nom  un type  une visibilité (portée)  Éventuellement une valeur initiale
  • 16. Une classe et ses attributs 1 package com.setp1; public class Point { public double abscisse;// attribut 1 public double ordonnee; //attribut 2 public string couleur= "noir";//attribut3; } La classe « Point » décrivant un type complexe
  • 17. Une autre classe de tests 1 package com.setp1; public class Program { public static void main(String[] args) { } } Une classe « Program» représentant le programme principal et contenant la méthode main
  • 18. Classe et Objet 1 package com.setp1; public class Program { public static void main(String[] args) { Point p; //variable d’un type complexe(classe)// p = new Point(); p.abscisse = 4; p.ordonnee = 0; p.couleur="verte"; System.out.println("Point (" + p.abscisse+ "," + p.ordonnee + "),"+p.couleur); } } Un programme principal utilisant la classe « Point » Vs Programme simple
  • 19. 1 Un programme principal utilisant la classe « Point » Vs Programme simple package com.tests; public class Program{ public static void main(string[] args){ //entrée int a; a=3; System.out.println("a=" + a); //ligne 3 } } Classe et Objet
  • 20. 2 Type primitif (simple) vs type classe (complexe) Le résultat du programme utilisant la classe Point Le résultat du programme de la variable de type primitif Classe et Objet
  • 21. 2 Type primitif (simple) vs type classe (complexe) Analyse de l’exemple de gestion de la variable de type primitif (int)  Ligne 6: création de la variable a et allocation de l’espace mémoire nécessaire pour stocker l’entier a  Ligne 7: affecter la valeur 3 à la variable a  ligne 8 : affichage de la valeur de a Utilisation directe des types primitifs Classe et Objet
  • 22. 2 Type primitif (simple) vs type classe (complexe) Analyse de l’exemple de gestion de la variable de type complexe et personnalisé (Point)  Ligne 6: création d’une référence de type Point  Ligne 7: Allocation de l’espace mémoire pour stocker le Point P à l’aide du constructeur: Point() et la commande new  Ligne 8,9,10: affecter des valeurs aux variables (attributs) primitifs appartenant à la classe  ligne 11: affichage des valeurs des variables du Point p Classe et Objet
  • 23. Classe et Objet 2 Dans cette partie, nous allons traiter les concepts suivants:  Classe  Attributs  Constructeur & Objet  package  Méthodes  Objet courant  Constructeur avec paramètres  Membres statiques NB: Durant cette partie, nous nous limitons à l’usage de la visibilité public des attributs
  • 24. Constructeur 2 Mettre en commentaire la ligne 7, puis compiler et exécuter Conclusion: L’instruction p=new Point() permet d’allouer une zone mémoire pour un point en retournant l’adresse de cette zone. L’adresse sera affectée à la référence p. Par abus de langage qu’on utilise le terme objet au lieu de référence.  Cette instruction permet de créer une instance ou un objet de type Point  On ne peut pas utiliser directement une référence d’un objet mais il faut qu’elle pointe sur une zone mémoire récupérée à travers la commande new Point(); Le constructeur: à quoi sert? Tests et conclusions L’IDE eclipse signale une erreur à la première utilisation du point p.
  • 25. 2 Le constructeur et son rôle  Le constructeur d’une classe permet de créer des objets à l’aide de l’opérateur new  Le constructeur d’une classe permet d’initialiser les valeurs des attributs de l’objet  Le constructeur représente une méthode particulière (CF section des méthodes)  Un constructeur peut être surchargée (CF section de surcharge des méthodes)  Le constructeur par défaut ne contient aucun paramètre. Il peut exister d’une manière implicite.  Si un constructeur avec paramètres est implémenté, le constructeur par défaut doit être explicité. Exemple: usage d’un constructeur par défaut public static void main(string[] args) { Point p;// à ce niveau, nous pouvons pas utiliser l’objet p p=new Point();// maintenant, l’objet p est utilisable } Constructeur
  • 26. 2  La relation entre la classe et l’objet est une relation d’instanciation  L’instance ou l’objet est la variable de type Maclasse (ici Point)  Un constructeur permet de créer un objet ou une instance. On dit aussi, il permet d’instancier une classe Classe – Objet - Constructeur Constructeur
  • 27. Classe et Objet: représentation UML 2 Classe – Objet – Constructeur: Représentation UML Point -abscisse: double -ordonnee: double -couleur:String +Point() +identite() +autreMethode() p:Point -abscisse:1 -ordonnee:2 -couleur:"rouge"; Classe Point Objet p
  • 28. L’objet 2 Objet  Un objet est une structure informatique définie par un état et un comportement  Objet=état + comportement  L’état regroupe les valeurs instantanées de tous les attributs de l’objet.  Le comportement regroupe toutes les compétences et décrit les actions et les réactions de l’objet. Autrement dit le comportement est défini par les opérations que l’objet peut effectuer.  L’état d’un objet peut changer dans le temps.  Généralement, c’est le comportement qui modifie l’état de l’objet
  • 29. Classe et Objet 2 Dans cette partie, nous allons traiter les concepts suivants:  Classe  Attributs  Constructeur & Objet  package  Méthodes  Objet courant  Constructeur avec paramètres  Membres statiques NB: Durant cette partie, nous nous limitons à l’usage de la visibilité public des attributs
  • 30. Package 3 Tests et conclusions  Créer un package com.fruits;  Créer une classe pomme dans ce package  Les classes Pomme et Point n’appartiennent pas au même package  le type Pomme(la classe Pomme) n’est pas connue dans la classe Program
  • 31. 3 Tests et conclusions  Dans le fichier source de la classe Program, spécifier le chemin complet de la classe Pomme: com.fruits.Pomme  Spécifier le package de la classe à utiliser permet de la reconnaitre  Cette méthode, nous oblige à chaque utilisation de spécifier le chemin complet. Ceci complique l’écriture du code!! Méthode 1 Package
  • 32. 3  Dans le fichier source de la classe Program, ajouter la directive import com.fruits.Pomme; au début du programme  la classe Pomme est connue  Cette méthode évite d’écrire à chaque fois le chemin complet Méthode 2 Tests et conclusions Package
  • 33. 3  Une classe peut appartenir à un seule package  En java, les packages permettent une structuration physique des éléments du code source  Un package peut contenir plusieurs classes  Le package permet une meilleure organisation des différents éléments du projet NB: Pour une bonne subdivision du projet en plusieurs packages, voir la partie diagramme de package en UML Package
  • 34. Package 3  Les packages offrent un mécanisme général pour la partition des modèles et le regroupement des éléments de la modélisation  Chaque package est représenté graphiquement par un dossier  Les packages divisent et organisent les modèles de la même manière que les dossier organisent le système de fichier Nom du package Représentation UML des packages CF: diagramme de package. Ce diagramme vient après!! le diagramme de use case
  • 35. Le package-Exemple 3 Com.step1 Représentation UML des packages Point -abscisse: entier -ordonnee: entier -couleur:String +Point() +identite() +autreMethode()
  • 36. Classe et Objet 3 Dans cette partie, nous allons traiter les concepts suivants:  Classe  Attributs  Constructeur & Objet  package  Méthodes  Objet courant  Constructeur avec paramètres  Membres statiques NB: Durant cette partie, nous nous limitons à l’usage de la visibilité public des attributs
  • 37. Les méthodes 3  Les méthodes ou les opérations d’une classe décrivent le comportement des objets générés à partir de cette classe.  Les méthodes assurent l’interaction entre les différents objets à travers l’échange de messages  Une méthode permet de réaliser une ou plusieurs tâches  Une méthode représente une fonction ou une procédure qui permet d’exécuter plusieurs instructions  Une méthode est caractérisée par:  Un nom  Une signature (type de retour et paramètres)  Une visibilité (portée)
  • 38. 3 public class Point{ // les attributs public void mon_etat() { System.out.println ("mon état:"); System.out.println("("+abscisse+ ","+ordonnee+") "+couleur ); } } //fin de la classe Les méthodes
  • 39. Les méthodes 3 Utilisation de la méthode Résultat du programme
  • 40. Les méthodes 4 public class Point{ // les attributs public void changer_coordonnees(double abs,double ord){ abscisse=abs; ordonnee=ord; } } //fin de la classe Ajouter une méthode pour changer l’état d’un objet
  • 41. Les méthodes 4 Utilisation de la méthode changer_coordonnees Résultat du programme
  • 42. Les méthodes 4 Surcharge des méthodes  Soit la méthode maj_etat () suivante qui permet de changer l’état de l’objet Le même nom avec des signatures différentes = surcharge public void maj_etat(){ abscisse=0; ordonnee=0; couleur="noir"; } public void maj_etat(double abs,double ord){ abscisse=abs; ordonnee=ord; couleur="noir"; } public void maj_etat(double abs,double ord,String c){ abscisse=abs; ordonnee=ord; couleur=c; }  Cette méthode peut être surchargée en changeant sa signature
  • 43. Les méthodes 4 Surcharge de la méthode maj_etat
  • 44. 4 Utilisation de la méthode maj_etat Résultat du programme Les méthodes
  • 45. Classe et Objet 4 Dans cette partie, nous allons traiter les concepts suivants:  Classe  Attributs  Constructeur & Objet  package  Méthodes  Objet courant  Constructeur avec paramètres  Membres statiques NB: Durant cette partie, nous nous limitons à l’usage de la visibilité public des attributs
  • 46. L’objet courant 4  Dans une méthode, on appelle « objet courant » , l’objet sur lequel a été appelée la méthode  Un objet courant est représenté par la référence « this »  l’objet sur lequel a été appelée la méthode maj_etat(8,8) est p  La référence p et la référence « this » pointent sur la même zone mémoire. public void maj_etat(double abscisse,double ordonnee,String couleur){ this.abscisse=abscisse; this.ordonnee=ordonnee; this.couleur=couleur; }
  • 48. Classe et Objet 4 Exercice d’application •Écrit une méthode dans la classe point qui permet de calculer la distance entre deux points •Utiliser la méthode sqrt de la bibliothèque Math Math.sqrt(a): permet de calculer la racine carrée de a
  • 49. Classe et Objet 4 Dans cette partie, nous allons traiter les concepts suivants:  Classe  Attributs  Constructeur & Objet  package  Méthodes  Objet courant  Constructeur avec paramètres  Membres statiques NB: Durant cette partie, nous nous limitons à l’usage de la visibilité public des attributs
  • 50. Le constructeur avec paramètres 5  Comme pour les méthodes, un constructeur peut être surchargé  Un constructeur peut avoir un ou plusieurs arguments pour initialiser l’objet. Ces arguments sont fournis pendant l’initialisation avec le mot clé new Compléter le programme pour afficher l’état de chaque objet
  • 51. Le constructeur avec paramètres 5  Une fois un constructeur avec paramètres est mis en place, le constructeur sans paramètres par défaut n’est plus implicite. Exemple
  • 52. Le constructeur avec paramètres 5  si nous avons besoin d’un constructeur sans paramètres, il faut écrire son code. Les instructions du constructeur par défaut ne sont pas obligatoires. Nous pouvons mettre:
  • 53. Classe et Objet 5 Diagramme d’objets p1:Point abscisse: ordonne: couleur: P4:Point abscisse:3 ordonne: 3 couleur: p3:Point abscisse:2 ordonne: 2 couleur: p2:Point abscisse:1 ordonne: 1 couleur:
  • 54. Classe et Objet 5 Diagramme de séquence d’intéractions Un diagramme de séquences d’intéractions décrit les interactions entre les utilisateurs et les objets :user p1:Point p1=new Point(1,1) Objet créé :Program demande créer point Demande de saisie Saisir coordonnées (1,1) Message création Affichage point p1.mon_etat() informations Informations affichées
  • 55. Classe et Objet 5 Dans cette partie, nous allons traiter les concepts suivants:  Classe  Attributs  Constructeur & Objet  package  Méthodes  Objet courant  Constructeur avec paramètres  Membres statiques NB: Durant cette partie, nous nous limitons à l’usage de la visibilité public des attributs
  • 56. Les membres statiques 5  Dans l’exemple de la classe Point, chaque objet Point possède ses propres variables abscisse, ordonnée et couleur. Ces variables sont appelées variables d’instances.  Les objets d’une même classe peuvent partager des mêmes variables qui sont stockées au niveau de la classe. Ce genre de variables s’appellent les variables statiques ou variables de classes.  Un attribut statique d’une classe est un attribut qui appartient à la classe et partagé par tous les objets de cette classe. Comme un attribut, une méthode peut être déclarée statique, ce qui signifie qu’elle appartient à la classe et partagée par toutes les instances de cette classe.  Dans la notation UML, les membres statiques d’une classe sont soulignés.
  • 57. Les membres statiques 5 Les membres statiques (attributs ou méthodes)  Un attribut membre statique c’est une variable de la classe  La valeur de la variable statique est indépendante de l’objet  Quelque soit le nombre d’objet crées, cette variable a une seule valeur  Cette variable peut avoir une valeur même si aucun objet n’existe Un attribut statique
  • 58. Les membres statiques 5 Les membres statiques (attributs ou méthodes)  Un attribut membre non statique c’est une variable de l’objet Un attribut non statique
  • 59. Les membres statiques 5 Les membres statiques (attributs ou méthodes)  Un attribut membre statique c’est une variable de la classe Un attribut statique  La valeur de la variable statique est partagée entre tous les objets de la classe point
  • 60. Les membres statiques 6 Les membres statiques (attributs ou méthodes) Un attribut statique  La variable « var_static » est accessible à travers le nom de la classe
  • 61. Les membres statiques 6 Les membres statiques (attributs ou méthodes)  Une méthode membre statique c’est une méthode de la classe  Les tâches d’une méthode statique sont indépendantes des comportements des objets Une méthode statique
  • 62. Les membres statiques 6 Les membres statiques (attributs ou méthodes)  Une méthode membre statique c’est une méthode de la classe Une méthode statique  L’objet p peut accéder à la méthode « methode_statique() »
  • 63. Les membres statiques 6 Les membres statiques (attributs ou méthodes)  Exercice: Des tests à faire pour vérifier ces propriétés  La valeur d’une variable statique est accessible par tous les objets de la classe à travers des méthodes non statiques  Une méthode statique est accessible aux méthodes non statiques
  • 64. Les membres statiques 6 Les membres statiques (attributs ou méthodes)  Les méthodes statiques ne peuvent accéder directement aux membres non statiques  La méthode methode_statique() ne peux pas accéder ni aux variables d’objets ni aux méthodes non statiques
  • 65. Les membres statiques 6 Exercice Écrit le code nécessaire pour comptabiliser le nombre de points crées
  • 66. Classe-objet 6 Créer une application pour gérer les segments comme étant des formes géométriques Un segment est défini par deux extrémités qui représentent chacun un point de l’espace géométrique et par une couleur. •Créer le diagramme de cas d’utilisation, le diagramme de classe, le diagramme d’objets et le diagramme de séquence de votre projet. •Dans cette application, il faut faire appel aux différentes techniques introduites à l’étape 1 et 2. pour chaque bout de code écrit, préciser le concept introduit. L’application doit permettre les opérations suivantes: •Créer un segment (Constructeurs) •Afficher les informations d’un segment (toString()) •Calculer la longueur d’un segment (getLongueur()) •Vérifier si un point appartient au segment (Appartient (Point p)) •Comptabiliser le nombre de segments créés •Créer un scénario d’exécution à l’aide d’une classe contenant le main() Application N°1
  • 68. Conclusion 6 Dans cette partie, nous avons traiter les concepts suivants:  Classe  Attributs  Constructeur & Objet  package  Méthodes  Objet courant  Constructeur avec paramètres  Membres statiques NB: Durant cette partie, nous nous sommes limités à l’usage de la visibilité public des attributs
  • 69. Fin du cours N°2 6 Abdelwahab.naji@gmail.com Programmation Orientée Objets avec JAVA