Programmation Orientée Objet Introduction à Java Riadh BOUSLIMI bouslimi.riadh@

Programmation Orientée Objet Introduction à Java Riadh BOUSLIMI bouslimi.riadh@gmail.com PRÉSENT A TION GÉNÉRALE 2 Programmation orientée objet 3 Ressources et références Programmer en Java, C. Delannoy, Ed. Eyrolles, 2014 Thinking in Java, B. Eckel, Prentice Hall, 2006 Traduction française diponible en ligne http://bruce-eckel.developpez.com/livres/java/traduction/tij2/ Les tutoriels Oracle https://docs.oracle.com/javase/tutorial/ La documentation de l’API standard https://docs.oracle.com/javase/8/docs/api/ Programmation orientée objet 4 Plan du cours Les bases Introduction Types primitifs et opérateurs Classes et objets T ableaux Héritage et polymorphisme Chaînes de caractères Exceptions Entrées-sorties Généricité et collections Compléments sur le langage PRÉSENT A TION 5 Programmation orientée objet 6 Paradigmes de programmation Un paradigme de programmation est un ensemble de concepts et de méthodes de programmation autorisés ou interdits. Tout programme peut s’écrire dans n’importe quel paradigme mais la façon de l’exprimer change. Un paradigme va guider la conception et l’implémentation d’un algorithme. Programmation orientée objet 7 Exemples de paradigmes de programmation Programmation fonctionnelle. Un programme est une fonction (au sens mathématique du terme). Programmation impérative. Un programme est une suite d'instructions qui modifient l‘état du système. Programmation structurée. Variante de la programmation impérative, le flot d'exécution du programme est dicté par des structures de contrôle. Programmation orientée objet. Un programme est un ensemble de briques logicielles qui interagissent entre elles. Programmation orientée objet La Programmation Orientée Objet Les concepts mis en avant par la POO sont L’abstraction La modularité L’encapsulation Le polymorphisme Les outils qui supportent ces concepts sont : Les classes ou les prototypes L’héritage (simple ou multiple) Le système de typage (statique ou dynamique, explicite ou inféré) Points forts (supposés) Du code plus proche du monde réel et donc plus facile à assimiler et à maintenir . Stabilité accrue : les modifications ne s’appliquent que localement à des sous-systèmes. En Java 8 Programmation orientée objet 10 Gestion des notes d’une université Objets Etudiant Statut, matières, notes Matière Etudiants, ECTS Diplôme Année, matières Procès verbal Etudiants, diplôme Des données Des comportements Les objets s’échangent des messages en fonction de leurs comportements associés. Fonctions (méthodes) Calculer la moyenne individuelle Calculer la moyenne générale Calculer la moyenne par matière Valider l’année Déterminer les matières à rattraper Calculer les taux de réussite Programmation orientée objet 10 Historique Simula-67 : Dahl et Nygaard Smalltalk-71 : A. Kay C++ 79-85 : Stroustrup Eiffel 85 : B. Meyer Java 94-95 : J. Gosling/Sun Ruby 95 : Y . "Matz" Matsumoto C# 2000 : Microsoft Scala 2003 : Martin Odersky http://www.simula.no http://www.smalltalk.org http://www.eiffel.com http://java.sun.com http://www.ruby-lang.org http://www.learn-c-sharp.com http://www.scala-lang.org Turing Award 2001 à Dahl et Nygaard "For ideas fundamental to the emergence of object oriented programming, through their design of the programming languages Simula I and Simula 67." LES NOTIONS ESSENTIELLES 11 Programmation orientée objet 12 Types de données Réalise un Type Abstrait de données (au sens algorithmique) Un type de données définit Un domaine de valeur Un ensemble d’opérations autorisées En java, on distingue Les types primitifs (entiers, flottants, booléens, caractères) Les types référence, objets définis à partir des types primitifs et/ou d’autres types références. • Une couleur RGB est un triplet d’entiers • Une image Bitmap est un ensemble de pixels de couleur Programmation orientée objet 13 Types primitifs En java, il existe 8 types primitifs 1 type booléen : boolean 4 types entiers : byte, short, int, long 2 types flottants : float, double 1 type caractère : char A la différence d’ autres langages (comme C++), la taille en mémoire des types primitifs est entièrement défini par le langage. Type byte short int long float double boolean char Taille (en octets) 1 2 4 8 4 8 1 2 Programmation orientée objet Variables Pour déclarer une variable, on indique son type et son nom. boolean isRunning; double precision; On peut affecter le résultat d’une expression à une variable déclarée. Une variable qui a reçu au moins une affectation est dite initialisée. isRunning = true; precision = 1.0 / 1000; Il est usuel de simultanément déclarer et initialiser une variable boolean isRunning = true; double precision = 1.0 / 1000; Il est interdit de manipuler une variable non initialisée! 14 Programmation orientée objet Type primitif boolean Valeurs : true, false Opérations autorisées Comparaisons Opérations booléennes Exemples == != ! & && | || ^ boolean estVrai = true && !false; boolean estFaux = estVrai ^ estVrai; Opérations avec court-circuit boolean erreur = false & (1 / 0 == 0); boolean correct = false && (1 / 0 == 0); 15 Programmation orientée objet 16 Les entiers relatifs Quatre types primitifs (en fonction de leur taille) Opérations autorisées Comparaisons Opérations arithmétiques Opérations binaires Exemples == != < <= > >= + - * / % & | ~ << >> >>> byte 8 bits [-128, 127] short 16 bits [-32768, 32767] int 32 bits [-231, 231 - 1] long 64 bits [-263, 263 - 1] 13 / 6 -> 2 13 & 6 -> 4 13 % 6 -> 1 13 / 0 -> Erreur! Programmation orientée objet Constantes entières On peut affecter une constante entière à une variable. byte val = 13; int val2 = 6; La constante doit être dans l’intervalle autorisé par le type. byte val = 128; On peut écrire les constantes en hexadécimal (préfixe 0x) ou en octal (préfixe 0). 31 == 0x1F && 31 == 037 // true -1 == 0xFFFFFFFF && -1 == 037777777777 // true Par défaut, les constantes entières sont de type int. On peut les forcer à être de type long à l’aide du suffixe L. long val = 0x100000000; long val = 0x100000000L; -1 != 0xFFFFFFFFL && -1 != 037777777777L // true 17 Programmation orientée objet 18 Les nombres flottants Deux types primitifs (en fonction de leur taille) Opérations autorisées Comparaisons Opérations arithmétiques Exemples == != < <= > >= + - * / 13.0 / 2.0 -> 6.5 13.0 / 0.0 -> +∞ Les opérations arithmétiques ne produisent jamais d’erreur sur les nombres flottants. Type Taille Valeur absolue minimale Valeur absolue Maximale float 32 bits 1.40239846e-45 3.40282347e38 double 64 bits 4.9406564584124654e-324 1.797693134862316e308 Programmation orientée objet Constantes flottantes On peut affecter une constante flottante à une variable. double val = 13.0; double val = 1.3e1; La constante doit avoir un valeur absolue autorisée par le type. double val = 10e308; Par défaut, les constantes flottantes sont de type double. On peut les forcer à être de type float à l’ aide du suffixe f. float val = 0.1; float val = 0.1f; Le calcul sur les nombres flottants est sujet aux erreurs de précision. 0.8 == 0.4 + 0.4; // true 0.8 == 0.7 + 0.1; // false Il existe des constantes spéciales pour les nombres flottants. 20 Float.POSITIVE_INFINITY Float.NEGATIVE_INFINITY Float.NaN Double.POSITIVE_INFINITY Double.NEGATIVE_INFINITY Double.NaN Programmation orientée objet 21 Type primitif char Représente les caractères. Le codage retenu est l’Unicode 16 bits. Opérations autorisées Comparaisons Exemples == != < <= > >= char c = 'c'; c = '\u00e9'; // code ASCII 99 // code unicode 00e9 => é c = '\t'; // la tabulation, code unicode 0009 c = '\n'; // le saut de ligne, code unicode 0010 c = '\\'; // le slash c = '\''; // le quote Programmation orientée objet 21 Opérations et promotion Exemple de l’ addition int +(int, int) long +(long, long) float +(float, float) double +(double, double) Promotion byte -> short -> int -> long -> float -> double char -> int -> long -> float -> double Exemples 1 + 2L; // 3L 1 + 2.0; // 3.0 'e' - 'a'; // 4 Programmation orientée objet Affectations combinées += Incrémente une variable <variable> += <expression>; Attention Surchargée pour tous les types numériques • byte, short, int, long, float, double Différent d’une addition • byte b = 127; • b = b + b; int +(int, int) Variantes -= *= /= <<= >>= >>>= &= |= b++ ++b &&= et ||= n’existent pas! b += b; byte +=(int) 22 Programmation orientée objet Cast Par promotion, on peut écrire : byte shortVar = 10; int var = shortVar; // var = 10 Par contre, l’affectation suivante est interdite : int var = 10; byte shortVar = var; // un byte n’est pas assez grand pour contenir un int Dans ce cas précis, la valeur est pourtant compatible, on peut forcer la conversion à l’aide d’un cast : int var = 10; byte shortVar = (byte)var; // shortVar = 10 Il est possible de perdre de l’information lors d’une conversion. byte b = (byte)257; // b = 1 23 Programmation orientée objet 24 Structure de contrôle : if La syntaxe du branchement conditionnelle est if (condition) instruction_1 [else instruction_2] Une instruction peut-être une expression terminée par un point virgule (une instruction simple) Un bloc d’instructions entre accolades if (x % 2 == 0) x /= 2; // instruction simple else { x *= 3; x++; } // bloc Un bloc peut se limiter à une seule instruction. On conseille de toujours utiliser un bloc pour les structures de contrôle. if (x % 2 == 0) { // mieux x /= 2; } else { uploads/s1/ cours-01poo.pdf

  • 34
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager
  • Détails
  • Publié le Nov 07, 2021
  • Catégorie Administration
  • Langue French
  • Taille du fichier 1.5435MB