Cours programmation java PDF

Document Details

Uploaded by Deleted User

Othmane EL MESLOUHI

Tags

java programming object-oriented programming programming paradigms computer science

Summary

This document provides an introduction to Java programming, covering programming paradigms like procedural and object-oriented programming. It also defines and describes classes, attributes, methods, and the concept of OOP in more detail.

Full Transcript

Cours programmation java Responsable: Pr. Othmane EL MESLOUHI Email: [email protected] (mailto:[email protected]) Chapitre 3 : POO en java I. Paradigmes de programmation 1. Programmation procédurale: Fondé sur l’exécution d’instructions modifiant l’état de la mémoire Conc...

Cours programmation java Responsable: Pr. Othmane EL MESLOUHI Email: [email protected] (mailto:[email protected]) Chapitre 3 : POO en java I. Paradigmes de programmation 1. Programmation procédurale: Fondé sur l’exécution d’instructions modifiant l’état de la mémoire Concept clef : la fonction (procédure, routine,...) -> découpage du problème en fonctions... découpées en sous-fonctions... Données séparées des traitements ; Analyse du problème de manière descendante Langage typique C, Pascal, Fortran 2. Programmation orienté objet: Un programme est vu comme une communauté de composants autonomes (objets) disposant de ses ressources et de ses moyens d’interaction Utilise des classes pour décrire les structures et leur comportement Usage intensif de l’échange de messages Langage typique Smalltalk, C++, Java, 3. Avantages du style objet: La conception par classe conduit à des composants réutilisables Un composant offre des services et en utilise d ’autres Elle « expose » ses services à travers une interface Elle cache les détails d ’implémentations (encapsulation ou data-hiding) Tout ceci le rend réutilisable II. Les classes en java 1. Déclaration d'une classe public class nom_classe { attributs // l’ensemble des attributs de la Classe méthodes // l’ensemble des méthodes de la Classe } 2. Déclaration des attributs type nom_attribut_1; … type nom_attribut_N; Remarque: Les attributs sont des variables dont la portée est toutes les méthodes de la classe. Il est fortement recommandé que les attributs ne doivent pas être accessibles à l’extérieur de la classe qui les définit. 3. Déclaration des méthodes public type_retour nom_methode1(type1 nom1, type2 nom2, …){ code_methode1 } … public type_retour nom_methodeM(type1 nom1, type2 nom2, …){ code_methodeM } Exemple 1 In [ ]: 1 public class Voiture{ 2 3 private int puissance; 4 private boolean estDemarree; 5 private double vitesse; 6 7 public int deQuellePuissance(){ 8 return puissance; 9 } 10 11 public void demarre(){ 12 estDemaree = true; 13 } 14 15 public void accelere(double v){ 16 17 if(estDemarree){ 18 vitesse = vitesse+v; 19 } 20 } 21 } III. Les objets Chaque objet qui est une instance de la classe Voiture possède ses propres valeurs d’attributs Toutes les instances d’une classe donnée ont les mêmes méthodes, mais ces méthodes peuvent se comporter différemment selon la valeur des variables d’instance(attributs). IV. Constructeurs Un constructeur est une méthode qui : a pour nom le nom de la classe n’a pas de type de retour dans sa déclaration Syntaxe: public nom_classe(type1 nom1, type2 nom2, …) { code_constructeur } Remarque : On peut définir plusieurs constructeurs avec des signatures différentes. Le rôle du constructeur est de permettre d’initialiser les attributs d’un objet au moment de sa création. Le constructeur dont la signature ne comporte pas d’argument est appelé le constructeur par défaut. Si on ne définit aucun constructeur dans le code de la classe, le constructeur par défaut existe mais il ne contient aucune instruction (donc il ne fait rien). Le constructeur est appelé automatiquement par l’opérateur new quand on crée un objet. Les arguments d’appel du constructeur sont indiqués dans les parenthèses après le nom du type : … = new nom_du_type(arg1, …, argN); Exemple : Chien monChien = new Chien() ; Il contient le code qui s’exécute lorsque vous dites new Quand on écrit pas de manière explicite un constructeur, le compilateur se charge de le faire à notre place In [ ]: 1 public class Chien{ 2 public Chien() { 3 4 } 5 6 } Le meilleur endroit où placer l’initialisation est le constructeur. Il suffit de créer un constructeur avec arguments : In [ ]: 1 public class Chien{ 2 int taille ; 3 public Chien( int tailleChien ) { 4 System.out.println("Construction de l’objet Chien") ; 5 taille = tailleChien ; 6 System.out.println("Le Chien mesure "+taille) ; 7 8 } 9 } 10 11 public class UtiliserChien { 12 13 public static void main(String[] args) { 14 Chien c = new Chien(42); 15 } 16 } Deux constructeurs, un pour la taille par défaut et un autre avec taille comme argument In [ ]: 1 public class Chien 2 int taille ; 3 public Chien( ) { 4 taille = 27 ; 5 } 6 public Chien( int tailleChien ) { 7 taille = tailleChien ; 8 } 9 } 10 11 public class UtiliserChien { 12 public static void main(String[] args) { 13 Chien c1 = new Chien(42); 14 Chien c2 = new Chien(); //on crée un Chien dont on ne connai 15 } 16 } V. Destructeur La durée de vie d'un objet passe par trois étapes : a. La déclaration de l'objet et l'instanciation grâce à l'opérat eur **new** b. L'utilisation de l'objet en appelant ses méthodes c. La suppression de l'objet Dans d’autres langages de programmation (c++ par exemple) la suppression (libération de la mémoire) est faite par une méthode appelée destructeur. En java, cette fonction est prise en charge automatiquement par les garbages collectors. VI. Références Il n’existe pas de variables objet Il n’existe que des références à des objets Chien monChien = new Chien() ; In [ ]: 1 Chien b = new Chien() ; 2 Chien c = new Chien() ; 3 Chien d = c ; 4 c = b ; 5 d = c; 6 d = null; In [ ]: 1 Chien b = new Chien() ; 2 Chien c = new Chien() ; In [ ]: 1 Chien d = c ; In [ ]: 1 c = b; In [ ]: 1 d = c; In [ ]: 1 d = null; VII. Les concepts fondamentaux de la POO a) L'encapsulation est l'un des trois grands principes de la POO : - Un objet rassemble en lui même ses données et ses traitements. - Abstraction de données : la structure d'un objet n'est pas visible de l'extérieur. L'objet protège les données et ne les rendant acce ssibles qu'au travers des interfaces. L'interface précise quelles sont les services ( action ) offerts par l'objet. - Abstraction de traitements : Du point de vue de l'extérieur, l'invoc ation d'un service est atomique. b) Les Message: L'objet est une boite noire. Le message est le moyen de formuler une requête à un objet (une demande de service). Le message doit contenir: Handle de l'objet : une référence ou un pointeur vers l'objet. Sélecteur de méthode (nom de la méthode). Liste des paramètres. c) Vis à vis des messages, un objet peut se comporter comme : Acteur : objet actif, à l’origine de l’envoi de messages ; Serveur : objet passif destinataire des messages, jamais à l’origine d’un échange ; Agent : objet à la fois Acteur et Serveur, peut interagir avec les autres objets, de sa propre initiative ou suite à un message. d) Interface: La liste des messages auxquels est capable de répondre un objet constitue son interface. C'est la partie publique d'un objet. En pratique, dans C++ ou Java, l'interface représente la liste des méthodes accessibles (publiques) au client de l'objet. 1. visibilité des propriétés et des méthodes public : visible de partout (à partir des autres classes des autres packages également) protected : (protégé) visible uniquement à partir des classes du même package et des sous classes « rien » : visible uniquement à partie des classes du même package. private : (privé) visible uniquement dans la classe propriété : une propriété est dite visible par une classe si les méthodes de cette classe peuvent avoir accès à sa valeur et peuvent la modifier. méthode: une méthode est dite visible par une classe si les méthodes de cette classe peuvent l’appeler. 2. Comment rendre accessible une propriété privée? Même si une propriété est privée, on peut y accéder à l’aide des méthodes publiques ou protégées. Ces méthodes peuvent être accessible par une autre classe. Ces méthodes servent comme une interface entre les propriétés privées et des classes extérieures. Ces méthodes peuvent réaliser le contrôle d’accès et la validité des valeurs, donc la protection 3. Les modificateurs en java Exercices Exercice 1: Définissez une classe Point permettant de manipuler un point du plan. Cette classe contiendra : - un constructeur, - les méthodes d'accès et de modification des coordonnées, - une méthode deplacer qui effectue une translation définie par les argumen ts - une méthode afficher qui affiche les coordonnées d'un point On donnera un exemple d'utilisation avec une méthode main. Exercice 2: Définissez une classe Individu composée d'un nom, d'une adresse, et d'un numéro de telephone. Vous écrirez aussi les méthodes constructeur, modification et consultation des champs et affichage. Exercice 3: Ecrivez la classe Complexe représentant des nombres complexes. Un nombre complexe comporte une partie réelle et une partie imaginaire (partieRéelle+partieImaginaire*i avec i=racine(-1)). La classe a les attributs suivants: - partieReelle : La partie réelle du nombre. - partieImaginaire : La partie imaginaire du nombre. La classe Complexe doit disposer des constructeurs suivants: - Complexe(): constructeur par défaut, - Complexe(partieReelle,partieImaginaire), - Complexe(Complexe), - ajouter(Complexe), - soustraire(Complexe), - toString() donnnant une représentation d'un nombre complexe (a+b*i) Ecrivez aussi une classe testComplexe afin de tester la classe Complexe In [ ]: 1

Use Quizgecko on...
Browser
Browser