• Aucun résultat trouvé

Programmation Orientée Objet Programmation Orientee Objet

N/A
N/A
Protected

Academic year: 2022

Partager "Programmation Orientée Objet Programmation Orientee Objet"

Copied!
156
0
0

Texte intégral

(1)

LE COURS OUVERT DE L’UVA SUR LA

PROGRAMMATION ORIENTEE OBJECT

Pelagie Houngue

(2)

Avant-propos

L’Université virtuelle africaine (UVA) est fière de participer à l’accès croissant à l’éducation dans les pays africains grâce à la production de matériaux d’apprentissage de qualité.

Nous sommes également fiers de contribuer à la connaissance globale car nos ressources éducatives ouvertes sont principalement accessibles depuis le continent africain.

Ce module a été développé dans le cadre d’un programme de diplôme et d’études en informatique appliquée, en collaboration avec 18 institutions partenaires africaines de 16 pays. Au total, 156 modules ont été développés ou traduits pour assurer la disponibilité en anglais, en français et en portugais. Ces modules ont également été mis à disposition en tant que ressources éducatives ouvertes (OER) sur oer.avu.org.

Au nom de l’Université virtuelle africaine et de notre patron, nos institutions partenaires, la Banque africaine de développement, je vous invite à utiliser ce module dans votre institution, pour votre propre éducation, à le partager aussi largement que possible et à participer activement à l’AVU Communautés de pratique de votre intérêt. Nous nous sommes engagés à être en première ligne de développement et de partage de ressources éducatives ouvertes.

L’université virtuelle africaine (UVA) est une organisation intergouvernementale panafricain créée par une charte qui a pour mandat d’augmenter considérablement l’accès à une éducation et à une formation supérieures de qualité grâce à l’utilisation innovante des technologies de communication d’information. Une charte établissant l’UVA en tant

qu’organisation intergouvernementale a été signée à ce jour par dix-neuf (19) gouvernements africains - Kenya, Sénégal, Mauritanie, Mali, Côte d’Ivoire, Tanzanie, Mozambique,

République démocratique du Congo, Bénin, Ghana, République de Guinée, Burkina Faso, Niger, Soudan du Sud, Soudan, Gambie, Guinée-Bissau, Éthiopie et Cap-Vert.

Les institutions suivantes ont participé au Programme des sciences informatiques appliquées:

(1) Université d’Abomey Calavi au Bénin; (2) Université de Ougagadougou au Burkina Faso;

(3) Université Lumière de Bujumbura au Burundi; (4) Université de Douala au Cameroun;

(5) Université de Nouakchott en Mauritanie; (6) Université Gaston Berger au Sénégal; (7) Université des Sciences, Techniques et Technologies de Bamako au Mali (8) Institut de gestion et d’administration publique du Ghana; (9) Université Kwame Nkrumah de Science et Technologie au Ghana; (10) L’Université Kenyatta au Kenya; (11) Egerton University au Kenya;

(12) Université d’Addis-Abeba en Ethiopie (13) Université du Rwanda; (14) Université de Dar es-Salaam en Tanzanie; (15) Université Abdou Moumouni de Niamey au Niger; (16) Université Cheikh Anta Diop au Sénégal; (17) Université Pedagógica au Mozambique; Et (18) L’Université de Gambie en Gambie.

Bakary Diallo Le Recteur

Université virtuelle africaine

(3)

Crédits de production

Auteur

Pelagie Houngue

Pair Réviseur

Boune Mohammed

UVA – Coordination Académique

Dr. Marilena Cabral

Coordinateur global Sciences Informatiques Apliquées

Prof Tim Mwololo Waema

Coordinateur du module

Jules Degila

Concepteurs pédagogiques

Elizabeth Mbasu Benta Ochola Diana Tuel

Equipe Média

Sidney McGregor Michal Abigael Koyier

Barry Savala Mercy Tabi Ojwang

Edwin Kiprono Josiah Mutsogu

Kelvin Muriithi Kefa Murimi

Victor Oluoch Otieno Gerisson Mulongo

(4)

Droits d’auteur

Ce document est publié dans les conditions de la Creative Commons Http://fr.wikipedia.org/wiki/Creative_Commons

Attribution http://creativecommons.org/licenses/by/2.5/

Le gabarit est copyright African Virtual University sous licence Creative Commons Attribution- ShareAlike 4.0 International License. CC-BY, SA

Supporté par

Projet Multinational II de l’UVA financé par la Banque africaine de développement.

(5)

Avant-propos 2

Crédits de production 3

Droits d’auteur 4

Aperçu du cours 6

Bienvenue à la Programmation Orientée Objet 6

Prérequis 6

Matériaux 6

Objectifs du cours 6

Unités 6

Unité 0: Évaluation diagnostique 6 Unité 1 : Introduction à la programmation orientée objet 7 Unité 2: Les classes, les objets et les membres de classe 7 Unité 3: Les librairies, la gestion des exceptions et les flux d’entrée et de sortie 7 Unité 4: Introduction à la programmation des interfaces graphiques 7 Évaluation 7

Lectures et autres ressources 8 Unité 0 8

Unité 2 9

Unité 3 9

Unité 4 9

Unité 0. Évaluation diagnostiqu 10

Introduction à l’unité 10

Objectifs de l’unité 10

Évaluation de l’unité 10

Unité 1. Introduction à la programmation orientée objet 12

Introduction à l’unité 12

Objectifs de l’unité 12

(6)

Activité 1 – Concept orienté objet et le langage Java 13 Détails de l’activité 14 Conclusion 20 Activité 2 – Variables et Types de données 21 Activité 3 –Opérateurs et Structures de contrôles 24 Conclusion 37

Unité 2. Classes, objets et membres 42

Introduction à l’unité 42 Objectifs de l’unité 42

Activité 1 - Objets et classes en java 43

Conclusion 46

Activité 2 – Constructeurs 47

Conclusion 49 Activité 3 – Héritage, classe/méthode abstraite, Interface, polymorphisme,

surcharge et redéfinition 50

Conclusion 62

Activité 4 - Activité de laboratoire 63

Unité 3. Les librairies, la gestion des exceptions et les flux d’entrée et de

sortie 73

Introduction à l’Unité 73

Activité 1 – Paquetages Java 74

Conclusion 77

Activité 2 – Gestion des exceptions 78

Conclusion 85

Activité 3 –Flux d’entrée et sortie 86

Conclusion 90

Unité 4. Introduction à la programmation graphique en Java 94

Introduction à l’unité 94 Objectifs de l’unité 95

Activité 1 – Création des applets 96

(7)

Conclusion 104

Activité 3 -Swing 105 Activité 4 - Activité de laboratoire 108 Evaluation du cours 129

Travail à faire : 142

Réponse 142

Schéma de Notation 146

Réponses 150

Références du cours . . . 152

(8)

Aperçu du cours

Bienvenue à la Programmation Orientée Objet

Ce cours sur la Programmation Orientée Objet (POO) a été conçu pour vous permettre de développer de simples applications Desktop en utilisant le langage de programmation Java.

Ce cours vise à travers une introduction à la programmation orientée objet de vous présenter les concepts de base de la programmation orientée objet tels que les classes, les objets, l’héritage, le polymorphisme et les interfaces abstraites. Ensuite, vous aurez à étudier les bibliothèques Java et la gestion des exceptions pour avoir des notions avancées de POO afin de faire une meilleure gestion des erreurs. A la fin, vous allez découvrir brièvement comment vous pouvez concevoir des interfaces graphiques en Java en utilisant les applets et les paquetages AWT et Swing.

Prérequis

• Connaissances de base de la programmation et la programmation procédurale.

Matériaux

Les matériaux nécessaires pour compléter ce cours comprennent:

• JDK

• Editeur de texte (par exemple Notepad++)

• Environnement de développement intégré (Netbeans, Eclipse, etc)

Objectifs du cours

À la fin de ce cours, l’étudiant devrait être en mesure de :

• Créer et utiliser des objets en utilisant le langage de programmation Java

• Utiliser les bibliothèques Java pour manipuler les objets

• Développer une application Desktop simple.

Unités

Unité 0: Évaluation diagnostique

Cette unité aidera à rappeler à l’étudiant les évolutions des langages de programmation et les avantages des langages de programmation de haut niveau comparés aux langages de bas niveau.

(9)

Unité 1 : Introduction à la programmation orientée objet

Cette unité définit la programmation orientée objet, la distingue par rapport à la

programmation procédurale et décrit les concepts clés de la programmation orientée objet.

Unité 2: Les classes, les objets et les membres de classe

Dans cette unité, vous aurez à apprendre le concept de classe et comment créer les méthodes et les objets. Vous apprendriez aussi le concept d’héritage, d’abstraction et de polymorphisme.

Unité 3: Les librairies, la gestion des exceptions et les flux d’entrée et de sortie

Dans cette unité, vous aurez à apprendre comment le mécanisme de gestion des exceptions de Java fonctionne, comment capturer et gérer les exceptions, comment écrire les classes d’exception et comment déclencher les exceptions. Vous allez également apprendre à lire et écrire des données/informations.

Unité 4: Introduction à la programmation des interfaces graphiques

Dans cette unité, vous apprenez les composants AWT et Swing, les applets et les événements.

Vous allez apprendre aussi comment créer de simples applications Desktop.

Évaluation

Les évaluations formatives (vérification de progrès) sont incluses dans chaque unité.

Les évaluations sommatives (tests et travaux finaux) sont fournies à la fin de chaque module et traitent des connaissances et compétences du module.

Les évaluations sommatives sont gérées à la discrétion de l’établissement qui offre le cours.

Le plan d’évaluation proposé est le suivant:

1 Evaluation des actions de

l’apprenant

10%

2 Contrôle continu 20%

3 Examen final 70%

Plan

(10)

Unité Sujets et Activités Durée estimée Unité 0 : Evaluation

diagnostique

Evaluation 3h

Unité 1 :

Introduction à la programmation orientée objet

Activité 1.1 – Concept orienté objet et le langage Java

10h

Activité 1.2 – Variables et Types de données 12h Unité 2 : Classes,

objets et membres

Activité 2.1 - Objets et classes en java 8h

Activité2.2 - Constructeurs 8h

Activité 2.3 - Héritage, classe/méthode

abstraite, Interface, polymorphisme, surcharge et redéfinition

8h

Activité 2.4 - Activité de laboratoire 6h Unité 3 :

Bibliothèques et gestion des exceptions

Activité 3.1 - Paquetages java 7h

Activité 3.2 - Gestion des exceptions 7h Activité 3.3 - Flux d’entrée et sortie 7h Unité 4 :

Introduction à la programmation graphique en Java

Activité 4.1 – Création des applets 7h Activité 4.2 – Interfaces graphiques 7h

Activité 4.3 -Swing 8h

Activité 4.4 - Activité de laboratoire 4h Evaluations du cours Examens de mi-parcours et examen final 6h

Total 120h

Lectures et autres ressources

Les lectures et autres ressources dans ce cours sont indiquées ci-dessous.

Unité 0

Lectures et autres ressources obligatoires:

• Support de cours de M. Mounier de l’Université Paris Sud

• Développons en Java, Version 2.0, Jean Michel DOUDOUX, 2014

(11)

• Introduction to object oriented programming with java , 5th edition Wu, C.

Thomas, 2010Unité 1

Lectures et autres ressources obligatoires:

• Support de cours de M. Mounier de l’Université Paris Sud

• Développons en Java, Version 2.0, Jean Michel DOUDOUX, 2014

• Introduction to object oriented programming with java , 5th edition Wu, C.

Thomas, 2010

• Java 2: The Complete Reference, Fifth Edition, Herbert Schildt, Tata McGraw Hill.

Unité 2

Lectures et autres ressources obligatoires:

• Support de cours de M. Mounier de l’Université Paris Sud

• Développons en Java, Version 2.0, Jean Michel DOUDOUX, 2014

• Introduction to object oriented programming with java , 5th edition Wu, C.

Thomas, 2010

• Java 2: The Complete Reference, Fifth Edition, Herbert Schildt, Tata McGraw Hill

Unité 3

Lectures et autres ressources obligatoires:

• Support de cours de M. Mounier de l’Université Paris Sud

• Développons en Java, Version 2.0, Jean Michel DOUDOUX, 2014

• Introduction to object oriented programming with java, 5th edition Wu, C.

Thomas, 2010

• Java 2: The Complete Reference, Fifth Edition, Herbert Schildt, Tata McGraw Hill

Unité 4

Lectures et autres ressources obligatoires:

• Support de cours de M. Mounier de l’Université Paris Sud

• Développons en Java, Version 2.0, Jean Michel DOUDOUX, 2014

• Introduction to object oriented programming with java , 5th edition Wu, C.

Thomas, 2010

• Java 2: The Complete Reference, Fifth Edition, Herbert Schildt, Tata McGraw Hill

(12)

Unité 0. Évaluation diagnostiqu

Introduction à l’unité

Le but de cette unité est de déterminer votre degré de maîtrise des prérequis nécessaires pour mieux cerner ce cours.

Cette unité demande que vous connaissiez une histoire brève des langages de

programmation à partir des langages machines de bas niveau jusqu’aux langages orientés objets de nos jours.

Objectifs de l’unité

À la fin de cette unité, vous devriez être capable de :

• Distinguer les trois niveaux de langages de programmation

• Enumérer les différences entre les langages bas niveau et les langages haut niveau

• Enumérer les avantages des langages de programmation de haut niveau

TERMES DES

Programme : un ensemble d’instructions

Langage machine : langage de programmation dont les instructions sont codées en binaire.

Langage assembleur : langage qui permet un niveau élevé de programmation symbolique par l’utilisation des codes d’opération symbolique.

Langage de programmation haut niveau : langage orienté autour du problème à résoudre, qui permet d’écrire des programmes en utilisant des mots usuels des langues naturelles (très souvent de l’anglais) et des symboles mathématiques familiers.

Évaluation de l’unité

Evaluation

L’objectif de ce test est de vous aider de vous rappeler d’éléments de base de la programmation.

Répondez aux questions suivantes :

(13)

1. Donner les 3 niveaux de langages de programmation (3pts)

2. Expliquer pourquoi les instructions encodées en binaire sont plus difficiles à utiliser en programmation (1pt)

3. Comparer le langage assembleur aux langages de programmation de haut niveau (2pts)

4. Donner 4 exemples de langages de programmation haut niveau (4pts) 5. Donner le sens des codes d’opérations symboliques suivants : MOV, XCHG,

CMP, JMP (4pts)

Système de notation L’évaluation est sur 14 pts.

Réponses

1. Langage machine, langage assembleur, langage de haut niveau 2. Difficultés de l’homme à travailler avec des codes machine.

3. Les programmes en langage assembleur ne sont pas reconnu directement pas l’ordinateur, il faut que l’assembleur les traduit en langage machine.

Les langages de haut niveau permettent aux programmeurs d’écrire des programmes plus rapidement mais ils ne sont pas toujours reconnus par le CPU. Un compilateur traduit le langage de haut niveau en son équivalent en langage machine.

4. C, C++, Java, Python…

5. MOV : copie le contenu, XCHG : échange, CMP : comparaison, JMP : saute à une instruction pointée.

Lectures et autres ressources

• Support de cours de M. Mounier de l’Université Paris Sud

• Développons en Java, Version 2.0, Jean Michel DOUDOUX, 2014

• Introduction to object oriented programming with java, 5th édition Wu, C.

Thomas, 2010

(14)

Unité 1. Introduction à la

programmation orientée objet

Introduction à l’unité

Cette unité vous introduit aux paradigmes orienté-objet. Cette unité vous permettra de faire la différence entre la Programmation Orientée Objet et la programmation procédurale. Vous serez en mesure de définir les concepts de base de la Programmation Orientée Objet.

La programmation Orientée Objet supplante peu à peu la programmation procédurale dans les grands programmes car il présente d’énormes avantages à savoir : la facilité d’organisation, la réutilisation, méthode plus intuitive, possibilité d’héritage, facilité de correction, projets plus faciles à gérer. L’intérêt principal de la Programmation Orientée Objet réside dans le fait que l’on ne décrit plus les actions à réaliser de façon linéaire par le code mais plutôt par des ensembles cohérents appelés objets.

La Programmation Orientée Objet propose une méthodologie centrée sur les données. Ainsi, un objet représente un élément qui doit être utilisé ou manipulé par le programme, sous la forme d’ensembles de données. Dès lors, le programmeur écrit les traitements, en associant chaque traitement à un objet donné.

La Programmation Orientée Objet décrit des entités comme il en existe dans le monde réel.

Ceci permet aux programmeurs de transposer une situation réelle d’une manière simple et efficace.

Cette unité vise à introduire la programmation orientée objet en s’appuyant sur les concepts de la programmation procédurale. Vous devez être en mesure de transposer vos connaissances en programmation procédurale vers la Programmation Orientée Objet. Vous allez utiliser le langage JAVA pour votre étude de l’approche Orientée Objet.

Objectifs de l’unité

À la fin de cette unité, vous devriez être capable de:

• Définir le terme de programmation orientée objet

• Distinguer les différences entre la programmation procédurale et la programmation orientée objet

• Souligner l’importance de la programmation orientée objet

• Définir les variables et montrer comment les variables sont déclarées.

(15)

TERMES DES

Orientation objet : est un concept du génie logiciel dans lequel les concepts sont représentés comme des objets.

Objet : Les objets sont des entités du monde réel. Un jeu ou groupe d’objets forme une classe.

Variable : Ce sont des étiquettes qui expriment une position particulière en mémoire et s’y connecte avec un type de données.

Constante : Une valeur fixe qui ne change pas durant l’exécution du programme.

Opérateur : Permet de faire des opérations sur les données (addition, multiplication, …).

Instruction conditionnelle : permet de vérifier qu’une condition est remplie avant d’exécuter un bloc d’instructions.

Boucle : Répétition d’une même suite d’instructions, un certain nombre de fois sous certaines conditions.

Compilation : permet de vérifier que tous les mots clés du programme correspondent à des mots du langage dans lequel il est écrit et traduits vers le langage compréhensible par la machine virtuelle java.

Interprétation : traduction de byte code (par la machine virtuelle JVM) produit lors de la compilation vers un langage compréhensible par le système d’exploitation sur lequel le programme sera exécuté.

Exécution : Faire les instructions demandées dans le programme.

Activités d’apprentissage

Activité 1 – Concept orienté objet et le langage Java

Introduction

La programmation orientée objet est une approche de programmation dans laquelle tous les traitements sont faits dans le contexte des objets. Un programme écrit dans un langage de programmation orientée objet peut être vu comme une collection d’objets collaborant pour l’exécution d’une tâche donnée.

L’orienté objet réduit le fossé entre les modèles de problème et de solution parce qu’il nous permet de représenter le domaine de solution en terme d’éléments du domaine du problème.

(16)

Les éléments du domaine du problème incluent les objets du monde réel qui interagissent pour accomplir une tâche donnée. Par exemple, un système de librairie compose avec les libraires, les emprunteurs, les livres et leurs interactions. Pendant que nous modélisons le problème, nous modélisons chaque élément du domaine du problème avec leurs états et leurs comportements et identifions leurs interactions. Par exemple, tout système pour automatiser les opérations dans une librairie doit composer avec les objets dans le domaine du problème, c’est-à-dire libraire, membre de la librairie, livre, journal, magazine, etc. Dans le cas d’une école, nous allons considérer les objets suivants : étudiant, département, cours, enseignant, etc.

Les objets parfois correspondent aux choses trouvées dans le monde réel. Par exemple, un programme de graphisme peut avoir les objets comme “cercle”, “carré”, “menu”. Un programme de graphisme peut supporter les comportements comme dessiner, calculer une surface, calculer un périmètre, etc.

Un système de commerce en ligne aura les objets comme “panier”, “client” et “produit”. Le système de commerce en ligne supportera par exemple des comportements comme “passer une commande”, “effectuer un paiement” et “accorder une remise”.

Détails de l’activité

Classes et objets

La notion centrale de la programmation orientée objets est évidemment la notion

d’objet. Dans un programme orienté objets, toutes les données manipulées sont des objets.

Pour représenter concrètement des objets en programmation orientée objets (on dit pour implémenter ces objets), on dispose de classes et pour agir sur les objets, on dispose de méthodes (messages). On dit qu’un objet réagit à certains messages qu’on lui envoie de l’extérieur et que la façon dont il réagit détermine le comportement de l’objet.

Chaque objet manipulé est le représentant d’une classe. On dit qu’un objet est une instance d’une classe.

Une classe désigne donc un type générique dont les objets sont des instances. Le fait que des objets soient des instances d’une même classe signifie donc qu’ils ont quelque chose en commun. Ils partagent en général une certaine structure et des traitements qu’on peut leur appliquer, ce qui n’empêche pas qu’ils soient tous différents les uns des autres. Par exemple, toutes les voitures sont des objets qui ont quatre roues, un volant, un moteur et une carrosserie. Toutes les voitures peuvent être mises en marche, stoppées, conduites, lavées, repeintes, etc. Mais certaines voitures ont trois portes, d’autres en ont cinq, toutes n’ont pas la même longueur ou des moteurs de même puissance, toutes ne peuvent pas contenir le même nombre de passagers, ou encore des modèles exactement identiques peuvent différer par la couleur.

(17)

Ainsi, ces différences vont en général être représentées en programmation orientée objets par le fait que tous les objets de type Voiture (toutes les instances de la classe Voiture) ont les mêmes attributs, mais ces attributs prennent des valeurs différentes pour représenter des voitures différentes. Mais surtout, même si la voiture de mon voisin est exactement identique à la mienne, ce ne sont pourtant pas les mêmes voitures, il s’agit bien de deux objets

différents.

Dans cet exemple, la classe voiture représente donc la structure générale que partagent toutes les voitures. Chaque objet de la classe voiture sera construit conformément à cette structure en associant une valeur à chacun des attributs d’un objet de cette classe.

Une classe n’est donc rien d’autre que la description d’un ensemble d’objets ayant une structure de données commune et disposant des mêmes méthodes.

Introduction à Java

Java est un langage de programmation à usage général orienté objet développé par Sun Microsystems des Etats-Unis en 1991. Il fut à l’origine appelé Oak par James Gosling, l’un des inventeurs de ce langage. Java a été inventé pour le développement de logiciels pour les appareils électroniques de consommation tels que télévision, grille-pain, etc. L’objectif principal était de faire de Java un langage simple, portable et fiable. Les auteurs de Java sont James Gosling, Arthur Van et d’autres.

Java est le premier langage de programmation qui n’est attaché à aucun matériel ou système d’exploitation particulier. Les programmes développés en Java peuvent être exécutés

n’importe où et sur n’importe quel système.

Java vient avec un compilateur appelé compilateur Java qui à la différence des autres langages de programmation convertit le code source en un code intermédiaire appelé byte code. Le code de la machine virtuelle (bytecode) n’est pas spécifique à une machine. Le code dépendant de la machine est généré par l’interpréteur Java qui agit comme un intermédiaire entre la machine virtuelle et la machine réelle.

L’environnement Java inclut de nombreux outils de développement, de classes et de méthodes. Les outils de développement font partie du système connu comme Java

Development Kit (JDK) et les classes et les méthodes font partie de la librairie Java Standard Library (JSL), aussi appelée API (Application Programming Interface).

JDK vient avec un jeu d’outils qui sont utilisés pour développer et exécuter des programmes Java. Il inclut :

• Appletviewer (utilisé pour visualiser les applets)

• Javac (c’est le compilateur Java)

• Java (Il est l’interpréteur Java)

• Javap (désassembleur Java, convertit le byte code en une description de programme)

(18)

• Javah (pour les fichiers d’entête de Java)

• Javadoc (pour créer la documentation en HTML)

• Jdbc (Débogueur Java)

Les commandes importantes utilisées dans l’exécution et la compilation des programmes sont :

a) Javac (Java compiler)

Dans Java, vous pouvez utiliser n’importe quel éditeur de texte pour écrire un programme et ensuite enregistrer le programme avec l’extension .java. Le compilateur Java convertit le code source ou programme en byte code et l’interpréteur convertit le fichier .java en fichier .class.

Pour compiler un programme java, on utilise la syntaxe suivante:

C:\javac nomFichier.java

Ainsi, Si le nom de mon fichier est anatole.java, alors la syntaxe sera : C:\javac anatole.java

b) java (Java Interpreter)

Pour exécuter le programme, on utilise la syntaxe suivante:

C:\ java nomFichier

Ainsi, Si le nom de mon fichier est anatole.java, alors la syntaxe sera : C:\ java anatole

Les librairies Java

Explorer les librairies de classes Java et leurs méthodes et variables d’instance, est un

excellent moyen pour comprendre ce que Java peut et ne peut pas faire, et peut être le point de départ pour votre propre développement. Voici les paquets de classe qui font partie des librairies de classes Java:

• java.lang: classes qui correspondent à la langue elle-même, qui inclut la classe Object, la classe String, et la classe System. Il contient également les classes spéciales pour les types primitifs (entier, caractère, float, ainsi de suite).

• java.util: classes d’utilitaires, comme la date, ainsi que les classes de collection simples, tels que les Vecteurs et les tables de Hachage.

• java.io: classes d’entrées/sorties pour l’écriture et la lecture de flux (tels que les entrées et sorties standard) et pour la gestion des fichiers.

• java.net: Classes pour le support réseau, y compris les classes de « Sockets » et d’URL (classe permettant de représenter les références aux documents sur le World Wide Web).

(19)

• java.awt(Abstract Window Toolkit): Classes permettant de mettre en œuvre une interface utilisateur graphique, y compris les classes pour les fenêtres, les Menus, les boutons, les polices, les listes de choix, etc. Ce paquetage comprend également des classes pour le traitement d’images (le paquet java.awt.Image).

• java.applet: Classes permettant de mettre en œuvre des applets en Java, y compris la classe Applet elle-même, ainsi que la classe AudioClip.

En plus des classes Java, votre environnement de développement peut également inclure d’autres classes qui fournissent d’autres services de base ou des fonctionnalités. Bien que ces classes peuvent être utiles, parce qu’elles ne font pas partie de la bibliothèque standard de Java, elles ne seront pas disponibles à d’autres personnes qui essayeront d’exécuter votre programme Java. Ceci est particulièrement important pour les applets, parce les applets devraient être en mesure de fonctionner sur toutes les plateformes, avec n’importe quel navigateur Java. Seule la disponibilité des classes inclues dans un paquet java est garantie sur tous les navigateurs et dans les environnements Java.

Composantes d’un programme java Un programme Java est composé de:

• Commentaires

• Instructions d’importation de librairies

• Déclarations de classes

Commentaires : En utilisant les commentaires, on peut indiquer le but du programme, expliquer le sens du code et fournir des explications pour aider d’autres programmeurs à comprendre le programme.

La zone de texte à mettre en commentaires, commence par / * qui marque le début du commentaire et se termine par * /

/* et */ sont communément utilisés pour les commentaires incluant plusieurs et sont importants pour la documentation du programme.

Par contre pour les commentaires d’une seule ligne, on utilise une double barres obliques (slash) à savoir // au début du commentaire.

L’instruction import utilisée pour développer les programmes orientés objets fait usage des classes prédéfinies, mais il est également possible de définir vos propres classes.

Normalement, les classes définies sont regroupées en package. L’instruction import permet au programme d’utiliser les classes (et leurs instances) définies dans le package désigné. Un package peut inclure des sous-packages par exemple java.awt.image.colormodel.

(20)

Les instructions d’importation se terminent par un point-virgule.

Exemple :

import <nom du paquet>. *;

Un programme Java simple : / * programme BonjourMonde

Ce programme affiche le texte « Bonjour à tous, ceci est mon premier programme java » * /

import javabook.*;

class BonjourMonde {// début de la classe

public static void main(String args[]) {// début de la fonction principale

System.out.printIn (‘’Bonjour à tous, ceci est mon premier programme java”);

}//fin de la fonction principale } //fin de la classe

Le nom du fichier est BonjourMonde. Il doit être équivalent au nom de la classe contenant la fonction principale.

Java est sensible à la casse. Ce programme définit une classe appelée BonjourMonde. Une classe est un terme orienté objet qui est conçu pour effectuer une tâche spécifique. Une classe Java est définie par son nom de classe, une accolade ouvrante, une liste des méthodes et des attributs et une accolade fermante. Le nom de la classe est composé de caractères alphabétiques et des chiffres sans espaces. Le premier caractère doit être alphabétique.

La ligne public static void main(String args[]) montre l’endroit où le programme commence son exécution. Le mot clé main signifie qu’il s’agit de la fonction principale.

La JVM démarre l’exécution de tout programme par cette méthode. La méthode principale de notre classe BonjourMonde est composée d’une seule instruction

System.out.printIn (‘’Bonjour à tous, ceci est mon premier programme java”);

L’instruction affiche à la console, la chaine de caractère se trouvant entre guillemets (“”).

Vous pouvez également avoir la chaine de caractère affichée dans une fenêtre presque aussi grand que l’écran.

(21)

Considérons l’exemple de code ci-dessous et comparons-le avec le programme Java simple ci-dessus:

/ * Programme BonjourMonde,

Ce programme affiche une fenêtre sur l’écran. La fenêtre est positionnée au centre de l’écran et la taille de la fenêtre est presque aussi grande que l’écran. * /

import javabook.*;

class BonjourMonde {

public static void main(String[]args)

{

MainWindow fenPrincipale;

fenPrincipale = new MainWindow();

fenPrincipale.setvisible(true);

}

}

Exercice

Écrire en Java, un programme qui affiche la liste d’emplettes suivante dans la fenêtre de la console.

Attention ! Ne pas oublier d’inclure les espaces vides pour que les noms des éléments apparaissent en retrait (\n).

Liste de courses:

Pomme Banane Lait écrémé

(22)

Conclusion

La Programmation Orientée Objet offre les avantages suivants par rapport aux approches conventionnelles:

• La POO offre une structure modulaire claire pour les programmes qui facilitent la définition des types de données abstraits lorsque les détails de l’implémentation sont cachés.

• La POO, facilite la maintenance et la modification du code existant puisque de nouveaux objets peuvent être créés avec de petites différences avec ceux qui existent déjà.

• La POO offre un bon cadre pour des bibliothèques de code fournissant des composants logiciels pouvant être facilement adaptés et modifiés par le programmeur.

Comment écrire, compiler et exécuter un programme Java ?

1. On ouvre un éditeur de texte (par exemple Notepad++) pour écrire le programme

2. Sauvegarder le fichier sur le disque dur, sous le même nom qu’on aura donné à la classe

3. Compiler le programme à l’aide de la commande javac (compilateur Java) 4. S’il y a des erreurs on revient au fichier sauvegardé et on les corrige puis on

recompile. On fait cette opération tant qu’il y a une erreur de compilation 5. Exécuter le programme à l’aide de la commande java (Interpréteur Java) 6. S’il y a une erreur, on revient au fichier sauvegardé et on vérifie qu’il y a bien

une méthode main et on corrige les erreurs. On fait cette opération tant qu’il y a une erreur.

7. Recompiler le programme et l’exécuter de nouveau.

Évaluation

1. Définir la programmation orientée objet et énumérer ses avantages et ses inconvénients.

2. Quelle est la structure d’un programme java

3. Quelle sont les étapes nécessaires pour pouvoir visualiser le résultat d’un programme en java

4. Ecrire un programme java qui permet d’afficher à l’écran votre nom, prénom et date de naissance.

(23)

Activité 2 – Variables et Types de données

Introduction

Une variable est comme un conteneur désigné pour les données (et les objets). Un espace mémoire est alloué à une variable au moment de l’exécution du programme et son nom est utilisé pour obtenir ou définir sa valeur. Vous devez déclarer une variable avant de l’utiliser en lui donnant un nom et un type. Une variable peut être déclarée principalement dans quatre contextes différents : au sein d’une classe comme une variable membre (en dehors de toutes méthodes), durant la déclaration d’une méthode comme un paramètre formel de la méthode, à l’intérieur d’une méthode comme variable locale à la méthode, et enfin au sein d’un gestionnaire d’exception comme un paramètre de gestion d’exception. (Lire plus sur ce concept dans l’unité 3)

Détails de l’activité

Supposons que vous souhaitez calculer la somme et la différence de deux nombres. Notons les deux nombres x et y. En mathématiques, on dit :

x+y et x - y

Pour calculer la somme et la différence de x et y dans un programme Java, vous devez d’abord déclarer le type des données à manipuler et les variables qui doivent contenir ces données. Après l’affectation de valeurs aux différentes variables, on calcule leur somme et différence. Supposons que x et y sont des entiers. Pour déclarer que le type de données qui leur ont été assignées, est un entier, nous écrirons :

int x, y;

Lorsque la déclaration est faite, des emplacements de mémoire sont alloués pour stocker les données concernant x et y. Ces emplacements de mémoire sont appelées variables, et x et y sont les noms associés à ces emplacements de mémoire. Tout identifiant valide peut être utilisé comme un nom de variable. Après que cette déclaration soit faite, on peut attribuer uniquement des entiers à x et y.

Comment les variables sont-elles déclarées ? La syntaxe générale pour déclarer des variables est :

<type de données> <nomVariables> ;

Où <nomVariables> est une séquence d’identificateurs séparés par des virgules. Chaque variable que nous utilisons dans un programme doit être déclarée. Il est possible d’avoir autant de déclarations que vous le souhaitiez. On peut par exemple, déclarer séparément x et y comme suit :

(24)

int x;

int y;

Toutefois, vous ne pouvez pas déclarer la même variable plusieurs fois ; par conséquent, la deuxième

La déclaration ci-dessous n’est pas valide car y est déclaré deux fois : int x, y, z;

int y;

Types de données

Il existe six types de données numériques en Java : byte, short, int, long, float et double. Les types de données byte, short, int, long et sont des entiers; et les types de données float et double sont utilisés pour les nombres réels. Les noms de type de données byte, short, et autres sont tous des mots réservés, c’est-à-dire, des mots ne pouvant pas par exemple être utilisés comme identifiant pour une variable ou une fonction. La principale différence entre ces six types de données numériques réside dans la plage de valeurs comme indiqué dans le tableau ci-dessous :

Tableau 1.1 : Les types de données

Type de données

Contenu Valeur par défaut

Valeur maximale

byte Nombre

entier

0 127

short Nombre

entier

0 32767

int Nombre

entier

0 2147483647

long Nombre

entier

0 9223372036854770000

float Nombre réel

0 3.40E+38

double Nombre réel

0 1.79769313486231570E+308

(25)

Un type de données avec une plus grande plage de valeurs est dit avoir un degré de précision plus élevé. Par exemple, le type de données double a une précision plus élevée que le type de données float. Le compromis pour plus de précision est l’espace mémoire à utiliser pour stocker un nombre avec une plus grande précision ; on a besoin de plus d’espace. Par exemple une variable de type short nécessite 2 octets tandis qu’une variable de type int nécessite 4 octets. Si votre programme n’utilise pas beaucoup de nombres entiers, les déclarer comme short ou int n’est vraiment critique. La différence dans l’utilisation de la mémoire est très petite et ne constitue pas un facteur décisif dans la conception du programme.

La différence de stockage devient importante seulement lorsque le programme utilise des milliers d’entiers. Par conséquent, vous pouvez toujours utiliser le type de données int pour les nombres entiers.

Nous utilisons long lorsque nous avons besoin de traiter de très grands entiers qui sont en dehors de la plage de valeurs des int. Pour les nombres réels, il est plus courant d’utiliser le type double bien que double nécessite plus d’espace mémoire que le type float, mais il est préférable à cause de sa plus grande précision dans la représentation des nombres réels.

Comment déclarer des variables de différents types de données ? int i, j, k;

float nombreUn, nombreDeux;

long grandEntier;

Double grandReel;

Au moment où une variable est déclarée, elle peut également être initialisée. Par exemple, on peut initialiser les variables type int, compteur à 10 et hauteur à 34 comme suit :

int compteur= 10, hauteur = 34;

Conclusion

Dans cette unité, vous avez étudié la déclaration des variables utilisées pour mémoriser des données susceptibles d’être utilisées dans un programme. Vous avez découvert ensuite les types proposés par Java pour les variables et de l’initialisation de ces dernières.

Une variable a trois propriétés :

• Un emplacement de mémoire pour stocker la valeur,

• Le type de données stockées dans l’emplacement mémoire, et

• Le nom utilisé pour désigner l’emplacement de la mémoire.

(26)

Évaluation

1. Que comprenez-vous par le terme variable?

2. Enumérer les trois propriétés d’une variable.

3. Par le biais d’un extrait de code, montrez comment une variable peut être déclarée.

4. Si vous avez le code source d’un programme Java et si vous souhaitez exécuter ce programme, vous aurez besoin d’un compilateur et un interpréteur

5. Que fait donc un compilateur Java et que fait un interpréteur Java ?

Activité 3 –Opérateurs et Structures de contrôles

Introduction

Cette activité vous permettra d’être en mesure de faire la distinction entre les différents types d’opérateurs proposés par le langage Java.

Détails de l’activité

Les opérateurs exécutent une fonction sur leurs opérandes pour produire une valeur.

Les opérateurs se comportent comme des fonctions prédéfinies dans le langage de programmation Java. Par exemple, l’expression A+B, qui est construite à partir des

opérandes A et B, et l’opérateur +, si A et B sont toutes deux de type int, A+B renvoie leur somme.

Un opérateur peut exiger un, deux ou trois opérandes. Un opérateur nécessitant un seul opérande est appelé un opérateur unaire, celui exigeant deux opérandes est appelé

opérateur binaire, et celui exigeant trois opérateurs est appelé opérateur ternaire. La plupart des opérateurs fonctionnent sur les expressions retournant des types de données primitifs.

Ici l’expression fait référence à des variables, des littéraux, la valeur d’un type primitif

renvoyée par une méthode, ou autres expressions formées par d’autres opérateurs. Seuls les opérateurs =, ==, != travaillent également avec les types de référence. Les opérateurs + et += travaillent également sur les objets de type String (chaine de caractères).

Il y a six sortes d’opérateurs : arithmétique, logique, binaire, affectation, comparaison, et opérateurs if-else ternaire.

Il est également possible de combiner des expressions formées par les opérateurs pour former des expressions composées avec plus d’un opérateur.

Dans ce cas, des règles de priorité sont appliquées pour déterminer l’ordre d’évaluation d’une expression composée de plus d’un opérateur. Par exemple, * et / sont évaluées avant + et -.

(27)

Types d’opérateurs

Un opérateur arithmétique peut exécuter des fonctions mathématiques sur les types de données numériques (nombres entiers et les nombres décimaux).

Tableau 1.2 : Les opérateurs arithmétiques

Opérateur Description

+ L’opérateur unaire + ; indique la valeur positive

- L’opérateur unaire -; rend négative une expression

+ Opérateur d’addition

- Opérateur de soustraction

* Opérateur de multiplication

/ Opérateur de Division

% Reste l’opérateur

Les opérateurs de comparaison ou relationnels comparent les valeurs de deux opérandes et produisent un résultat booléen.

Tableau 1.3 : Les opérateurs relationnels

Opérateur Description

== Egal à

!= Différent de

> Strictement supérieur à

>= Supérieur ou égal à

< Strictement inférieur à

<= Inférieur ou égal à

Les opérateurs logiques fonctionnent sur des valeurs booléennes pour effectuer les opérations booléennes.

(28)

Tableau 1.4 : Les opérateurs logiques

Opérateur Description

&& ET

|| OU

! Non

Tableau 1.5 : Valeur de l’opérateur logique &&

Expression 1 Expression 2 Expression 1 &&

Expression 2

Faux Faux Faux

Faux Vrai Faux

Vrai Faux Faux

Vrai Vrai Vrai

Tableau 1.6 : Valeur de l’opérateur logique ||

Expression 1 Expression 2 Expression 1 ||

Expression 2

Vrai Vrai Vrai

Vrai Faux Vrai

Faux Vrai Vrai

Faux Faux Faux

L’opérateur conditionnel ternaire permet d’effectuer des opérations conditionnelles et contient trois opérandes et sa syntaxe ressemble à ceci :

<exp1> ? <exp2> : <exp3>

(29)

Exemple

y=((x==3)?1:-1) équivaut à : if (x==3)

y=1;

else y=-1 ;

Tableau 1.7 : Les opérateurs d’incrémentation et de décrémentation

Opérateur Description

++ L’opérateur d’incrémentation;

incrémente une valeur de 1 -- L’opérateur de décrémentation;

diminue une valeur de 1

Les opérateurs binaires, effectuent des opérations bit par bit. Par exemple le complément (~), AND (&), OR (|), XOR (^), ou les opérateurs de décalage (gauche << ou droit >>) sont des opérateurs de cette catégorie. Les opérandes utilisant ces opérateurs doivent être des nombres entiers (& et | fonctionnent également sur des booléens, comme vous l’avez vu auparavant), et des opérations sont effectuées sur les représentations binaires des valeurs des opérandes.

Les opérateurs de décalage de bits, décalent le bit du premier opérande à gauche ou à droite par la distance spécifiée dans le second opérande, et remplit le vide avec des bits de 0 (sauf l’opérateur de décalage à droite >>).

Tableau 1.8 : Les opérateurs binaires

bit 1 bit 2 OU(|) ET(&) XOR(^)

0 0 0 0 0

1 0 1 0 1

0 1 1 0 1

1 1 1 1 0

Les opérateurs composés sont utilisés pour calculer le contenu d’une variable, et assigner le résultat à la même variable. Ils incluent :

Tableau 1.9 : Les opérateurs composés

(30)

Opérateur Description

+= Ajoute et assigner

-= Soustraire et assigner /= Diviser et assigner

*= Multiplier et assigner

%= Trouver le reste et assigner

Les instructions

Une instruction est l’unité de commande dans un programme. Une instruction se termine par un point- virgule (;). Une seule instruction peut couvrir plusieurs lignes de code, mais tout ce qui se trouve avant le Point-virgule est traité comme une seule instruction. Une instruction peut :

Déclarer une variable,

Créer un type de données de référence,

Affecter une valeur à une variable,

Incrémenter ou décrémenter une variable (à l’aide des opérateurs ++ ou --)

Appeler une méthode,

Terminer l’exécution d’une méthode (return valeur_retour).

Plusieurs instructions peuvent être encadrées par des accolades ({ }) pour former des instructions composées.

De telles instructions peuvent être utilisés lorsqu’une seule instruction est autorisée (par dans l’exécution des instructions de contrôle sera). L’exemple suivant illustre un simple bloc d’instructions.

{

int i = 0;

i += i+1;

String s = i.toString();

s = “2*2=” + s;

}

Pendant que le programme s’exécute, les instructions sont exécutées dans l’ordre dans lequel ils sont écrits.

Toutefois, il est possible de contrôler l’exécution des instructions selon certaines conditions à l’aide des structures de contrôle.

Les structures de contrôle

Il y existe trois principaux groupes de structures de contrôle : les boucles, les instructions conditionnelles, et les instructions de ramification. Comme les boucles et instructions conditionnelles sont elles aussi des

(31)

intérieur).

Les boucles ou instructions de répétition

Les boucles permettent l’exécution de la même instruction (ou série d’instructions) zéro fois ou plus selon une condition donnée. Il existe trois types d’instructions de répétition dans le langage de programmation Java : while, do-while, et for.

Instruction while

Une instruction while exécute une seule instruction ou bloc d’instructions (si vous voulez exécuter plusieurs instructions) tant que la condition donnée est vrai. L’expression de la condition doit renvoyer une valeur booléenne.

Un exemple d’utilisation de la boucle while est le suivant :

Figure 1.1 : Exemple avec la boucle while

Expliquons l’organigramme de la figure 1.1. Tout d’abord, la variable Compteur est initialisée à 1. Puis, elle est testée par l’instruction while pour voir si elle est inférieure ou égale à trois.

Si le test renvoie la valeur true, alors les instructions se trouvant dans le bloc suivant sont exécutées. La valeur courante de Compteur est affichée, et la variable Compteur est incrémentée.

(32)

Puis l’exécution remonte à l’instruction while et le test est effectué à nouveau.

Compteur est maintenant à deux, le test renvoie donc la valeur true et le bloc est exécuté de nouveau. La dernière instruction du bloc incrémente Compteur à trois, puis l’exécution remonte à l’instruction while.

La variable Compteur est maintenant égale à trois, le test renvoie donc la valeur true et le bloc est exécuté de nouveau. La dernière instruction du bloc incrémente Compteur à quatre, puis l’exécution remonte à l’instruction while.

Une fois le bloc exécuté trois fois, Compteur contient quatre. L’exécution remonte à l’instruction while, mais maintenant, le test renvoie la valeur false, et va à l’exécution de l’instruction après la boucle “while”. Ainsi, le programme se termine.

Syntaxe pour la boucle while en Java : while (condition) Instruction;

// ou

while (condition){

Instruction 1;

Instruction 2 ; ….

Instruction n ; }

Domaines d’application d’utilisation de machines qui utilisent des cycles :

• Vélo - vos jambes conduisent les pédales connectées à un engrenage qui tourne.

• Lecteur de CD - Le disque tourne (cycles) lorsque le laser se déplace sur lui.

• Téléviseur - les images sont affichées à l’écran l’une après l’autre tant que c’est allumé.

• Pompe à eau - souvent un piston se déplace de façon répétée à l’intérieur et à l‘extérieur d’un cylindre.

• Sèche-linge - tambour rotatif.

• Horloge - Affiche les mêmes heures chaque jour. Si l’horloge est mécanique, ses intérieurs sont les pignons et les ressorts avec de nombreux cycles de mécanique.

Si l’horloge est électronique les cycles sont toujours là, mais plus difficile à voir.

• Soleil et terre - tourne sans fin, la période dépend de l’un et de l’autre.

(33)

Instruction do-while

L’instruction do-while a une exécution similaire à celle du while. Elle exécute une instruction ou bloc d’instructions tant que la condition est vraie. Cependant, elle diffère de l’instruction while en ce sens que les instructions qui suivent le « do » sont exécutées au moins une fois, alors que les instruction(s) qui suivent le « while » peuvent ne pas être exécutées en fonction de la valeur de l’expression de la condition.

Le format de l’instruction do-while se présente comme suit : do instruction while(condition);

// ou do {

instruction 1;

...

instruction n;

} while (condition);

...

Exemple :

Supposons que vous voulez additionner les nombres entiers 1, 2, 3, . . . jusqu’à ce que la somme devienne plus grande que 1 000 000. On propose l’extrait de code suivant en utilisant la boucle do-while :

int somme = 0, nombre = 1;

do {

somme += nombre;

nombre++;

} while (somme<= 1000000);

Instruction for La boucle for est utilisée pour effectuer une itération sur une plage de valeurs. Le format de la boucle for est comme suit :

for(initialisation;condition;itération) instruction;

ou

for(initialisation;condition;itération){

(34)

Instruction 1;

Instruction n;

}

Ici, l’initialisation est une instruction qui est exécutée au début, une seule fois. Il peut contenir une déclaration de variable et une initialisation, ou il peut initialiser qu’une variable de contrôle.

L’itération est exécutée chaque fois que les instructions énumérées dans le bloc sont exécutées jusqu’à ce que l’expression de la condition soit fausse.

Les instructions conditionnelles

Les instructions conditionnelles permettent de décider lequel des instructions qui suivent est à exécuter selon l’expression de la condition. Il existe trois types d’instructions conditionnelles dans le langage de programmation Java : if, if-else et switch.

L’instruction if

Une instruction if est utilisée pour exécuter ou non une instruction ou bloc d’instructions. Si la condition est vraie, l’instruction(s) est exécutée, sinon, l’exécution continue à partir de la prochaine instruction qui vient après l’instruction if.

Voici la forme générale d’une instruction if:

if (condition) {

bloc d’instructions }

Un exemple d’utilisation de l’instruction if est également illustré par le diagramme suivant :

(35)

Figure 1.2 : Exemple avec l’instruction conditionnelle if else

Si (réponse.equals(“y”) ) , une seule direction est exécutée comme dans l’organigramme. Cette partie du test réponse.equals(“y”) renvoie true, si la chaîne référencée par réponse contient exactement le caractère unique “ y”.

Exemple 1 : Examinons le programme suivant, qui traite les notes obtenues dans un examen.

if( categorie== “sports”) {

notes = notes + bonus_ de_notes ; }

System.out.printIn(notes) ;

(36)

Le programme teste le type de catégorie de l’étudiant. Si l’étudiant appartient à la catégorie sports, il bénéficie d’un bonus additionnel sur ses notes avant leur affichage sinon aucun bonus n’est octroyé.

Exemple 2 :

Envisageons un cas de deux conditions d’essai.

L’une des conditions concerne le poids et l’autre, la hauteur. Ceci utilise une relation composée.

if ((poids < 50) && (hauteur > 170)) compteur = compteur +1;

Vous pouvez également utiliser deux instructions if : if(poids < 50)

if(hauteur >170)

compteur = compteur +1 ;

L’expression de la condition doit renvoyer une valeur booléenne.

L’instruction if-else

Une instruction if-else est utilisée pour permettre de savoir quelle instruction (ou bloc d’instructions) devrait être exécutée. Si la condition est vraie, la première instruction (ou bloc d’instructions) est exécutée, sinon la seconde instruction (ou bloc d’instructions) est exécutée.

La syntaxe de l’instruction if-else est comme suit : if (condition)

instruction 1;

else

instruction 2;

// ou

if (condition){

instruction 1_1;

...

instruction 1_n;

} else {

(37)

instruction 2_1;

...

instruction 2_n;

}

Le bloc d’instructions else peut également contenir d’autres instructions if : if (condition 1){

instruction 1_1;

instruction 1_n;

}

else if (condition 2) {

instruction 2_1;

instruction 2_n;

} else{

instruction 3_1;

instruction 3_n;

}

L’instruction switch

Une instruction switch peut être utilisée pour choisir une instruction ou bloc d’instructions à exécuter selon une valeur entière ou la valeur d’un caractère (relative à une variable ou une expression). Le format de l’instruction switch est comme suit :

(38)

L’expression retourne un entier ou une valeur de type caractère, et l’instruction à exécuter est déterminée en fonction de cette valeur. Par exemple, si la valeur de l’expression est égale à

<valeur2>, la section case <valeur2> est exécutée jusqu’à l’instruction break. L’instruction break met fin à l’exécution du bloc switch et l’exécution du programme continue avec l’instruction qui suit le bloc switch. Lorsque aucun des cas <valeur i> énumérés, ne correspond, la partie default est exécutée (s’il n’est pas requis, le bloc default peut être omis).

Il est possible de combiner plusieurs cas comme suit:

switch(expression){

case <valeur1>:

case <valeur2>:

case <valeur3>:

instruction 1;

break;

case <valeur4>:

case <valeur5>

instruction 2;

break;

case <valeurn>:

instruction n;

(39)

break;

default:

instruction n+1;

}

Dans ce cas, si expression est égale à l’une valeur indiquée dans <valeur1>, <valeur2> ou

<valeur3>, l’instruction 1 est exécutée.

Les structures de contrôle comme if, if...else, while, do …while et for, exigent chacune une condition afin de décider, comment poursuivre l’exécution du programme. De simples conditions sont donc exprimées à l’aide d’opérateurs relationnels (<, >, >=, <= et !=). Chaque opérateur relationnel teste une condition unique. Il peut être utile d’utiliser les opérateurs logiques pour émettre des conditions plus complexes en combinant de simples conditions avec les opérateurs logiques.

Pour s’assurer par exemple que deux conditions ou plusieurs sont à la fois vraies, on utilise l’opérateur conditionnel &&.

Exemple 1 :

if ((Sexe == “femelle”) && (age >= 65))

++femellesenior; //incrémente femellesenior de 1 si les deux conditions sont vraies

Exemple 2 :

if ((moyenneSemestre >= 90) || (examenFinal >= 90))

System.out.printIn(‘’ Le grade de l’étudiant est A”); // le message s’affichera si l’une ou l’autre des conditions est vraie.

Conclusion

Dans cette activité, vous avez étudié les opérateurs mis à la disposition du programmeur par le langage Java, ainsi que les structures de contrôle. Ces structures de contrôle permettent d’exécuter certaines instructions du programme et/ou un certain nombre de fois, selon une condition donnée.

(40)

Évaluation

1. Donner la signification de chacun des opérateurs Java suivants : A) ++

B) &&

C) !=

2. Ecrire une boucle do-while pour calculer la somme des 30 premiers entiers impairs positifs.

3. Réécrire les extraits de codes suivants, écrits avec la boucle while, en utilisant la boucle do-while.

A. int compteur = 0, somme = 0;

while (compteur < 10 ) { somme += compteur;

compteur++;

}

B. int compteur = 1, somme = 0;

while ( count <= 30 ) { somme += compteur;

compteur += 3;

}

RESUME DE L’UNITE

Cette unité a introduit aux apprenants les concepts liés aux instructions conditionnelles et aux instructions de répétition. Elle fournit également des exemples de la vie réelle où des instructions peuvent être appliquées et enfin elle fournit la syntaxe dans chacun des cas. L’unité met également l’accent sur les différents opérateurs mis à la disposition du programmeur par le langage Java.

Évaluation de l’unité Question

A-

Les opérateurs arithmétiques sont utilisés dans des expressions mathématiques de la même façon qu’ils sont utilisés dans l’algèbre. Le tableau suivant répertorie dans sa colonne gauche, les principaux opérateurs arithmétiques.

(41)

Supposons qu’une variable entière A contienne 10 et qu’une autre variable entière B contienne 20, complétez la 3ième colonne du tableau ci-dessous :

Opérateur Description Réponse

+ Ajoute de la valeur de chaque côté d’un opérateur

A+B

- Soustrait l’opérande à gauche de l’opérande à droite

A-B

* Multiplie les valeurs de chaque côté d’un opérateur

A*B

/ Divise l’opérande à gauche par l’opérande à droite

A/B

% Divise l’opérande à gauche par l’opérande à droite et renvoie le reste

A%B

++ Augmente la valeur de l’opérande par 1 A++

-- Diminue la valeur de l’opérande par 1 A--

B-

1. Quelle est la différence entre les opérateurs arithmétiques et les opérateurs relationnels.

2. Donner des exemples de la vie réelle différents de ceux cités ci-dessus où “while”, “if else”

et “switch” peuvent être utilisé.

Système de notation

Chaque bonne réponse donne 1 point.

Réponses A-

30, -10, 200, 0, 10, 21, 19 B-

1- Les opérateurs arithmétiques permettent d’effectuer des calculs mathématiques tandis que les opérateurs relationnels permettent d’effectuer des comparaisons

(42)

2- Exemples d’extraits de codes while

Exemple 1 : //trouver les diviseurs d’un nombre entier donné b int a=1 ;

while(a<=b){

if ((b%a)==0)

System.out.println(“Le nombre “+a+” divise “+b) ; a++ ;

} if else

Exemple 2 : // L’exemple dit si un nombre entier est pair ou impair if ((a%2)==0)

System.out.println(“Le nombre “+ a + “ est pair”) ; else

System.out.println(“Le nombre “+ a + “ n’est pas pair”) ;

switch

Exemple 3: // attribuer une certaine valeur à b selon la valeur de a switch(a){

case 100:

b=a+100 ; break ; case 200 : b=a+200 ; break ; default : b=0 ; break ; }

(43)

Lectures et Autres ressources

• Support de cours de M. Mounier de l’Université Paris Sud

• Développons en Java, Version 2.0, Jean Michel DOUDOUX, 2014

• Introduction to object oriented programming with java, 5th edition Wu, C.

Thomas, 2010

• Java 2: The Complete Reference, Fifth Edition, Herbert Schildt, Tata McGraw Hill

(44)

Unité 2. Classes, objets et membres

Introduction à l’unité

Java est un langage orienté objet et comme tout langage orienté objet, il doit pouvoir intégrer les concepts fondamentaux de l’approche orientée objet, à savoir :

• Polymorphisme

• Héritage

• Encapsulation

• Abstraction

• Classes

• Objets

• Instance

• Méthode

Dans cette unité, vous allez étudier les différents concepts relatifs aux classes et aux objets ainsi que les différents concepts liés à la programmation orientée objet tels que : l’encapsulation, l’abstraction, l’héritage et le polymorphisme.

Objectifs de l’unité

A la fin de cette unité le lecteur sera capable de :

• Définir une classe, un objet et les membres d’une classe

• Définir un constructeur

• Enumérer les trois étapes suivies, quand on crée un objet d’une classe

• Créer un programme mettant en application, les concepts précédemment cités.

. TERMES DES

Classe : Une classe est une collection d’objets de même type. Une fois que la classe est définie, un certain nombre d’objets peuvent être créés et appartiennent à cette classe. Une classe est un modèle qui définit les variables et les méthodes communes à tous les objets d’un certain type.

Membres de la classe: Un membre d’une classe est soit une donnée, soit une méthode.

Abstraction : Ce concept permet d’exprimer les données essentielles sans rentrer dans les détails

(45)

Encapsulation : C’est le mécanisme qui lie le code et les données dans leur manipulation, et les protège des mauvaises manipulations et utilisations abusives.

Polymorphisme : C’est le moyen de permettre à un même code d’être utilisé avec différents types, ce qui permet des implémentations plus abstraites et générales.

Héritage : Ce concept permet entre autres la réutilisabilité (décomposition du système en composants) et l’adaptabilité des objets grâce au polymorphisme.

Il favorise la hiérarchisation des classes.

Activités d’apprentissage

Activité 1 - Objets et classes en java

Présentation

De nombreux programmes sont écrits pour faire des choses qui concernent le monde réel. Il est intéressant d’avoir des objets logiciels qui sont semblables aux objets du monde réel. Cela rend le programme et ce qu’il fait plus facile à comprendre. Les objets logiciels ont une identité, un état et un comportement, tout comme les objets du monde réel.

Quand une application Java est exécutée, les objets sont créés et leurs méthodes sont invoquées. Pour créer un objet, vous devez le décrire. Une classe est une description d’un type d’objet. Un programmeur peut définir une classe en utilisant Java ou en utilisant des classes prédéfinies qui viennent avec des classes de librairies. Une classe est simplement un plan pour un objet donné. Elle ne crée pas par elle-même un objet. Lorsqu’un programmeur veut créer un objet, il utilise l’opérateur new avec le nom de la classe. La création d’un objet d’une classe est appelée instanciation.

Détails de l’activité Objets en Java

Voyons maintenant en détails ce que sont les objets. Si vous considérez le monde réel, vous pouvez trouver de nombreux objets qui vous entourent : Etudiants, Voitures, Chiens, Humains, etc. Tous ces objets ont un état et un comportement.

Si l’on considère un chien, son état est : son nom, la race, la couleur, et le comportement est : aboyer, remuer, courir.

Si vous comparez un objet logiciel et un objet du monde réel, ils ont des caractéristiques très similaires.

(46)

Les objets logiciels ont aussi un état et un comportement. L’état d’un objet logiciel est stocké dans les champs (attributs) et le comportement est illustré par des méthodes.

Ainsi, lors d’un développement de logiciels, les méthodes fonctionnent sur l’état interne d’un objet et la communication d’objet à objet se fait par des méthodes.

Classes en java

Une classe est une entité à partir de laquelle des objets individuels sont créés.

Un exemple de classe est donné ci-dessous:

public class chien{

String race;

int age;

String couleur;

void aboyer(){

}

void affamer(){

}

void dormir(){

} }

Une classe peut contenir les catégories des variables suivantes :

• Variables locales : Les variables définies au sein d’une méthode, d’un constructeur ou d’un bloc d’instructions s’appellent variables locales. La portée d’une variable locale est le bloc ou la méthode dans lequel elle est définie.

• Variables d’instance : Les variables d’instance sont les variables déclarées au sein d’une classe mais à l’extérieur de toute méthode ou constructeur. Ces variables sont créées lorsque la classe est référencée et sont utilisables par toutes les méthodes et tous les constructeurs de la classe dans laquelle elles sont définies.

• Variables de classe : Les variables de classe sont les variables déclarées au sein d’une classe et à l’extérieur de toute méthode ou constructeur de la classe et qui sont précédées par le mot clé static. Ces données membres ou variables existent en un seul exemplaire quelque soit le nombre d’objets instances d’une même classe. On peut également créer des méthodes statiques.

Les méthodes sont les comportements qu’on peut appliquer sur les objets de la classe. Les attributs sont les variables de classe ou d’instance.

Références

Documents relatifs

Si l'on appel notre méthode publique Animaux() depuis une instance de $zoo, cela va retourner de manière sécurisée notre tableau d'animaux stocké dans notre classe, et personne ne

Hors cette étape n'est clairement pas du ressort d'un objet : seule la classe possède suffisamment d'informations pour la mener à bien : la création d'un objet est donc une méthode

Les exemples de code sont écrits en C#, mais sont facilement transposables à d'autres langages orientés objets comme

une commande est créée pour un client et un catalogue donnés, on peut ajouter des articles à une commande, accéder à la liste des articles commandés ainsi que prix total des

Cette méthode retourne vrai s’il existe une l’intersection ainsi que le point d’intersection faux, dans le cas contraire..  Une classe Droite constituée d’un Point et

L’interpréteur java permet d’exécuter une application écrite en langage java (autre qu’une applet), plus spécifiquement un fichier ClassName.class (i.e le java bytecodes). Par

Une interface est introduite par le mot clé « interface », et se comporte comme une classe dont toutes les méthodes sont abstract et dont tous les attributs sont final. Les mots

Additionner deux vecteurs donnés ; on écrira pour cela une méthode statique nommée aussi addition (en utilisant ainsi la possibilité de la surcharge) qui recevra en