1.Programmation en Java : notions de base, orienté objet et héritage



Documents pareils
Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Programmer en JAVA. par Tama

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

INITIATION AU LANGAGE JAVA

Langage Java. Classe de première SI

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Généralités sur le Langage Java et éléments syntaxiques.

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Héritage presque multiple en Java (1/2)

Programmation par les Objets en Java

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Polymorphisme, la classe Object, les package et la visibilité en Java... 1

Une introduction à Java

TD/TP PAC - Programmation n 3

Chapitre 10. Les interfaces Comparable et Comparator 1

as Architecture des Systèmes d Information

Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2

ALGORITHMIQUE ET PROGRAMMATION ORIENTEE OBJET

Initiation à JAVA et à la programmation objet.

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

TP1 : Initiation à Java et Eclipse

Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T>

Projet de programmation (IK3) : TP n 1 Correction

PROGRAMMATION PAR OBJETS

JAVA 8. JAVA 8 - Les fondamentaux du langage. Les fondamentaux du langage Java. Avec exercices pratiques et corrigés JAVA 8 29,90.

Java 7 Les fondamentaux du langage Java

P r ob lé m a t iq u e d e la g é n é r icit é. Pr in cip e d e la g é n é r icit é e n Ja v a ( 1 /3 )

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

Cours 1: Java et les objets

Plan du cours. Historique du langage Nouveautés de Java 7

Support de cours et TD Programmation Orientée Objet

Programmation en Java IUT GEII (MC-II1) 1

Info0604 Programmation multi-threadée. Cours 5. Programmation multi-threadée en Java

Solutions du chapitre 4

RMI le langage Java XII-1 JMF

Premiers Pas en Programmation Objet : les Classes et les Objets

Interfaces graphiques avec l API Swing

UML. Diagrammes de classes (suite) Delphine Longuet.

Java Licence professionnelle CISII,

TD/TP PAC - Programmation n 3

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Utilisation d objets : String et ArrayList

CPR Informatique. (poste 3159 ou 3164) Septembre 2002

Java Licence Professionnelle CISII,

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Tp 1 correction. Structures de données (IF2)

Bases Java - Eclipse / Netbeans

Introduction au langage Java

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Chapitre 2. Classes et objets

Cours de Java. Sciences-U Lyon. Java - Introduction Java - Fondamentaux Java Avancé.

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

ACTIVITÉ DE PROGRAMMATION

Java Licence Professionnelle CISII,

2 e édition JAVA 5 et 6. Jérôme Bougeault. TSoft et Groupe Eyrolles, 2003, 2008, ISBN :

Initiation à la programmation orientée-objet avec le langage Java

Package Java.util Classe générique

Cours 14 Les fichiers

Apprendre Java en 154 minutes

Projet de Veille Technologique

4. Groupement d objets

Chapitre VI- La validation de la composition.

Auto-évaluation Programmation en Java

Aide mémoire UML & Java 1ère partie : Introduction. marc.lemaire@u-cergy.fr

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

Initiation à la programmation en Python

Objets et Programmation. origine des langages orientés-objet

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

TP3. Mail. Attention aux fausses manoeuvres lors de ce TP vous pouvez endommager votre mail sur ouindose.

Programmation Orientée Objet application au langage Java Version Novembre 2007

INF2015 Développement de logiciels dans un environnement Agile. Examen intra 20 février :30 à 20:30

TD3: tableaux avancées, première classe et chaînes

Java - la plateforme

Programmation Orientée Objet en C#

JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.

I. Introduction aux fonctions : les fonctions standards

La plate-forme DIMA. Master 1 IMA COLI23 - Université de La Rochelle

Apprendre la Programmation Orientée Objet avec le langage Java (avec exercices pratiques et corrigés)

Diagramme de classes

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml

Polycopié Cours Programmation Orientée Objet sous Java Programme : Filière SMI S5

Programmation Objet Java Correction

Remote Method Invocation (RMI)

2 Grad Info Soir Langage C++ Juin Projet BANQUE

1. Langage de programmation Java

Lambda! Rémi Forax Univ Paris-Est Marne-la-Vallée

TP, première séquence d exercices.

Traduction des Langages : Le Compilateur Micro Java

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

La carte à puce. Jean-Philippe Babau

Introduction à l héritage en C++

GOL502 Industries de services

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Développement Logiciel

Annexe : La Programmation Informatique

Classe Interne, Anonyme & Enumération

Transcription:

Travaux pratique de Méthodologie et Langage de Programmation,, TP1 1 1.Programmation en Java : notions de base, orienté objet et héritage Cette séance de TP a pour objectif d'introduire à la programmation en Java et de présenter les notions suivantes : compilation avec Java, notion de package, types et structures de données, utilisation des objets en Java et héritage. 1.1.Notions a) Les objets La programmation en Java se base sur la notion d'objet. Par exemple, une application gérant un terminal pourrait être décrite par une classe et déclarée de la manière suivante : public class Terminal public static void main( String args[] ) Retenons déjà que la définition d'une classe publique doit impérativement être enregistrée dans un fichier du même nom que la classe suivi de l'extension.java (ici, Terminal.java ; attention au respect de la casse : terminal.java n'est pas valable!). Comme en C/C++, on retrouve la méthode main qui sera appelée en premier lieu lors de l'exécution du code ; ici, cette méthode ne renvoie rien, ce qui est spécifié par le mot clé void. Les variables et méthodes peuvent être de type public (toutes les classes y ont accès) ou private (seule la classe propriétaire y a accès). Le mot clé static peut être utilisé pour déclarer des variables de classe (qui seront alors partagées par toutes les instances de la classe) ou des méthodes de classe. De telles méthodes spécifient que l'action réalisée n'est pas liée à une instance particulière de cette classe. b)les packages En Java, l'objectif de réutilisabilité du code conduit à une organisation des classes en packages. Chaque package regroupe de manière cohérente un certain nombre de classes. En vue de réutiliser une classe prédéfinie, on peut importer des packages en début de code. Par défaut, un package de base (java.lang) est importé lors de chaque compilation même si le programmeur ne le spécifie pas. Les classes sont regroupées en deux ensembles : les packages de noyau (commençant par java.*) et les packages d'extensions (commençant par javax.*). Par exemple, pour importer les sous packages du package swing, nous ajouterons en début de code la ligne suivante : import javax.swing.*; Remarque: le compilateur n'importe que les packages utiles à l'exécution du code et non pas l'intégralité des packages mentionnés. La grande quantité d'objets et de méthodes déjà définis dans l'api Java oblige le programmeur a faire usage de la documentation. Cette documentation peut être consultée sur Internet à l'adresse : http://java.sun.com/javase/6/docs/api/. Pour ces séances de TP, nous utiliserons l'ide Open Source et gratuit Netbeans disponible au téléchargement à l'adresse http://www.netbeans.org.

Travaux pratique de Méthodologie et Langage de Programmation,, TP1 2 c) Constructeurs Lors de la création d'un objet, une méthode particulière nommée «constructeur» est appelée. Ce constructeur doit porter le même nom que l'objet et ne renvoyer aucun type de donnée. Cette méthode permet d'initialiser l'objet et de réaliser un certain nombre d'opérations qui lui sont nécessaires. Par exemple pour la classe Terminal: public class Terminal public Terminal() // CONSTRUCTEUR d)l'interaction avec l'utilisateur Le package java.lang comprend une classe nommée System permettant, entre autre chose, la sortie d'informations vers la console. Cette classe peut s'utiliser de la manière suivante : System.out.println("Impression d'une ligne dans la console"); La possibilité d'utiliser des boîtes de dialogue en vue d'interagir avec l'utilisateur est fournie par la classe JOptionPane du package javax.swing. Par exemple, voici deux cas d'utilisation de cette classe : String nom = JOptionPane.showInputDialog("Veuillez entrer votre nom"); JOptionPane.showMessageDialog(null,"Bonjour "+nom); Pour plus d'informations concernant cette classe, consultez la documentation en ligne. Lorsque le programme demande l'affichage d'un objet (par exemple, dans une boîte de dialogue ou dans le terminal), la machine virtuelle fait automatiquement appel à la fonction tostring() de l'objet. Cette méthode ne prend aucun paramètre et retourne un String indiquant comment l'objet doit être représenté sous forme de texte. e) Héritage La notion d'héritage permet la création de nouvelles classes à partir d'anciennes (qui seront alors appelées superclasses), en vue d'y ajouter de nouvelles fonctionnalités ou de redéfinir des fonctionnalités existantes. Un héritage peut être spécifié par le mot clé extends de la manière suivante : public class SousClasse extends SuperClasse Remarque : Java n'autorise pas l'héritage multiple, contrairement à C++. L'utilisation des interfaces (qui seront vues ultérieurement) permet de ne pas être limité par cette contrainte. Les membres privés de la superclasse ne sont pas accessibles par les sous classes. Dès lors, en plus de private et de public, on retrouvera un nouveau mot clé (protected) qui permettra d'indiquer qu'un membre est effectivement accessible par les sous classes de celle à laquelle il appartient. Lorsqu'une méthode est redéfinie dans une sous classe, il est malgré tout possible de faire appel à la méthode originale de la superclasse à l'aide du mot clé super. Par exemple, super.tostring() permettra de faire appel à la méthode tostring de la superclasse.

Travaux pratique de Méthodologie et Langage de Programmation,, TP1 3 1.2.Exercices a) Exercice 1 Définir une classe Personne à partir de laquelle nous pourrons instancier des objets regroupant les informations suivantes : le nom ; l'âge. Le constructeur par défaut ainsi qu'un constructeur permettant l'initialisation des 2 attributs seront définis. De plus, il serait utile de prévoir des méthodes pour accéder et modifier la valeur des attributs de Personne. La classe servira à la création de 3 personnes (par exemple p1, p2 et p3) pour lesquelles les attributs sont mentionnés directement dans le code ; ceux ci seront ensuite affichés dans la console. Conseils : séparer le code en deux parties : d'une part la définition de la classe Personne et d'autre part le test de cette classe (par exemple dans une classe publique TestPersonne) ; redéfinir la fonction tostring() (existante dans toute classe) et permettant de renvoyer l'information utile d'un objet de type Personne (c'est-à-dire le nom et l'âge). b)exercice 2 Modifier l'exercice 1 pour que l'entrée des données se fasse à l'exécution en utilisant des boîtes de dialogue. De même, l'affichage des attributs ne se fera plus dans la console mais plutôt dans des boîtes de dialogue. Cette nouvelle manière d'entrer et d'afficher les attributs de l'objet se fera au sein de deux nouvelles méthodes. De plus, les personnes créées seront regroupées dans un tableau de taille définie (voir annexes) ce qui permet d'afficher ces personnes à l'aide d'une boucle. Remarque : pour convertir un String en entier, utiliser la fonction Integer.parseInt : c) Exercice 3 int entier = Integer.parseInt(entierStr); Une variable de classe ainsi qu'une méthode de classe seront ajoutées à l'exercice 2 au sein de la classe Personne : une variable mémorisant le nombre de personnes créées ; d)exercice 4 une méthode calculant l'âge moyen des personnes créées. À partir de l'exercice 3, établir une sous classe nommée Etudiant qui permettra de gérer en plus du nom et de l'âge, deux entrées spécifiant l'année et la spécialité de l'étudiant. Deux constructeurs seront adjoints à cette nouvelle classe : l'un ne prenant aucun paramètre et l'autre prenant le nom, l'âge, l'année et la spécialité comme paramètres. Une redéfinition de la méthode tostring est également nécessaire et tirera profit de la méthode originale définie dans la classe Personne. Une classe publique de type TestEtudiant sera ensuite créée en vue de définir un tableau de trois personnes dont deux étudiants.

Travaux pratique de Méthodologie et Langage de Programmation,, TP1 4 e) Exercice 5 Dans cet exercice, différentes classes doivent être définies en vue de gérer un ensemble de formes géométriques. Cette gestion ne se fera pas de manière graphique mais devra uniquement traiter les données "brutes" des formes géométriques suivantes : polygone convexe : défini par un tableau de points ; rectangle (héritant du polygone convexe) : défini par les deux sommets d'une des deux diagonales ; dont les côtés sont parallèles aux axes de référence ; carré (héritant du rectangle) : défini par un sommet ainsi que la longueur d'un côté ; dont les côtés sont parallèles aux axes de référence ; ellipse : défini par son centre, la longueur du grand axe (b) et celle du petit axe (a) ; dont les axes sont parallèles aux axes de référence ; cercle (héritant de l'ellipse) : défini par son centre et son rayon. Pour chacune de ces formes, on souhaite pouvoir : en afficher un aperçu (sous la forme d'un String renvoyé par la fonction tostring()) en modifier les caractéristiques ; en calculer le périmètre et l'aire (voir annexes). D'autres classes pourront éventuellement être définies en vue d'améliorer la conception de cette gestion graphique. A nouveau, une classe de test sera définie en vue de valider le bon fonctionnement des classes géométriques obtenues. Les informations suivantes sont des rappels pour le calcul du périmètre et de l'aire : Ellipse Périmètre de l'ellipse (a = demi grand axe ; b = demi petit axe) 2 1 2 a2 b 2 Aire de l'ellipse (a = demi grand axe ; b = demi petit axe) Triangle Aire du triangle (dont les 3 sommets sont (x1,y1), (x2,y2) et (x3,y3) ) a b 0.5 x 1 x 3 y 2 y 3 y 1 y 3 x 2 x 3

Travaux pratique de Méthodologie et Langage de Programmation,, TP1 5 1.3.Annexes Ces annexes reprennent un certain nombre de notions de programmation générale et sont donc généralement équivalentes à ce qui a déjà été vu en C/C++. a) Structures de contrôles if (condition) instructions1; else instructions2; while(condition) instructions; do instructions; while(condition); for(initialisation;condition;incrément) instructions; switch(variable) case 1: instruction1; break; case 2:... Deux instructions supplémentaires peuvent, dans le corps d'une boucle, "dévier" l'exécution normale : break : permet de rompre la boucle et passer à la suite du code ; continue : permet de passer immédiatement à l'itération suivante. b)types de données On retrouve les types de données suivants (la taille en nombre de bits en mentionnée entre parenthèses) : boolean(8), char(16), byte(8), short(16), int(32), long(64), float(32), double(64) En Java, l'utilisation des tableaux doit être précédée d'une déclaration à l'aide du mot clé new. Cela est valable pour tous les objets de Java. A titre d'exemple, un tableau de 10 entiers est déclaré comme suit : int tab[] = new int[10]; Les tableaux sont initialisés à 0 et les "cases" sont numérotées de 0 à n 1 comme en C/C++. Les chaînes de caractères sont gérées par la classe String. Des opérations standards (telles que compareto, length,...) sont déjà programmées dans la classe. Reportez vous à la documentation pour plus d'information.

Travaux pratique de Méthodologie et Langage de Programmation,, TP1 6 c) API Java Voici un tableau reprenant les packages principaux de l'api Java. En se rapportant à la documentation, il est possible d'éviter de réécrire du code déjà présent dans ces packages. java.applet java.awt java.awt.event java.io Package Description création d'applets, interaction avec le navigateur création et manipulation d'interfaces graphiques (voir également javax.swing) gestion des événements des composants GUI gestion des entrées/sorties java.lang java.net java.text regroupent les classes de base nécessaires à tout programme Java gestion des communications réseau manipulation de nombres, dates, caractères et chaînes java.util manipulation de dates/heure, nombres aléatoires,... javax.swing javax.swing.event composants GUI pour générer des interfaces utilisateur graphiques portables gestion des événements de javax.swing 1.4.Bibliographie 1. JAVA Comment programmer Quatrième édition, Harvey M. Deitel & Paul J. Deitel Les éditions Reynald Goulet INC., 2002 2. Méthodologie et Langages de Programmation, Pierre Manneback, Année académique 2005-2006.