Cours Programmation Objet Avec TD Corrigés [PDF]

  • 0 0 0
  • Gefällt Ihnen dieses papier und der download? Sie können Ihre eigene PDF-Datei in wenigen Minuten kostenlos online veröffentlichen! Anmelden
Datei wird geladen, bitte warten...
Zitiervorschau

REPUBLIQUE TUNISIENNE MINISTERE DE L’ENSEIGNEMENT SUPERIEUR ET DE LA RECHERCHE SCIENTIFIQUES ET TECHNOLOGIQUES

‫المعهد العالي للدراسات التكنولوجية‬

Institut Supérieur des Etudes Technologiques de Kasserine

‫بالقصرين‬ Département Technologies de l’Informatique

SUPPORT DE COURS Avec exercices corrigés

Programmation Orientée Objet

Elaboré par :

Mme. Laila NAKKAII Enseignante Technologue à l‟ISET de Kasserine

Année Universitaire : 2015/2016 0

SUPPORT DU COURS AVEC EXERCICES CORRIGEES II PROGRAMMATION ORINTEE OBJET

II ISET KASSERINE

II LAILA NAKKAII

Table des matières Avant-propos ........................................................................................................................................... 5 Chapitre 1: Introduction à la Programmation Objet en Java ................................................................. 6 Introduction............................................................................................................................................. 6 1.

Présentation de Java ........................................................................................................................ 6

2.

Interprétation d‟un programme Java ............................................................................................... 7

3.

Caractéristiques et avantages de Java ............................................................................................. 7

4.

Les techniques de base de la programmation en Java ..................................................................... 9

5.

Le concept de classe ........................................................................................................................ 9

Conclusion ............................................................................................................................................. 10 Chapitre 2: Types et instructions de base du langage JAVA ................................................................ 11 Introduction ........................................................................................................................................... 11 1.

Types simples ................................................................................................................................ 11

2.

Enoncés élémentaires .................................................................................................................... 12

3.

Flot de contrôle .............................................................................................................................. 12 1.1

Bloc d'instructions ................................................................................................................. 12

1.2

Instruction conditionnelle ...................................................................................................... 13

1.3

Instructions itératives ............................................................................................................ 13

2.

Affichage de résultats sur la console ............................................................................................. 14

3.

Les tableaux................................................................................................................................... 15

4.

3.1

La déclaration des tableaux ................................................................................................... 15

3.2

L'initialisation explicite d'un tableau ..................................................................................... 16

3.3

Le parcours d'un tableau ........................................................................................................ 16

Les conversions de types ............................................................................................................... 17 4.1

5.

La conversion d'un entier int en chaîne de caractère String .................................................. 18

La manipulation des chaînes de caractères .................................................................................... 18 5.1

Les caractères spéciaux dans les chaines............................................................................... 19

Page 1

SUPPORT DU COURS AVEC EXERCICES CORRIGEES II PROGRAMMATION ORINTEE OBJET

II ISET KASSERINE

II LAILA NAKKAII

5.2

L'addition de chaines ............................................................................................................. 20

5.3

La comparaison de deux chaines ........................................................................................... 20

5.4

La détermination de la longueur d'une chaine ....................................................................... 21

5.5

La modification de la casse d'une chaine .............................................................................. 21

Conclusion ............................................................................................................................................. 22 Chapitre 3: Eléments de base de la programmation objet avec le langage JAVA ............................... 23 Introduction ........................................................................................................................................... 23 1.

2.

3.

Notion d‟objet................................................................................................................................ 23 1.1

Définition............................................................................................................................... 23

1.2

Objets, tableaux et types de base ........................................................................................... 24

Notion de classe............................................................................................................................. 25 2.1

Définition d‟une classe .......................................................................................................... 25

2.2

Déclaration des attributs ........................................................................................................ 25

2.3

Définition des méthodes ........................................................................................................ 25

Création d‟objet ............................................................................................................................. 27

Conclusion ............................................................................................................................................. 29 Chapitre 4: Constructeur et Destructeur de classe ............................................................................... 30 Introduction ........................................................................................................................................... 30 1.

2.

3.

Constructeur de classe ................................................................................................................... 30 1.1

Définition............................................................................................................................... 30

1.2

Utilisation des constructeurs.................................................................................................. 30

Utilisation d‟un objet ..................................................................................................................... 33 2.1

Accès à un attribut ................................................................................................................. 33

2.2

Invocation d‟une méthode ..................................................................................................... 34

2.3

Surcharge des méthodes ........................................................................................................ 35

Attributs et méthodes de classe ..................................................................................................... 37 3.1

Attribut de classe ................................................................................................................... 37

3.2

Méthode de classe ................................................................................................................. 37

Page 2

SUPPORT DU COURS AVEC EXERCICES CORRIGEES II PROGRAMMATION ORINTEE OBJET

4.

5.

II ISET KASSERINE

II LAILA NAKKAII

Les références ................................................................................................................................ 38 4.1

L‟autoréférence „‟this‟‟ ......................................................................................................... 38

4.2

La référence „‟null „‟ ............................................................................................................. 40

Destruction d‟un objet ................................................................................................................... 40

Conclusion ............................................................................................................................................. 41 Chapitre 5: Mode de passage des paramètres, Packages et Modificateurs de visibilités ..................... 43 Introduction ........................................................................................................................................... 43 1.

Mode de passage des paramètres ................................................................................................... 43

2.

Classes internes ............................................................................................................................. 45

3.

Les paquetages .............................................................................................................................. 46

4.

Bibliothèque .................................................................................................................................. 47

5.

Les modificateurs de visibilité....................................................................................................... 48

Conclusion ............................................................................................................................................. 49 Chapitre 6: Héritage et Polymorphisme avec Java .............................................................................. 50 Introduction ........................................................................................................................................... 50 1.

Constructeurs et héritage ............................................................................................................... 51 1.1

Constructeurs ......................................................................................................................... 51

1.2

Le mot réservé final ............................................................................................................... 54

1.3

Opérateur instanceof.............................................................................................................. 54

2.

Redéfinition de méthodes .............................................................................................................. 55

3.

Polymorphisme: Recherche dynamique des méthodes ................................................................. 55

4.

Classe abstraite .............................................................................................................................. 57

5.

Interface ......................................................................................................................................... 57

Conclusion ............................................................................................................................................. 61 Chapitre 7: Gestion des exceptions....................................................................................................... 62 Introduction ........................................................................................................................................... 62 1.

Utilisation ...................................................................................................................................... 62

2.

Transmission d‟information au gestionnaire d‟exception ............................................................. 64

Page 3

SUPPORT DU COURS AVEC EXERCICES CORRIGEES II PROGRAMMATION ORINTEE OBJET

II ISET KASSERINE

II LAILA NAKKAII

3.

Poursuite de l‟exécution ................................................................................................................ 65

4.

Choix du gestionnaire d‟exception ................................................................................................ 66

5.

Quelques exceptions standards ..................................................................................................... 69

Conclusion ............................................................................................................................................. 71 Liste des Travaux Dirigées ..................................................................................................................... 72 TD1 : Syntaxe et Eléments de base du langage Java ............................................................................. 73 Correction TD1 : Syntaxe et Eléments de base du langage Java........................................................... 76 TD2 : Notion d'Objet, Classe et Constructeur ....................................................................................... 80 Correction TD2 : Notion d'Objet, Classe et Constructeur ..................................................................... 82 TD3 : Objet, Classe, Attribut de classe .................................................................................................. 85 Correction TD3 : Objet, Classe, Attribut de classe ................................................................................. 89 TD4 : Modificateurs de visibilité ............................................................................................................ 93 Correction TD4 : Modificateurs de visibilité .......................................................................................... 95 TD5 : Héritage et polymorphisme ......................................................................................................... 96 Correction TD5 : Héritage et polymorphisme ..................................................................................... 100 TD6 : Exception .................................................................................................................................... 106 Correction TD6 : Exception .................................................................................................................. 108 Bibliographie ....................................................................................................................................... 113

Page 4

Avant-propos

Cet ouvrage « PROGRAMMATION OBJET » est fondé sur les notes d‟un cours dispensé pendant plusieurs années à l‟ISET de Kasserine. Ce support de cours permet d‟expliquer en termes simples et à travers de multiples exemples et exercices corrigés comment apprendre à programmer en orientée objet et connaitre la spécificité du langage java. Les chapitres du livre sont tous structurées de la même manière. Chaque chapitre débute par un petit encart indiquant les objectifs à attendre suite à la lecture du dit chapitre ainsi qu‟un descriptif succinct du contenu du chapitre. Cet ouvrage a pour objectifs :  Traiter les notions fondamentales de l‟orienté objet et traite les caractéristiques fondamentales du langage java.  Maitriser éléments de la programmation orientée java en langage java : objet, classe, attributs et méthodes.  Comprendre la notion du constructeur et de ses utilisations.  Connaitre les types et les instructions de base du langage java.  Traiter le mode de passage des paramètres, les packages et les modificateurs de visibilités.  Comprendre le mécanisme d‟héritage et la notion du polymorphisme.  Traiter la notion d‟exception. L‟information contenue dans ce cours a été choisie et organisée de la meilleure façon possible afin d‟être exhaustive tout en étant également assimilable par l‟étudiant.

Laila NAKKAII

SUPPORT DU COURS AVEC EXERCICES CORRIGEES II PROGRAMMATION ORINTEE OBJET

II ISET KASSERINE

II LAILA NAKKAII

Chapitre 1: Introduction à la Programmation Objet en Java Objectifs  

Présenter les caractéristiques du langage Java. Définir les techniques de base de la programmation Java.

Introduction La programmation orientée objet existe depuis 1967, cependant, elle n‟est vraiment devenue un des paradigmes de la programmation qu‟au milieu des années 1980. Au contraire de la programmation structurée traditionnelle, la programmation orientée objet met dans une même et unique structure les données et les opérations qui leurs sont associées. En programmation traditionnelle, les données et les opérations sur les données sont séparées, les structures de données sont donc envoyées aux procédures et fonctions qui les utilisent. La programmation orientée objet résout de nombreux problèmes inhérents à cette conception en mettant dans une même entité les attributs et les opérations (encapsulation des données et des traitements). Cela est plus proche du monde réel, dans lequel tous les objets disposent d‟attributs auxquels sont associés des activités. Java est un pur langage orienté objet, ce qui signifie que le niveau le plus externe de la structure des données est l‟objet. Il n‟y a pas de constante, de variable ni de fonction indépendante en Java. On accède à toute chose via les classes et les objets. C‟est un des aspects les plus agréables de Java. D‟autres langages orientés objets plus hybrides ont conservé des aspects des langages structurés en plus de leurs extensions objet. Par exemple, C++ et Pascal Objet sont des langages orientés objet, mais permettent toujours d‟écrire des programmes structurés, ce qui diminue l‟efficacité des extensions orientées objet.

1. Présentation de Java Java est un environnement de programmation orientée objets adapté à la distribution d‟applications sur Internet et s‟intégrant au Web. Vers la fin de 1995, le langage de programmation Java (Développé par Sun Microsystems) surgit sur la grande scène d'Internet et obtient immédiatement un énorme succès. Il s'agit d'un langage de conception très performant qui a été adopté par la majorité des fournisseurs. Il se compose de 4 éléments : 6

SUPPORT DU COURS AVEC EXERCICES CORRIGEES II PROGRAMMATION ORINTEE OBJET

II ISET KASSERINE

II LAILA NAKKAII



un langage de programmation



une machine virtuelle (JVM)



Un ensemble de classes standards réparties dans différentes API (Application Programming Interface) : Cette API fournit aussi bien des éléments de base de langage java que des fonctionnalités plus complexes comme la programmation d‟interface graphique



Un ensemble d‟outils (jdb, javadoc, ...)

2. Interprétation d’un programme Java Tout d‟abord, Java simplifie le processus de développement; quelle que soit la machine sur laquelle le codage est réalisé, le compilateur fournit le même code. Ensuite, quel que soit le système utilisé par les utilisateurs, cet unique code est directement opérationnel. En effet, la compilation d‟une source Java produit du pseudo-code Java qui sera exécuté par tout interpréteur Java sans aucune modification ou recompilation. Cet "interpréteur" est la "machine virtuelle Java". De plus en plus, cette machine virtuelle utilise un compilateur JIT (“Just In Time”) qui transforme, au moment de l‟exécution, le pseudo-code en code natif (code machine pour un type d'ordinateur précis) afin d‟obtenir la vitesse d‟exécution maximale. Pour des applications l‟API Java apporte un ensemble très riche de classes répondant à de nombreux besoins et pouvant être étendue, cette unique API simplifie la création et le déploiement des applications, en effet cette application s‟exécutera sur tout système en utilisant l‟aspect visuel de ce dernier.

3. Caractéristiques et avantages de Java Les caractéristiques fondamentales de Java se résument selon les 13 termes suivants : Simple : Java a été conçu de façon relativement proche du langage C++. De nombreuses fonctions compliquées, mal comprises, rarement utilisées de C++ (pointeur, surcharge dynamique, héritage multiple,...), qui semblent apporter plus d'inconvénients que d'avantages, ont été supprimées de Java. Fiable : Java a été conçu pour que les programmes qui l'utilisent soient fiables sous différents aspects. Sa conception encourage le programmeur à traquer préventivement les éventuels problèmes, à lancer des vérifications dynamiques en cours d'exécution et à éliminer les situations génératrices d'erreurs

7

SUPPORT DU COURS AVEC EXERCICES CORRIGEES II PROGRAMMATION ORINTEE OBJET

II ISET KASSERINE

II LAILA NAKKAII

Orienté objet : Java se concentre sur les objets et sur les interfaces avec ces objets. Java offre de nombreuses classes permettant de définir et de manipuler les objets. Distribué : Java possède une importante bibliothèque de routines permettant de gérer les protocoles TCP/IP tels que HTTP et FTP. Les applications Java peuvent charger et accéder à des pages sur Internet via des URL avec la même facilité qu'elles accèdent à un fichier local sur le système. Sécurité : Java a été conçu pour être exploité dans des environnements serveur et distribués. Dans ce but, la sécurité n‟a pas été négligée. Java permet la construction de systèmes inaltérables et sans virus. Sûr : La sécurité fait partie intégrante du système d'exécution et du compilateur. Un programme Java planté ne menace pas le système d'exploitation. Il ne peut y avoir

d'accès direct à la mémoire.

L'accès au disque dur est réglementé dans une applet. Les programmes fonctionnant sur le Web sont soumis aux restrictions suivantes dans la version 1.0 de Java : 

Aucun programme ne peut ouvrir, lire, écrire ou effacer un fichier sur le système de l'utilisateur



Aucun programme ne peut lancer un autre programme sur le système de l'utilisateur



Toute fenêtre créée par le programme est clairement identifiée comme fenêtre Java, ce qui interdit par exemple la création d'une fausse fenêtre demandant un mot de passe



Les programmes ne peuvent pas se connecter à d'autres sites Web que celui dont ils proviennent.

Architecture neutre : Le compilateur génère un format de fichier objet dont l‟architecture est neutre. Le code compilé est exécutable sur de nombreux processeurs, à partir du moment où le système d‟exécution de Java est présent. Portable : A la différence du C/C++, on ne trouve pas les aspects de dépendance de la mise en œuvre dans la spécification. Les tailles des types de données primaires sont spécifiées, ainsi que le comportement arithmétique qui leur est applicable. Interprété : La source est compilé en pseudo code puis exécuté par un interpréteur Java (la Machine Virtuelle Java (JVM)). Indépendant de toute plateforme : L‟interpréteur Java peut exécuter le bytecode directement sur n‟importe quelle machine sur laquelle il a été porté. Il n'y a pas de compilation spécifique pour chaque plate forme.

8

SUPPORT DU COURS AVEC EXERCICES CORRIGEES II PROGRAMMATION ORINTEE OBJET

II ISET KASSERINE

II LAILA NAKKAII

Performances élevées : En général, les performances des bytecodes interprétés sont tout à fait suffisantes, il existe toutefois des situations dans lesquelles des performances plus élevées sont nécessaires. Multithread : Il permet l'utilisation de threads qui sont des unités d'exécution isolées. La JVM ellemême utilise plusieurs threads. Ce qui permet des traitements multitâches dans une même application. Les avantages du multithread sont une meilleure inter-réactivité et un meilleur comportement en temps réel. Dynamique : Java a été conçu pour s‟adapter à un environnement qui évolue, et pousse le concept orienté objet à son optimum en permettant l‟édition des liens entre modules objets dynamiquement au moment de l‟exécution, en particulier dans le cas ou une application s‟appuie sur une librairie de classes (une librairie de composants logiciels).

4. Les techniques de base de la programmation en Java On peut résumer les techniques de base de la programmation en java par les points suivantes : 

N'importe quel éditeur de texte peut être utilisé pour éditer un fichier source Java



Il est nécessaire de compiler la source pour le transformer en J-code ou byte-code Java qui sera lui exécuté par la machine virtuelle



Il est préférable de définir une classe par fichier. Le nom de la classe publique et le fichier qui la contient doivent être identiques (il faut respecter la casse)



Pour être compilé, le programme doit être enregistré au format de caractères Unicode : une conversion automatique est faite par le JDK si nécessaire.

5. Le concept de classe Une classe est le support de l'encapsulation : c'est un ensemble de données et de fonctions regroupées dans une même entité. Une classe est une description abstraite d'un objet. Les fonctions qui opèrent sur les données sont appelées des méthodes. Instancier une classe consiste à créer un objet sur son modèle. Entre classe et objet il y a, en quelque sorte, le même rapport qu'entre type et variable. Dans Java, tout appartient à une classe sauf les variables de types primitifs (int, float...). Pour accéder à une classe il faut en déclarer une instance de cette classe (ou un objet). Une classe comporte sa déclaration, des variables et la définition de ses méthodes. Une classe se compose de deux parties : un en-tête et un corps.

9

SUPPORT DU COURS AVEC EXERCICES CORRIGEES II PROGRAMMATION ORINTEE OBJET

II ISET KASSERINE

II LAILA NAKKAII

Le corps peut être divisé en deux sections : la déclaration des données et des constantes et la définition des méthodes. Les méthodes et les données sont pourvues d'attributs de visibilité qui gère leur accessibilité par les composants hors de la classe.

Exercice Prenez comme exemple une de vos activités sportives, culturelles, artistiques ou sociales, et faites une liste des objets impliqués dans cette activité. Dans un premier temps, créez ces objets sous formes de couples attribut/ valeur. Dans un deuxième temps, réfléchissez au lien d‟interaction existant entre ces objets ainsi qu‟à la manière dont ils sont capables de s‟influencer mutuellement. Dans un troisième temps, identifiez pour chaque objet une possible classe le caractérisant.

Solution Les arts de l‟expression : musique, chant, voix, écriture, lecture, mime -Les activités : Jouer, chanter, danser, écrire… -Séance –Entraînement-Répétition, durée…. -Appareil musicale-Type, catégorie, prix, son….,

Conclusion Dans ce premier chapitre on a défini le principe de la programmation orientée objet et on a introduit les caractéristique de base du langage java, un langage orienté objet utilisé dans ce cours.

10

SUPPORT DU COURS AVEC EXERCICES CORRIGEES II PROGRAMMATION ORINTEE OBJET

II ISET KASSERINE

II LAILA NAKKAII

Chapitre 2: Types et instructions de base du langage JAVA Objectifs  

Savoir déclarer et manipuler les différents types en Java. Maitriser les flots de contrôle.

Introduction Un programme en langage JAVA consiste en une série d'énoncés (statements) organisés en blocs. Ces énoncés définissent des données et des opérations sur ces données. La fin de chaque énoncé est marquée par un « ;. » Ce caractère indique à l'interpréteur JAVA que l'énoncé est complet, qu'il doit être exécuté avant de passer à l'énoncé suivant. L'ordre dans lequel l'interpréteur JAVA exécute les énoncés s'appelle le flôt d'exécution ou flôt de contrôle.

1. Types simples Type

désignation

opérations

byte entiers sur 8 bits Entiers

short entiers sur 16 bits

unaire : +, -

int entiers sur 32 bits

binaire : +, -, *, / %

long entiers sur 64 bits Réels Caractère

float réels simple précision (32 bits)

unaire : +, -

double réels double précision (64bits)

binaire : +, -, *, /

Char && et logique

Booléen

|| ou logique

Boolean

! négation Relation d'ordre : elle est définie sur tous les types simples.

Egal

différent

==

!=

strictement

supérieur

strictement

inférieur

supérieur

ou égal

inférieur

ou égal

>

>=