Chapitre IV
Programmation orientée objet en Java
1 Paradigmes de programmation 2 Classe et objet
3 Héritage
4 Flux de lecture et d’écriture
5 Travaux pratiques
Paradigmes de programmation
Programmation structurée (traditionnelle ou classique) Séparation des données et des opérations
Initialisation des structures de données
Traitement des données par les procédures et les fonctions Programmation orientée objet (POO)
Une même structure contient les données et les opérations associées Historique de la POO
Origine : langage Simula 67 en 1967
Intérêt grandissant : à partir du milieu des années 80
Classe et objet
Classe et objet
Classe : définition d’un type (généralement composé de propriétés et méthodes) Objet : déclaration d’un variable (pouvant accéder aux propriétés et méthodes) Instanciation : création d’un objet à partir d’une classe
Déclaration d’une classe public class Rectangle {
// corps de la classe }
Instanciation d’un objet
Rectangle r = new Rectangle();
Propriétés et méthodes d’une classe
public class Rectangle {
int largeur, // première propriété de la classe longueur; // deuxième propriété de la classe void perimetre(){ // première propriété de la classe
int p = 2 * (largeur + longueur);
System.out.println("Périmetre = "+ p);
}
int surface(){ // deuxième propriété de la classe int s;
s = largeur * longueur;
return s;
}
Instanciation des objets d’une classe
public class CalculRectangle {
public static void main(String[] args) {
Rectangle r1, r2, r3; // Déclaration des objets r1=new Rectangle(); // Instanciation de l'objet r1
r1.largeur=5; // affectation de la première propriété de r1 r1.longueur=9; // affectation de la deuxième propriétés de r1 r1.perimetre(); // Appel de la méthode périmetre pour r1
int s=r1.surface(); // Appel de la méthode surface pour r1 System.out.println("surface = " + s);
}
Constructeur d’une classe
public class Rectangle {
int largeur, // première propriété de la classe longueur; // deuxième propriété de la classe
//La méthode constructeur a le même identificateur que la clase public Rectangle(int largeur, int longueur) {
super();
this.largeur = largeur;
this.longueur = longueur;
}
……..
Instanciation avec constructeur
public class CalculRectangle {
public static void main(String[] args) {
Rectangle r1, r2, r3; // Déclaration des objets
r1=new Rectangle(3,8); // Instanciation cet affectation des propriétés r1.perimetre(); // Appel de la méthode périmètre pour r1 int s=r1.surface(); // Appel de la méthode surface pour r1 System.out.println("surface = " + s);
} }
Exercice
1 Créer un nouveau package Chapitre3 2 Créer une classe Etudiant
Propriétés : nom, annéeNaissance, cin, filière, niveau, note Méthodes : age, moyenneAnnuelle
3 Créer une classe gestionEcole pour l’instanciation des objets Etudiant 4 Créer une classe Professeur
Propriétés : nom, annéeNaissance, cin, département, coursEnseignés, salaire Méthodes : age, nombreCours, salaireAnnuel
5 Modifier la classe gestionEcole pour l’instanciation des objets Professeur
6 Créer une classe Citoyen regroupant les propriétés et méthodes communes des classes Etudiant et Professeur
7 Modifier les classes Etudiant et Enseignant pour hériter les propriétés et les
Tri d’un tableau
fonction triCroissant (T[1..n]) pour i 2 jusqu'à n faire
x T[i]
j i - 1
tant que j > 0 et T[j] > x faire T[j + 1] T[j]
j j - 1
T[j + 1] x retourner T
Exercice
a) Faire la trace pour T = {3,1,4,2}
Flux de lecture de d’écriture
import java.util.Scanner; //importation de la classe public class Lecture {
public static void main(String[] args) {
Scanner ecran = new Scanner(System.in); // variable du flux d’entrée System.out.println("Veuillez introduire votre nom: ");
String nom = ecran.nextLine(); //lecture de toute la ligne System.out.println("Veuillez introduire votre age: ");
int age = ecran.nextInt(); //lecture d'un seul entier System.out.format("Nom: %s Age:%4d%n",nom, age);
double Pi= 3.141592653589793;
System.out.format("Pi=%5.2f", Pi); //5 cases dont 2 décimales }
Travail pratique
Reprenons l’exemple de la gestion d’une école.
1 Inclure dans la classe Citoyen, Etudiant et Professeur des constructeurs pour saisir les informations des objets Citoyen, Etudiant et Professeur. Indication:
avant de saisir les tableaux, il faudrait les créer en connaissant leur taille.
2 Considérer une école comprenant 143 professeurs et 1427 étudiants.
3 Ecrire une méthode de tri qui admet 2 paramètres : un tableau de nombres réels et une variable booléenne qui indique s’il s’agit de l’ordre croissant ou de l’ordre décroissant.
4 Afficher les salaires annuels des professeurs par ordre croissant ainsi que les moyennes des étudiants par ordre décroissant. Votre exécution pourrait se limiter à 2 professeurs et 3 étudiants.