Académique Documents
Professionnel Documents
Culture Documents
2e Année Licence(L2)
Cours JAVA II, Session II
Professeur : Jaures PIERRE
23/10/2020
POO, OBJETS ET CLASSES
Notion de destructeur
POO, OBJETS ET CLASSES
Dans le monde de la programmation, deux styles fondamentaux (ou paradigmes) sont mis en
avant, à savoir, la programmation procédurale et la programmation orientée objet.
Programmation procédurale
Dans la programmation procédurale (ou fonctionnelle), un programme est divisé en plusieurs
étapes qui s’exécutent d'une manière séquentielle. Durant ces étapes, l'ensemble des variables
mises en jeu sont modifiées par le biais de procédures ou fonctions qui se succèdent.
Malgré la simplicité que l'on peut toucher lors de la programmation procédurale, celle ci a
plusieurs inconvénients que je vais résumer dans les points suivants:
Entretien du programme complexe: puisque le programme s’exécute séquentiellement du début
à la fin, le fait de vouloir modifier son comportement (même légèrement) revient à faire des
modifications (parfois majeures) dans plusieurs endroits.
POO, OBJETS ET CLASSES
Avancement lent dans les grandes applications: le fait de coder de grandes applications à l'aide d'un
langage de programmation procédurale requière beaucoup de temps. Chose qui n'est pas toujours à
portée de main lorsqu'on est face à des clients exigeants.
Travail en groupe non favorable: les grands projets sont généralement réalisés par une équipe constituée
de plusieurs programmeurs, chacun s'attribut une tâche (ou une partie du projet). Le fait de vouloir
reconstituer l'application finale n'est pas toujours chose aisée, ce qui demande généralement de repasser
en vue certains bouts de code.
Les langages de programmation procédurale les plus connus sont: C, Pascal, Perl, PHP4, PL/SQL...
POO, OBJETS ET CLASSES
Un objet de la POO possède une structure interne qui définit ses propriétés et ses propres
comportements, et peut interagir avec d'autres objets. Si la programmation orientée objet gagne
du terrain c'est principalement grâce à ses nombreux avantages qu'on peut résumer dans ces
points:
Plus intuitif: La POO permet de manipuler des objets qui peuvent interagir entre eux. Ce concept
est plus proche du monde physique où nous vivons.
POO, OBJETS ET CLASSES
Plus organisé: Les objets étant indépendants les uns des autres (même s'ils peuvent interagir
entre eux), le code source devient plus organisé et plus claire.
Plus évolutif: Un code organisé est plus facile à maintenir.
Code réutilisable: En POO le code peut être divisé en modules plus faciles à réutiliser, non
seulement dans le projet courant, mais dans d'autres projets.
Favorise le travail en équipe: A l'inverse de la programmation procédurale, la POO favorise le
travail en équipe en découpant les parties du projet qui sont faciles à regrouper après.
Au niveau le plus simple, la POO se concentre sur les objets qu'un programmeur souhaite modifier
plutôt que sur les actions nécessaires pour effectuer ce changement. Cela facilite l'exécution
d'analyses de code par les programmeurs et ces objets sont réutilisables dans d'autres projets.
Les langages de programmation orientés objet les plus connus sont: C++, Java, PHP5 (et PHP7), C#,
Ruby, Python...
OBJETS
OBJET
En parlant de la Programmation orientée Objet, une question pertinente se pose toujours, que représente un
objet dans ce cas?
La programmation orientée objet est plus naturelle donc plus intuitive. Si c'est le cas, c'est parce qu’elle
utilise des entités appelées objets. Un objet possède sa propre structure interne qui définit ses propriétés
et son comportement. Si on compare avec le monde réel, les objets sont partout autour de nous. Une
personne est un objet, une voiture en est un autre, une maison, une école une télé, un ballon... tous sont
des objets. Prenons l'objet "voiture".
Bien qu'il en existe plusieurs modèles, le fait d'évoquer le mot "voiture" fait penser à des points comme:
couleur
options
puissance du moteur
vitesse
nombre de rapports de vitesse
CLASSES
Les objets de la POO doivent être créés d'abord pour pouvoir être manipulés après.
C'est la classe qui se charge de donner vie aux objets.
Une classe est une structure cohérente de propriétés (attributs) et de comportements (méthodes).
C'est elle qui contient la définition des objets qui vont être créés après. En général on considère
une classe comme un moule à objets. Avec un seul moule on peut créer autant d'objets que l'on
souhaite.
Techniquement parlant, une classe est une structure qui contient des attributs (appelés aussi
variables membres) et des méthodes (connus également par fonctions membres). Les méthodes
agissent sur les attributs de cette structure.
Par exemple, le fait d’accélérer augmente la vitesse de la voiture.
L'instanciation d'une classe
L'instanciation est le fait de créer une instance. Pour être précis, on parle d'une instance de classe.
La classe étant le moule qui sert à fabriquer les objets, alors chaque objet créé correspond à une
instance de la classe qui lui a donné vie.
REGLES DE NOMMAGES DES CLASSES
D’apres les recommandations de SUN, les noms des classes doivent respectées certaines règles de
nommages afin de faciliter la compréhension par d’autres personnes lorsqu’ils sont définis et du
coup rester dans la ligne tracée pour garder le bons principes de la programmation. En Java la
notation Pascal Case: 1ère lettre de chaque mot en Majuscule.
Mélange de minuscule, majuscule avec la première lettre de chaque mot en majuscule
Donner des noms simples et descriptifs
Eviter les acronymes : hormis ceux commum (XML, URL, HTML, ...)
De plus, d'une manière générale : N'utiliser que les lettres [a-z] et [A-Z] et [0-9] :
Ne pas utiliser de tiret '-', d'underscore '_', ou d'autres caractères ($, *, accents, ...).
DÉCLARATION
La classe renferme l'ensemble des propriétés et de méthodes qui servent à définir l'identité de l'objet qui en
découlera (l'instance de classe).
Supposons que l'on souhaite créer une classe "voiture". Celle ci aura certaines propriétés (attributs) comme:
couleur, puissance et vitesse. Elle aura aussi des méthodes comme accélérer et ralentir. Notre classe "voiture"
renfermera tous ces éléments (membres).
Pour créer la classe "voiture" on écrira le code suivant:
class Voiture{
……………………
}
le mot clé class(en Minuscule) sert à indiquer que l'on veut créer une classe. Il est suivi du nom de celle ci,
Voiture dans ce cas, suivi de deux accolades (ouvrante et fermante) qui contiendront la déclaration des
éléments membres (attributs et méthodes).
MEMBRES D’UNE CLASSE
Le constructeur d'une classe est une méthode publique (dans la plupart des cas) qui est appelée
automatiquement au moment de l'instanciation de la classe. Elle sert généralement à initialiser les attributs de
la classe et de fournir à l'objet créé tout ce dont il a besoin pour pouvoir fonctionner. Cette opération
d'initialisation est connue sous le nom d'hydratation. Comme son nom l’indique, le constructeur est la pour
aider a constructeur des objets.
Le constructeur est une méthode qui a le même nom que la classe.
Le constructeur n’a pas de valeur de retour même pas void.
Un constructeur peut être surchargé
En Java, chaque classe contient un constructeur par défaut, qui est le constructeur sans paramètre. Le
constructeur sans paramètre ne peut pas être définie explicitement si l’on pas d’autres définies dans la classe.
CONSTRUCTEUR
Prenons l’exemple de la classe Voiture, si l’on veut créer un constructeur pour la classe, on doit procéder
comme suit:
Class Voiture{
public Voiture(){
// instructions……
}
public Voiture(String marque,String couleur, int nbCylindre){
// instructions……
}
}
DESTRUCTEUR
Le destructeur est une méthode spéciale qui sera appelée (si elle est redéfinie dans la classe) lorsque l'objet
sera nettoyé de la mémoire par le garbage collector. Le garbage collector est un "ramasse-miettes" chargé de
faciliter la tâche des programmeurs en libérant les ressources prises en mémoire automatiquement. Cette
méthode n'est pas forcément appelée lorsque vous supprimez l'objet.
Pour utiliser le destructeur vous devez redéfinir une méthode appelée finalize() publique et qui ne renvoie
rien. On peut donc avoir le code suivant :
DESTRUCTEUR
public Test(){
zero = 0;
condition = false;
System.out.println("L'objet a été créé");
}
public void finalize(){
System.out.println("Objet nettoyé de la mémoire");
}
}
PACKAGES
Introduction
A quoi servent-ils ?
Règle de nommage des packages.
Création
Importation des classes d’un Package
Exercices d’application
23/10/2020 19
PACKAGES
o Un package est une unité (un fichier) de regroupement de classes et d’interfaces utilises en Java
afin de permettre mieux structurer ces derniers. Les packages sont similaires aux bibliothèques
du langage C/C++.
o Les paquetages offrent un niveau de modularité supplémentaire pour:
réunir des classes et d’interfaces suivant un centre d’intérêt commun
la protection des attributs et des méthodes
Ils ont a la fois un aspect logique et physique.
o Logique: Par l’utilisation de leur nom dans le code source de nos programmes Java.
o Physique: Parce qu’en réalité, une arborescence de répertoire est crée sur votre système d’exploitation et
que vous pouvez la visualiser. 23/10/2020 20
REGLES DE NOMMAGES
o Tout en minuscule.
o Utiliser seulement [a-z], [0-9] et le point '.': Ne pas utiliser de tiret '-', d'underscore '_', d'espace, ou
d'autres caractères ($, *, accents, ...).
o La convention de Sun indique que tout package doit avoir comme root un des packages suivant: com,
edu, gov, mil, net, org ou les deux lettres identifiants un pays (ISO Standard 3166, 1981).
Je pense que les règles 1 et 2 doivent être suivies sans concessions. De toute manière, la plupart de ces règles
sont obligatoires:
o com.sun.eng
o com.apple.quicktime.v2
o edu.cmu.cs.bovik.cheese
23/10/2020 21
CREATION
o Pour créer un package en Java, on utilise le mot clé package en minuscule suivi du nom du package.
o La création du package doit être la ligne de code de votre programme.
o Exemple, création d’un package pour un projet de développement pour une école.
23/10/2020 22
IMPORTATION DES CLASSES D’UN
PACKAGE
o Pour pouvoir désigner une classe d'un autre paquetage par son nom terminal, il faut l’importer:
l’importation d’une classe se fait a l’aide du mot clé import.
o S’il n’y a pas de package crée dans la classe, le mot clé import doit être la première ligne de données sinon
les import doivent être placées après la création du package.
o On peut importer plusieurs classes(plusieurs import) dans une autre classe mais, on ne peut pas créer
plusieurs packages dans une même classe.
o Pour importer une classe, on doit procéder comme suit:
o import nompackage.NomClasse; exemple:
o import java.util.Scanner; // import, le mot cle permettant d’importer la classe, java.util, le nom du package
et Scanner, le nom de la classe.
o Pour importer toutes les classes d’un package, on utilise une etoite a la place du nom de la classe.
o Exemple: import java.util.*; // importe toutes les classes du package java.util.
A LA PROCHAINE !!!