• Aucun résultat trouvé

Programmation Objet. Cours 1

N/A
N/A
Protected

Academic year: 2022

Partager "Programmation Objet. Cours 1"

Copied!
18
0
0

Texte intégral

(1)

Programmation Objet. Cours 1

Marie-Pierre B´eal UPEM DUT 1

Programmation objet. Classes et objets.

(2)

Principaux styles de programmation

Style imp´eratif

Fond´e sur l’ex´ecution d’instructions modifiant l’´etat de la m´emoire.

Utilise une structure de contrˆole et des structures de donn´ees.

Usage intensif de l’it´eration.

Langages typiques : Fortran, C, Pascal.

(3)

Principaux styles de programmation

Style applicatif

Fond´e sur l’´evaluation d’expressions, o`u le r´esultat ne d´epend que de la valeurs des arguments (et non de l’´etat de la m´emoire).

Donne programmes courts, faciles `a comprendre.

Usage intensif de la r´ecursivit´e.

Langage typique : Lisp, Caml.

(4)

Principaux styles de programmation

Style objet

Un programme est vu comme une communaut´e de composants autonomes (objets) disposant de ses ressources et de ses moyens d’interaction.

Utilise des classes pour d´ecrire les structures et leur comportement.

Usage intensif de l’´echange de messages.

Langages typiques : C++, Java, Ruby, Python.

(5)

Principaux styles de programmation

Souvent un mˆeme langage permet diff´erents styles de programmation.

(6)

Avantages du style objet

Facilite la programmation modulaire

La conception par classes conduit `a des composants r´eutilisables.

Un composant offre des services et en utilise d’autres.

Les services sont expos´es `a travers une interface.

Les d´etails d’impl´ementations sont cach´es (encapsulation).

Les composants sont r´eutilisables.

(7)

Avantages du style objet

Abstraction et sp´ecialisation

L’abstraction s´epare la d´efinition de son impl´ementation.

L’abstraction extrait un mod`ele commun `a plusieurs composants.

Le mod`ele commun est partag´e par le m´ecanisme d’h´eritage.

La sp´ecialisation traite de cas particuliers.

Le m´ecanisme de d´erivation rend les cas particuliers transparents.

(8)

Java

Java (nom d´eriv´e de Kawa) a vu le jour en 1995.

Actuellement version JDK 1.8 (aussi appel´ee Java 8).

Distributions et sp´ecifications Oracle : Java SE, Java ME, Java EE.

est fortement typ´e, est orient´e objet, est compil´e–interpr´et´e, est sans h´eritage multiple,

`a partir de la version 1.5, Java offre de la g´en´ericit´e (les generics sont diff´erents des templatedu C++)

(9)

Premier exemple

On ´ecrit le code source java suivant dans le fichier HelloCharlie.java :

class HelloCharlie {

public static void main (String[] args) { System.out.println("Bonjour Charlie");

} }

On compile avec javac HelloCharlie.java

On lance l’ex´ecution (l’interpr´etation du bytecode) par la machine virtuelle Java avec java HelloCharlie

$ javac HelloCharlie.java

$ ls

HelloCharlie.class HelloCharlie.java

$ java HelloCharlie Bonjour Charlie

(10)

Autre exemple

On ´ecrit ce code source java suivant dans le fichier AdditionTest.java :

class AdditionTest {

public static void main (String[] args) { int n = 100;

int m = 200;

System.out.println(n + m);

} }

On compile avec javac AdditionTest.java

On lance l’ex´ecution avec java AdditionTest, on obtient 300.

(11)

Les objets

Un objet est un composant situ´e dans une zone m´emoire.

On le manipule par son adresse appel´ee r´ef´erence.

20 3

4 10

p1 p2

class Test {

public static void main (String[] args) { Pixel p1 = new Pixel(20,3);

Pixel p2 = new Pixel(4,10);

} }

(12)

Les classes

Une classe

d´efinit la structure de l’objet,

d´efinit le comportement de l’objet (par les m´ethodes), d´efinit le moule pour la cr´eation des objets,

permet de d´eclarer un nouveau type.

(13)

Les classes

Une classe est compos´ee de

d´eclarations de variables (attributs ou champs) ; d´efinitions de fonctions (m´ethodes) ;

(d´eclarations d’autres classes (nested classes)).

On ´ecrit chaque classe dans un fichier s´epar´e qui a comme nom Pixel.javasi la classe se nomme Pixel. Le nom est en majuscule.

class Pixel { int x;

int y;

}

(14)

Les m´ ethodes

Les noms des m´ethodes commencent par une minuscule.

class Pixel { int x;

int y;

void printX(){

System.out.println(x);

}

void move(int dx, int dy){

x = x + dx;

y = y + dy;

} }

(15)

Les constructeurs

Les constructeurs permettent la cr´eation des objets parnew.

Son type de retour estvoid sans l’´ecrire.

class Pixel { int x;

int y;

void printX(){

System.out.println(x);

}

void move(int dx, int dy){

x = x + dx;

y = y + dy;

}

Pixel(int x0, int y0) { x = x0;

y = y0;

} }

(16)

Utilisation des classes et objets

Dans une autre classePixelTest, on fabrique et utilise des points.

On appelle une m´ethode sur un objet avec le symbole·. class PixelTest {

public static void main (String[] args) { Pixel p1 = new Pixel(20,3);

Pixel p2 = new Pixel(5,12);

p1.printX();

p2.move(1,1);

p2.printX();

} }

(17)

Utilisation des classes et objets

x : 20 y : 3

x : 5 y : 12

p1 p2

$ java PixelTest 20

6

(18)

Utilisation de this

Le mot cl´ethis est utilis´e pour d´esigner une r´ef´erence sur l’objet courant dans une classe.

class Pixel { int x;

int y;

Pixel(int x, int y) { this.x = x;

this.y = y;

} }

Références

Documents relatifs

L’archive ouverte pluridisciplinaire HAL, est destinée au dépôt et à la diffusion de documents scientifiques de niveau recherche, publiés ou non, émanant des

Conséquence : Une poignée de type interface peut être initialisée avec tout objet instance d’une classe réalisant cette interface. 1 Liste l1 = new ListeTab(5); // principe

Enfin, la première utilisation du mot clé static concerne la méthode main, dont une version peut être définie pour chaque classe et qui sera la première méthode appelée, si

 Définition de SUN : "Java est un langage simple, orienté objet, distribué, robuste, sûr, indépendant des architectures matérielles, portable, de haute performance,

Les valeurs des attributs ne sont a priori pas définis dans la classe, car propres à chaque objet... Les attributs et les méthodes sont appelés membres de

Dans un deuxième temps, le programme affiche le prix au litre, le prix d’un pack d’eau, sachant qu’il y a 6 bouteilles dont une est offerte, ainsi que le prix d’une palette

Saisir le code tarif correspondant au poids d’une lettre et afficher le prix à payer et afficher un message d’erreur si la lettre pèse plus de 500

public void push(int item) throws StackException { if (isFull()).. throw new