Objectifs
Découvrir classes et objets
Classes et objets Constructeurs Visibilité des membres Modificateur static Autoboxing des types
P.-A. Mudry Classes et objets 4
Créer une classe : 1er exemple
Classes et objets
int widthint height
Rectangle nom de la classe
attributs de la classe = ensemble de variables
Un rectangle
class Rectangle{int width;int height;
}
Notation UML
Implémentation
P.-A. Mudry 5
• Variables internesAttributs
• Fonctions en relation avec la classeMéthodes
Définition de classe
Classes et objets
interface de la classe
Une classe est un type généralisé que l’on peut définir.
Définition
P.-A. Mudry 6
Implémentation
Classes et objets
int widthint height
int surface()int perimeter()
Rectangle
public class Rectangle{int width;int height;
int surface(){return width * height;
}
int perimeter(){return 2*width + 2*height;
}}
P.-A. Mudry 7
Un peu de vocabulaire…
• Classe = moule Une fois moulé (on dit instancié), l'objet
possède attributs et méthodes du moule. L'instance de la classe s'appelle un objet . Si change le moule, instances différentes.
Classes et objetsP.-A. Mudry 8
Classes et objets (1)
• Classe Rectangle = le modèle de rectangle• Objets = des rectangles particuliers
Classes et objets
Objet
Objet
Objet
Objet
width
height
Classe
P.-A. Mudry 10
Classes et objets (2)
Classes et objets
Classe
a
width = 2height= 3
room
width= -52height= 34
surface1
width = 12height= 12
limit
width = 2height= 3
instanciation
instanciation
instanciationinstanciation
int widthint height
Rectangle
ObjetObjet
Objet
Objet
P.-A. Mudry 11
Instanciation (I)• Classe = type abstrait création
objets comme variables.• Syntaxe similaire
className identifier
Exemple :
Classes et objets
Rectangle aRectangle;Rectangle bathRoom;
P.-A. Mudry 12
Instanciation (II) – Opérateur new• Une fois le type de l'objet prévu, il
faut encore le créer.• La création de l'objet lui-même se
nomme l'instanciation.• Pour réserver la place mémoire, on
utilise l'opérateur new
Classes et objets
Rectangle room;room = new Rectangle();
déclaration instanciation
P.-A. Mudry 13
Accès aux membres
• Pour accéder aux membres opérateur ‘.’
Classes et objets
int widthint height
int surface()int perimeter()
Rectangle Rectangle room;room = new Rectangle();
room.witdh = 10;room.height = 4;int s = room.surface();
P.-A. Mudry 14
Exercice 1Série 5
Les classes
• Variable = tiroir avec un nom et taille.• Une classe = une armoire modulaire Peut contenir des variables
• Nombre pas limité• Type quelconque (également d'autres classes)
Peut contenir des méthodes
Classes et objetsP.-A. Mudry 16
Usage des classes
• Origine: le langage, d’autres codeurs, nousClasses et objets
Abstraction des objets
réels
Rectangle
Personne
Auto
…
Regroupement de méthodes
Math
FunGraphics
…
Un «mélange» des deux
String
Input
…
P.-A. Mudry 17
Rappel (cours 3)
• Exemple : la classe String sert à contenir des chaînes de caractèresString name = "Henri";
Classes et objets
Classe Objet Val. initiale
• Une classe = un type• Un objet = une variable de ce type
Pour l'instant
P.-A. Mudry 18
Classe comme rangement
Classes et objets
CircleCalculation
double perimeter(double r)double surface(double r)double diameter(double r)
Exemple 2 : méthodes seules
BankAccount
String ownerdouble amountDate openingDate
Exemple 1 : variables seules Exemple 3 :
Date
MathLibraryExemple 4 :
P.-A. Mudry 19
Deux conventions importantes
• Nom des classes : doit toujours commencer par des majuscules
• Valeurs par défaut : si font du sens Attributs avec un type primitif (int, char, etc…) initialisés automatiquement à 0 Attributs qui sont des objets
initialisés à null
Classes et objetsP.-A. Mudry 20
Exercice 2Série 5
Objectifs
Classes et objets
Découvrir les classes et objets
Classes et objets Constructeurs Visibilité des membres Modificateur static Autoboxing des types
P.-A. Mudry 22
Constructeur
Classes et objets
Le constructeur permet de spécifier ce qui se passe lors de la création d’un objet.
Définition
P.-A. Mudry 23
Constructeur (2)
• Avec constructeur :
Classes et objets
Rectangle rect = new Rectangle(3, 5);
class Rectangle{int width = 0;int height = 0;
Rectangle(int w, int h){width = w;height = h;
}}
P.-A. Mudry 24
Constructeur (3)
• Jusqu'à maintenant : constructeur par défaut
Classes et objets
Rectangle r1 = new Rectangle();r1.width = 3;r1.height = 5;
class Rectangle{int width;int height;
}
P.-A. Mudry 25
Constructeur (4)
1. Méthode qui ne retourne RIEN (pas void)
2. Nom du constructeur = nom classe3. Nombre de constructeurs possibles : aucun (par défaut) un plusieurs
Classes et objetsP.-A. Mudry 26
Exercice 3aSérie 5
L’attribut this
• Référence sur l'objet utilisé, optionnel• Pour enlever les ambiguïtés
Classes et objets
class Foo{int x, int y;
Foo(int initx, int inity){
x = initx;y = inity;
}}…Foo f1 = new Foo(20, 30);
class Foo{int x, int y;
Foo(int x, int y){
this.x = x;this.y = y;
}}…Foo f1 = new Foo(20, 30);
P.-A. Mudry 28
Constructeur dans constructeur ?
Classes et objets
class Rectangle{int width, int height;// Constructor ARectangle(int w, int h){
width = w; height = h;}// Constructor BRectangle(int side){
this(side, side);}
}
Rectangle r1 = new Rectangle(3, 5);Rectangle r2 = new Rectangle(8);
P.-A. Mudry 29
Exercice 3bSérie 5
Objectifs
Classes et objets
Découvrir les classes et objets
Classes et objets Constructeurs Visibilité des membres Modificateur static Autoboxing des types
P.-A. Mudry 31
Visibilité des membres
• Deux modificateurs principaux public, private
• Modifient les règles de visibilité
P.-A. Mudry Classes et objets 32
Visibilité des membres (2)
• Membres private : accessibles dans la classe uniquement.
• Membres public : accessibles partout (en dehors de la classe)
• Sans modificateur : presque comme public (dans le dossier)
P.-A. Mudry Classes et objets 33
Plusieurs classes par fichier
• Normalement, une classe par fichier• Si plusieurs classes dans fichier, une
seule public• Classe modificateur public ou
aucun (pour l'instant)• Règles visibilité classes ≠ différent
visibilité membres (même si vocabulaire commun)
Classes et objetsP.-A. Mudry 34
Objectifs
Classes et objets
Découvrir les classes et objets
Classes et objets Constructeurs Visibilité des membres Modificateur static Autoboxing des types
P.-A. Mudry 35
Méthodes et modificateur static
• Pas besoin d'instance !
Classes et objets
class SimpleMath{static int cube(int x){
return x*x*x; }
static int abs(int x){return x > 0 ? x : -x;
}}…int a = SimpleMath.cube(3);int b = SimpleMath.abs(-34);int c = SimpleMath.cube(SimpleMath.abs(-32));
P.-A. Mudry 36
Méthodes et modificateur static (2)
• Attention ! Erreur typique des méthodes static : Pas de this utilisable Pourquoi ?
Classes et objetsP.-A. Mudry 37
Exemple complet static
Classes et objets
class Point2D {int x, y;
public Point2D(int initx, int inity) {x = initx;y = inity;
}
double distanceTo(Point2D other) {return Math.sqrt(Math.pow(other.x - this.x, 2.0)
+ Math.pow(other.y - this.y, 2.0));}
static double distanceBetween(Point2D a, Point2D b) {return Math.sqrt(Math.pow(b.x - a.x, 2.0)
+ Math.pow(b.y - a.y, 2.0));}
}…Point2D a, b; a = new Point2D(2, 1); b = new Point2D(3, 2);double d1 = a.distanceTo(b);double d2 = Point2D.distanceBetween(a, b);
P.-A. Mudry 38
Variables et modificateur static
Classes et objets
Variablesd'instance
1 copie par objet instancié
Variables de classe
1 copie par classe
Déclarées comme static
P.-A. Mudry 39
Exemple variable static
Classes et objets
class Point2D{static int nPoints= 0;int x, int y;
public Point2D(int initx, int inity){nPoints++;x = initx; y = inity;System.out.println("- Creation of a point: " + nPoints);
}}…Point2D a, b, c;a = new Point2D(2, 1);b = new Point2D(3, 2);c = new Point2D(4, 12);
P.-A. Mudry 40
Exemple static (2)
Classes et objets
c
x = 4;y = 12;
a
x = 2;y = 1;
b
x = 3;y = 2;
int x;int y;nPoints = 3;
Point2D
Instances
Classe
a = new Point2D(2, 1);b = new Point2D(3, 2);c = new Point2D(4, 12);
Accès aux membres:
Instances
Classe
P.-A. Mudry 41
static et main
Classes et objets
class Foo{
int a;
Foo(){
// Here no longer static, please implement here
}
public static void main(String args[]){
Foo f = new Foo();
}
}
P.-A. Mudry 42
Objectifs
Classes et objets
Découvrir les classes et objets
Classes et objets Constructeurs Visibilité des membres Modificateur static Autoboxing des types scalaires
P.-A. Mudry 43
Types scalaires et classes
• A chaque type scalaire (int, float, …) correspond une classe (majuscule):
…
• Quelques attributs intéressants: toHexString(), highestOneBit(), MAX_VALUE, MIN_VALUE, SIZE
Classes et objetsP.-A. Mudry 44
int Integerfloat Floatdouble Double
"Autoboxing" des types scalaires
• Passage type objet grâce autoboxing (conversion automatique)
• Exemples :
Classes et objetsP.-A. Mudry 45
Conclusion
• Introduction aux objets Classes et objets Méthodes Variables• Constructeur
• Membres statiques• Modificateurs de visibilité
Classes et objetsP.-A. Mudry 46
Top Related