Correction du TP2. Exercice Exercice Exercice Université de Tlemcen Département d'informatique

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

Projet de programmation (IK3) : TP n 1 Correction

Langage Java. Classe de première SI

Java Licence Professionnelle CISII,

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

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

Programme Compte bancaire (code)

Recherche dans un tableau

Approche Contract First

4. Groupement d objets

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

Chapitre 10. Les interfaces Comparable et Comparator 1

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Corrigés des premiers exercices sur les classes

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

Premiers Pas en Programmation Objet : les Classes et les Objets

Utilisation d objets : String et ArrayList

2. Comprendre les définitions de classes

Généralités. javadoc. Format des commentaires. Format des commentaires. Caractères spéciaux. Insérer du code

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

Serveur d'archivage 2007 Installation et utilisation de la BD exist

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Auto-évaluation Programmation en Java

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

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

I. Introduction aux fonctions : les fonctions standards

TP SIN Programmation sur androïde Support : eclipse

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

TD Objets distribués n 3 : Windows XP et Visual Studio.NET. Introduction à.net Remoting

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

Programmation C++ (débutant)/instructions for, while et do...while

Paginer les données côté serveur, mettre en cache côté client

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

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

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

TP1 : Initiation à Java et Eclipse

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

RMI le langage Java XII-1 JMF

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de 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 )

OpenPaaS Le réseau social d'entreprise

1.6- Génération de nombres aléatoires

ACTIVITÉ DE PROGRAMMATION

Programmation Par Objets

Gestion du projet pour qu'il soit pérenne et collaboratif

Plateforme PAYZEN. Définition de Web-services

Programmation en Java IUT GEII (MC-II1) 1

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

Le prototype de la fonction main()

Projet gestion d'objets dupliqués

Une introduction à Java

Génie Logiciel avec Ada. 4 février 2013

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

Solutions du chapitre 4

Bases de Données. Plan

Présentation du langage et premières fonctions

Programmer en JAVA. par Tama

Programmation Orientée Objet Java

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

OCL - Object Constraint Language

Notions fondamentales du langage C# Version 1.0

.NET - Classe de Log

Guide de l'utilisateur

as Architecture des Systèmes d Information

Remote Method Invocation Les classes implémentant Serializable

Programmation par les Objets en Java

Bases Java - Eclipse / Netbeans

Le hub d entreprise est une application de déploiement des applications mais aussi un outil de communication

INITIATION AU LANGAGE JAVA

TP1. Outils Java Eléments de correction

Définition des Webservices Ordre de paiement par . Version 1.0

CRÉER DES LEÇONS AVEC L'ÉDITEUR DU LOGICIEL 1000 MOTS POUR APPRENDRE À LIRE EN FRANÇAIS, ANGLAIS ET ALLEMAND

OUTIL DE TRAVAIL COLLABORATIF

Utilitaires méconnus de StrataFrame

Package Java.util Classe générique

Compte-rendu de projet de Système de gestion de base de données

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

Construire une application marketing Facebook sur la plateforme Windows Azure

Cours 14 Les fichiers

Maîtriser le menu contextuel dans un OfficeBean

MISE A NIVEAU INFORMATIQUE LANGAGE C - EXEMPLES DE PROGRAMMES. Université Paris Dauphine IUP Génie Mathématique et Informatique 2 ème année

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores

Dossier projet isn 2015 par Victor Gregoire

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu.

Chapitre 2 Devine mon nombre!

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

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

Tutoriel: Création d'un Web service en C++ avec WebContentC++Framework

Chapitre 2. Classes et objets

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Modélisation PHP Orientée Objet pour les Projets Modèle MVC (Modèle Vue Contrôleur) Mini Framework

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

Corrigé des exercices sur les références

Initiation à la programmation en Python

Algorithmique & programmation

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

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


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

Transcription:

Exercice 2.69 Que renverrait getloginname() pour un étudiant nommé «Henry Martin», dont le numéro d'identité serait «557214». Pour un objet de la classe «Student» créé avec les paramètres respectifs «Henry Martin» et «557214». La fonction getloginname() renverrait «Henr557». Exercice 2.70 Créez un étudiant avec le nom «sam» et l'identité «859012». Que se passe-t-il lorsqu'on appelle getloginname() sur cet étudiant? Pourquoi? Lors de l'appel, une exception se génère au niveau de corps de la méthode getloginname(). Spécialement, dans l'appel de la méthode «substring()» de la classe «String» pour l'attribut «name». L'exception est de type «StringIndexOutOfBoundsException». Elle dit que l'indice de la chaîne de caractères est hors limite. Parce que les chaînes de caractères sont implémentées sous forme de tableaux en Java. Alors, dès qu'on essaye d'accéder à un élément (caractère) hors la limite du tableau. Java génère l'erreur précédemment rencontrée. Exercice 2.71 La classe «String» définit une méthode d'accès «length()»avec la signature suivante : * Renvoie le nombre de caractères de cette chaîne. public int length() ; Ajoutez des instructions conditionnelles au constructeur de «Student» pour afficher un message d'erreur si la longueur du paramètre «fullname» est inférieure à quatre caractères ou si celle du paramètre studentid est inférieure à trois caractères. Toutefois, le constructeur doit toujours utiliser ces paramètres pour définir les champs «name» et «id», même si le message d'erreur est affiché. Astuce : utilisez les instructions «if» de la forme suivante (c'est à dire sans partie «else») pour afficher les messages d'erreur. If ( réalise un test sur l'un des paramètres ) Affiche un message d'erreur si le test a donné un résultat vrai Le constructeur de la classe «Student» existant devient comme suit : * Create a new student with a given name and ID number. public Student(String fullname, String studentid) name = fullname; id = studentid;

credits = 0; if (fullname.length()<4) System.out.println("Le nom en entrée est trop court."); if (studentid.length()<3) System.out.println("L'identifiant en entrée est trop court."); On a pas touché aux instructions d'initialisation, et c'est ce qui a été demandé dans l'exercice. Exercice 2.72 Modifiez la méthode «getloginname()» de «Student» pour qu'elle génère un identifiant dans tous les cas, même si les champs «name» ou «id» ne sont pas assez longs. Pour les chaînes trop courtes, utilisez la chaîne complète. La méthode «getloginname()» existante en la classe «Student» devient comme suit : Exercice 2.73 * Return the login name of this student. The login name is a combination * of the first four characters of the student's name and the first three * characters of the student's ID number. public String getloginname() return name.substring(0,math.min(name.length(),4)) + id.substring(0,math.min(3,id.length())) ; Étudiez les expressions suivantes. Essayez de prévoir leurs résultats, puis tapez-les dans le Code Pad pour vérifier vos réponses. Les résultats fournis par le Code Pad sont les suivants : 99+3 102 (int) "chat"+"poisson" "chatpoisson" (String) "chat"+9 "chat9" (String) 9+3+"chat" "12chat" (String) "chat"+3+9 "chat39" (String) "poissonchat".substring(3,4) "s" (String) "poissonchat".substring(3,8)

"ssonc" (String) Cet exercice vous a-t-il appris une chose inattendue? De quoi s'agit-il? Effectivement, cet exercice nous a appris quelque chose de nouveau. C'est la façon dont Java prend en compte le résultat en fonction de la nature des opérandes (dans le cas où on utilise toujours le même opérateur). Plus précisément pour chaque opération «+», Java considère le résultat comme «String» si une des opérandes est une instance de la classe «String». Exercice 2.74 Vous trouverez ci-après une partie d'une classe «Book», qui se trouve dans le projet d'exercice «book-exercise». Elle définit deux champs et un constructeur pour initialiser les champs. Dans cet exercice et les suivants, vous ajouterez d'autres fonctions à la classe. Ajoutez deux méthodes d'accès à la classe, nommées «getauthor()» et «gettitle()», qui renvoient respectivement les champs «author» et «title». Testez votre classe en créant des instances et en les appelant les méthodes. Le code suivant doit être à la classe Book : Exercice 2.75 * Retourne l'auteur du livre. * @return la valeur de l'attribut author. public String getauthor() return author; * Retourne le titre du livre. * @return la valeur de l'attribut title. public String gettitle() return title; Ajoutez deux méthodes nommées «printauthor()» et «printtitle()», à l'extrait de la classe «Book». Elles doivent afficher respectivement les champs «author» et «title» dans la fenêtre du terminal. Le code suivant doit être ajouté à la classe «Book» : * Imprime l'auteur du livre sur console. public void printauthor() System.out.println(author);

Exercice 2.76 * Imprime le titre du livre sur console. public void printtitle() System.out.println(title); Ajoutez un champ, nommé «pages», à la classe «Book»pour y stocker le nombre de pages. Il peut être de type «int» et sa valeur initiale doit être fournie à l'unique constructeur, de même que les chaînes «author» et «title». On ajoute le code suivant après les attributs et avant les méthodes de la classe «Book» : private int pages; On modifie le constructeur pour qu'il puisse ressembler au suivant : * Initialise les valeurs des attributs quand un livre est créé. * @param bookauthor Le nom de l'auteur du livre. * @param booktitle Le titre de l'ouvrage. * @param pages Le nombre de pages du livre. public Book(String bookauthor, String booktitle, int pages) author = bookauthor; title = booktitle; this.pages = pages; if (pages<=0) System.out.println("Le nombre de pages de ce livre est négatif."); Ajoutez une méthode d'accès «getpages()» adaptée à ce champs. On ajoute une méthode à la classe «Book» comme suit : Exercice 2.77 * Retournes le nombre de pages dans le livre. * @return la valeur de l'attribut pages. public int getpages() return pages; Ajoutez une méthode intitulée «printdetails()» à la classe «Book». Elle doit afficher le nom

de l'auteur, le titre et le nombre de pages dans la fenêtre terminal. Vous choisirez la présentation des informations. Les trois éléments pourrait par exemple être affichés sur une seule ligne, mais vous pouvez également les placer chacun sur une ligne distincte. Vous pouvez aussi choisir d'inclure un texte d'explication pour aider l'utilisateur à savoir où est le nom de l'auteur et où est le titre, par exemple : Titre : Robinson Crusoë, Auteur : Daniel Defoe, Pages : 232 On ajoute au code de la classe «Book» ce qui suit : Exercice 2.78 * Affiche les détails du livre sur console. public void printdetails() System.out.println("Titre: "+title+", Auteur: "+author+", Pages: "+pages); Ajoutez un autre champ, nommé «refnumber», à la classe «Book». Ce champ contiendra le numéro de référence destiné à une bibliothèque. Il doit être du type «String» et initialisé à une chaîne de longueur zéro ( '' '' ) dans le constructeur, car sa valeur initiale n'est transmise au constructeur par un paramètre. Pour définir cette référence, créez une méthode de modification avec la signature suivante : public void setrefnumber(string ref) Le corps de cette méthode doit attribuer la valeur du paramètre au champ «refnumber». On ajoute d'abord l'attribut à la classe «Book» : private String refnumber; On modifie après le constructeur de la classe : public Book(String bookauthor, String booktitle, int pages) author = bookauthor; title = booktitle; this.pages = pages; if (pages<=0) System.out.println("Le nombre de pages de ce livre est négatif."); refnumber=""; On ajoute les deux accesseurs pour l'attribut «refnumber» comme suit : * Modifie le numéro de référence du livre pour une bibliothèque. * @param ref le nouveau numéro de référence. public void setrefnumber(string ref) refnumber=ref;

* Retourne le numéro de référence du livre. * @return Le numéro de référence en cours pour le livre. public String getrefnumber() return refnumber; Exercice 2.79 Modifiez la méthode «printdetails()»pour y inclure l'affichage du numéro de référence. La méthode ne devra afficher le numéro de référence que s'il a été défini, c'est-à-dire si la chaîne refnumber possède une longueur différente de zéro.s'il n'a pas été défini, affichez la chaîne «zzz». Astuce : utilisez une instruction conditionnelle dont le test appelle la méthode «length()»sur la chaîne «refnumber». La méthode «printdetails()» de la classe «Book» devient comme suit : Exercice 2.80 * Affiche les détails du livre sur console. public void printdetails() System.out.print("Titre: "+title+", Auteur: "+author+", Pages: "+pages+", Reference Number: "); if (refnumber.length()==0) System.out.println("zzz"); else System.out.println(refNumber); Transformez votre méthode de modification «setrefnumber()» pour qu'elle définissent le champ «refnumber» uniquement si le paramètre est une chaîne d'au moins trois caractères. Si la longueur est inférieur à trois, affichez un message d'erreur et laissez le champ tel quel. On modifie la méthode «setrefnumber()» de la classe «Book» pour qu'elle puisse ressembler à ce qui suit : * Modifie le numéro de référence du livre pour une bibliothèque. * @param ref le nouveau numéro de référence. public void setrefnumber(string ref) if (ref.length()>2) refnumber=ref; else System.out.println("La référence mise en paramètre est trop courte.");

Exercice 2.81 Ajoutez un autre entier, nommé «borrowed (emprunté)», à la classe «Book». Il comptabilisera le nombre de fois où un livre a été emprunté. Ajoutez une méthode de modification, nommée «borrow()», à la classe. Elle devra incrémenter le champ de 1 à chaque fois qu'elle sera appelée. Incluez un accesseur, nommé «getborrowed()», qui renvoie la valeur de ce nouveau champ comme résultat. Modifiez «printdetails()» pour qu'elle inclue la valeur de ce champ avec un texte d'explication. On ajoute d'abord l'attribut à la classe «Book» comme suit : private int borrowed; On modifie ensuite le constructeur de la classe pour qu'il initialise la valeur de l'attribut à zéro : * Initialise les valeurs des attributs quand un livre est créé. * @param bookauthor Le nom de l'auteur du livre. * @param booktitle Le titre de l'ouvrage. * @param pages Le nombre de pages du livre. public Book(String bookauthor, String booktitle, int pages) author = bookauthor; title = booktitle; this.pages = pages; if (pages<=0) System.out.println("Le nombre de pages de ce livre est négatif."); refnumber=""; borrowed=0; On ajoute après la méthode «borrow()» à la classe ainsi que l'accesseur comme suit : * Emprunte le livre de la bibliothèque. public void borrow() borrowed++; * Retourne combien de fois le livre a-t-il été emprunté. * @return la valeur de l'attribut borrowed. public int getborrowed() return borrowed;

Enfin, on modifie la méthode «printdetails()» : * Affiche les détails du livre sur console. public void printdetails() System.out.print("Titre: "+title+", Auteur: "+author+", Pages: "+pages+", Nombre d'emprunts: :"+borrowed+", Reference Number: "); if (refnumber.length()==0) System.out.println("zzz"); else System.out.println(refNumber);