Escolar Documentos
Profissional Documentos
Cultura Documentos
Jean-Baptiste Vioix
(jean-baptiste.vioix@iut-dijon.u-bourgogne.fr)
http://jb.vioix.free.fr 1-33
Avant propos
Difficultés. . .
La programmation orienté objet n’est pas forcement facile pour tout le monde.
C’est un ensemble de solutions (héritage, surcharge,. . . ) qu’il faut connaı̂tre avant de les
assembler.
Certaines notions vont sembleront abstraites dans un premier temps, admettez les. Avec le
temps, elles s’éclaireront d’elles mêmes (normalement).
N’hésitez pas à poser des questions au fur et à mesure du cours, et restez concentré ce
cours est extrêmement dense en nouvelles informations.
Ces éléments seront approfondis et détaillés en TD/TP, pensez à reprendre ce cours après
les séances.
UML
Dans ce cours des éléments d’UML seront présentés, ils permettent de matérialiser les
relations entre les différents éléments d’un programme.
L’approche retenue a été (un peu) simplifiée, le but de ce module n’est pas le génie logiciel.
Vous devez savoir comment passer d’un diagramme UML à du code Java (c’est un ensemble
de règles simples qu’un ordinateur est capable d’appliquer).
http://jb.vioix.free.fr 2-33
Avant propos
Difficultés. . .
La programmation orienté objet n’est pas forcement facile pour tout le monde.
C’est un ensemble de solutions (héritage, surcharge,. . . ) qu’il faut connaı̂tre avant de les
assembler.
Certaines notions vont sembleront abstraites dans un premier temps, admettez les. Avec le
temps, elles s’éclaireront d’elles mêmes (normalement).
N’hésitez pas à poser des questions au fur et à mesure du cours, et restez concentré ce
cours est extrêmement dense en nouvelles informations.
Ces éléments seront approfondis et détaillés en TD/TP, pensez à reprendre ce cours après
les séances.
UML
Dans ce cours des éléments d’UML seront présentés, ils permettent de matérialiser les
relations entre les différents éléments d’un programme.
L’approche retenue a été (un peu) simplifiée, le but de ce module n’est pas le génie logiciel.
Vous devez savoir comment passer d’un diagramme UML à du code Java (c’est un ensemble
de règles simples qu’un ordinateur est capable d’appliquer).
http://jb.vioix.free.fr 2-33
Avant propos
Difficultés. . .
La programmation orienté objet n’est pas forcement facile pour tout le monde.
C’est un ensemble de solutions (héritage, surcharge,. . . ) qu’il faut connaı̂tre avant de les
assembler.
Certaines notions vont sembleront abstraites dans un premier temps, admettez les. Avec le
temps, elles s’éclaireront d’elles mêmes (normalement).
N’hésitez pas à poser des questions au fur et à mesure du cours, et restez concentré ce
cours est extrêmement dense en nouvelles informations.
Ces éléments seront approfondis et détaillés en TD/TP, pensez à reprendre ce cours après
les séances.
UML
Dans ce cours des éléments d’UML seront présentés, ils permettent de matérialiser les
relations entre les différents éléments d’un programme.
L’approche retenue a été (un peu) simplifiée, le but de ce module n’est pas le génie logiciel.
Vous devez savoir comment passer d’un diagramme UML à du code Java (c’est un ensemble
de règles simples qu’un ordinateur est capable d’appliquer).
http://jb.vioix.free.fr 2-33
Avant propos
Difficultés. . .
La programmation orienté objet n’est pas forcement facile pour tout le monde.
C’est un ensemble de solutions (héritage, surcharge,. . . ) qu’il faut connaı̂tre avant de les
assembler.
Certaines notions vont sembleront abstraites dans un premier temps, admettez les. Avec le
temps, elles s’éclaireront d’elles mêmes (normalement).
N’hésitez pas à poser des questions au fur et à mesure du cours, et restez concentré ce
cours est extrêmement dense en nouvelles informations.
Ces éléments seront approfondis et détaillés en TD/TP, pensez à reprendre ce cours après
les séances.
UML
Dans ce cours des éléments d’UML seront présentés, ils permettent de matérialiser les
relations entre les différents éléments d’un programme.
L’approche retenue a été (un peu) simplifiée, le but de ce module n’est pas le génie logiciel.
Vous devez savoir comment passer d’un diagramme UML à du code Java (c’est un ensemble
de règles simples qu’un ordinateur est capable d’appliquer).
http://jb.vioix.free.fr 2-33
Avant propos
Difficultés. . .
La programmation orienté objet n’est pas forcement facile pour tout le monde.
C’est un ensemble de solutions (héritage, surcharge,. . . ) qu’il faut connaı̂tre avant de les
assembler.
Certaines notions vont sembleront abstraites dans un premier temps, admettez les. Avec le
temps, elles s’éclaireront d’elles mêmes (normalement).
N’hésitez pas à poser des questions au fur et à mesure du cours, et restez concentré ce
cours est extrêmement dense en nouvelles informations.
Ces éléments seront approfondis et détaillés en TD/TP, pensez à reprendre ce cours après
les séances.
UML
Dans ce cours des éléments d’UML seront présentés, ils permettent de matérialiser les
relations entre les différents éléments d’un programme.
L’approche retenue a été (un peu) simplifiée, le but de ce module n’est pas le génie logiciel.
Vous devez savoir comment passer d’un diagramme UML à du code Java (c’est un ensemble
de règles simples qu’un ordinateur est capable d’appliquer).
http://jb.vioix.free.fr 2-33
Avant propos
Difficultés. . .
La programmation orienté objet n’est pas forcement facile pour tout le monde.
C’est un ensemble de solutions (héritage, surcharge,. . . ) qu’il faut connaı̂tre avant de les
assembler.
Certaines notions vont sembleront abstraites dans un premier temps, admettez les. Avec le
temps, elles s’éclaireront d’elles mêmes (normalement).
N’hésitez pas à poser des questions au fur et à mesure du cours, et restez concentré ce
cours est extrêmement dense en nouvelles informations.
Ces éléments seront approfondis et détaillés en TD/TP, pensez à reprendre ce cours après
les séances.
UML
Dans ce cours des éléments d’UML seront présentés, ils permettent de matérialiser les
relations entre les différents éléments d’un programme.
L’approche retenue a été (un peu) simplifiée, le but de ce module n’est pas le génie logiciel.
Vous devez savoir comment passer d’un diagramme UML à du code Java (c’est un ensemble
de règles simples qu’un ordinateur est capable d’appliquer).
http://jb.vioix.free.fr 2-33
Avant propos
Difficultés. . .
La programmation orienté objet n’est pas forcement facile pour tout le monde.
C’est un ensemble de solutions (héritage, surcharge,. . . ) qu’il faut connaı̂tre avant de les
assembler.
Certaines notions vont sembleront abstraites dans un premier temps, admettez les. Avec le
temps, elles s’éclaireront d’elles mêmes (normalement).
N’hésitez pas à poser des questions au fur et à mesure du cours, et restez concentré ce
cours est extrêmement dense en nouvelles informations.
Ces éléments seront approfondis et détaillés en TD/TP, pensez à reprendre ce cours après
les séances.
UML
Dans ce cours des éléments d’UML seront présentés, ils permettent de matérialiser les
relations entre les différents éléments d’un programme.
L’approche retenue a été (un peu) simplifiée, le but de ce module n’est pas le génie logiciel.
Vous devez savoir comment passer d’un diagramme UML à du code Java (c’est un ensemble
de règles simples qu’un ordinateur est capable d’appliquer).
http://jb.vioix.free.fr 2-33
Avant propos
Difficultés. . .
La programmation orienté objet n’est pas forcement facile pour tout le monde.
C’est un ensemble de solutions (héritage, surcharge,. . . ) qu’il faut connaı̂tre avant de les
assembler.
Certaines notions vont sembleront abstraites dans un premier temps, admettez les. Avec le
temps, elles s’éclaireront d’elles mêmes (normalement).
N’hésitez pas à poser des questions au fur et à mesure du cours, et restez concentré ce
cours est extrêmement dense en nouvelles informations.
Ces éléments seront approfondis et détaillés en TD/TP, pensez à reprendre ce cours après
les séances.
UML
Dans ce cours des éléments d’UML seront présentés, ils permettent de matérialiser les
relations entre les différents éléments d’un programme.
L’approche retenue a été (un peu) simplifiée, le but de ce module n’est pas le génie logiciel.
Vous devez savoir comment passer d’un diagramme UML à du code Java (c’est un ensemble
de règles simples qu’un ordinateur est capable d’appliquer).
http://jb.vioix.free.fr 2-33
Classes et objets Introduction
Classes et objets
Première approche
Deux nombreux objets ont des caractéristiques communes que ce soit physique ou
fonctionnelles.
Ils ont souvent des “capacités” communes : un DVD peut être enregistré, un livre peut être lu,
une lampe allumé,. . .
Mais les mêmes objets d’une famille ne sont pas tous identiques : tous les DVD ne
contiennent pas le même film, tous les livres n’ont pas le même nombre de pages, toutes les
lampes n’ont pas la même puissance,. . .
http://jb.vioix.free.fr 3-33
Classes et objets Introduction
Classes et objets
Première approche
Deux nombreux objets ont des caractéristiques communes que ce soit physique ou
fonctionnelles.
Ils ont souvent des “capacités” communes : un DVD peut être enregistré, un livre peut être lu,
une lampe allumé,. . .
Mais les mêmes objets d’une famille ne sont pas tous identiques : tous les DVD ne
contiennent pas le même film, tous les livres n’ont pas le même nombre de pages, toutes les
lampes n’ont pas la même puissance,. . .
http://jb.vioix.free.fr 3-33
Classes et objets Introduction
Classes et objets
Première approche
Deux nombreux objets ont des caractéristiques communes que ce soit physique ou
fonctionnelles.
Ils ont souvent des “capacités” communes : un DVD peut être enregistré, un livre peut être lu,
une lampe allumé,. . .
Mais les mêmes objets d’une famille ne sont pas tous identiques : tous les DVD ne
contiennent pas le même film, tous les livres n’ont pas le même nombre de pages, toutes les
lampes n’ont pas la même puissance,. . .
http://jb.vioix.free.fr 3-33
Classes et objets Introduction
Classes et objets
Première approche
Deux nombreux objets ont des caractéristiques communes que ce soit physique ou
fonctionnelles.
Ils ont souvent des “capacités” communes : un DVD peut être enregistré, un livre peut être lu,
une lampe allumé,. . .
Mais les mêmes objets d’une famille ne sont pas tous identiques : tous les DVD ne
contiennent pas le même film, tous les livres n’ont pas le même nombre de pages, toutes les
lampes n’ont pas la même puissance,. . .
http://jb.vioix.free.fr 3-33
Classes et objets Introduction
Classes et objets
Première approche
Deux nombreux objets ont des caractéristiques communes que ce soit physique ou
fonctionnelles.
Ils ont souvent des “capacités” communes : un DVD peut être enregistré, un livre peut être lu,
une lampe allumé,. . .
Mais les mêmes objets d’une famille ne sont pas tous identiques : tous les DVD ne
contiennent pas le même film, tous les livres n’ont pas le même nombre de pages, toutes les
lampes n’ont pas la même puissance,. . .
http://jb.vioix.free.fr 3-33
Classes et objets Introduction
Classes et objets
Première approche
Deux nombreux objets ont des caractéristiques communes que ce soit physique ou
fonctionnelles.
Ils ont souvent des “capacités” communes : un DVD peut être enregistré, un livre peut être lu,
une lampe allumé,. . .
Mais les mêmes objets d’une famille ne sont pas tous identiques : tous les DVD ne
contiennent pas le même film, tous les livres n’ont pas le même nombre de pages, toutes les
lampes n’ont pas la même puissance,. . .
http://jb.vioix.free.fr 3-33
Classes et objets Attributs
Les attributs
http://jb.vioix.free.fr 4-33
Classes et objets Attributs
Les attributs
http://jb.vioix.free.fr 4-33
Classes et objets Attributs
Les attributs
http://jb.vioix.free.fr 4-33
Classes et objets Attributs
Les attributs
int nbPages ;
String Titre ;
http://jb.vioix.free.fr 4-33
Classes et objets Méthodes
Application à Java
Une méthode est composée de deux éléments : la déclaration (entête, signature,. . . ) et
l’implémentation (corps,. . . ).
Une méthode est déclarée par son type de retour, son nom et une liste d’arguments (qui peut
être vide).
la liste des arguments est entre parenthèse, les arguments sont déclarés exactement comme des
variable (type puis nom)
le type de retour peut être un type primitif, une classe ou void si la méthode ne renvoie rien.
Après la parenthèse fermante, on place le code de l’implémentation dans une paire
d’accolades.
Si la méthode renvoie quelque chose on doit impérativement trouver le mot return suivi
d’un élément du type correspondant à celui déclaré dans l’implémentation.
http://jb.vioix.free.fr 5-33
Classes et objets Méthodes
Application à Java
Une méthode est composée de deux éléments : la déclaration (entête, signature,. . . ) et
l’implémentation (corps,. . . ).
Une méthode est déclarée par son type de retour, son nom et une liste d’arguments (qui peut
être vide).
la liste des arguments est entre parenthèse, les arguments sont déclarés exactement comme des
variable (type puis nom)
le type de retour peut être un type primitif, une classe ou void si la méthode ne renvoie rien.
Après la parenthèse fermante, on place le code de l’implémentation dans une paire
d’accolades.
Si la méthode renvoie quelque chose on doit impérativement trouver le mot return suivi
d’un élément du type correspondant à celui déclaré dans l’implémentation.
http://jb.vioix.free.fr 5-33
Classes et objets Méthodes
Application à Java
Une méthode est composée de deux éléments : la déclaration (entête, signature,. . . ) et
l’implémentation (corps,. . . ).
Une méthode est déclarée par son type de retour, son nom et une liste d’arguments (qui peut
être vide).
la liste des arguments est entre parenthèse, les arguments sont déclarés exactement comme des
variable (type puis nom)
le type de retour peut être un type primitif, une classe ou void si la méthode ne renvoie rien.
Après la parenthèse fermante, on place le code de l’implémentation dans une paire
d’accolades.
Si la méthode renvoie quelque chose on doit impérativement trouver le mot return suivi
d’un élément du type correspondant à celui déclaré dans l’implémentation.
http://jb.vioix.free.fr 5-33
Classes et objets Méthodes
Application à Java
Une méthode est composée de deux éléments : la déclaration (entête, signature,. . . ) et
l’implémentation (corps,. . . ).
Une méthode est déclarée par son type de retour, son nom et une liste d’arguments (qui peut
être vide).
la liste des arguments est entre parenthèse, les arguments sont déclarés exactement comme des
variable (type puis nom)
le type de retour peut être un type primitif, une classe ou void si la méthode ne renvoie rien.
Après la parenthèse fermante, on place le code de l’implémentation dans une paire
d’accolades.
Si la méthode renvoie quelque chose on doit impérativement trouver le mot return suivi
d’un élément du type correspondant à celui déclaré dans l’implémentation.
http://jb.vioix.free.fr 5-33
Classes et objets Méthodes
Application à Java
Une méthode est composée de deux éléments : la déclaration (entête, signature,. . . ) et
l’implémentation (corps,. . . ).
Une méthode est déclarée par son type de retour, son nom et une liste d’arguments (qui peut
être vide).
la liste des arguments est entre parenthèse, les arguments sont déclarés exactement comme des
variable (type puis nom)
le type de retour peut être un type primitif, une classe ou void si la méthode ne renvoie rien.
Après la parenthèse fermante, on place le code de l’implémentation dans une paire
d’accolades.
Si la méthode renvoie quelque chose on doit impérativement trouver le mot return suivi
d’un élément du type correspondant à celui déclaré dans l’implémentation.
http://jb.vioix.free.fr 5-33
Classes et objets Méthodes
Application à Java
Une méthode est composée de deux éléments : la déclaration (entête, signature,. . . ) et
l’implémentation (corps,. . . ).
Une méthode est déclarée par son type de retour, son nom et une liste d’arguments (qui peut
être vide).
la liste des arguments est entre parenthèse, les arguments sont déclarés exactement comme des
variable (type puis nom)
le type de retour peut être un type primitif, une classe ou void si la méthode ne renvoie rien.
Après la parenthèse fermante, on place le code de l’implémentation dans une paire
d’accolades.
Si la méthode renvoie quelque chose on doit impérativement trouver le mot return suivi
d’un élément du type correspondant à celui déclaré dans l’implémentation.
http://jb.vioix.free.fr 5-33
Classes et objets Méthodes
Application à Java
Une méthode est composée de deux éléments : la déclaration (entête, signature,. . . ) et
l’implémentation (corps,. . . ).
Une méthode est déclarée par son type de retour, son nom et une liste d’arguments (qui peut
être vide).
la liste des arguments est entre parenthèse, les arguments sont déclarés exactement comme des
variable (type puis nom)
le type de retour peut être un type primitif, une classe ou void si la méthode ne renvoie rien.
Après la parenthèse fermante, on place le code de l’implémentation dans une paire
d’accolades.
Si la méthode renvoie quelque chose on doit impérativement trouver le mot return suivi
d’un élément du type correspondant à celui déclaré dans l’implémentation.
http://jb.vioix.free.fr 5-33
Classes et objets Méthodes
Application à Java
Une méthode est composée de deux éléments : la déclaration (entête, signature,. . . ) et
l’implémentation (corps,. . . ).
Une méthode est déclarée par son type de retour, son nom et une liste d’arguments (qui peut
être vide).
la liste des arguments est entre parenthèse, les arguments sont déclarés exactement comme des
variable (type puis nom)
le type de retour peut être un type primitif, une classe ou void si la méthode ne renvoie rien.
Après la parenthèse fermante, on place le code de l’implémentation dans une paire
d’accolades.
Si la méthode renvoie quelque chose on doit impérativement trouver le mot return suivi
d’un élément du type correspondant à celui déclaré dans l’implémentation.
http://jb.vioix.free.fr 5-33
Classes et objets Méthodes
Application à Java
Une méthode est composée de deux éléments : la déclaration (entête, signature,. . . ) et
l’implémentation (corps,. . . ).
Une méthode est déclarée par son type de retour, son nom et une liste d’arguments (qui peut
être vide).
la liste des arguments est entre parenthèse, les arguments sont déclarés exactement comme des
variable (type puis nom)
le type de retour peut être un type primitif, une classe ou void si la méthode ne renvoie rien.
Après la parenthèse fermante, on place le code de l’implémentation dans une paire
d’accolades.
Si la méthode renvoie quelque chose on doit impérativement trouver le mot return suivi
d’un élément du type correspondant à celui déclaré dans l’implémentation.
Surcharge de méthodes
Une même méthode peut avoir plusieurs déclarations différentes dans la même classe.
Le nombre et le type des arguments (et du retour) peuvent librement varier sous réserve que
pour un même ensemble d’arguement (nombres et types) il n’y ait qu’une seule déclaration.
Le compilateur choisit la méthode à utiliser en fonction des arguments passés.
Exemple en Java
http://jb.vioix.free.fr 6-33
Classes et objets Méthodes
Surcharge de méthodes
Une même méthode peut avoir plusieurs déclarations différentes dans la même classe.
Le nombre et le type des arguments (et du retour) peuvent librement varier sous réserve que
pour un même ensemble d’arguement (nombres et types) il n’y ait qu’une seule déclaration.
Le compilateur choisit la méthode à utiliser en fonction des arguments passés.
Exemple en Java
http://jb.vioix.free.fr 6-33
Classes et objets Méthodes
Surcharge de méthodes
Une même méthode peut avoir plusieurs déclarations différentes dans la même classe.
Le nombre et le type des arguments (et du retour) peuvent librement varier sous réserve que
pour un même ensemble d’arguement (nombres et types) il n’y ait qu’une seule déclaration.
Le compilateur choisit la méthode à utiliser en fonction des arguments passés.
Exemple en Java
http://jb.vioix.free.fr 6-33
Classes et objets Méthodes
Surcharge de méthodes
Une même méthode peut avoir plusieurs déclarations différentes dans la même classe.
Le nombre et le type des arguments (et du retour) peuvent librement varier sous réserve que
pour un même ensemble d’arguement (nombres et types) il n’y ait qu’une seule déclaration.
Le compilateur choisit la méthode à utiliser en fonction des arguments passés.
Exemple en Java
http://jb.vioix.free.fr 6-33
Classes et objets Constructeurs
Le constructeur
L’auto référence
A l’intérieur d’une classe il peut être nécessaire d’accéder à un attribut ou d’appeler une
méthode.
On utilise alors l’opérateur this suivi d’un point puis de l’attribut ou de la méthode
voulue :this.maMethode(unArgument)
Si il n’y a pas d’ambiguı̈té, on peut omettre this et utiliser simplement le nom de la méthode
ou le nom de l’attribut.
http://jb.vioix.free.fr 7-33
Classes et objets Constructeurs
Le constructeur
L’auto référence
A l’intérieur d’une classe il peut être nécessaire d’accéder à un attribut ou d’appeler une
méthode.
On utilise alors l’opérateur this suivi d’un point puis de l’attribut ou de la méthode
voulue :this.maMethode(unArgument)
Si il n’y a pas d’ambiguı̈té, on peut omettre this et utiliser simplement le nom de la méthode
ou le nom de l’attribut.
http://jb.vioix.free.fr 7-33
Classes et objets Constructeurs
Le constructeur
L’auto référence
A l’intérieur d’une classe il peut être nécessaire d’accéder à un attribut ou d’appeler une
méthode.
On utilise alors l’opérateur this suivi d’un point puis de l’attribut ou de la méthode
voulue :this.maMethode(unArgument)
Si il n’y a pas d’ambiguı̈té, on peut omettre this et utiliser simplement le nom de la méthode
ou le nom de l’attribut.
http://jb.vioix.free.fr 7-33
Classes et objets Constructeurs
Le constructeur
L’auto référence
A l’intérieur d’une classe il peut être nécessaire d’accéder à un attribut ou d’appeler une
méthode.
On utilise alors l’opérateur this suivi d’un point puis de l’attribut ou de la méthode
voulue :this.maMethode(unArgument)
Si il n’y a pas d’ambiguı̈té, on peut omettre this et utiliser simplement le nom de la méthode
ou le nom de l’attribut.
http://jb.vioix.free.fr 7-33
Classes et objets Constructeurs
Le constructeur
L’auto référence
A l’intérieur d’une classe il peut être nécessaire d’accéder à un attribut ou d’appeler une
méthode.
On utilise alors l’opérateur this suivi d’un point puis de l’attribut ou de la méthode
voulue :this.maMethode(unArgument)
Si il n’y a pas d’ambiguı̈té, on peut omettre this et utiliser simplement le nom de la méthode
ou le nom de l’attribut.
http://jb.vioix.free.fr 7-33
Classes et objets Constructeurs
Le constructeur
L’auto référence
A l’intérieur d’une classe il peut être nécessaire d’accéder à un attribut ou d’appeler une
méthode.
On utilise alors l’opérateur this suivi d’un point puis de l’attribut ou de la méthode
voulue :this.maMethode(unArgument)
Si il n’y a pas d’ambiguı̈té, on peut omettre this et utiliser simplement le nom de la méthode
ou le nom de l’attribut.
http://jb.vioix.free.fr 7-33
Classes et objets Constructeurs
Le constructeur
L’auto référence
A l’intérieur d’une classe il peut être nécessaire d’accéder à un attribut ou d’appeler une
méthode.
On utilise alors l’opérateur this suivi d’un point puis de l’attribut ou de la méthode
voulue :this.maMethode(unArgument)
Si il n’y a pas d’ambiguı̈té, on peut omettre this et utiliser simplement le nom de la méthode
ou le nom de l’attribut.
http://jb.vioix.free.fr 7-33
Classes et objets Constructeurs
Le constructeur
L’auto référence
A l’intérieur d’une classe il peut être nécessaire d’accéder à un attribut ou d’appeler une
méthode.
On utilise alors l’opérateur this suivi d’un point puis de l’attribut ou de la méthode
voulue :this.maMethode(unArgument)
Si il n’y a pas d’ambiguı̈té, on peut omettre this et utiliser simplement le nom de la méthode
ou le nom de l’attribut.
http://jb.vioix.free.fr 7-33
Classes et objets Constructeurs
Le constructeur
L’auto référence
A l’intérieur d’une classe il peut être nécessaire d’accéder à un attribut ou d’appeler une
méthode.
On utilise alors l’opérateur this suivi d’un point puis de l’attribut ou de la méthode
voulue :this.maMethode(unArgument)
Si il n’y a pas d’ambiguı̈té, on peut omettre this et utiliser simplement le nom de la méthode
ou le nom de l’attribut.
http://jb.vioix.free.fr 7-33
Classes et objets Constructeurs
Le constructeur
Livre () {
}
L’auto référence
A l’intérieur d’une classe il peut être nécessaire d’accéder à un attribut ou d’appeler une
méthode.
http://jb.vioix.free.fr 7-33
On utilise alors l’opérateur this suivi d’un point puis de l’attribut ou de la méthode
Classes et objets Classes
Les classes
Représentation en UML
Une classe est représentée par une boite à trois compartiment :
le nom de la classe,
les attributs de la classe (sous la forme nom : type),
les méthodes de la classe (sous la forme Nom(type nom,...) : type de retour
Les types sont souvent écrit en langage usuel (caractère, flottant, entier,. . . ).
Application à Java
Une classe doit être stockée dans un fichier qui porte le même nom qu’elle (attention à la
casse) suivi de l’extension .java
Une classe est déclarée avec les mots clés public class suivie du nom de la classe, puis
de tous les éléments dans des accolades.
L’ordre de déclaration des éléments est sans importance, mais on place souvent les attributs
puis les méthodes.
http://jb.vioix.free.fr 8-33
Classes et objets Classes
Les classes
Représentation en UML
Une classe est représentée par une boite à trois compartiment :
le nom de la classe,
les attributs de la classe (sous la forme nom : type),
les méthodes de la classe (sous la forme Nom(type nom,...) : type de retour
Les types sont souvent écrit en langage usuel (caractère, flottant, entier,. . . ).
Application à Java
Une classe doit être stockée dans un fichier qui porte le même nom qu’elle (attention à la
casse) suivi de l’extension .java
Une classe est déclarée avec les mots clés public class suivie du nom de la classe, puis
de tous les éléments dans des accolades.
L’ordre de déclaration des éléments est sans importance, mais on place souvent les attributs
puis les méthodes.
http://jb.vioix.free.fr 8-33
Classes et objets Classes
Les classes
Représentation en UML
Une classe est représentée par une boite à trois compartiment :
le nom de la classe,
les attributs de la classe (sous la forme nom : type),
les méthodes de la classe (sous la forme Nom(type nom,...) : type de retour
Les types sont souvent écrit en langage usuel (caractère, flottant, entier,. . . ).
Application à Java
Une classe doit être stockée dans un fichier qui porte le même nom qu’elle (attention à la
casse) suivi de l’extension .java
Une classe est déclarée avec les mots clés public class suivie du nom de la classe, puis
de tous les éléments dans des accolades.
L’ordre de déclaration des éléments est sans importance, mais on place souvent les attributs
puis les méthodes.
http://jb.vioix.free.fr 8-33
Classes et objets Classes
Les classes
Représentation en UML
Une classe est représentée par une boite à trois compartiment :
le nom de la classe,
les attributs de la classe (sous la forme nom : type),
les méthodes de la classe (sous la forme Nom(type nom,...) : type de retour
Les types sont souvent écrit en langage usuel (caractère, flottant, entier,. . . ).
Application à Java
Une classe doit être stockée dans un fichier qui porte le même nom qu’elle (attention à la
casse) suivi de l’extension .java
Une classe est déclarée avec les mots clés public class suivie du nom de la classe, puis
de tous les éléments dans des accolades.
L’ordre de déclaration des éléments est sans importance, mais on place souvent les attributs
puis les méthodes.
http://jb.vioix.free.fr 8-33
Classes et objets Classes
Les classes
Représentation en UML
Une classe est représentée par une boite à trois compartiment :
le nom de la classe,
les attributs de la classe (sous la forme nom : type),
les méthodes de la classe (sous la forme Nom(type nom,...) : type de retour
Les types sont souvent écrit en langage usuel (caractère, flottant, entier,. . . ).
Application à Java
Une classe doit être stockée dans un fichier qui porte le même nom qu’elle (attention à la
casse) suivi de l’extension .java
Une classe est déclarée avec les mots clés public class suivie du nom de la classe, puis
de tous les éléments dans des accolades.
L’ordre de déclaration des éléments est sans importance, mais on place souvent les attributs
puis les méthodes.
http://jb.vioix.free.fr 8-33
Classes et objets Classes
Les classes
Représentation en UML
Une classe est représentée par une boite à trois compartiment :
le nom de la classe,
les attributs de la classe (sous la forme nom : type),
les méthodes de la classe (sous la forme Nom(type nom,...) : type de retour
Les types sont souvent écrit en langage usuel (caractère, flottant, entier,. . . ).
MaClasse
unAttribut : entier
UneMethode(entier unArgument)
Application à Java
Une classe doit être stockée dans un fichier qui porte le même nom qu’elle (attention à la
casse) suivi de l’extension .java
Une classe est déclarée avec les mots clés public class suivie du nom de la classe, puis
de tous les éléments dans des accolades.
L’ordre de déclaration des éléments est sans importance, mais on place souvent les attributs
puis les méthodes.
http://jb.vioix.free.fr 8-33
Classes et objets Classes
Les classes
Représentation en UML
Une classe est représentée par une boite à trois compartiment :
le nom de la classe,
les attributs de la classe (sous la forme nom : type),
les méthodes de la classe (sous la forme Nom(type nom,...) : type de retour
Les types sont souvent écrit en langage usuel (caractère, flottant, entier,. . . ).
MaClasse
unAttribut : entier
UneMethode(entier unArgument)
Application à Java
Une classe doit être stockée dans un fichier qui porte le même nom qu’elle (attention à la
casse) suivi de l’extension .java
Une classe est déclarée avec les mots clés public class suivie du nom de la classe, puis
de tous les éléments dans des accolades.
L’ordre de déclaration des éléments est sans importance, mais on place souvent les attributs
puis les méthodes.
http://jb.vioix.free.fr 8-33
Classes et objets Classes
Les classes
Représentation en UML
Une classe est représentée par une boite à trois compartiment :
le nom de la classe,
les attributs de la classe (sous la forme nom : type),
les méthodes de la classe (sous la forme Nom(type nom,...) : type de retour
Les types sont souvent écrit en langage usuel (caractère, flottant, entier,. . . ).
Application à Java
Une classe doit être stockée dans un fichier qui porte le même nom qu’elle (attention à la
casse) suivi de l’extension .java
Une classe est déclarée avec les mots clés public class suivie du nom de la classe, puis
de tous les éléments dans des accolades.
L’ordre de déclaration des éléments est sans importance, mais on place souvent les attributs
puis les méthodes.
http://jb.vioix.free.fr 8-33
Classes et objets Classes
Les classes
Représentation en UML
Une classe est représentée par une boite à trois compartiment :
le nom de la classe,
les attributs de la classe (sous la forme nom : type),
les méthodes de la classe (sous la forme Nom(type nom,...) : type de retour
Les types sont souvent écrit en langage usuel (caractère, flottant, entier,. . . ).
Application à Java
Une classe doit être stockée dans un fichier qui porte le même nom qu’elle (attention à la
casse) suivi de l’extension .java
Une classe est déclarée avec les mots clés public class suivie du nom de la classe, puis
de tous les éléments dans des accolades.
L’ordre de déclaration des éléments est sans importance, mais on place souvent les attributs
puis les méthodes.
http://jb.vioix.free.fr 8-33
Classes et objets Classes
Les classes
Représentation en UML
Une classe est représentée par une boite à trois compartiment :
le nom de la classe,
les attributs de la classe (sous la forme nom : type),
les méthodes de la classe (sous la forme Nom(type nom,...) : type de retour
Les types sont souvent écrit en langage usuel (caractère, flottant, entier,. . . ).
Application à Java
Une classe doit être stockée dans un fichier qui porte le même nom qu’elle (attention à la
casse) suivi de l’extension .java
Une classe est déclarée avec les mots clés public class suivie du nom de la classe, puis
de tous les éléments dans des accolades.
L’ordre de déclaration des éléments est sans importance, mais on place souvent les attributs
puis les méthodes.
http://jb.vioix.free.fr 8-33
Classes et objets Classes
Déclaration et construction
Déclaration
La déclaration sert à réserver de l’espace mémoire pour un futur objet.
Pour déclarer une variable qui va désigner un objet, on utilise la même notation que pour les
types primitifs : Classe nomVariable ;
La variable est alors initialisée à null
Construction
La construction d’un nouvel objet se fait avec l’opérateur new suivit du constructeur de la
classe et d’une liste (optionnelle) d’arguments entre parenthèses (éventuellement vides).
L’objet renvoyé par le constructeur est liée à la variable qui le référence à l’aide de l’opérateur
=
Référence
Les variables référencent un objet, elles ne sont pas l’objet.
Deux variables peuvent référencer le même objet, quand un objet n’a plus aucune référence
il est détruit.
Pour détruire une référence, on utilise la valeur null
http://jb.vioix.free.fr 9-33
Classes et objets Classes
Déclaration et construction
Déclaration
La déclaration sert à réserver de l’espace mémoire pour un futur objet.
Pour déclarer une variable qui va désigner un objet, on utilise la même notation que pour les
types primitifs : Classe nomVariable ;
La variable est alors initialisée à null
Construction
La construction d’un nouvel objet se fait avec l’opérateur new suivit du constructeur de la
classe et d’une liste (optionnelle) d’arguments entre parenthèses (éventuellement vides).
L’objet renvoyé par le constructeur est liée à la variable qui le référence à l’aide de l’opérateur
=
Référence
Les variables référencent un objet, elles ne sont pas l’objet.
Deux variables peuvent référencer le même objet, quand un objet n’a plus aucune référence
il est détruit.
Pour détruire une référence, on utilise la valeur null
http://jb.vioix.free.fr 9-33
Classes et objets Classes
Déclaration et construction
Déclaration
La déclaration sert à réserver de l’espace mémoire pour un futur objet.
Pour déclarer une variable qui va désigner un objet, on utilise la même notation que pour les
types primitifs : Classe nomVariable ;
La variable est alors initialisée à null
Livre monLivre;
Construction
La construction d’un nouvel objet se fait avec l’opérateur new suivit du constructeur de la
classe et d’une liste (optionnelle) d’arguments entre parenthèses (éventuellement vides).
L’objet renvoyé par le constructeur est liée à la variable qui le référence à l’aide de l’opérateur
=
Référence
Les variables référencent un objet, elles ne sont pas l’objet.
Deux variables peuvent référencer le même objet, quand un objet n’a plus aucune référence
il est détruit.
Pour détruire une référence, on utilise la valeur null
http://jb.vioix.free.fr 9-33
Classes et objets Classes
Déclaration et construction
Déclaration
La déclaration sert à réserver de l’espace mémoire pour un futur objet.
Pour déclarer une variable qui va désigner un objet, on utilise la même notation que pour les
types primitifs : Classe nomVariable ;
La variable est alors initialisée à null
Construction
La construction d’un nouvel objet se fait avec l’opérateur new suivit du constructeur de la
classe et d’une liste (optionnelle) d’arguments entre parenthèses (éventuellement vides).
L’objet renvoyé par le constructeur est liée à la variable qui le référence à l’aide de l’opérateur
=
Référence
Les variables référencent un objet, elles ne sont pas l’objet.
Deux variables peuvent référencer le même objet, quand un objet n’a plus aucune référence
il est détruit.
Pour détruire une référence, on utilise la valeur null
http://jb.vioix.free.fr 9-33
Classes et objets Classes
Déclaration et construction
Déclaration
La déclaration sert à réserver de l’espace mémoire pour un futur objet.
Pour déclarer une variable qui va désigner un objet, on utilise la même notation que pour les
types primitifs : Classe nomVariable ;
La variable est alors initialisée à null
Construction
La construction d’un nouvel objet se fait avec l’opérateur new suivit du constructeur de la
classe et d’une liste (optionnelle) d’arguments entre parenthèses (éventuellement vides).
L’objet renvoyé par le constructeur est liée à la variable qui le référence à l’aide de l’opérateur
=
Référence
Les variables référencent un objet, elles ne sont pas l’objet.
Deux variables peuvent référencer le même objet, quand un objet n’a plus aucune référence
il est détruit.
Pour détruire une référence, on utilise la valeur null
http://jb.vioix.free.fr 9-33
Classes et objets Classes
Déclaration et construction
Déclaration
La déclaration sert à réserver de l’espace mémoire pour un futur objet.
Pour déclarer une variable qui va désigner un objet, on utilise la même notation que pour les
types primitifs : Classe nomVariable ;
La variable est alors initialisée à null
Construction
La construction d’un nouvel objet se fait avec l’opérateur new suivit du constructeur de la
classe et d’une liste (optionnelle) d’arguments entre parenthèses (éventuellement vides).
L’objet renvoyé par le constructeur est liée à la variable qui le référence à l’aide de l’opérateur
=
Référence
Les variables référencent un objet, elles ne sont pas l’objet.
Deux variables peuvent référencer le même objet, quand un objet n’a plus aucune référence
il est détruit.
Pour détruire une référence, on utilise la valeur null
http://jb.vioix.free.fr 9-33
Classes et objets Classes
Déclaration et construction
Déclaration
La déclaration sert à réserver de l’espace mémoire pour un futur objet.
Pour déclarer une variable qui va désigner un objet, on utilise la même notation que pour les
types primitifs : Classe nomVariable ;
La variable est alors initialisée à null
Construction
La construction d’un nouvel objet se fait avec l’opérateur new suivit du constructeur de la
classe et d’une liste (optionnelle) d’arguments entre parenthèses (éventuellement vides).
L’objet renvoyé par le constructeur est liée à la variable qui le référence à l’aide de l’opérateur
=
Livre monLivre;
monLivre = new Livre(‘‘Orwell’’,‘‘1984’’);
Référence
Les variables référencent un objet, elles ne sont pas l’objet.
Deux variables peuvent référencer le même objet, quand un objet n’a plus aucune référence
il est détruit.
Pour détruire une référence, on utilise la valeur null
http://jb.vioix.free.fr 9-33
Classes et objets Classes
Déclaration et construction
Déclaration
La déclaration sert à réserver de l’espace mémoire pour un futur objet.
Pour déclarer une variable qui va désigner un objet, on utilise la même notation que pour les
types primitifs : Classe nomVariable ;
La variable est alors initialisée à null
Construction
La construction d’un nouvel objet se fait avec l’opérateur new suivit du constructeur de la
classe et d’une liste (optionnelle) d’arguments entre parenthèses (éventuellement vides).
L’objet renvoyé par le constructeur est liée à la variable qui le référence à l’aide de l’opérateur
=
Référence
Les variables référencent un objet, elles ne sont pas l’objet.
Deux variables peuvent référencer le même objet, quand un objet n’a plus aucune référence
il est détruit.
Pour détruire une référence, on utilise la valeur null
http://jb.vioix.free.fr 9-33
Classes et objets Classes
Déclaration et construction
Déclaration
La déclaration sert à réserver de l’espace mémoire pour un futur objet.
Pour déclarer une variable qui va désigner un objet, on utilise la même notation que pour les
types primitifs : Classe nomVariable ;
La variable est alors initialisée à null
Construction
La construction d’un nouvel objet se fait avec l’opérateur new suivit du constructeur de la
classe et d’une liste (optionnelle) d’arguments entre parenthèses (éventuellement vides).
L’objet renvoyé par le constructeur est liée à la variable qui le référence à l’aide de l’opérateur
=
Référence
Les variables référencent un objet, elles ne sont pas l’objet.
Deux variables peuvent référencer le même objet, quand un objet n’a plus aucune référence
il est détruit.
Pour détruire une référence, on utilise la valeur null
http://jb.vioix.free.fr 9-33
Classes et objets Classes
Déclaration et construction
Déclaration
La déclaration sert à réserver de l’espace mémoire pour un futur objet.
Pour déclarer une variable qui va désigner un objet, on utilise la même notation que pour les
types primitifs : Classe nomVariable ;
La variable est alors initialisée à null
Construction
La construction d’un nouvel objet se fait avec l’opérateur new suivit du constructeur de la
classe et d’une liste (optionnelle) d’arguments entre parenthèses (éventuellement vides).
L’objet renvoyé par le constructeur est liée à la variable qui le référence à l’aide de l’opérateur
=
Référence
Les variables référencent un objet, elles ne sont pas l’objet.
Deux variables peuvent référencer le même objet, quand un objet n’a plus aucune référence
il est détruit.
Pour détruire une référence, on utilise la valeur null
http://jb.vioix.free.fr 9-33
Classes et objets Classes
Déclaration et construction
Déclaration
La déclaration sert à réserver de l’espace mémoire pour un futur objet.
Pour déclarer une variable qui va désigner un objet, on utilise la même notation que pour les
types primitifs : Classe nomVariable ;
La variable est alors initialisée à null
Construction
La construction d’un nouvel objet se fait avec l’opérateur new suivit du constructeur de la
classe et d’une liste (optionnelle) d’arguments entre parenthèses (éventuellement vides).
L’objet renvoyé par le constructeur est liée à la variable qui le référence à l’aide de l’opérateur
=
Référence
Les variables référencent un objet, elles ne sont pas l’objet.
Deux variables peuvent référencer le même objet, quand un objet n’a plus aucune référence
il est détruit.
Pour détruire une référence, on utilise la valeur null
monLivre = null;
http://jb.vioix.free.fr 9-33
Classes et objets Classes
Cascade
Les accès peuvent être chainés :
http://jb.vioix.free.fr 10-33
Classes et objets Classes
Cascade
Les accès peuvent être chainés :
http://jb.vioix.free.fr 10-33
Classes et objets Classes
Cascade
Les accès peuvent être chainés :
http://jb.vioix.free.fr 10-33
Classes et objets Classes
Cascade
Les accès peuvent être chainés :
http://jb.vioix.free.fr 10-33
Classes et objets Classes
Cascade
Les accès peuvent être chainés :
http://jb.vioix.free.fr 10-33
Classes et objets Classes
Cascade
Les accès peuvent être chainés :
http://jb.vioix.free.fr 10-33
Classes et objets Classes
Cascade
Les accès peuvent être chainés :
http://jb.vioix.free.fr 10-33
Classes et objets Classes
Cascade
Les accès peuvent être chainés :
titre = unLivre.renvoieTitre().upCase();
http://jb.vioix.free.fr 10-33
Relations entre les classes Agrégation
L’agrégation (1)
Principe
Un attribut d’une classe peut être un objet instance d’une autre classe.
L’élément agrégé (l’objet) peut être partagé entre différents éléments.
Un élément agrégé peut exister indépendamment de son conteneur.
Représentation UML
1..* 1 Fichier
EditeurDeTexte Nom : chaine
unFichier : Fichier Ouvrir()
AfficherTexte() Fermer()
http://jb.vioix.free.fr 11-33
Relations entre les classes Agrégation
L’agrégation (1)
Principe
Un attribut d’une classe peut être un objet instance d’une autre classe.
L’élément agrégé (l’objet) peut être partagé entre différents éléments.
Un élément agrégé peut exister indépendamment de son conteneur.
Représentation UML
1..* 1 Fichier
EditeurDeTexte Nom : chaine
unFichier : Fichier Ouvrir()
AfficherTexte() Fermer()
http://jb.vioix.free.fr 11-33
Relations entre les classes Agrégation
L’agrégation (1)
Principe
Un attribut d’une classe peut être un objet instance d’une autre classe.
L’élément agrégé (l’objet) peut être partagé entre différents éléments.
Un élément agrégé peut exister indépendamment de son conteneur.
Représentation UML
1..* 1 Fichier
EditeurDeTexte Nom : chaine
unFichier : Fichier Ouvrir()
AfficherTexte() Fermer()
http://jb.vioix.free.fr 11-33
Relations entre les classes Agrégation
L’agrégation (1)
Principe
Un attribut d’une classe peut être un objet instance d’une autre classe.
L’élément agrégé (l’objet) peut être partagé entre différents éléments.
Un élément agrégé peut exister indépendamment de son conteneur.
Représentation UML
1..* 1 Fichier
EditeurDeTexte Nom : chaine
unFichier : Fichier Ouvrir()
AfficherTexte() Fermer()
http://jb.vioix.free.fr 11-33
Relations entre les classes Agrégation
L’agrégation (2)
Implémentation en Java
L’élément agrégé est référencé par un attribut dans le conteneur.
Selon la cardinalité (nombre d’éléments agrégés), on utilisera soit une variable simple soit un
tableau, une liste,. . .
http://jb.vioix.free.fr 12-33
Relations entre les classes Agrégation
L’agrégation (2)
Implémentation en Java
L’élément agrégé est référencé par un attribut dans le conteneur.
Selon la cardinalité (nombre d’éléments agrégés), on utilisera soit une variable simple soit un
tableau, une liste,. . .
http://jb.vioix.free.fr 12-33
Relations entre les classes Composition
La composition (1)
Principe
La composition est proche de l’agrégation mais la relation est plus contraignante pour le
contenu.
La suppression du conteneur entraı̂ne la suppression du contenu
Un seul élément ne peut appartenir qu’à une seule composition.
Représentation UML
Tableur 1 1..*
titreFeuille : chaine Cellule
cells[][] : Cellule valeur : flottant
http://jb.vioix.free.fr 13-33
Relations entre les classes Composition
La composition (1)
Principe
La composition est proche de l’agrégation mais la relation est plus contraignante pour le
contenu.
La suppression du conteneur entraı̂ne la suppression du contenu
Un seul élément ne peut appartenir qu’à une seule composition.
Représentation UML
Tableur 1 1..*
titreFeuille : chaine Cellule
cells[][] : Cellule valeur : flottant
http://jb.vioix.free.fr 13-33
Relations entre les classes Composition
La composition (1)
Principe
La composition est proche de l’agrégation mais la relation est plus contraignante pour le
contenu.
La suppression du conteneur entraı̂ne la suppression du contenu
Un seul élément ne peut appartenir qu’à une seule composition.
Représentation UML
Tableur 1 1..*
titreFeuille : chaine Cellule
cells[][] : Cellule valeur : flottant
http://jb.vioix.free.fr 13-33
Relations entre les classes Composition
La composition (2)
Implémentation en Java
La solution la plus simple consiste à créer les éléments composés dans le constructeur du
conteneur.
La destruction du conteneur conduit à la destruction du contenu s’il n’y a pas d’autre
références (dans ce cas, ce n’est plus une composition !).
http://jb.vioix.free.fr 14-33
Relations entre les classes Composition
La composition (2)
Implémentation en Java
La solution la plus simple consiste à créer les éléments composés dans le constructeur du
conteneur.
La destruction du conteneur conduit à la destruction du contenu s’il n’y a pas d’autre
références (dans ce cas, ce n’est plus une composition !).
http://jb.vioix.free.fr 14-33
Relations entre les classes Heritage
L’héritage (1)
Principe
Des classes ayant des fonctionnalités communes peuvent être construites en utilisant le
mécanisme d’héritage.
On peut spécialiser des classes à partir d’une classe générique.
Représentation UML
L’héritage est représenté par une flèche à pointe triangulaire placée sur la classe mère.
InterfacesReseaux
port : byte
LireOctect()
EcrireOctet(byte b)
InterfaceTCP InterfaceUDP
LireOctect() LireOctect()
EcrireOctet(byte b) EcrireOctet(byte b)
http://jb.vioix.free.fr 15-33
Relations entre les classes Heritage
L’héritage (1)
Principe
Des classes ayant des fonctionnalités communes peuvent être construites en utilisant le
mécanisme d’héritage.
On peut spécialiser des classes à partir d’une classe générique.
Représentation UML
L’héritage est représenté par une flèche à pointe triangulaire placée sur la classe mère.
InterfacesReseaux
port : byte
LireOctect()
EcrireOctet(byte b)
InterfaceTCP InterfaceUDP
LireOctect() LireOctect()
EcrireOctet(byte b) EcrireOctet(byte b)
http://jb.vioix.free.fr 15-33
Relations entre les classes Heritage
L’héritage (1)
Principe
Des classes ayant des fonctionnalités communes peuvent être construites en utilisant le
mécanisme d’héritage.
On peut spécialiser des classes à partir d’une classe générique.
Représentation UML
L’héritage est représenté par une flèche à pointe triangulaire placée sur la classe mère.
InterfacesReseaux
port : byte
LireOctect()
EcrireOctet(byte b)
InterfaceTCP InterfaceUDP
LireOctect() LireOctect()
EcrireOctet(byte b) EcrireOctet(byte b)
http://jb.vioix.free.fr 15-33
Relations entre les classes Heritage
L’héritage (2)
Interêt de l’héritage
Le code commun entre différentes classes est factorisé dans la classe mère, les
modifications se trouvent facilitées.
On peut construire une classe spécialisée à partir d’une classe existante sans connaı̂tre le
détail de la classe mère.
Conséquence de l’héritage
La classe fille contient toutes les méthodes et tous les attributs de la classe mère (même s’il
ne sont pas visibles).
Les instances de la classe fille (objets) sont aussi des instances de la classe mère,
l’opérateur instanceof renvoie true
La classe fille peut en plus contenir d’autres méthodes ou d’autres attributs ou redéfinir
ceux de la classe mère.
http://jb.vioix.free.fr 16-33
Relations entre les classes Heritage
L’héritage (2)
Interêt de l’héritage
Le code commun entre différentes classes est factorisé dans la classe mère, les
modifications se trouvent facilitées.
On peut construire une classe spécialisée à partir d’une classe existante sans connaı̂tre le
détail de la classe mère.
Conséquence de l’héritage
La classe fille contient toutes les méthodes et tous les attributs de la classe mère (même s’il
ne sont pas visibles).
Les instances de la classe fille (objets) sont aussi des instances de la classe mère,
l’opérateur instanceof renvoie true
La classe fille peut en plus contenir d’autres méthodes ou d’autres attributs ou redéfinir
ceux de la classe mère.
http://jb.vioix.free.fr 16-33
Relations entre les classes Heritage
L’héritage (2)
Interêt de l’héritage
Le code commun entre différentes classes est factorisé dans la classe mère, les
modifications se trouvent facilitées.
On peut construire une classe spécialisée à partir d’une classe existante sans connaı̂tre le
détail de la classe mère.
Conséquence de l’héritage
La classe fille contient toutes les méthodes et tous les attributs de la classe mère (même s’il
ne sont pas visibles).
Les instances de la classe fille (objets) sont aussi des instances de la classe mère,
l’opérateur instanceof renvoie true
La classe fille peut en plus contenir d’autres méthodes ou d’autres attributs ou redéfinir
ceux de la classe mère.
http://jb.vioix.free.fr 16-33
Relations entre les classes Heritage
L’héritage (2)
Interêt de l’héritage
Le code commun entre différentes classes est factorisé dans la classe mère, les
modifications se trouvent facilitées.
On peut construire une classe spécialisée à partir d’une classe existante sans connaı̂tre le
détail de la classe mère.
Conséquence de l’héritage
La classe fille contient toutes les méthodes et tous les attributs de la classe mère (même s’il
ne sont pas visibles).
Les instances de la classe fille (objets) sont aussi des instances de la classe mère,
l’opérateur instanceof renvoie true
La classe fille peut en plus contenir d’autres méthodes ou d’autres attributs ou redéfinir
ceux de la classe mère.
http://jb.vioix.free.fr 16-33
Relations entre les classes Heritage
L’héritage (2)
Interêt de l’héritage
Le code commun entre différentes classes est factorisé dans la classe mère, les
modifications se trouvent facilitées.
On peut construire une classe spécialisée à partir d’une classe existante sans connaı̂tre le
détail de la classe mère.
Conséquence de l’héritage
La classe fille contient toutes les méthodes et tous les attributs de la classe mère (même s’il
ne sont pas visibles).
Les instances de la classe fille (objets) sont aussi des instances de la classe mère,
l’opérateur instanceof renvoie true
La classe fille peut en plus contenir d’autres méthodes ou d’autres attributs ou redéfinir
ceux de la classe mère.
http://jb.vioix.free.fr 16-33
Relations entre les classes Heritage
L’héritage (3)
Utilisation en Java
L’héritage est spécifié lors de la déclaration de la classe à l’aide du mot clé extends
La classe object
Toutes les classes qui n’héritent pas d’une autre classe héritent directement de la classe
object.
Toutes les classes héritent donc indirectement de la classe object.
Cette classe contient (entre autres) les méthodes : toString(), getClass() et finalize()
http://jb.vioix.free.fr 17-33
Relations entre les classes Heritage
L’héritage (3)
Utilisation en Java
L’héritage est spécifié lors de la déclaration de la classe à l’aide du mot clé extends
La classe object
Toutes les classes qui n’héritent pas d’une autre classe héritent directement de la classe
object.
Toutes les classes héritent donc indirectement de la classe object.
Cette classe contient (entre autres) les méthodes : toString(), getClass() et finalize()
http://jb.vioix.free.fr 17-33
Relations entre les classes Heritage
L’héritage (3)
Utilisation en Java
L’héritage est spécifié lors de la déclaration de la classe à l’aide du mot clé extends
La classe object
Toutes les classes qui n’héritent pas d’une autre classe héritent directement de la classe
object.
Toutes les classes héritent donc indirectement de la classe object.
Cette classe contient (entre autres) les méthodes : toString(), getClass() et finalize()
http://jb.vioix.free.fr 17-33
Relations entre les classes Heritage
L’héritage (3)
Utilisation en Java
L’héritage est spécifié lors de la déclaration de la classe à l’aide du mot clé extends
La classe object
Toutes les classes qui n’héritent pas d’une autre classe héritent directement de la classe
object.
Toutes les classes héritent donc indirectement de la classe object.
Cette classe contient (entre autres) les méthodes : toString(), getClass() et finalize()
http://jb.vioix.free.fr 17-33
Relations entre les classes Heritage
L’héritage (4)
http://jb.vioix.free.fr 18-33
Relations entre les classes Heritage
L’héritage (4)
http://jb.vioix.free.fr 18-33
Relations entre les classes Heritage
L’héritage (4)
http://jb.vioix.free.fr 18-33
Relations entre les classes Heritage
L’héritage (4)
http://jb.vioix.free.fr 18-33
Relations entre les classes Heritage
L’héritage (4)
http://jb.vioix.free.fr 18-33
Relations entre les classes Heritage
L’héritage (4)
http://jb.vioix.free.fr 18-33
Relations entre les classes Heritage
L’héritage (4)
http://jb.vioix.free.fr 18-33
Relations entre les classes Heritage
L’héritage (4)
http://jb.vioix.free.fr 18-33
Relations entre les classes Heritage
L’héritage (4)
http://jb.vioix.free.fr 18-33
Relations entre les classes Classes et méthodes abstraites
Polygone
...
sommets[][] : Point
...
...
CalculerSurface() : flottant
...
http://jb.vioix.free.fr 19-33
Relations entre les classes Classes et méthodes abstraites
Polygone
...
sommets[][] : Point
...
...
CalculerSurface() : flottant
...
http://jb.vioix.free.fr 19-33
Relations entre les classes Classes et méthodes abstraites
Polygone
...
sommets[][] : Point
...
...
CalculerSurface() : flottant
...
http://jb.vioix.free.fr 19-33
Relations entre les classes Classes et méthodes abstraites
Polygone
...
sommets[][] : Point
...
...
CalculerSurface() : flottant
...
http://jb.vioix.free.fr 19-33
Relations entre les classes Classes et méthodes abstraites
Principe
Une classe abstraite ne peut pas être instanciée ; seules ses classes filles peuvent l’être.
Le but est de décrire un comportement général puis de le raffiner dans les classes filles.
Une classe qui contient une (ou plusieurs) méthode(s) abstraite(s) doit être déclarée
abstraite. Ce n’est pas réciproque, une classe abstraite peut avoir toutes ces méthodes
d’implémentées.
http://jb.vioix.free.fr 20-33
Relations entre les classes Classes et méthodes abstraites
Principe
Une classe abstraite ne peut pas être instanciée ; seules ses classes filles peuvent l’être.
Le but est de décrire un comportement général puis de le raffiner dans les classes filles.
Une classe qui contient une (ou plusieurs) méthode(s) abstraite(s) doit être déclarée
abstraite. Ce n’est pas réciproque, une classe abstraite peut avoir toutes ces méthodes
d’implémentées.
http://jb.vioix.free.fr 20-33
Relations entre les classes Classes et méthodes abstraites
Principe
Une classe abstraite ne peut pas être instanciée ; seules ses classes filles peuvent l’être.
Le but est de décrire un comportement général puis de le raffiner dans les classes filles.
Une classe qui contient une (ou plusieurs) méthode(s) abstraite(s) doit être déclarée
abstraite. Ce n’est pas réciproque, une classe abstraite peut avoir toutes ces méthodes
d’implémentées.
http://jb.vioix.free.fr 20-33
Relations entre les classes Classes et méthodes abstraites
Principe
Une classe abstraite ne peut pas être instanciée ; seules ses classes filles peuvent l’être.
Le but est de décrire un comportement général puis de le raffiner dans les classes filles.
Une classe qui contient une (ou plusieurs) méthode(s) abstraite(s) doit être déclarée
abstraite. Ce n’est pas réciproque, une classe abstraite peut avoir toutes ces méthodes
d’implémentées.
http://jb.vioix.free.fr 20-33
Relations entre les classes Classes et méthodes abstraites
Principe
Une classe abstraite ne peut pas être instanciée ; seules ses classes filles peuvent l’être.
Le but est de décrire un comportement général puis de le raffiner dans les classes filles.
Une classe qui contient une (ou plusieurs) méthode(s) abstraite(s) doit être déclarée
abstraite. Ce n’est pas réciproque, une classe abstraite peut avoir toutes ces méthodes
d’implémentées.
http://jb.vioix.free.fr 20-33
Relations entre les classes Interfaces
Principe
Une classe fille pourrait hériter de plusieurs classes mères.
Java interdit l’héritage multiple (contrairement à d’autres langages).
A la place, on utilise les interfaces. Les interfaces sont une liste de méthodes (juste les
déclarations) que les classes implémentent.
Elles ne contiennent pas d’attributs.
Interface Dessinable
DessinerFormePleine()
DessinerFormeVide()
http://jb.vioix.free.fr 21-33
Relations entre les classes Interfaces
Principe
Une classe fille pourrait hériter de plusieurs classes mères.
Java interdit l’héritage multiple (contrairement à d’autres langages).
A la place, on utilise les interfaces. Les interfaces sont une liste de méthodes (juste les
déclarations) que les classes implémentent.
Elles ne contiennent pas d’attributs.
Interface Dessinable
DessinerFormePleine()
DessinerFormeVide()
http://jb.vioix.free.fr 21-33
Relations entre les classes Interfaces
Principe
Une classe fille pourrait hériter de plusieurs classes mères.
Java interdit l’héritage multiple (contrairement à d’autres langages).
A la place, on utilise les interfaces. Les interfaces sont une liste de méthodes (juste les
déclarations) que les classes implémentent.
Elles ne contiennent pas d’attributs.
Interface Dessinable
DessinerFormePleine()
DessinerFormeVide()
http://jb.vioix.free.fr 21-33
Relations entre les classes Interfaces
Principe
Une classe fille pourrait hériter de plusieurs classes mères.
Java interdit l’héritage multiple (contrairement à d’autres langages).
A la place, on utilise les interfaces. Les interfaces sont une liste de méthodes (juste les
déclarations) que les classes implémentent.
Elles ne contiennent pas d’attributs.
Interface Dessinable
DessinerFormePleine()
DessinerFormeVide()
http://jb.vioix.free.fr 21-33
Relations entre les classes Interfaces
Principe
Une classe fille pourrait hériter de plusieurs classes mères.
Java interdit l’héritage multiple (contrairement à d’autres langages).
A la place, on utilise les interfaces. Les interfaces sont une liste de méthodes (juste les
déclarations) que les classes implémentent.
Elles ne contiennent pas d’attributs.
Interface Dessinable
DessinerFormePleine()
DessinerFormeVide()
http://jb.vioix.free.fr 21-33
Relations entre les classes Interfaces
Principe
Une classe fille pourrait hériter de plusieurs classes mères.
Java interdit l’héritage multiple (contrairement à d’autres langages).
A la place, on utilise les interfaces. Les interfaces sont une liste de méthodes (juste les
déclarations) que les classes implémentent.
Elles ne contiennent pas d’attributs.
Interface Dessinable
DessinerFormePleine()
DessinerFormeVide()
http://jb.vioix.free.fr 21-33
Relations entre les classes Interfaces
Représentation UML
Les relations d’implémentation sont représenté par une ligne pointillée avec une flèche à
l’extrémité de l’interface.
FichierTexte FichierBinaire
Nom : Chaine Nom : Chaine
Enregistrer(String nomDuFichier) Enregistrer(String nomDuFichier)
Imprimer() Executer()
Utilisation en Java
Le mot clé implements permet de construire la relation entre la classe et l’interface.
Une classe implémentant une interface doit avoir toutes les méthodes de cette interface.
http://jb.vioix.free.fr 22-33
Relations entre les classes Interfaces
Représentation UML
Les relations d’implémentation sont représenté par une ligne pointillée avec une flèche à
l’extrémité de l’interface.
FichierTexte FichierBinaire
Nom : Chaine Nom : Chaine
Enregistrer(String nomDuFichier) Enregistrer(String nomDuFichier)
Imprimer() Executer()
Utilisation en Java
Le mot clé implements permet de construire la relation entre la classe et l’interface.
Une classe implémentant une interface doit avoir toutes les méthodes de cette interface.
http://jb.vioix.free.fr 22-33
Relations entre les classes Interfaces
Représentation UML
Les relations d’implémentation sont représenté par une ligne pointillée avec une flèche à
l’extrémité de l’interface.
Utilisation en Java
Le mot clé implements permet de construire la relation entre la classe et l’interface.
Une classe implémentant une interface doit avoir toutes les méthodes de cette interface.
Les fichiers Enregistrable.java et
Imprimable.java contiennent
public interface Imprimable {
void Imprimer () ;
}
http://jb.vioix.free.fr 22-33
Relations entre les classes Interfaces
Représentation UML
Les relations d’implémentation sont représenté par une ligne pointillée avec une flèche à
l’extrémité de l’interface.
Utilisation en Java
Le mot clé implements permet de construire la relation entre la classe et l’interface.
Une classe implémentant une interface doit avoir toutes les méthodes de cette interface.
Les fichiers Enregistrable.java et
Imprimable.java contiennent
public interface Imprimable {
void Imprimer () ;
}
http://jb.vioix.free.fr 22-33
Relations entre les classes Interfaces
Représentation UML
Les relations d’implémentation sont représenté par une ligne pointillée avec une flèche à
l’extrémité de l’interface.
Utilisation en Java
Le mot clé implements permet de construire la relation entre la classe et l’interface.
Une classe implémentant une interface doit avoir toutes les méthodes de cette interface.
Les fichiers Enregistrable.java et Le fichier FichierTexte.java contient
Imprimable.java contiennent public FichierTexte implements
Imprimable , Enregistrable {
public interface Imprimable { String nom ;
void Imprimer () ;
}
void Imprimer () {
...
public interface Enregistrable {
}
void Enregistrer ( String nomDuFichier ) ;
}
void Enregistrer ( String nomDuFichier ){
...
}
}
http://jb.vioix.free.fr 22-33
Relations entre les classes Interfaces
Représentation UML
Les relations d’implémentation sont représenté par une ligne pointillée avec une flèche à
l’extrémité de l’interface.
Utilisation en Java
Le mot clé implements permet de construire la relation entre la classe et l’interface.
Une classe implémentant une interface doit avoir toutes les méthodes de cette interface.
Les fichiers Enregistrable.java et Le fichier FichierExecutable.java
Imprimable.java contiennent public FichierBinaire implements
Enregistrable {
public interface Imprimable { String nom ;
void Imprimer () ;
}
void Executer () {
...
public interface Enregistrable {
}
void Enregistrer ( String nomDuFichier ) ;
}
void Enregistrer ( String nomDuFichier ){
...
}
}
http://jb.vioix.free.fr 22-33
Relations entre les classes Interfaces
Comment choisir ?. . .
L’idée commune est de signifier la présence d’une méthode qui sera implémentée dans les
classes liées(filles ou implémentantes).
L’utilisation d’une classe abstraite impose une relation d’héritage entre les différentes
classes ; les interfaces n’imposent aucune relation d’héritage.
Les classes abstraites permettent d’avoir des attributs en commun contrairement aux
interfaces.
Une classe ne peut hériter que d’une seule classe abstraite alors qu’elle peut implémenter
plusieurs interfaces.
Intérêt
Les classes abstraites et les interfaces peuvent être utilisées à la place d’un type ou d’une
classe dans les arguments d’une méthode.
On ne connaı̂t pas exactement la classe mais on sait qu’elle implémente telle ou telle
méthode.
Elles sont très utilisées dans l’API graphique (Swing) de Java
http://jb.vioix.free.fr 23-33
Relations entre les classes Interfaces
Comment choisir ?. . .
L’idée commune est de signifier la présence d’une méthode qui sera implémentée dans les
classes liées(filles ou implémentantes).
L’utilisation d’une classe abstraite impose une relation d’héritage entre les différentes
classes ; les interfaces n’imposent aucune relation d’héritage.
Les classes abstraites permettent d’avoir des attributs en commun contrairement aux
interfaces.
Une classe ne peut hériter que d’une seule classe abstraite alors qu’elle peut implémenter
plusieurs interfaces.
Intérêt
Les classes abstraites et les interfaces peuvent être utilisées à la place d’un type ou d’une
classe dans les arguments d’une méthode.
On ne connaı̂t pas exactement la classe mais on sait qu’elle implémente telle ou telle
méthode.
Elles sont très utilisées dans l’API graphique (Swing) de Java
http://jb.vioix.free.fr 23-33
Relations entre les classes Interfaces
Comment choisir ?. . .
L’idée commune est de signifier la présence d’une méthode qui sera implémentée dans les
classes liées(filles ou implémentantes).
L’utilisation d’une classe abstraite impose une relation d’héritage entre les différentes
classes ; les interfaces n’imposent aucune relation d’héritage.
Les classes abstraites permettent d’avoir des attributs en commun contrairement aux
interfaces.
Une classe ne peut hériter que d’une seule classe abstraite alors qu’elle peut implémenter
plusieurs interfaces.
Intérêt
Les classes abstraites et les interfaces peuvent être utilisées à la place d’un type ou d’une
classe dans les arguments d’une méthode.
On ne connaı̂t pas exactement la classe mais on sait qu’elle implémente telle ou telle
méthode.
Elles sont très utilisées dans l’API graphique (Swing) de Java
http://jb.vioix.free.fr 23-33
Relations entre les classes Interfaces
Comment choisir ?. . .
L’idée commune est de signifier la présence d’une méthode qui sera implémentée dans les
classes liées(filles ou implémentantes).
L’utilisation d’une classe abstraite impose une relation d’héritage entre les différentes
classes ; les interfaces n’imposent aucune relation d’héritage.
Les classes abstraites permettent d’avoir des attributs en commun contrairement aux
interfaces.
Une classe ne peut hériter que d’une seule classe abstraite alors qu’elle peut implémenter
plusieurs interfaces.
Intérêt
Les classes abstraites et les interfaces peuvent être utilisées à la place d’un type ou d’une
classe dans les arguments d’une méthode.
On ne connaı̂t pas exactement la classe mais on sait qu’elle implémente telle ou telle
méthode.
Elles sont très utilisées dans l’API graphique (Swing) de Java
http://jb.vioix.free.fr 23-33
Relations entre les classes Interfaces
Comment choisir ?. . .
L’idée commune est de signifier la présence d’une méthode qui sera implémentée dans les
classes liées(filles ou implémentantes).
L’utilisation d’une classe abstraite impose une relation d’héritage entre les différentes
classes ; les interfaces n’imposent aucune relation d’héritage.
Les classes abstraites permettent d’avoir des attributs en commun contrairement aux
interfaces.
Une classe ne peut hériter que d’une seule classe abstraite alors qu’elle peut implémenter
plusieurs interfaces.
Intérêt
Les classes abstraites et les interfaces peuvent être utilisées à la place d’un type ou d’une
classe dans les arguments d’une méthode.
On ne connaı̂t pas exactement la classe mais on sait qu’elle implémente telle ou telle
méthode.
Elles sont très utilisées dans l’API graphique (Swing) de Java
http://jb.vioix.free.fr 23-33
Relations entre les classes Interfaces
Comment choisir ?. . .
L’idée commune est de signifier la présence d’une méthode qui sera implémentée dans les
classes liées(filles ou implémentantes).
L’utilisation d’une classe abstraite impose une relation d’héritage entre les différentes
classes ; les interfaces n’imposent aucune relation d’héritage.
Les classes abstraites permettent d’avoir des attributs en commun contrairement aux
interfaces.
Une classe ne peut hériter que d’une seule classe abstraite alors qu’elle peut implémenter
plusieurs interfaces.
Intérêt
Les classes abstraites et les interfaces peuvent être utilisées à la place d’un type ou d’une
classe dans les arguments d’une méthode.
On ne connaı̂t pas exactement la classe mais on sait qu’elle implémente telle ou telle
méthode.
Elles sont très utilisées dans l’API graphique (Swing) de Java
http://jb.vioix.free.fr 23-33
Relations entre les classes Interfaces
Comment choisir ?. . .
L’idée commune est de signifier la présence d’une méthode qui sera implémentée dans les
classes liées(filles ou implémentantes).
L’utilisation d’une classe abstraite impose une relation d’héritage entre les différentes
classes ; les interfaces n’imposent aucune relation d’héritage.
Les classes abstraites permettent d’avoir des attributs en commun contrairement aux
interfaces.
Une classe ne peut hériter que d’une seule classe abstraite alors qu’elle peut implémenter
plusieurs interfaces.
Intérêt
Les classes abstraites et les interfaces peuvent être utilisées à la place d’un type ou d’une
classe dans les arguments d’une méthode.
On ne connaı̂t pas exactement la classe mais on sait qu’elle implémente telle ou telle
méthode.
void S a u v e r F i c h i e r ( E n r e g i s t r a b l e destinat io n ) {
...
destinati o n . Enregitre r () ;
...
}
http://jb.vioix.free.fr 23-33
Relations entre les classes Interfaces
Comment choisir ?. . .
L’idée commune est de signifier la présence d’une méthode qui sera implémentée dans les
classes liées(filles ou implémentantes).
L’utilisation d’une classe abstraite impose une relation d’héritage entre les différentes
classes ; les interfaces n’imposent aucune relation d’héritage.
Les classes abstraites permettent d’avoir des attributs en commun contrairement aux
interfaces.
Une classe ne peut hériter que d’une seule classe abstraite alors qu’elle peut implémenter
plusieurs interfaces.
Intérêt
Les classes abstraites et les interfaces peuvent être utilisées à la place d’un type ou d’une
classe dans les arguments d’une méthode.
On ne connaı̂t pas exactement la classe mais on sait qu’elle implémente telle ou telle
méthode.
Elles sont très utilisées dans l’API graphique (Swing) de Java
http://jb.vioix.free.fr 23-33
Relations entre les classes Interdire l’héritage
http://jb.vioix.free.fr 24-33
Relations entre les classes Interdire l’héritage
http://jb.vioix.free.fr 24-33
Relations entre les classes Interdire l’héritage
http://jb.vioix.free.fr 24-33
Relations entre les classes Interdire l’héritage
http://jb.vioix.free.fr 24-33
Relations entre les classes Interdire l’héritage
http://jb.vioix.free.fr 24-33
Relations entre les classes Interdire l’héritage
http://jb.vioix.free.fr 24-33
Relations entre les classes Interdire l’héritage
http://jb.vioix.free.fr 24-33
Relations entre les classes Interdire l’héritage
http://jb.vioix.free.fr 24-33
Visibilité
La visibilité : l’encapsulation
Principe
Un des intérêts de la POO est de protéger au maximum le code présent dans une classe de
l’extérieur.
Pour chaque attribut ou méthode, il est possible de définir un degré de visibilité depuis
l’extérieur de la classe.
On peut, par exemple, avoir des méthodes qui ne peuvent être appelées que dans la classe
ou dans ses classes filles.
Il est possible ainsi de définir des attributs en lecture seule (ou écriture seule).
Règles usuelles
Les attributs (sauf nécessité) doivent être privés, des méthodes publiques assurant l’interface
avec l’extérieur : ce sont les assesseurs
Le ou les constructeurs doivent être déclarés publiques pour pouvoir être appelés depuis une
autre classe.
Les méthodes qui ne appelées qu’à l’intérieur de la classe doivent avoir une visibilité réduite.
http://jb.vioix.free.fr 25-33
Visibilité
La visibilité : l’encapsulation
Principe
Un des intérêts de la POO est de protéger au maximum le code présent dans une classe de
l’extérieur.
Pour chaque attribut ou méthode, il est possible de définir un degré de visibilité depuis
l’extérieur de la classe.
On peut, par exemple, avoir des méthodes qui ne peuvent être appelées que dans la classe
ou dans ses classes filles.
Il est possible ainsi de définir des attributs en lecture seule (ou écriture seule).
Règles usuelles
Les attributs (sauf nécessité) doivent être privés, des méthodes publiques assurant l’interface
avec l’extérieur : ce sont les assesseurs
Le ou les constructeurs doivent être déclarés publiques pour pouvoir être appelés depuis une
autre classe.
Les méthodes qui ne appelées qu’à l’intérieur de la classe doivent avoir une visibilité réduite.
http://jb.vioix.free.fr 25-33
Visibilité
La visibilité : l’encapsulation
Principe
Un des intérêts de la POO est de protéger au maximum le code présent dans une classe de
l’extérieur.
Pour chaque attribut ou méthode, il est possible de définir un degré de visibilité depuis
l’extérieur de la classe.
On peut, par exemple, avoir des méthodes qui ne peuvent être appelées que dans la classe
ou dans ses classes filles.
Il est possible ainsi de définir des attributs en lecture seule (ou écriture seule).
Règles usuelles
Les attributs (sauf nécessité) doivent être privés, des méthodes publiques assurant l’interface
avec l’extérieur : ce sont les assesseurs
Le ou les constructeurs doivent être déclarés publiques pour pouvoir être appelés depuis une
autre classe.
Les méthodes qui ne appelées qu’à l’intérieur de la classe doivent avoir une visibilité réduite.
http://jb.vioix.free.fr 25-33
Visibilité
La visibilité : l’encapsulation
Principe
Un des intérêts de la POO est de protéger au maximum le code présent dans une classe de
l’extérieur.
Pour chaque attribut ou méthode, il est possible de définir un degré de visibilité depuis
l’extérieur de la classe.
On peut, par exemple, avoir des méthodes qui ne peuvent être appelées que dans la classe
ou dans ses classes filles.
Il est possible ainsi de définir des attributs en lecture seule (ou écriture seule).
Règles usuelles
Les attributs (sauf nécessité) doivent être privés, des méthodes publiques assurant l’interface
avec l’extérieur : ce sont les assesseurs
Le ou les constructeurs doivent être déclarés publiques pour pouvoir être appelés depuis une
autre classe.
Les méthodes qui ne appelées qu’à l’intérieur de la classe doivent avoir une visibilité réduite.
http://jb.vioix.free.fr 25-33
Visibilité
La visibilité : l’encapsulation
Principe
Un des intérêts de la POO est de protéger au maximum le code présent dans une classe de
l’extérieur.
Pour chaque attribut ou méthode, il est possible de définir un degré de visibilité depuis
l’extérieur de la classe.
On peut, par exemple, avoir des méthodes qui ne peuvent être appelées que dans la classe
ou dans ses classes filles.
Il est possible ainsi de définir des attributs en lecture seule (ou écriture seule).
Règles usuelles
Les attributs (sauf nécessité) doivent être privés, des méthodes publiques assurant l’interface
avec l’extérieur : ce sont les assesseurs
Le ou les constructeurs doivent être déclarés publiques pour pouvoir être appelés depuis une
autre classe.
Les méthodes qui ne appelées qu’à l’intérieur de la classe doivent avoir une visibilité réduite.
http://jb.vioix.free.fr 25-33
Visibilité
La visibilité : l’encapsulation
Principe
Un des intérêts de la POO est de protéger au maximum le code présent dans une classe de
l’extérieur.
Pour chaque attribut ou méthode, il est possible de définir un degré de visibilité depuis
l’extérieur de la classe.
On peut, par exemple, avoir des méthodes qui ne peuvent être appelées que dans la classe
ou dans ses classes filles.
Il est possible ainsi de définir des attributs en lecture seule (ou écriture seule).
Règles usuelles
Les attributs (sauf nécessité) doivent être privés, des méthodes publiques assurant l’interface
avec l’extérieur : ce sont les assesseurs
Le ou les constructeurs doivent être déclarés publiques pour pouvoir être appelés depuis une
autre classe.
Les méthodes qui ne appelées qu’à l’intérieur de la classe doivent avoir une visibilité réduite.
http://jb.vioix.free.fr 25-33
Visibilité
La visibilité : l’encapsulation
Principe
Un des intérêts de la POO est de protéger au maximum le code présent dans une classe de
l’extérieur.
Pour chaque attribut ou méthode, il est possible de définir un degré de visibilité depuis
l’extérieur de la classe.
On peut, par exemple, avoir des méthodes qui ne peuvent être appelées que dans la classe
ou dans ses classes filles.
Il est possible ainsi de définir des attributs en lecture seule (ou écriture seule).
Règles usuelles
Les attributs (sauf nécessité) doivent être privés, des méthodes publiques assurant l’interface
avec l’extérieur : ce sont les assesseurs
Le ou les constructeurs doivent être déclarés publiques pour pouvoir être appelés depuis une
autre classe.
Les méthodes qui ne appelées qu’à l’intérieur de la classe doivent avoir une visibilité réduite.
http://jb.vioix.free.fr 25-33
Visibilité
La visibilité
Déclaration
La visibilité d’un élément (méthode ou attribut) est définie lors de la déclaration.
Quatre visibilités sont possibles pour les méthodes et les attributs.
On précède la déclaration d’un mot clé parmi :private, protected et public
http://jb.vioix.free.fr 26-33
Visibilité
La visibilité
Déclaration
La visibilité d’un élément (méthode ou attribut) est définie lors de la déclaration.
Quatre visibilités sont possibles pour les méthodes et les attributs.
On précède la déclaration d’un mot clé parmi :private, protected et public
http://jb.vioix.free.fr 26-33
Visibilité
La visibilité
Déclaration
La visibilité d’un élément (méthode ou attribut) est définie lors de la déclaration.
Quatre visibilités sont possibles pour les méthodes et les attributs.
On précède la déclaration d’un mot clé parmi :private, protected et public
http://jb.vioix.free.fr 26-33
Visibilité
La visibilité
Déclaration
La visibilité d’un élément (méthode ou attribut) est définie lors de la déclaration.
Quatre visibilités sont possibles pour les méthodes et les attributs.
On précède la déclaration d’un mot clé parmi :private, protected et public
http://jb.vioix.free.fr 26-33
Visibilité
La visibilité
String UneMethodeFriendly () {
...
}
http://jb.vioix.free.fr 27-33
Éléments statiques
Le modificateur static
http://jb.vioix.free.fr 28-33
Éléments statiques
Le modificateur static
http://jb.vioix.free.fr 28-33
Éléments statiques
Le modificateur static
http://jb.vioix.free.fr 28-33
Éléments statiques
Le modificateur static
http://jb.vioix.free.fr 28-33
Éléments statiques
Le modificateur static
http://jb.vioix.free.fr 28-33
Éléments statiques
Le modificateur static
http://jb.vioix.free.fr 28-33
Éléments statiques
Le modificateur static
Exemple
public ExempleStatic () {
nb ++;
}
http://jb.vioix.free.fr 29-33
Éléments statiques
Le modificateur static
Exemple
public ExempleStatic () {
nb ++;
}
http://jb.vioix.free.fr 29-33
Éléments statiques
Le modificateur static
Exemple
public ExempleStatic () {
nb ++;
}
http://jb.vioix.free.fr 29-33
Éléments statiques
Le modificateur static
Exemple
public ExempleStatic () {
nb ++;
}
http://jb.vioix.free.fr 29-33
Éléments statiques
Le modificateur static
Exemple
http://jb.vioix.free.fr 29-33
Éléments statiques
Le modificateur static
Exemple
http://jb.vioix.free.fr 29-33
Éléments statiques Programme exécutable
Classe principale
Un programme Java est composé d’un ensemble de classes qui interagissent.
Une des classe sera le point d’entré du programme, pour cela elle doit contenir une méthode
particulière.
C’est cette méthode que la machine virtuelle (JVM) exécutera en premier.
La méthode main
Pour qu’un programme java soit exécutable, il doit contenir une méthode main.
Cette méthode doit être déclarée comme : public static void main(String[] args)
Les arguments (args) de la méthode représentent les arguments passés dans la ligne de
commande.
http://jb.vioix.free.fr 30-33
Éléments statiques Programme exécutable
Classe principale
Un programme Java est composé d’un ensemble de classes qui interagissent.
Une des classe sera le point d’entré du programme, pour cela elle doit contenir une méthode
particulière.
C’est cette méthode que la machine virtuelle (JVM) exécutera en premier.
La méthode main
Pour qu’un programme java soit exécutable, il doit contenir une méthode main.
Cette méthode doit être déclarée comme : public static void main(String[] args)
Les arguments (args) de la méthode représentent les arguments passés dans la ligne de
commande.
http://jb.vioix.free.fr 30-33
Éléments statiques Programme exécutable
Classe principale
Un programme Java est composé d’un ensemble de classes qui interagissent.
Une des classe sera le point d’entré du programme, pour cela elle doit contenir une méthode
particulière.
C’est cette méthode que la machine virtuelle (JVM) exécutera en premier.
La méthode main
Pour qu’un programme java soit exécutable, il doit contenir une méthode main.
Cette méthode doit être déclarée comme : public static void main(String[] args)
Les arguments (args) de la méthode représentent les arguments passés dans la ligne de
commande.
http://jb.vioix.free.fr 30-33
Éléments statiques Programme exécutable
Classe principale
Un programme Java est composé d’un ensemble de classes qui interagissent.
Une des classe sera le point d’entré du programme, pour cela elle doit contenir une méthode
particulière.
C’est cette méthode que la machine virtuelle (JVM) exécutera en premier.
La méthode main
Pour qu’un programme java soit exécutable, il doit contenir une méthode main.
Cette méthode doit être déclarée comme : public static void main(String[] args)
Les arguments (args) de la méthode représentent les arguments passés dans la ligne de
commande.
http://jb.vioix.free.fr 30-33
Éléments statiques Programme exécutable
Classe principale
Un programme Java est composé d’un ensemble de classes qui interagissent.
Une des classe sera le point d’entré du programme, pour cela elle doit contenir une méthode
particulière.
C’est cette méthode que la machine virtuelle (JVM) exécutera en premier.
La méthode main
Pour qu’un programme java soit exécutable, il doit contenir une méthode main.
Cette méthode doit être déclarée comme : public static void main(String[] args)
Les arguments (args) de la méthode représentent les arguments passés dans la ligne de
commande.
http://jb.vioix.free.fr 30-33
Éléments statiques Programme exécutable
Classe principale
Un programme Java est composé d’un ensemble de classes qui interagissent.
Une des classe sera le point d’entré du programme, pour cela elle doit contenir une méthode
particulière.
C’est cette méthode que la machine virtuelle (JVM) exécutera en premier.
La méthode main
Pour qu’un programme java soit exécutable, il doit contenir une méthode main.
Cette méthode doit être déclarée comme : public static void main(String[] args)
Les arguments (args) de la méthode représentent les arguments passés dans la ligne de
commande.
http://jb.vioix.free.fr 30-33
D’UML à Java
Description du projet
On souhaite modéliser le stockage des données sur un disque dur.
Trois éléments coexistent : les fichiers, les répertoires et les raccourcis (ou liens).
Ces éléments sont tous stockés dans des répertoires.
Un raccourci désigne un fichier ou un répertoire.
http://jb.vioix.free.fr 31-33
D’UML à Java
Représentation UML
On propose le schéma UML ci dessous (ne vous concentrez pas sur “l’efficacité” du
programme mais sur la manière d’écrire les classes et les interfaces en fonction du schéma
UML) :
FichierAbstrait
- nom : chaine Interface Designable
+ EcrireNom(chaine unNom) :
+ LireNom() : chaine + ConstruireLien(chaine unNom) : Lien
Repertoire
- listeFichiers[] : FichierAbstrait
Lien + ConstruireLien(chaine unNom) : Lien
- cible : Designable Fichier + AjouterFichier(FichierAbstrait unFichier) :
+ DetruireLien() : + DetruireFichier(FichierAbstrait unFichier) :
+ LireLien() : Designable + ConstruireLien(chaine unNom) : Lien + ListerFichier() : Designable
http://jb.vioix.free.fr 32-33
D’UML à Java
http://jb.vioix.free.fr 33-33
D’UML à Java
http://jb.vioix.free.fr 33-33
D’UML à Java
http://jb.vioix.free.fr 33-33
D’UML à Java
http://jb.vioix.free.fr 33-33
D’UML à Java
http://jb.vioix.free.fr 33-33
D’UML à Java
http://jb.vioix.free.fr 33-33