19
Classes, objets, applications Sébastien Jean IUT de Valence Département Informatique v15.0, 29 janvier 2021

Département Informatique IUT de Valencepedago.sebastienjean.fr/INFO1/DUT-INFO_PPN2013_M2103/... · 2018. 2. 3. · Sébastien Jean (IUT Valence) M2103, bases v14.0, 3 février 2018

  • 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