Cours de programmation orientée-objet Examen du 5 juin 2015

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

Programmation Par Objets

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

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

ENDNOTE X2 SOMMAIRE. 1. La bibliothèque EndNote 1.1. Créer une nouvelle bibliothèque 1.2. Ouvrir une bibliothèque EndNote 1.3. Fermer une bibliothèque

Approche Contract First

Utilisation d objets : String et ArrayList

Premiers Pas en Programmation Objet : les Classes et les Objets

Web Tier : déploiement de servlets

Cours de Programmation Impérative: Zones de mémoires et pointeurs

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

TP1 : Initiation à Java et Eclipse

Une introduction à Java

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Chapitre 10. Les interfaces Comparable et Comparator 1

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

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Projet de programmation (IK3) : TP n 1 Correction

Alfstore workflow framework Spécification technique

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

Chapitre VI- La validation de la composition.

Cours 1: Java et les objets

Europresse.com. Pour bibliothèque d enseignement Pour bibliothèque publique. Consulter facilement la presse. Guide version 1.

TP SIN Programmation sur androïde Support : eclipse

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

Programmation Orientée Objet

Auto-évaluation Programmation en Java

Création d objet imbriqué sous PowerShell.

Programmer en JAVA. par Tama

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

Chapitre V. Les classes : Object, Vector, etc.

RMI le langage Java XII-1 JMF

Présentation du PL/SQL

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

Master d Informatique Corrigé du partiel novembre 2010

Flex. Lire les données de manière contrôlée. Programmation Flex 4 Aurélien VANNIEUWENHUYZE

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

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

Cours d initiation à la programmation en C++ Johann Cuenin

OCL - Object Constraint Language

Package Java.util Classe générique

Europresse.com. Pour les bibliothèques publiques et de l enseignement. Votre meilleur outil de recherche en ligne. Guide version 1.

Synchro et Threads Java TM

TP1. Outils Java Eléments de correction

TD/TP PAC - Programmation n 3

Environnements de développement (intégrés)

Plateforme PAYZEN. Définition de Web-services

TD/TP PAC - Programmation n 3

Bases Java - Eclipse / Netbeans

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e

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

4. Groupement d objets

Programme Compte bancaire (code)

Tutoriel d installation de Hibernate avec Eclipse

URECA Initiation Matlab 2 Laurent Ott. Initiation Matlab 2

Architecture Orientée Service, JSON et API REST

Développement Logiciel

Corrigé des exercices sur les références

BIRT (Business Intelligence and Reporting Tools)

PROJET ALGORITHMIQUE ET PROGRAMMATION II

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

Projet gestion d'objets dupliqués

Ecran principal à l ouverture du logiciel

OpenPaaS Le réseau social d'entreprise

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

Projet L1, S2, 2015: Simulation de fourmis, Soutenance la semaine du 4 mai.

L export de SAS vers Excel expliqué à ma fille

Utilitaires méconnus de StrataFrame

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

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

Une introduction à la technologie EJB (2/3)

BASE DE DONNÉES XML NATIVE

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

Programmation avec des objets : Cours 7. Menu du jour

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 )

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

Programmation Orientée Objet Java

esms Desktop Guide de l utilisateur

EndNote Web. Quick Reference Card THOMSON SCIENTIFIC

Programmation Objet I

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

Construire des plug-ins pour SAS Management Console SAS 9.1

Programmation Réseau. Sécurité Java. UFR Informatique jeudi 4 avril 13

Java Licence Professionnelle CISII,

TP1 : Initiation à Java et Eclipse

Projet Java EE Approfondi

Education Delivery Intelligent Tool

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

TP Programmation Java / JDBC / Oracle

Programmation par composants (1/3) Programmation par composants (2/3)

Design patterns. Design patterns - définition. Design patterns - avantages

Introduction à MATLAB R

Tableau de bord. Tableau de bord. Statistiques des contenus de votre site (nb de pages, articles, commentaires...)

Remote Method Invocation (RMI)

as Architecture des Systèmes d Information

Un ordonnanceur stupide

Extension SSO Java. Cette note technique décrit la configuration et la mise en œuvre du filtre de custom SSO Java.

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

INITIATION AU LANGAGE JAVA

Transcription:

Cours de programmation orientée-objet Examen du 5 juin 2015 Livres fermés. Durée : 3 heures 1/2. Veuillez répondre à chaque question sur des feuilles séparées sur lesquelles figurent nom, prénom et section. Soyez bref et concis, mais précis. 1. On souhaite développer en Java une classe BookCatalog permettant de gérer des catalogues de livres. Une instance de cette classe représente un ensemble (non ordonné) de livres, chacun de ceux-ci étant caractérisé par un titre, une liste d un ou de plusieurs auteurs (représentés par leur prénom et leur nom), et un commentaire textuel. La classe BookCatalog doit pouvoir être instanciée sans fournir de paramètre, ce qui crée alors un catalogue vide. Elle doit aussi définir une méthode permettant d ajouter un livre à un catalogue, et une autre capable d exporter l ensemble des données d un catalogue dans un format choisi par l utilisateur. Afin de standardiser cette opération d exportation, on impose que la classe BookCatalog implémente l interface suivante : import java.io.ioexception; public interface BookCatalogExporter void export(string filename, BookCatalogFormat format) throws IOException; Dans cette interface, le paramètre filename spécifie le nom du fichier dans lequel la méthode export écrit les données exportées. Une erreur d accès à ce fichier au cours de l exécution de cette méthode déclenche une exception IOException. Le paramètre format est quant à lui destiné à spécifier le format selon lequel les données d un catalogue doivent être exportées. Son type, BookCatalogFormat, correspond à l interface suivante : public interface BookCatalogFormat String begindocument(); String beginbook(); String outputtitle(string title); String outputauthor(string firstname, String lastname); String outputcomment(string comment); String endbook(); String enddocument(); Chacune des méthodes de cette interface a pour responsabilité de générer une chaîne de caractères représentant une donnée bien précise d un catalogue, comme par exemple le titre d un livre, ou les nom et prénom d un de ses auteurs, dans le format choisi. 1

(a) Ecrire le code de la classe BookCatalog. (b) Ecrire le code d une classe XMLBookCatalogFormat implémentant valablement l interface BookCatalogFormat, et représentant un format d exportation vers un dialecte XML particulier. Une opération d exportation dans ce format doit produire un fichier respectant les règles suivantes : Le fichier commence par <?xml version="1.0" encoding="utf-8"?>, et ouvre ensuite la balise <library>. Les livres du catalogue sont énumérés les uns à la suite des autres. Les données de chaque livre sont placées entre les balises <book> et </book>. Le titre d un livre est placé entre les balises <title> et </title>. Les auteurs d un livre sont énumérés les uns à la suite des autres. Chaque auteur est placé entre les balises <author> et </author>. Entre ces deux balises, son prénom est placé entre les balises <first> et </first>, et son nom entre <last> et </last>. Le commentaire associé à un livre est placé entre les balises <comment> et </comment>. Le fichier se termine par la fermeture de la balise </library>. Par exemple, dans ce format, un catalogue contenant uniquement le livre «Data Structures & Algorithms in Java» écrit par Michael T. Goodrich et Roberto Tamassia, avec le commentaire «Un bon livre sur les structures de données», s exporte de la façon suivante : <?xml version="1.0" encoding="utf-8"?> <library> <book> <title>data Structures & Algorithms in Java</title> <author><first>michael T.</first><last>Goodrich</last></author> <author><first>roberto</first><last>tamassia</last></author> <comment>un bon livre sur les structures de données</comment> </book> </library> Notes : On demande que chaque instance d un catalogue de livres puisse être clonée en profondeur. Vous êtes libre de développer des classes supplémentaires nécessaires à votre solution. Veillez à signaler les situations d erreur par des exceptions implémentées par vos soins. Il n est pas nécessaire de récupérer l ensemble des exceptions déclenchées lors de l exécution de votre code, sauf les erreurs d accès à un fichier dans la méthode export. Il n est pas nécessaire d insérer vos classes dans un autre groupe de classes (package) que celui par défaut. Une documentation de quelques classes de la bibliothèque standard Java pouvant être utiles à ce problème est fournie en annexe. 2

2. Répondre aux questions suivantes en justifiant. En Java : (a) Quelle forme donne-t-on aux méthodes destinées à tester l équivalence de deux objets? Quelles propriétés doivent-elles satisfaire? (b) Que produit l exécution de ce fragment de code? java.util.vector<integer> a, b; a = new java.util.vector<integer>(); a.add(1); a.add(2); a.add(3); b = new java.util.vector<integer>(); b.add(1); b.add(2); b.add(3); System.out.println(a == b); (c) Soit l extrait de code suivant : import java.util.arrays; public class Triangle3D private double[] points; public Triangle3D( double p1_x, double p1_y, double p1_z, double p2_x, double p2_y, double p2_z, double p3_x, double p3_y, double p3_z ) points = new double[] p1_x, p1_y, p1_z, p2_x, p2_y, p2_z, p3_x, p3_y, p3_z ; public double[] getpoint(int number) throws ParameterOutOfBoundsException if ((number < 1) (number > 3)) throw new ParameterOutOfBoundsException(); int offset = (number - 1) * 3; return Arrays.copyOfRange(points, offset, offset + 3); Transformer la classe Triangle3D de façon à implémenter le test d équivalence entre deux de ses instances. Note : Il n est pas nécessaire de recopier dans votre réponse ce qui n a pas été modifié. 3

3. Un chercheur travaille régulièrement avec des matrices possédant exactement 8 colonnes et un nombre de lignes variable, souvent très grand. Il a développé la classe suivante, permettant d appliquer un filtre exponentiel séparé à chaque colonne d une matrice : public class MatrixFilter protected double[][] data;... public double[] expfilter(double alpha) throws ParameterOutOfBoundsException if ((alpha < 0.0) (alpha > 1.0)) throw new ParameterOutOfBoundsException(); double[] mean = new double[8]; for (int col = 0; col < 8; ++col) mean[col] = data[0][col]; for (int row = 1; row < data.length; ++row) mean[col] = (1.0 - alpha) * mean[col] + alpha * data[row][col]; return mean; Afin d améliorer l efficacité de ce code, le chercheur souhaite exploiter les 8 cœurs du processeur de son ordinateur en effectuant en parallèle les opérations de filtrage de chaque colonne. Autrement dit, 8 contextes d exécution distincts seraient créés, appliquant chacun le filtre exponentiel à une colonne unique de la matrice. (a) Ecrire le code d une sous-classe ParallelMatrixFilter de MatrixFilter, implémentant l amélioration discutée ci-dessus tout en présentant la même interface que sa classe parente. (b) Expliquer l utilité du mot-clé synchronized en Java. (c) Est-il nécessaire d utiliser ce mot-clé dans votre solution à la sous-question (a)? Justifier. 4

Documentation Java Cette annexe fournit la documentation de quelques classes de la bibliothèque standard Java pouvant être utiles à la résolution de l exercice 1. Note : l utilisation de ces classes et méthodes n est pas obligatoire! Classe java.util.vector<e> : file de données (politique FIFO) void add(e e) : ajoute la référence e en fin de file. E get(int i) : retourne la référence stockée à l indice i (le premier élément possédant un indice égale à 0). E set(int i, E e) : remplace la référence stockée à l indice i par la référence e et retourne l ancienne référence. E remove(int i) : supprime la référence stockée à l indice i et retourne cette référence. Tous les éléments situés à droite de celui qui est supprimé sont décalés d une position vers la gauche. boolean isempty() : indique si la file est vide. int size() : retourne la taille de la file. Classe java.io.filewriter : écriture dans un fichier FileWriter(String f) : instancie un objet ouvrant en écriture le fichier f. void write(string s) throws IOException : écrit le contenu de s dans le fichier f. void close() throws IOException : ferme le fichier f. Manipulation de tableaux La variable length d un objet tableau contient la taille de celui-ci. 5