Upload
others
View
4
Download
0
Embed Size (px)
Citation preview
Classes, objets, applications
Sébastien Jean
IUT de ValenceDépartement Informatique
v15.0, 29 janvier 2021
Notion de classe, par l’exemple
Conception d’une classe : exemple simplifié d’une ampoule
Une ampoule est caractérisée par :
Sa puissance
Le fait qu’elle soit allumée ou éteinte
Actions possibles sur une lampe :
L’allumer
L’éteindre
power
isLit
switchOn
switchOff switchOn()switchOff()
power : intisLit : boolean
Bulb
Sébastien Jean (IUT Valence) M2103, bases v15.0, 29 janvier 2021 1 / 18
Notion de classe, par l’exemple
La classe Bulb
La classe Bulb doit être définie dans un fichier Bulb.java
le mot-clé public signifie ici que les attributs et méthodes de laclasse Bulb sont visibles (utilisables) depuis l’extérieur
Sébastien Jean (IUT Valence) M2103, bases v15.0, 29 janvier 2021 2 / 18
Notion de classe, par l’exemple Accès, invocation
Les objets parlent aux objets
Un objet est manipulé seulement par un autre objetCe peut être lui-même !
Pour cela, le code d’une des méthodes de l’objet appelantcontient soit :
Un accès en lecture/écriture à un attribut de l’objet appelé
Un appel (invocation) à une des méthodes de l’objet appelé
Accès
Invocation
Attribut
Méthode
Sébastien Jean (IUT Valence) M2103, bases v15.0, 29 janvier 2021 3 / 18
Notion de classe, par l’exemple Visibilité
Visibilité ?
La visibilité renforce l’encapsulation
Partie privée
Partie publique
Les méthodes masquées sont dites internes
Sébastien Jean (IUT Valence) M2103, bases v15.0, 29 janvier 2021 4 / 18
Notion de classe, par l’exemple Application
Une application utilisant Bulb
Une application Java est définie par un ensemble de classes dontl’une d’elles définit une méthode main possédant la signature (exacte)suivante :
Le mot-clé static permet à la méthode d’être appélée même siaucun objet n’existe
Elle ne s’appelle pas sur un objet mais directement sur la classe
Méthode statique ' méthode globaleMéthode non statique ' méthode locale à un objet
Sébastien Jean (IUT Valence) M2103, bases v15.0, 29 janvier 2021 5 / 18
Notion de classe, par l’exemple Instanciation
Création d’un objet (Instanciation)
L’instanciation d’un objet s’effectue par appel à un constructeur viale mot-clé new
L’appel au constructeur provoque l’allocation d’un nouvel objet
Le type de retour d’un constructeur est le type défini par sa classe
La valeur de retour est la référence de l’objet créé
Sébastien Jean (IUT Valence) M2103, bases v15.0, 29 janvier 2021 6 / 18
Notion de classe, par l’exemple Variables, références
Références, variables et typage
La référence d’un objet est son seul point d’entrée
La stocker dans une variable permet de ne pas la perdre
myBulb
Référence
Bulb myBulb = new Bulb();
Identifiant unique d'objet(les pointeurs n'existent pas en Java)
Objet de type Bulb
Variable de type Bulb
Le type d’une variable doit être compatible avec la valeur reçue
Une variable de type Bulb ne peut prendre comme valeur qu’uneréférence de type Bulb
Java = langage fortement typé
Toute variable a un type fixe
Vérification de types à la compilation et l’exécutionSébastien Jean (IUT Valence) M2103, bases v15.0, 29 janvier 2021 7 / 18
Notion de classe, par l’exemple Accès, Invocations
Manipulation d’un objet
La manipulation d’un objet s’effectue via la notation pointée :
(Référence d’objet).(attribut ou méthode)
Accès en lecture à l'attribut isLit de l'objet référencé par la variable myBulb
Appel de la méthode switchOn() sur l'objet référencé par la variable myBulb
Sébastien Jean (IUT Valence) M2103, bases v15.0, 29 janvier 2021 8 / 18
Notion de classe, par l’exemple Constructeurs
Définition et implémentation d’un constructeur
Le constructeur fournit un moyend’obtenir un objet dans un étatutilisable
Il permet de décrire quellesinformations sont nécessaires etquel est l’état de l’instance créée
Définition → paramètresImplém. → initialisation des attributs
Sébastien Jean (IUT Valence) M2103, bases v15.0, 29 janvier 2021 9 / 18
Notion de classe, par l’exemple Constructeurs
Constructeurs multiples
En l’absence de définition explicite de constructeur, il existe unconstructeur par défaut implicite, sans paramètre
Initialisation par défaut des attributs, état indéterminé
Si au moins un constructeur a été défini, le constructeur pardéfaut implicite n’existe plus, il faut alors le définir explicitement
Il est possible de définir plusieurs constructeurs
Paramètres nécessairement différents
public Bulb()
public Bulb(int initialPower)
public Bulb(int initialPower, boolean initialIsLitState)
public Bulb(boolean initialIsLitState)
Sébastien Jean (IUT Valence) M2103, bases v15.0, 29 janvier 2021 10 / 18
Notion de classe, par l’exemple Constructeurs
Définition et implémentation d’un constructeur (fin)
Le mot-clé this représente une variable implicite, utilisableuniquement dans le code de la classe, et qui contient la référencede l’objet courant
Dans un constructeur → l’objet en train d’être crééDans une méthode → l’objet cible de l’invocation
Sébastien Jean (IUT Valence) M2103, bases v15.0, 29 janvier 2021 11 / 18
Notion de classe, par l’exemple Constantes, accesseurs
Constantes
Déclaration « propre » d’une valeur par défaut de la puissance
Déclaration/affection de constante
Utilisation de constante
- le mot-clé final interdit toute modification ultérieure.- la constante appartient à la classe et non aux instances (mot-clé static).
- la constante est accédée via la classe et non une instance.
Sébastien Jean (IUT Valence) M2103, bases v15.0, 29 janvier 2021 12 / 18
Notion de classe, par l’exemple Constantes, accesseurs
Exemple : méthodes de la classe Bulb
Sébastien Jean (IUT Valence) M2103, bases v15.0, 29 janvier 2021 13 / 18
Notion de classe, par l’exemple Constantes, accesseurs
Accesseurs
Protection de la valeur des attributs
Masquage des attributs
Accesseurs
- le mot-clé private rend invisible l'attribut en dehors de la classe.
- méthode permettant d'obtenir la valeur de l'attribut sans le dévoiler- il est possible de définir aussi des accesseurs en écriture.
Sébastien Jean (IUT Valence) M2103, bases v15.0, 29 janvier 2021 14 / 18
Notion de classe, par l’exemple Constantes, accesseurs
Accesseurs
Protection de la valeur des attributs (suite)
L'attribut doit être obligatoirement initialisé dans chaque constructeur
Un attribut final ne peut plus être modifié
Sébastien Jean (IUT Valence) M2103, bases v15.0, 29 janvier 2021 15 / 18
Notion de classe, par l’exemple Constantes, accesseurs
Surcharge de méthode
Plusieurs méthodes peuvent être définies avec le même nom
On parle de méthode surchargée
Le nombre, l’ordre ou les types des paramètres doivent êtredifférents
Peu importe le type de retour ou les noms des paramètres
public void method() {...}
public void method(boolean o) {...}Autorisé
public int method(int d) {...}Autorisé
public int method() {...}Interdit car mêmes paramètres que la première
Sébastien Jean (IUT Valence) M2103, bases v15.0, 29 janvier 2021 16 / 18
Notion de classe, par l’exemple Constantes, accesseurs
Méthodes et attributs statiques
Il est possible de définir des propriétés ou méthodescaractérisant et/ou s’appliquant à la classe elle-même plutôtqu’à ses instances
On parle d’attributs ou méthodes statiques
Attribut statique
Attribut n’existant qu’en un seul exemplaire, vu par toutes lesinstances de la classe : pas de copie locale
Méthode statique (ou méthode de classe)
Méthode ne s’appliquant pas à une instance particulière et reflétant engénéral un comportement global
La déclaration s’effectue avec le mot-clé static
L’accès s’effectue sur la classe (et non via une référence d’objet)
Exemples : Math.sqrt(2) ou encore System.out
Sébastien Jean (IUT Valence) M2103, bases v15.0, 29 janvier 2021 17 / 18
Notion de classe, par l’exemple Constantes, accesseurs
Fin !
Sébastien Jean (IUT Valence) M2103, bases v15.0, 29 janvier 2021 18 / 18
Notion de classe, par l'exempleAccès, invocationVisibilitéApplicationInstanciationVariables, référencesAccès, InvocationsConstructeursConstantes, accesseurs