Conception par Objet et Programmation Java

1/49
100%

<!-- Slide number: 1 -->

Conception par Objet et Programmation Java

1

![](Picture6.jpg)

Chapitre 2: Classe et Objet

Equipe Java

2019-2020

![](Image15.jpg)

Notes:

<!-- Slide number: 2 -->

Plan

2

Introduction

Classe et objet

Encapsulation

Héritage

Polymorphisme

Exceptions

Connexion Base de donnée

Interfaces

Lambda Expression

Collections

Stream

<!-- Slide number: 3 -->

Objectifs

3

Notion de classe et d’objet

Déclaration de classe

Déclarations des attributs et des méthodes

Les types des variables (primitives et objets)

Notion de référence

Les constructeurs

<!-- Slide number: 4 -->

Analyse d’un problème en utilisant l’approche OO

4

![](Picture2.jpg)

Etude de cas:

Une société nommé “Direct Clothing” vend des chemises par catalogue.

On veut développer un programme pour cette société.

On sait qu’une chemise posède les caractéristiques suivantes:

Chaque chemise:

possède un identifiant- code à barre

est disponible en plusieurs coloris– bleu, gris, etc

est disponible en plusieurs tailles

a un prix

a une description – type du tissu, style, etc

quantité dans le stock

On peut ajouter ou diminuer des chemises du stock.

![](Picture3.jpg)

![](Picture4.jpg)

![](Picture5.jpg)

<!-- Slide number: 5 -->

Identification de l’objet

5

Objet

| Chemise |

| --- |

| ID Prix Couleur Description Quantité dans le stock |

| Ajouter chemise dans le stock Diminuer une chemise du stock |

![](Picture2.jpg)

![](Picture2.jpg)

Attributs

Méthodes

<!-- Slide number: 6 -->

Identification de l’objet

6

Plan de construction

![](Picture5.jpg)

![](Picture2.jpg)

![](Picture4.jpg)

![](Picture3.jpg)

Une classe n'est pas un objet.

Une classe est un patron d'objet.

![](Picture6.jpg)

Classe « Chemise »

Objet 2

Id: 201

Prix: 30$

Couleur: Rouge

Quantite: 180

Objet 1

Id: 101

Prix: 20$

Couleur: Bleu

Quantite: 200

![](Picture4.jpg)

Notes:

<!-- Slide number: 7 -->

Classe et objet

7

On appelle classe la structure d'un objet, c'est-à-dire la déclaration de l'ensemble des entités qui composeront un objet.

Un objet est donc « issu » d'une classe, c'est le produit qui sort d'un moule.

En réalité on dit qu'un objet est une instanciation d'une classe

objet = instance

Une classe est composée de deux parties :

Les attributs (parfois appelés données membres) : il s'agit des données représentant l'état de l'objet

Les méthodes (parfois appelées fonctions membres): il s'agit des opérations applicables aux objets

<!-- Slide number: 8 -->

Déclaration de la classe

8

public class Chemise{

}

/Déclaration des attributs/

/Déclaration des méthodes/

//commentaire sur une seule ligne

/*commentaires sur

plusieurs lignes*/

Le fichier .java doit avoir le même nom que la classe (Chemise.java)

Le nom de la classe doit commencer par une majuscule

<!-- Slide number: 9 -->

Déclaration des variables 1/8

9

Syntaxe:

type nom_variable [=value];

int id = 0;

Quel nom choisir pour notre variable?

Les noms des variables sont case-sensitive

Les white space ne sont pas permis

Le nom de la variable doit commencer par une lettre miniscule.

<!-- Slide number: 10 -->

Déclaration des variables 2/8

10

Évitez les mots réservés de java tel que :

![3. java reserved words](Picture13.jpg)

<!-- Slide number: 11 -->

Déclaration des variables 3/8

11

Constante

On déclare une constante avec le mot final

Exemple:

final int MAX_STOCK=100;

Le nom de la constante doit être en majuscule.

Si le nom est composé de plusieurs mots, on utilise _ pour la séparation des mots

Exemple:

final int TAILLE;

final int MAX_STOCK;

final int CAPACITE_DANS_STOCK;

<!-- Slide number: 12 -->

Déclaration des variables 4/8

12

Les types entiers

| | Valeur minimale | Valeur maximale | Codé sur |

| --- | --- | --- | --- |

| byte | - 128 | 127 | 8 bits |

| short | - 32 768 | 32767 | 16 bits |

| int | - 2147 483 648 | 2 147 483 647 | 32 bits |

| long | -9223372036854775808 | 9223372036854775807 | 64 bits |

<!-- Slide number: 13 -->

Déclaration des variables 5/8

13

Les types réels

| | Valeur minimale | Valeur maximale | Codé sur |

| --- | --- | --- | --- |

| float | 1.4E45 | 3.4028235E38 | 4 octets |

| double | 4.9E324 | 1.7976931348623157E308 | 8 octets |

Exemple:

float f=1.2f

double d=34.8d

<!-- Slide number: 14 -->

Déclaration des variables 6/8

14

Le type caractère char

char sexe=‘M’;

Le type boolean

boolean abonne=true;

Le type chaine de caractère String

String message = ‘’Bonjour les amis’’;

<!-- Slide number: 15 -->

Déclaration des variables 7/8

15

1er indice

Le tableaux

Publicité

indices

0 1 2 3 4

10

| | | | | |

| --- | --- | --- | --- | --- |

20

int[] tab;

tab = new int[5];

tab[0] = 10; // initialiser le premier élément

tab[1] = 20; // initialiser le second élément

tab.length=5

int[] tab = { 10, 20, 30, 40, 50}; //déclaration + initialisation

<!-- Slide number: 16 -->

Déclaration des variables 8/8

16

Les valeurs par défaut des variables

| Type | Valeur par défaut |

| --- | --- |

| byte | 0 |

| short | 0 |

| int | 0 |

| long | 0L |

| float | 0.0f |

| double | 0.0d |

| char | '\u0000' |

| boolean | false |

<!-- Slide number: 17 -->

Catégories des variables 1/7

17

Il existe deux sortes de variables :

Une variable primitive contient des bits qui représentent sa valeur.

Exemple : int, foat , boolean.

Une variable référence contient des bits qui indiquent comment accéder à l'objet.

Exemple : String, Chien, Joueur,...

<!-- Slide number: 18 -->

Catégories des variables 2/7

18

Les variables primitives

![](Picture29.jpg)

![](Picture28.jpg)

![](Picture6.jpg)

<!-- Slide number: 19 -->

Catégories des variables 3/7

19

Les variables primitives

Déclaration d’une variable primitive réservation de l’espace mémoire.

age

abonne

sexe

int age;

boolean abonne;

char sexe;

La valeur affectée à la variable sera stockée dans l’espace mémoire réservé.

age

abonne

sexe

age=18;

abonne=false;

sexe=‘M’;

18

false

M

<!-- Slide number: 20 -->

Catégories des variables 4/7

20

Les variables références

![](Picture29.jpg)

![](Picture28.jpg)

![](Picture6.jpg)

Notes:

<!-- Slide number: 21 -->

Catégories des variables 5/7

21

Les variables références: String

on crée une référence sur une String

Lorsqu’on déclare une variable objet , on est entrain de faire la réservation de l’espace mémoire pour la référence

objet null

message

String message;

ref

null

message=‘’Bonjour’’;

//équivalent à

message=new String(‘’Bonjour’’);

message

objet String

ref

Bonjour

message

objet String

ref

message=‘’Hello’’;

Bonjour

Hello

Notes:

<!-- Slide number: 22 -->

Catégories des variables 6/7

22

Les variables références: Les tableaux

Un tableau contenant des éléments de type primitif

notes

objet int [ ]

int[] notes={10,12,15};

10

12

15

reference

int

int

int

Un tableau contenant des éléments de type objet

String[] animaux={‘’chat’’,’’poisson’’};

objet String

objet String

poisson

chat

animaux

ref

ref

reference

Notes:

<!-- Slide number: 23 -->

Catégories des variables 7/7

23

Récapitulation sur les types objets et les types primitifs

![http://www3.ntu.edu.sg/home/ehchua/programming/java/images/OOP_PrimitiveVsClass.png](Picture2.jpg)

![http://www3.ntu.edu.sg/home/ehchua/programming/java/images/Type_Array.png](Picture4.jpg)

<!-- Slide number: 24 -->

Déclaration des méthodes

24

Syntaxe:

Type_retour nom_method([arguments]) {  }

Exemple:

void afficherInfoChemise (){ }

Le nom de la méthode doit commencer par un verbe

<!-- Slide number: 25 -->

Classe chemise

25

public class Chemise{

int id;

char couleur;

float prix;

String description;

int quantite;

void ajouterChemise (int nombre) {

quantite += nombre;

}

void dimunierChemise (int nombre) {

quantite - = nombre;

}

void afficherInfoChemise() {

System.out.println(id+ info);

}

}

<!-- Slide number: 26 -->

Création des objets

26

![](Picture5.jpg)

Plan de construction

![](Picture2.jpg)

![](Picture3.jpg)

![](Picture4.jpg)

17, Rue Carthage

9, Rue Hannibal

23, Rue des anges

![](Picture6.jpg)

Classe « Chemise »

![](Picture4.jpg)

Objet 1

Objet 2

Référence 2

Référence 1

Publicité

Notes:

<!-- Slide number: 27 -->

Référence d’un objet

27

Réellement

Par analogie

| Une référence nous permet de trouver l’objet. En utilisant la référence, on peut accéder aux attributs et méthodes de l’objet. | Une adresse nous permet de trouver une maison. En utilisant l’adresse, on peut envoyer une lettre à cette maison. |

| --- | --- |

<!-- Slide number: 28 -->

Notion de référence 1/5

28

Mémoire

public class Test{

public static void main(String[] args){

Chemise maChemise;

maChemise=new Chemise();

maChemise.couleur=‘R’;

}

}

maChemise

Stack

Heap

Création d’une variable maChemise de type Chemise

Notes:

<!-- Slide number: 29 -->

Notion de référence 2/5

29

public class Test{

public static void main(String[] args){

Chemise maChemise;

maChemise = new Chemise();

maChemise.couleur=‘R’;

}

}

Mémoire

0x034009

0

id

couleur

prix

description

quantite

'\u0000’

maChemise

0.0f

null

0

Stack

Heap

Instanciation de la classe Chemise Création d’un objet.

Cet objet possède une adresse de son emplacement dans la mémoire (0x034009)

Notes:

<!-- Slide number: 30 -->

Notion de référence 3/5

30

public class Test{

public static void main(String[] args){

Chemise maChemise;

maChemise=new Chemise();

maChemise.couleur=‘R’;

}

}

Mémoire

0x034009

0x034009

0

id

couleur

prix

description

quantite

'\u0000’

maChemise

0.0f

0x034009

null

0

Stack

Heap

Lier l’objet créé et la variable maChemise

maChemise est la référence de l’objet créé

Notes:

<!-- Slide number: 31 -->

Notion de référence 4/5

31

public class Test{

public static void main(String[] args){

Chemise maChemise;

maChemise=new Chemise();

maChemise.couleur=‘R’;

}

}

Mémoire

0x034009

0

id

couleur

prix

description

quantite

R

maChemise

0.0f

0x034009

null

0

Stack

Heap

En utilisant la référence maChemise, on peut accéder aux attributs de l’objet

Notes:

<!-- Slide number: 32 -->

Notion de référence 5/5

32

Mémoire

0x034009

public class Test{

public static void main(String[] args){

Chemise maChemise=new Chemise()

Chemise taChemise=new Chemise();

}

}

0

id

couleur

prix

description

quantite

maChemise

R

0.0f

0x034009

null

0

0x99f311

0

id

couleur

prix

description

quantite

taChemise

'\u0000’

0x99f311

0.0f

null

0

Stack

Heap

Notes:

<!-- Slide number: 33 -->

Le mot-clé this

33

Le mot-clé this permet de désigner l’objet courant,

this permet d'accéder aux attributs et méthodes de l’objet courant

Pour manipuler un attribut de l’objet courant: this.couleur

Pour manipuler une méthode de la super-classe : this.ajouterChemise (100)

Pour faire appel au constructeur de l’objet courant: this()

<!-- Slide number: 34 -->

Les constructeurs 1/4

34

Pour créer un objet à partir d'une classe, on utilise l'opérateur new.

public class Test{

public static void main(String[] args){

Chemise maChemise;

maChemise=new Chemise();

}

}

L’opérateur new fait appel au constructeur de la classe

class Chemise{

Chemise () {}

}

un constructeur porte le même nom que la classe dans laquelle il est défini

Publicité

un constructeur n'a pas de type de retour (même pas void)

<!-- Slide number: 35 -->

Les constructeurs 2/4

35

Constructeur par défaut

Le constructeur par défaut initialise les variables de la classe aux valeurs par défaut.

Chemise(){}

Chemise(){

id=0;

couleur=‘B’

prix=10.2f;

}

Constructeur surchargé

Chemise(int id, char couleur, float prix){

this.id=id;

this.couleur=couleur;

this.prix=prix;

}

<!-- Slide number: 36 -->

Les constructeurs 3/4

36

Si vous ne créez pas un constructeur dans votre classe, le compilateur va automatiquement vous créer un constructeur par défaut implicite

Si le constructeur surchargé est créé, le constructeur par défaut implicite ne sera plus créer par le compilateur

La plateforme java différencie entre les différents constructeurs déclarés au sein d’une même classe en se basant sur le nombre des paramètres et leurs types.

On ne peut pas deux constructeurs ayant le même nombre et types decréers paramètres.

Chemise(int id) {

this.id=id

}

Chemise(int id) {

this.id=id*2

}

Erreur de compilation

<!-- Slide number: 37 -->

Les constructeurs 4/4

37

Quel constructeur va choisir Java lorsque vous allez créer votre objet ?

class Chemise{

int id;

char couleur;

float prix;

String description;

int quantite;

Chemise () {}

Chemise(int id) {

this.id=id;

}

Chemise(int id, char couleur) {

this.couleur=couleur;

}

}

Utilisation:

Chemise ch1=new Chemise();

Chemise ch1=new Chemise(122);

Chemise ch1=new Chemise(122, ‘B’);

<!-- Slide number: 38 -->

Destructeur

38

le programmeur java n’a pas à s’occuper lui-même de libérer la mémoire en supprimant les objets devenus inutiles, c’est le rôle du Garbage Collector

Le Garbage Collector est exécuté automatiquement dès que la mémoire disponible devient inférieure à un certain seuil.

Le destructeur est une méthode spéciale qui sera appelée lorsque l'objet sera nettoyé de la mémoire par le Garbage Collector.

![Java Destructor finalize()](Picture7.jpg)

Java Destructor finalize()

<!-- Slide number: 39 -->

Les associations

39

Association one-to-one bidirectionnelle

class Employe{

public Compte compte;

public void setCompte(Compte compte) {

this.compte=compte;

}

public Compte getCompte() {

return compte;

}

}

| Employe |

| --- |

| |

| |

Mapping

1

1

class Compte{

public Employe employe;

public void setEmploye(Employe employe) {

this.employe=employe;

}

public Employe getEmploye() {

return empl;oye

}

}

| Compte |

| --- |

| |

| |

<!-- Slide number: 40 -->

Les attributs static 1/4

40

Variable d’instance:

| Etudiant [class] |

| --- |

| |

Chaque instance de la classe possède ses propres valeurs des variables.

Class Etudiant{

String nom;

Etudiant(String nom){

this.nom=nom;

}

}

| Etudiant [instance] |

| --- |

| |

| Etudiant [instance] |

| --- |

| |

nom

nom

Ahmed

Marwa

Etudiant etud1 = new Etudiant (“Ahmed");

Etudiant etud2 = new Etudiant (“Marwa");

<!-- Slide number: 41 -->

Les attributs static 2/4

41

Variable d’instance:

Utilisation

On invoque les variables d’instance avec le nom de l’instance

class Test{

public static void main(String[] args){

Etudiant etudiant=new Etudiant();

System.out.println(etudiant.nom);

}

}

Class Etudiant{

String nom;

Etudiant(String nom){

this.nom=nom;

}

}

<!-- Slide number: 42 -->

Les attributs static 3/4

42

Variable de classe:

n'appartient pas à une instance particulière, elle appartient à la classe.

est partagée par toutes les instances de la classe

| Etudiant [class] |

| --- |

| |

nbrEtudiants

0

1

2

3

Class Etudiant{

String nom;

static int nbrEtudiants;

Etudiant(String nom){

this.nom=nom;

nbrEtudiants++;

}

}

| Etudiant [instance] |

| --- |

| |

| Etudiant [instance] |

| --- |

| |

Ahmed

Fatma

| Etudiant [instance] |

| --- |

| |

Publicité

Etudiant etud1 = new Etudiant (“Ahmed");

Marwa

Etudiant etud2 = new Etudiant (“Marwa");

Etudiant etud3 = new Etudiant (“Fatma");

<!-- Slide number: 43 -->

Les attributs static 4/4

43

Variable de classe:

Utilisation

On invoque les variables static avec le nom de la classe

class Etudiant{

String nom;

static int nbrEtudiants;

Etudiant(String nom){

this.nom=nom;

nbrEtudiants++;

}

}

class Test{

public static void main(String[] args){

System.out.println(Etudiant.nbrEtudiants);

}

}

<!-- Slide number: 44 -->

Les méthodes static 1/2

44

Le comportement d’une méthode statique ne dépend pas de la valeur des variables d'instance

class MaClassMath{

static int min(int a , int b){

if(a<b){

return a;

}else{

return b;

}

}

}

Utilisation:

L'appel à une méthode statique se fait en

utilisant le nom de la classe.

class Test {

public static void main ( String [] args ){

int x = MaClassMath .min (21 ,4);

}

}

Notes:

Class methods cannot access instance variables or instance methods directly—they must use an object reference. Also, class methods cannot use the this keyword as there is no instance for this to refer to

<!-- Slide number: 45 -->

Les méthodes static 1/2

45

Puisque les méthodes static appartiennent à la classe, elles ne peuvent en aucun cas accéder aux variables d'instances qui appartiennent aux instances de la classe.

Les méthodes d’instances accèdent aux variables d’instance et méthodes d’instances

Les méthodes d’instances accèdent aux variables de classe (static) et méthodes de classe (static)

Les méthodes de classe (static) accèdent aux variables de classe (static) et méthodes de classe (static)

Les méthodes de classe (static) n’accèdent pas aux variables de d’instance et méthodes d’instance

Dans une méthode static on ne peut pas utiliser this

Notes:

Class methods cannot access instance variables or instance methods directly—they must use an object reference. Also, class methods cannot use the this keyword as there is no instance for this to refer to

<!-- Slide number: 46 -->

La méthode toString

46

La méthode toString est définie dans la classe Object

La méthode toString définie dans la classe Objectrenvoie le nom de la classe de l'objet concerné suivi de l'adresse de cet objet.

Quand on redéfinit la méthode to String, on fait en sorte qu'elle renvoie une chaîne de caractères servant à décrire l'objet concerné.

class Chemise{

int id;

char couleur;

float prix;

String description;

int quantite;

public String toString() {

return id+“ " +

couleur +“ " +

prix +“ " +

description +“ " +

quantite;

}

}

<!-- Slide number: 47 -->

Les associations 1/3

47

Association one-to-one unirectionnelle

class Employe{

public Compte compte;

public void setCompte(Compte compte) {

this.compte=compte;

}

public Compte getCompte() {

return compte;

}

}

| Employe |

| --- |

| |

| |

Mapping

1

1

| Compte |

| --- |

| |

| |

class Compte{

}

<!-- Slide number: 48 -->

Les associations 1/3

48

Association one-to-many

class Employe{

public Societe societe

public void setSociete(Societe societe) {

this.societe=societe;

}

public Compte getSociete() {

return societe;

}

}

| Employe |

| --- |

| |

| |

Mapping

*

1

| Societe |

| --- |

| |

| |

class Societe{

public Employe[] employes;

public void setEmployes(Employe[] employes) {

this.employe=employe;

}

public Employe[] getEmployes() {

return empl;oyes

}

}

<!-- Slide number: 49 -->

Les associations 3/3

49

Association many-to-many

class Employe{

public Projet[] projets;

public void setProjets(Projet[] projets) {

this.projets=projets;

}

public Projet[] getProjets() {

return projets;

}

}

| Employe |

| --- |

| |

| |

Mapping

*

*

| projet |

| --- |

| |

| |

class Projets{

public Employe[] employes;

public void setEmployes(Employe[] employes) {

this.employe=employe;

}

public Employe[] getEmployes() {

return empl;oyes

}

}

Conception par Objet et Programmation Java

Programming, Math, etc. · course

Voir tous les documents en programmation

<!-- Slide number: 1 -->

Conception par Objet et Programmation Java

1

![](Picture6.jpg)

Chapitre 2: Classe et Objet

Equipe Java

2019-2020

![](Image15.jpg)

Notes:

<!-- Slide number: 2 -->

Plan

2

Introduction

Classe et objet

Encapsulation

Héritage

Polymorphisme

Exceptions

Connexion Base de donnée

Interfaces

Lambda Expression

Collections

Stream

<!-- Slide number: 3 -->

Objectifs

3

Notion de classe et d’objet

Déclaration de classe

Déclarations des attributs et des méthodes

Les types des variables (primitives et objets)

Notion de référence

Les constructeurs

<!-- Slide number: 4 -->

Analyse d’un problème en utilisant l’approche OO

4

![](Picture2.jpg)

Etude de cas:

Une société nommé “Direct Clothing” vend des chemises par catalogue.

On veut développer un programme pour cette société.

On sait qu’une chemise posède les caractéristiques suivantes:

Chaque chemise:

possède un identifiant- code à barre

est disponible en plusieurs coloris– bleu, gris, etc

est disponible en plusieurs tailles

a un prix

a une description – type du tissu, style, etc

quantité dans le stock

On peut ajouter ou diminuer des chemises du stock.

![](Picture3.jpg)

![](Picture4.jpg)

![](Picture5.jpg)

<!-- Slide number: 5 -->

Identification de l’objet

5

Objet

| Chemise |

| --- |

| ID Prix Couleur Description Quantité dans le stock |

| Ajouter chemise dans le stock Diminuer une chemise du stock |

![](Picture2.jpg)

![](Picture2.jpg)

Attributs

Méthodes

<!-- Slide number: 6 -->

Identification de l’objet

6

Plan de construction

![](Picture5.jpg)

![](Picture2.jpg)

![](Picture4.jpg)

![](Picture3.jpg)

Une classe n'est pas un objet.

Une classe est un patron d'objet.

![](Picture6.jpg)

Classe « Chemise »

Objet 2

Id: 201

Prix: 30$

Couleur: Rouge

Quantite: 180

Objet 1

Id: 101

Prix: 20$

Couleur: Bleu

Quantite: 200

![](Picture4.jpg)

Notes:

<!-- Slide number: 7 -->

Classe et objet

7

On appelle classe la structure d'un objet, c'est-à-dire la déclaration de l'ensemble des entités qui composeront un objet.

Un objet est donc « issu » d'une classe, c'est le produit qui sort d'un moule.

En réalité on dit qu'un objet est une instanciation d'une classe

objet = instance

Une classe est composée de deux parties :

Les attributs (parfois appelés données membres) : il s'agit des données représentant l'état de l'objet

Les méthodes (parfois appelées fonctions membres): il s'agit des opérations applicables aux objets

<!-- Slide number: 8 -->

Déclaration de la classe

8

public class Chemise{

}

/Déclaration des attributs/

/Déclaration des méthodes/

//commentaire sur une seule ligne

/*commentaires sur

plusieurs lignes*/

Le fichier .java doit avoir le même nom que la classe (Chemise.java)

Le nom de la classe doit commencer par une majuscule

<!-- Slide number: 9 -->

Déclaration des variables 1/8

9

Syntaxe:

type nom_variable [=value];

int id = 0;

Quel nom choisir pour notre variable?

Les noms des variables sont case-sensitive

Les white space ne sont pas permis

Le nom de la variable doit commencer par une lettre miniscule.

<!-- Slide number: 10 -->

Déclaration des variables 2/8

10

Évitez les mots réservés de java tel que :

![3. java reserved words](Picture13.jpg)

<!-- Slide number: 11 -->

Déclaration des variables 3/8

11

Constante

On déclare une constante avec le mot final

Exemple:

final int MAX_STOCK=100;

Le nom de la constante doit être en majuscule.

Si le nom est composé de plusieurs mots, on utilise _ pour la séparation des mots

Exemple:

final int TAILLE;

final int MAX_STOCK;

final int CAPACITE_DANS_STOCK;

<!-- Slide number: 12 -->

Déclaration des variables 4/8

12

Les types entiers

| | Valeur minimale | Valeur maximale | Codé sur |

| --- | --- | --- | --- |

| byte | - 128 | 127 | 8 bits |

| short | - 32 768 | 32767 | 16 bits |

| int | - 2147 483 648 | 2 147 483 647 | 32 bits |

| long | -9223372036854775808 | 9223372036854775807 | 64 bits |

<!-- Slide number: 13 -->

Déclaration des variables 5/8

13

Les types réels

| | Valeur minimale | Valeur maximale | Codé sur |

| --- | --- | --- | --- |

| float | 1.4E45 | 3.4028235E38 | 4 octets |

| double | 4.9E324 | 1.7976931348623157E308 | 8 octets |

Exemple:

float f=1.2f

double d=34.8d

<!-- Slide number: 14 -->

Déclaration des variables 6/8

14

Le type caractère char

char sexe=‘M’;

Le type boolean

boolean abonne=true;

Le type chaine de caractère String

String message = ‘’Bonjour les amis’’;

<!-- Slide number: 15 -->

Déclaration des variables 7/8

15

1er indice

Le tableaux

Publicité

indices

0 1 2 3 4

10

| | | | | |

| --- | --- | --- | --- | --- |

20

int[] tab;

tab = new int[5];

tab[0] = 10; // initialiser le premier élément

tab[1] = 20; // initialiser le second élément

tab.length=5

int[] tab = { 10, 20, 30, 40, 50}; //déclaration + initialisation

<!-- Slide number: 16 -->

Déclaration des variables 8/8

16

Les valeurs par défaut des variables

| Type | Valeur par défaut |

| --- | --- |

| byte | 0 |

| short | 0 |

| int | 0 |

| long | 0L |

| float | 0.0f |

| double | 0.0d |

| char | '\u0000' |

| boolean | false |

<!-- Slide number: 17 -->

Catégories des variables 1/7

17

Il existe deux sortes de variables :

Une variable primitive contient des bits qui représentent sa valeur.

Exemple : int, foat , boolean.

Une variable référence contient des bits qui indiquent comment accéder à l'objet.

Exemple : String, Chien, Joueur,...

<!-- Slide number: 18 -->

Catégories des variables 2/7

18

Les variables primitives

![](Picture29.jpg)

![](Picture28.jpg)

![](Picture6.jpg)

<!-- Slide number: 19 -->

Catégories des variables 3/7

19

Les variables primitives

Déclaration d’une variable primitive réservation de l’espace mémoire.

age

abonne

sexe

int age;

boolean abonne;

char sexe;

La valeur affectée à la variable sera stockée dans l’espace mémoire réservé.

age

abonne

sexe

age=18;

abonne=false;

sexe=‘M’;

18

false

M

<!-- Slide number: 20 -->

Catégories des variables 4/7

20

Les variables références

![](Picture29.jpg)

![](Picture28.jpg)

![](Picture6.jpg)

Notes:

<!-- Slide number: 21 -->

Catégories des variables 5/7

21

Les variables références: String

on crée une référence sur une String

Lorsqu’on déclare une variable objet , on est entrain de faire la réservation de l’espace mémoire pour la référence

objet null

message

String message;

ref

null

message=‘’Bonjour’’;

//équivalent à

message=new String(‘’Bonjour’’);

message

objet String

ref

Bonjour

message

objet String

ref

message=‘’Hello’’;

Bonjour

Hello

Notes:

<!-- Slide number: 22 -->

Catégories des variables 6/7

22

Les variables références: Les tableaux

Un tableau contenant des éléments de type primitif

notes

objet int [ ]

int[] notes={10,12,15};

10

12

15

reference

int

int

int

Un tableau contenant des éléments de type objet

String[] animaux={‘’chat’’,’’poisson’’};

objet String

objet String

poisson

chat

animaux

ref

ref

reference

Notes:

<!-- Slide number: 23 -->

Catégories des variables 7/7

23

Récapitulation sur les types objets et les types primitifs

![http://www3.ntu.edu.sg/home/ehchua/programming/java/images/OOP_PrimitiveVsClass.png](Picture2.jpg)

![http://www3.ntu.edu.sg/home/ehchua/programming/java/images/Type_Array.png](Picture4.jpg)

<!-- Slide number: 24 -->

Déclaration des méthodes

24

Syntaxe:

Type_retour nom_method([arguments]) {  }

Exemple:

void afficherInfoChemise (){ }

Le nom de la méthode doit commencer par un verbe

<!-- Slide number: 25 -->

Classe chemise

25

public class Chemise{

int id;

char couleur;

float prix;

String description;

int quantite;

void ajouterChemise (int nombre) {

quantite += nombre;

}

void dimunierChemise (int nombre) {

quantite - = nombre;

}

void afficherInfoChemise() {

System.out.println(id+ info);

}

}

<!-- Slide number: 26 -->

Création des objets

26

![](Picture5.jpg)

Plan de construction

![](Picture2.jpg)

![](Picture3.jpg)

![](Picture4.jpg)

17, Rue Carthage

9, Rue Hannibal

23, Rue des anges

![](Picture6.jpg)

Classe « Chemise »

![](Picture4.jpg)

Objet 1

Objet 2

Référence 2

Référence 1

Publicité

Notes:

<!-- Slide number: 27 -->

Référence d’un objet

27

Réellement

Par analogie

| Une référence nous permet de trouver l’objet. En utilisant la référence, on peut accéder aux attributs et méthodes de l’objet. | Une adresse nous permet de trouver une maison. En utilisant l’adresse, on peut envoyer une lettre à cette maison. |

| --- | --- |

<!-- Slide number: 28 -->

Notion de référence 1/5

28

Mémoire

public class Test{

public static void main(String[] args){

Chemise maChemise;

maChemise=new Chemise();

maChemise.couleur=‘R’;

}

}

maChemise

Stack

Heap

Création d’une variable maChemise de type Chemise

Notes:

<!-- Slide number: 29 -->

Notion de référence 2/5

29

public class Test{

public static void main(String[] args){

Chemise maChemise;

maChemise = new Chemise();

maChemise.couleur=‘R’;

}

}

Mémoire

0x034009

0

id

couleur

prix

description

quantite

'\u0000’

maChemise

0.0f

null

0

Stack

Heap

Instanciation de la classe Chemise Création d’un objet.

Cet objet possède une adresse de son emplacement dans la mémoire (0x034009)

Notes:

<!-- Slide number: 30 -->

Notion de référence 3/5

30

public class Test{

public static void main(String[] args){

Chemise maChemise;

maChemise=new Chemise();

maChemise.couleur=‘R’;

}

}

Mémoire

0x034009

0x034009

0

id

couleur

prix

description

quantite

'\u0000’

maChemise

0.0f

0x034009

null

0

Stack

Heap

Lier l’objet créé et la variable maChemise

maChemise est la référence de l’objet créé

Notes:

<!-- Slide number: 31 -->

Notion de référence 4/5

31

public class Test{

public static void main(String[] args){

Chemise maChemise;

maChemise=new Chemise();

maChemise.couleur=‘R’;

}

}

Mémoire

0x034009

0

id

couleur

prix

description

quantite

R

maChemise

0.0f

0x034009

null

0

Stack

Heap

En utilisant la référence maChemise, on peut accéder aux attributs de l’objet

Notes:

<!-- Slide number: 32 -->

Notion de référence 5/5

32

Mémoire

0x034009

public class Test{

public static void main(String[] args){

Chemise maChemise=new Chemise()

Chemise taChemise=new Chemise();

}

}

0

id

couleur

prix

description

quantite

maChemise

R

0.0f

0x034009

null

0

0x99f311

0

id

couleur

prix

description

quantite

taChemise

'\u0000’

0x99f311

0.0f

null

0

Stack

Heap

Notes:

<!-- Slide number: 33 -->

Le mot-clé this

33

Le mot-clé this permet de désigner l’objet courant,

this permet d'accéder aux attributs et méthodes de l’objet courant

Pour manipuler un attribut de l’objet courant: this.couleur

Pour manipuler une méthode de la super-classe : this.ajouterChemise (100)

Pour faire appel au constructeur de l’objet courant: this()

<!-- Slide number: 34 -->

Les constructeurs 1/4

34

Pour créer un objet à partir d'une classe, on utilise l'opérateur new.

public class Test{

public static void main(String[] args){

Chemise maChemise;

maChemise=new Chemise();

}

}

L’opérateur new fait appel au constructeur de la classe

class Chemise{

Chemise () {}

}

un constructeur porte le même nom que la classe dans laquelle il est défini

Publicité

un constructeur n'a pas de type de retour (même pas void)

<!-- Slide number: 35 -->

Les constructeurs 2/4

35

Constructeur par défaut

Le constructeur par défaut initialise les variables de la classe aux valeurs par défaut.

Chemise(){}

Chemise(){

id=0;

couleur=‘B’

prix=10.2f;

}

Constructeur surchargé

Chemise(int id, char couleur, float prix){

this.id=id;

this.couleur=couleur;

this.prix=prix;

}

<!-- Slide number: 36 -->

Les constructeurs 3/4

36

Si vous ne créez pas un constructeur dans votre classe, le compilateur va automatiquement vous créer un constructeur par défaut implicite

Si le constructeur surchargé est créé, le constructeur par défaut implicite ne sera plus créer par le compilateur

La plateforme java différencie entre les différents constructeurs déclarés au sein d’une même classe en se basant sur le nombre des paramètres et leurs types.

On ne peut pas deux constructeurs ayant le même nombre et types decréers paramètres.

Chemise(int id) {

this.id=id

}

Chemise(int id) {

this.id=id*2

}

Erreur de compilation

<!-- Slide number: 37 -->

Les constructeurs 4/4

37

Quel constructeur va choisir Java lorsque vous allez créer votre objet ?

class Chemise{

int id;

char couleur;

float prix;

String description;

int quantite;

Chemise () {}

Chemise(int id) {

this.id=id;

}

Chemise(int id, char couleur) {

this.couleur=couleur;

}

}

Utilisation:

Chemise ch1=new Chemise();

Chemise ch1=new Chemise(122);

Chemise ch1=new Chemise(122, ‘B’);

<!-- Slide number: 38 -->

Destructeur

38

le programmeur java n’a pas à s’occuper lui-même de libérer la mémoire en supprimant les objets devenus inutiles, c’est le rôle du Garbage Collector

Le Garbage Collector est exécuté automatiquement dès que la mémoire disponible devient inférieure à un certain seuil.

Le destructeur est une méthode spéciale qui sera appelée lorsque l'objet sera nettoyé de la mémoire par le Garbage Collector.

![Java Destructor finalize()](Picture7.jpg)

Java Destructor finalize()

<!-- Slide number: 39 -->

Les associations

39

Association one-to-one bidirectionnelle

class Employe{

public Compte compte;

public void setCompte(Compte compte) {

this.compte=compte;

}

public Compte getCompte() {

return compte;

}

}

| Employe |

| --- |

| |

| |

Mapping

1

1

class Compte{

public Employe employe;

public void setEmploye(Employe employe) {

this.employe=employe;

}

public Employe getEmploye() {

return empl;oye

}

}

| Compte |

| --- |

| |

| |

<!-- Slide number: 40 -->

Les attributs static 1/4

40

Variable d’instance:

| Etudiant [class] |

| --- |

| |

Chaque instance de la classe possède ses propres valeurs des variables.

Class Etudiant{

String nom;

Etudiant(String nom){

this.nom=nom;

}

}

| Etudiant [instance] |

| --- |

| |

| Etudiant [instance] |

| --- |

| |

nom

nom

Ahmed

Marwa

Etudiant etud1 = new Etudiant (“Ahmed");

Etudiant etud2 = new Etudiant (“Marwa");

<!-- Slide number: 41 -->

Les attributs static 2/4

41

Variable d’instance:

Utilisation

On invoque les variables d’instance avec le nom de l’instance

class Test{

public static void main(String[] args){

Etudiant etudiant=new Etudiant();

System.out.println(etudiant.nom);

}

}

Class Etudiant{

String nom;

Etudiant(String nom){

this.nom=nom;

}

}

<!-- Slide number: 42 -->

Les attributs static 3/4

42

Variable de classe:

n'appartient pas à une instance particulière, elle appartient à la classe.

est partagée par toutes les instances de la classe

| Etudiant [class] |

| --- |

| |

nbrEtudiants

0

1

2

3

Class Etudiant{

String nom;

static int nbrEtudiants;

Etudiant(String nom){

this.nom=nom;

nbrEtudiants++;

}

}

| Etudiant [instance] |

| --- |

| |

| Etudiant [instance] |

| --- |

| |

Ahmed

Fatma

| Etudiant [instance] |

| --- |

| |

Publicité

Etudiant etud1 = new Etudiant (“Ahmed");

Marwa

Etudiant etud2 = new Etudiant (“Marwa");

Etudiant etud3 = new Etudiant (“Fatma");

<!-- Slide number: 43 -->

Les attributs static 4/4

43

Variable de classe:

Utilisation

On invoque les variables static avec le nom de la classe

class Etudiant{

String nom;

static int nbrEtudiants;

Etudiant(String nom){

this.nom=nom;

nbrEtudiants++;

}

}

class Test{

public static void main(String[] args){

System.out.println(Etudiant.nbrEtudiants);

}

}

<!-- Slide number: 44 -->

Les méthodes static 1/2

44

Le comportement d’une méthode statique ne dépend pas de la valeur des variables d'instance

class MaClassMath{

static int min(int a , int b){

if(a<b){

return a;

}else{

return b;

}

}

}

Utilisation:

L'appel à une méthode statique se fait en

utilisant le nom de la classe.

class Test {

public static void main ( String [] args ){

int x = MaClassMath .min (21 ,4);

}

}

Notes:

Class methods cannot access instance variables or instance methods directly—they must use an object reference. Also, class methods cannot use the this keyword as there is no instance for this to refer to

<!-- Slide number: 45 -->

Les méthodes static 1/2

45

Puisque les méthodes static appartiennent à la classe, elles ne peuvent en aucun cas accéder aux variables d'instances qui appartiennent aux instances de la classe.

Les méthodes d’instances accèdent aux variables d’instance et méthodes d’instances

Les méthodes d’instances accèdent aux variables de classe (static) et méthodes de classe (static)

Les méthodes de classe (static) accèdent aux variables de classe (static) et méthodes de classe (static)

Les méthodes de classe (static) n’accèdent pas aux variables de d’instance et méthodes d’instance

Dans une méthode static on ne peut pas utiliser this

Notes:

Class methods cannot access instance variables or instance methods directly—they must use an object reference. Also, class methods cannot use the this keyword as there is no instance for this to refer to

<!-- Slide number: 46 -->

La méthode toString

46

La méthode toString est définie dans la classe Object

La méthode toString définie dans la classe Objectrenvoie le nom de la classe de l'objet concerné suivi de l'adresse de cet objet.

Quand on redéfinit la méthode to String, on fait en sorte qu'elle renvoie une chaîne de caractères servant à décrire l'objet concerné.

class Chemise{

int id;

char couleur;

float prix;

String description;

int quantite;

public String toString() {

return id+“ " +

couleur +“ " +

prix +“ " +

description +“ " +

quantite;

}

}

<!-- Slide number: 47 -->

Les associations 1/3

47

Association one-to-one unirectionnelle

class Employe{

public Compte compte;

public void setCompte(Compte compte) {

this.compte=compte;

}

public Compte getCompte() {

return compte;

}

}

| Employe |

| --- |

| |

| |

Mapping

1

1

| Compte |

| --- |

| |

| |

class Compte{

}

<!-- Slide number: 48 -->

Les associations 1/3

48

Association one-to-many

class Employe{

public Societe societe

public void setSociete(Societe societe) {

this.societe=societe;

}

public Compte getSociete() {

return societe;

}

}

| Employe |

| --- |

| |

| |

Mapping

*

1

| Societe |

| --- |

| |

| |

class Societe{

public Employe[] employes;

public void setEmployes(Employe[] employes) {

this.employe=employe;

}

public Employe[] getEmployes() {

return empl;oyes

}

}

<!-- Slide number: 49 -->

Les associations 3/3

49

Association many-to-many

class Employe{

public Projet[] projets;

public void setProjets(Projet[] projets) {

this.projets=projets;

}

public Projet[] getProjets() {

return projets;

}

}

| Employe |

| --- |

| |

| |

Mapping

*

*

| projet |

| --- |

| |

| |

class Projets{

public Employe[] employes;

public void setEmployes(Employe[] employes) {

this.employe=employe;

}

public Employe[] getEmployes() {

return empl;oyes

}

}