Licence Informatique 2ème année



Documents pareils
Programmation par les Objets en Java

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

Cours 1: Java et les objets

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

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

Auto-évaluation Programmation en Java

JAVA TD0. Prise en main du langage Environnement de base JAVA 1

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

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

Chapitre 10. Les interfaces Comparable et Comparator 1

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

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Package Java.util Classe générique

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 )

Programmer en JAVA. par Tama

TD/TP PAC - Programmation n 3

Java Licence Professionnelle CISII,

TD/TP PAC - Programmation n 3

Projet de programmation (IK3) : TP n 1 Correction

Corrigé des exercices sur les références

Programmation Orientée Objet

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

Exercices sur les interfaces

Développement Logiciel

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

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

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

ACTIVITÉ DE PROGRAMMATION

Java Licence professionnelle CISII,

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

TP1 : Initiation à Java et Eclipse

Premiers Pas en Programmation Objet : les Classes et les Objets

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

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

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

RMI le langage Java XII-1 JMF

Initiation à JAVA et à la programmation objet.

Utiliser Java sans BlueJ

Corrigés des premiers exercices sur les classes

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

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

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

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

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

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)

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

Programmation en Java IUT GEII (MC-II1) 1

Remote Method Invocation (RMI)

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

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

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

Diagramme de classes

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

Java 1.5 : principales nouveautés

TP, première séquence d exercices.

4. Groupement d objets

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

Programmation Orientée Objet en C#

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Chapitre 2. Classes et objets

UE Programmation Impérative Licence 2ème Année

Programmation avec des objets : Cours 7. Menu du jour

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

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

LOG4430 : Architecture logicielle et conception avancée

Langage Java. Classe de première SI

Classe Interne, Anonyme & Enumération

Une introduction à Java

Machines virtuelles fonctionnelles (suite) Compilation ML 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

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

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

Utilisation d objets : String et ArrayList

Remote Method Invocation en Java (RMI)

1. Installation d'un serveur d'application JBoss:

Programmation Objet Java Correction

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

TP1. Outils Java Eléments de correction

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

LOG4430 : Architecture logicielle et conception avancée

Programmation Objet I

Programme Compte bancaire (code)

OpenPaaS Le réseau social d'entreprise

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

INITIATION AU LANGAGE JAVA

Jacques Lonchamp. Conception. d applications en Java/JEE. Principes, patterns et architectures

TP1 : Initiation à Java et Eclipse

Bases Java - Eclipse / Netbeans

Synchro et Threads Java TM

Programmation Par Objets

Support de cours et TD Programmation Orientée Objet

C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement

Le langage JAVA G. Baulieu Institut de Physique Nucléaire de Lyon Septembre 2009

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

Notion de thread (1/2)

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

Par Laurent DESECHALLIERS. Mastère Spécialisé en Management de Projets en Milieu Industriel. CESI de Rouen Promotion 2002/2003.

Exercices INF5171 : série #3 (Automne 2012)

épreuve possible pour tenter de soigner quelqu'un (max 1D6 ). sur un échec critique, le héros parvient à blesser encore plus son compagnon (-1D6 ).

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

Transcription:

Licence Informatique 2ème année Programmation Objet 1 Examen de seconde session 23/06/2014 2h Les notes de cours, TD et TP sont autorisées. Exercice 0 (2 points) Le code suivant compile t-il? Si non, indiquez les erreurs (les classes sont supposées être écrites dans des fichiers séparés). 01 abstract class Machin { 02 int i = 1; 03 static int j = 3; 04 void bidule(); 05 Machin() { 06 i = 4; 07 this.j = 5; 08 09 10 class Bidule extends Machin { 11 void bidule(machin m) { 12 System.out.println("Chose"); 13 14 Exercice 1 (4 points) class A{ class C extends A{ int i; int k; int geti(){return this.i; int getk(){return this.k; class B{ class D extends B{ int j; int l; int getj(){return this.j; int getl(){return this.l; Modifiez ces 4 classes de manière à ce que les propriétés suivantes soient vérifiées en même temps : - l'attribut i est visible dans A et B mais pas dans C - l'attribut k n'est visible que dans C - la méthode geti est visible dans A, B et C mais pas dans D - la méthode getl est visible dans toutes les classes

Exercice 2 (10 points) On veut écrire un programme de jeu vidéo qui a pour cadre le monde du Seigneur des Anneaux de Tolkien. Une classe représentant les personnages du jeu a déjà été écrite, elle permet de gérer les positions et déplacement des personnages. abstract class Personnage{ protected String nom; protected int pointsvie, connaissances, x, y, v; public Personnage(String n, int x, int y, int v){ this.nom = n; this.x = x; this.y = y; this.pointsvie = 100; this.connaissances = 0; this.v = v; public int getpointsvie(){return this.pointsvie; public void setpointsvie(int pv){this.pointsvie = pv; public int getconnaissances(){return this.connaissances; public void setconnaissances(int co){this.connaissances = co; public void sedeplacer(int dx, int dy, int t){ this.x = (int) (this.x + dx*this.v*t/math.sqrt(dx*dx+dy*dy)); this.y = (int) (this.y + dy*this.v*t/math.sqrt(dx*dx+dy*dy)); public abstract String parler(); On veut pouvoir gérer dans le jeu des objets qui peuvent être des armes, des documents (parchemins, grimoires, messages, etc) ou d'autres objets (bijoux, clés, etc). Un objet a un nom et un prix. Question 2.1 On veut pouvoir représenter les personnages humanoides (humains, nains, elfes, hobbits, etc) qui, en plus de pouvoir se déplacer, peuvent acquérir des objets ou s'en séparer. On veut aussi que chaque objet puisse être donné par un humanoide à un autre humanoide. Sans modifier la classe Personnage, proposez du code permettant de représenter les objets et les humanoides. (2,5 points) Question 2.2 On veut que chaque arme ait une certaine puissance et puisse être utilisée par son propriétaire contre un autre personnage (humanoide ou non). Une arme ne peut pas être utilisée par un personnage autre que son propriétaire. Quand un personnage utilise une arme contre un autre, il retire à ce dernier un nombre de points de vie égal à la puissance de l'arme. Proposez du code pour représenter les armes. (2,5 points) Question 2.3 On veut que chaque document contienne une certaine quantité de connaissances et puisse être lu par son propriétaire. Un document ne peut pas être lu par un autre personnage que son propriétaire. Quand un personnage lit un document, ses connaissances sont augmentées d'une quantité égale à la quantité de connaissances du document. Mais cet effet ne peut avoir lieu qu'une seule fois pour un même document : si un personnage lit un document qu'il a déjà lu, ses connaissances ne sont pas modifiées. Proposez du code permettant de représenter les documents. (2,5 points)

On veut maintenant représenter les monstres (troll, etc), qui ne peuvent utiliser des objets. L'interface suivante a été définie pour cela, ne peut être modifiée, et doit obligatoirement être utilisée pour représenter les monstres. interface Monstre{ public void attaque(personnage p); public int getpuanteur(); Question 2.4 On veut représenter les trolls, qui sont des personnages (pouvant se déplacer) et en même temps des monstres. Un troll a une certaine force et peut attaquer un personnage en lui faisant perdre un nombre de points de vie égal à sa force plus le dixième de sa puanteur. Mais un troll n'attaque jamais un autre troll. Proposez du code permettant de représenter les trolls. (2,5 points) Exercice 3 (4 points) On veut représenter des poupées russes dans un programme objet. Ces poupées peuvent s'emboiter les unes dans les autres. On a déjà écrit la classe suivante : class PoupeeRusse{ private int taille; public PoupeeRusse(int t){ this.taille = t; On veut distinguer deux types de poupées : celles qui sont creuses et dans lesquelles on peut mettre une autre poupée si elle est plus petite, et celles qui sont pleines et ne peuvent rien contenir. Question 3.1 Proposez du code permettant de représenter ces poupées et, pour les poupées creuses, d'ajouter une poupée dedans ou d'en retirer une poupée (on ne peut ajouter une poupée que dans une poupée creuse qui n'en contient pas encore et on ne peut retirer une poupée que d'une poupée creuse qui en contient une autre). (2,5 points) Question 3.2 Ecrire une fonction main qui crée 3 poupées, de tailles différentes, la plus petite n'étant pas creuse, et qui les emboite les unes dans les autres. On ne tient pas compte de l'ordre d'emboitement (c'est-à-dire qu'on n'est pas obligé d'aller de la plus petite à la plus grande). (1,5 points)

Question 0 Dans la classe Machin, ligne 04, la méthode doit être déclarée abstract. Dans la classe Bidule, la méthode bidule() n'est pas concrétisée (et la classe n'est pas abstraite). Question 1 A et B doivent être mises dans le même paquetage, k en privé, geti en protégé et getl en public. Question 2 class Objet{ private String nom; private int prix; public Objet(String n, int p){ this.nom = n; this.prix = p; import java.util.linkedlist; abstract class Humanoide extends Personnage{ private LinkedList<Objet> objets; private LinkedList<Document> lus; public Humanoide(String n, int x, int y, int v){ super(n,x,y,v); this.objets = new LinkedList<Objet>(); this.lus = new LinkedList<Document>(); public void acquiertobjet(objet o){ this.objets.add(o); public void perdobjet(objet o){ this.objets.remove(o); public void donnneobjet(objet o, Humanoide h){ if(this.objets.remove(o)) h.acquiertobjet(o); public void attaque(personnage p, Arme a){ if(this.objets.contains(a)) p.setpointsvie(math.max(0,p.getpointsvie()-a.getpuissance())); public void lit(document d){ if(this.objets.contains(d) &&!this.lus.contains(d)){ this.connaissances = this.connaissances+d.getconnaissances(); this.lus.add(d); public class Arme extends Objet{ private int puissance; public Arme(String n, int p, int pui){ super(n,p); this.puissance = pui; public int getpuissance(){ return this.puissance; public class Document extends Objet{

private int connaissances; public Document(String n, int p, int con){ super(n,p); this.connaissances = con; public int getconnaissances(){ return this.connaissances; class Troll extends Personnage implements Monstre{ private int force; public Troll(String n, int x, int y, int v, int force){ super(n,x,y,v); this.force = force; public int getpuanteur(){ return 200; public void attaque(personnage p){ if(!(p instanceof Troll)) p.setpointsvie(math.max(0,p.getpointsvie() - this.force - this.getpuanteur()/10)); public String parler(){ return "Hiark"; Question 3 Il faut mettre l'attribut taille en protected dans PoupeeRusse. class PoupeeCreuse extends PoupeeRusse{ private PoupeeRusse contenu; public PoupeeCreuse(int taille){ super(taille); this.contenu = null; public void ajoutepoupee(poupeerusse pr){ if(this.contenu == null && pr.taille<this.taille) this.contenu = pr; public void retirepoupee(){ if(this.contenu!= null) this.contenu = null; public static void main(string[] toto){ PoupeeCreuse p1 = new PoupeeCreuse(10); PoupeeCreuse p2 = new PoupeeCreuse(8); PoupeeRusse p3 = new PoupeeRusse(6); p1.ajoutepoupee(p2); p2.ajoutepoupee(p3);