Université de Bourgogne - UFR Sciences et Technique - Programmation objet - LPSIL - 2013



Documents pareils
TD/TP PAC - Programmation n 3

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

Java Licence Professionnelle CISII,

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

Utilisation d objets : String et ArrayList

Exercices sur les interfaces

Auto-évaluation Programmation en Java

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

Chapitre 10. Les interfaces Comparable et Comparator 1

Utiliser Java sans BlueJ

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

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

TP, première séquence d exercices.

Corrigé des exercices sur les références

Programmer en JAVA. par Tama

Une introduction à Java

Package Java.util Classe générique

Programme Compte bancaire (code)

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

Développement Logiciel

Corrigés des premiers exercices sur les classes

Threads. Threads. USTL routier 1

Initiation à JAVA et à la programmation objet.

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

Premiers Pas en Programmation Objet : les Classes et les Objets

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

Programmation Objet Java Correction

RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants.

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

Traduction des Langages : Le Compilateur Micro Java

Gestion distribuée (par sockets) de banque en Java

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

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

Derrière toi Une machine virtuelle!

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

INITIATION AU LANGAGE JAVA

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

F. Barthélemy. 17 mai 2005

Cours 1: Java et les objets

Synchro et Threads Java TM

as Architecture des Systèmes d Information

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Traitement de données

TP1 : Initiation à Java et Eclipse

Remote Method Invocation Les classes implémentant Serializable

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

Flux de données Lecture/Ecriture Fichiers

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

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

Programmation Objet - Cours II

La JVM. La machine virtuelle Java. La JVM. La JVM

Problèmes liés à la concurrence

Java 1.5 : principales nouveautés

Java Licence Professionnelle CISII,

Développement mobile MIDP 2.0 Mobile 3D Graphics API (M3G) JSR 184. Frédéric BERTIN

Langage Java. Classe de première SI

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

TD/TP PAC - Programmation n 3

IFT287 Exploitation de base de données relationnelles et orientées objet. Laboratoire Mon premier programme Java en Eclipse

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

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

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

Programmation Objet I

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

Remote Method Invocation (RMI)

Étude de l interopérabilité de deux langages de programmation basée sur la machine virtuelle de Java

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

Java Licence professionnelle CISII,

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 )

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011

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 par les Objets en Java

4. Groupement d objets

Ensimag 1ère année Algorithmique 1 Examen 2ième session 24 juin Algorithmique 1

TP1 : Initiation à Java et Eclipse

Un ordonnanceur stupide

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

Création d objet imbriqué sous PowerShell.

ACTIVITÉ DE PROGRAMMATION

Compression de Données - Algorithme de Huffman Document de Conception

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

Chapitre I Notions de base et outils de travail

Solutions du chapitre 4

NFP 121. Java et les Threads. Présentation : Thierry Escalarasse Mai 2007

Programmation Orientée Objet Java

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

Java c est quoi? Java pourquoi?

Machines virtuelles. Brique ASC. Samuel Tardieu Samuel Tardieu (ENST) Machines virtuelles 1 / 40

Java DataBaseConnectivity

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1

Programmation Orientée Objet

J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation

Structure fonctionnelle d un SGBD

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)

OpenPaaS Le réseau social d'entreprise

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

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

Systeme d'exploitation

Présentation. Au programme. Fonctionnement. A l issue de ce module vous devriez...

TP3 : Manipulation et implantation de systèmes de fichiers 1

Transcription:

Nom : Prénom : Contrôle continu n 4 Programmation objet Vous devez répondre dans les cadres aux questions posées. Documents de cours et notes personnelles autorisés. Téléphones portables, ordinateurs et calculatrices interdits. Partie 1 : Classes, héritage, Polymorphisme, Interfaces Vous devez définir une interface Recyclable telle que toute classe non abstraite qui implante cette interface doive nécessairement contenir une méthode Recycler, qui ne prend aucun paramètre et ne retourne aucune valeur, et une méthode getpoids qui ne prend aucun paramètre et retourne un entier représentant le poids d un objet recyclable. On définit les classes Vehicule et AppareilMenager de la manière suivante : public abstract class Vehicule implements Recyclable public abstract class AppareilMenager implements Recyclable Dans le cadre de cet exercice, ces classes ne contiennent ni variables, ni méthodes. Peut-on créer des instances de Vehicule ou de AppareilMenager. Justifiez brièvement votre réponse. Vous devez réaliser une classe Velo qui représente un vélo. La classe Velo doit hériter de Vehicule et implanter l interface Recyclable. Le constructeur de la classe Velo doit prendre en paramètre un entier représentant le poids du vélo. N implantez que les méthodes nécessaires pour permettre la compilation de la classe. La ou les méthodes de type void, si applicable, doivent simplement afficher un message spécifique à l écran. Contrôle continu n 4 - page 1 sur 8

Donnez ici la définition de la classe Velo. On suppose par ailleurs l existence d une classe MicroOnde qui implante l interface Recyclable et hérite de la classe AppareilMenager. Vous devez maintenant réaliser (page suivante) une classe StockageDechets qui aura deux classes dérivées BenneVelo et ConteneurAppMenagers. La classe StockageDechets représente une unité de stockage de déchet et doit répondre aux spécifications suivantes : 1.Il ne doit pas être possible de créer des instances de cette classe. Seules des instances de classe dérivées BenneVelos et ConteneurAppMenagers peuvent être créées. 2.La classe StockageDechets comporte une variable d instance liste de type ArrayList d objets recyclables et une variable d instance capacite de type double. La variable liste représente le contenu de l unité de stockage et la variable capacite représente le volume maximum (en mètres cubes) des déchets qui y sont stockés. 3.Le constructeur de la classe StockageDechets accepte en paramètre une valeur de type double représentant la capacité (en mètres cubes) de l unité de stockage a créer. 4.La classe StockageDechets comporte les méthodes suivantes (à vous de déterminer, si applicable, lesquelles sont virtuelles) : getpoids : retourne le poids total des déchets contenus. getvolume : retourne le volume total des objets contenus. La manière de calculer ce volume dépend du type d unité de stockage. Ce calcul sera fait de manières différentes dans les classes BenneVelos et ConteneurAppMenagers. volumerestant : retourne la volume encore disponible, à savoir la différence entre la capacité de l unité de stockage et le volumes des déchets déjà stockés. add : ajoute un nouveau déchet dans l unité de stockage. La seule restriction concernant le type de déchets acceptés par cette méthode est qu il doit s agir d objets recyclables. get : accepte un entier i en paramètre et retourne l objet recyclable situé en position i dans la liste. size : retourne le nombre de déchets (i.e. objets recyclables) contenus dans l unité de stockage. Contrôle continu n 4 - page 2 sur 8

Donnez ici la définition de la classe StockageDechets. Contrôle continu n 4 - page 3 sur 8

La classe BenneVelos représente une benne à vélo qui est un cas particulier d unité de stockage des déchets et à ce titre, dérive de la classe StockageDechets. La méthode add y est redéfinie de manière à n autoriser que l ajout de vélos dans la benne. Le volume des déchets, en mètres cubes, est calculé en divisant par deux le nombre de vélos contenus dans la benne. Réalisez cette classe de manière à réutiliser autant que possible le code déjà implanté dans la classe StockageDechets, donc en plaçant dans la classe BenneVelos juste ce qui est nécessaire et suffisant pour rendre compte des spécificités mentionnées plus haut. La classe Dechetterie représente une déchèterie pouvant contenir des unités de stockage de déchets, c est à dire des instances de classes dérivées de StockageDechets. Le stockage se fait dans une variable d instance liste de type ArrayList<StockageDechets>. Cette classe contient une méthode volumedechets qui retourne le volume total des déchets stockés dans la déchèterie. Donnez la définition de cette méthode. public double volumedechets() Contrôle continu n 4 - page 4 sur 8

Partie 2 : Exceptions Définissez une classe d exception EmptyTab et une classe Main ayant une méthode public static void moyenne(double[] tab) calculant la moyenne des valeurs situées dans un tableau de nombres flottants. La méthode moyenne doit lever une exception de type EmptyTab si le tableau est vide, i.e. si sa longueur vaut 0. Donnez ici la définition de la classe EmptyTab. Donnez ici la définition de la classe Main contenant uniquement la méthode moyenne. On ajoute à ma classe Main la méthode m ain définie ci-dessous et on tente de compiler. On obtient me message d erreur «Unhandled exception : EmptyTab». Expliquez pourquoi (page suivante) et proposez (page suivante aussi) une nouvelle version de ma méthode main qui affiche la moyenne des valeurs du tableau t s il n est pas vide et sinon affiche le message «Le tableau est vide». public static void main(string[] args) double[] t = new double[]; System.out.println(moyenne(t)); Contrôle continu n 4 - page 5 sur 8

Donnez ici l explication. Donnez ici la nouvelle méthode main. public static void main(string[] args) double[] t = new double[]; Maintenant, on remplace la déclaration double[] t = new double[]; par double[] t = null; et on exécute à nouveau le programme et cela provoque l affichage «Exception in thread "main" java.lang.nullpointerexception». Sans modifier la méthode moyenne, proposez une nouvelle version de la méthode main qui affiche la valeur retournée par moyenne si le tableau t n est ni vide ni null, le message «tableau vide» si l appel de moyenne lève l exception EmptyTab et le message «tableau inexistant» si l appel de moyenne lève l exception NullPointerException. Contrôle continu n 4 - page 6 sur 8

Partie 3 : Objets modifiables ou non modifiables On considère la classe Main définie ci-contre. Lorsqu on exécute la méthode main, la valeur 0 est affichée. Représentez graphiquement les valeurs des variables et les objets présents dans la pile et dans le tas juste après l exécution de la ligne z = new Integer(z.intValue()+1); dans la méthode incremente. public class Main public static void incremente(integer z) z = new Integer(z.intValue()+1); public static void main(string[] args) Integer cpt = new Integer(0); incremente(cpt); System.out.println(cpt); Pile Tas Vous devez maintenant réaliser (page suivante) une classe modifiable IntMod telle que l exécution de la méthode main ci-contre provoque l affichage des valeurs 1, 2 et 3. public static void main(string[] args) IntMod cpt1 = new IntMod(0); cpt1.incremente(); System.out.println(cpt1); cpt1.incremente(); System.out.println(cpt1); cpt1.incremente(); System.out.println(cpt1); Contrôle continu n 4 - page 7 sur 8

Donnez ici le détail de la classe IntMod. Est-i possible de définir une méthode static void reset (IntMod z) qui modifie l objet référencé par z en lui donnant la valeur 0? Si oui, donnez le code java de cette méthode, sinon expliquez pourquoi. Contrôle continu n 4 - page 8 sur 8