diapos interfaces

publicité
Interfaces
Interfaces/Langage
Interfaces/Langage
en Java (rappels)
Interfaces
Motivations
Types plus abstraits que les classes
plus réutilisables
Technique pour masquer l’implémentation
découplage public/privé : type/implémentation
Favorise l’écriture de code plus général
écrit sur des types plus abstraits
Relations de spécialisation multiple
entre les interfaces
entre les classes et les interfaces
Meilleure organisation des types
Interfaces
Interfaces en Java
Dans les versions <= Java 1.7
des méthodes d’instance publiques abstraites
avec les modifieurs public abstract
des attributs de classe constant publics
avec les modifieurs public final static
A partir de Java 1.8
des méthodes d’instance publiques présentant des comportements par
défaut (avec les modifieurs public et default)
des méthodes statiques (avec les modifieurs public et static)
des types internes
spécialisation entre une interface et une ou plusieurs interfaces
par extends
implémentation entre une interface et une ou plusieurs classes
par implements
Interfaces
Interfaces en Java
1
2
3
4
5
public interface Iquadrilatere {
i n t nbCotes = 4 ;
double p e r i m e t r e () ;
double s u r f a c e () ;
}
6
7
8
9
10
p u b l i c i n t e r f a c e I r e c t a n g l e extends I q u a d r i l a t e r e {
i n t a n g l e = 90 ;
double getLargeur () ; void s e t L a r g e u r ( double l ) ;
double getHauteur () ; void setHauteur ( double h ) ;
11
d e f a u l t double p e r i m e t r e ()
{ r e t u r n 2∗ t h i s . g e t L a r g e u r ( )+2∗ t h i s . g e t H a u t e u r ( ) ; }
12
13
14
d e f a u l t double s u r f a c e ()
{ return t h i s . getLargeur () ∗ t h i s . getHauteur () ; }
15
16
17
default String description ()
// on ne p e u t p a s l a nommer " t o S t r i n g "
{ r e t u r n " l a r g e u r ="+t h i s . g e t L a r g e u r ( )+" h a u t e u r ="+t h i s . ←getHauteur () ; }
18
19
20
21
s t a t i c boolean e g a l ( I r e c t a n g l e r 1 , I r e c t a n g l e r 2 ) {
r e t u r n r 1 . g e t L a r g e u r ( )==r 2 . g e t L a r g e u r ( )
&& r 1 . g e t H a u t e u r ( )==r 2 . g e t H a u t e u r ( ) ;
}
22
23
24
25
26
}
Interfaces
Interfaces en Java
1
2
3
4
5
public interface IobjetColore
{
Color couleurDefaut = Color . white ;
Color getCouleur () ;
}
6
7
8
9
10
11
12
// s p e c i a l i s a t i o n m u l t i p l e
p u b l i c i n t e r f a c e I r e c t a n g l e C o l o r e extends I o b j e t C o l o r e , I r e c t a n g l e
{
void repeindre ( Color c ) ;
}
13
14
15
16
17
// i m p l e m e n t a t i o n p a r une c l a s s e
p u b l i c c l a s s R e c t a n g l e C o l o r e implements I r e c t a n g l e C o l o r e {
. . . // e c r i t u r e de t o u t e s l e s methodes d e s i n t e r f a c e s
}
Téléchargement