IFT1169 Examen Intra



Documents pareils
et Programmation Objet

C++ Programmer. en langage. 8 e édition. Avec une intro aux design patterns et une annexe sur la norme C++11. Claude Delannoy

Cours 1: Java et les objets

Java Licence Professionnelle CISII,

Une introduction à Java

Programme Compte bancaire (code)

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

Plan Pédagogique du cours

Introduction à l héritage en C++

Département Automatisation et Informatisation Année Programmation en C++ Institut des Sciences et Techniques de l Ingénieur d Angers

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

30.avr.10 Présentation miniprojet. 9.mars.10 Cours 3 4.mai.10 Cours C mars.10 Cours 4 11.mai.10 Cours C++ 2

Cours de C++ François Laroussinie. 2 novembre Dept. d Informatique, ENS de Cachan

Package Java.util Classe générique

Programmation stochastique

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

Programmation en Java IUT GEII (MC-II1) 1

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

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

Introduction au langage C

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

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

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 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

Cours d Algorithmique et de Langage C v 3.0

GOL502 Industries de services

Claude Delannoy. 3 e édition C++

Avertissement : Ce cours suppose la connaissance et la maîtrise du langage C CONTENU DU COURS BIBLIOGRAPHIE

IRL : Simulation distribuée pour les systèmes embarqués


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

Java c est quoi? Java pourquoi?

ETUDE DE CAS en UML : GESTION DES COMMANDES DE PIECES FABRIQUEES PAR LA SOCIETE C

Programmation en C/C++

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

Programmation par les Objets en Java

Chapitre 2. Classes et objets

Le langage C++ (partie I)

Chapitre 1 : La gestion dynamique de la mémoire

Génie Logiciel I. Cours VI - Typage statique / dynamique, fonctions virtuelles et classes abstraites, flots d entrées / sorties, et string

Introduction à C++ et à wxwidgets

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

INFO-F-105 Language de programmation I Séance VI

Chapitre VI- La validation de la composition.

Notions fondamentales du langage C# Version 1.0

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

TP1 : Initiation à Java et Eclipse

Brefs rappels sur la pile et le tas (Stack. / Heap) et les pointeurs

Programmer en JAVA. par Tama

Introduction à l algorithmique et à la programmation M1102 CM n 3

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

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

COMPARAISONDESLANGAGESC, C++, JAVA ET

Support de cours et TD Programmation Orientée Objet

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

Derrière toi Une machine virtuelle!

TP, première séquence d exercices.

Programmation Orientée Objet

Java Licence Professionnelle CISII,

Création d objet imbriqué sous PowerShell.

Programmation Objet Java Correction

INITIATION AU LANGAGE JAVA

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

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

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr

Programmation système I Les entrées/sorties

ALGORITHMIQUE ET PROGRAMMATION ORIENTEE OBJET

as Architecture des Systèmes d Information

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

Types d applications pour la persistance. Outils de développement. Base de données préexistante? 3 modèles. Variantes avec passerelles

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski

ACTIVITÉ DE PROGRAMMATION

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

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)

Principes. 2A-SI 3 Prog. réseau et systèmes distribués 3. 3 Programmation en CORBA. Programmation en Corba. Stéphane Vialle

LE LANGAGE C++ ENAC 1997 A. DANCEL

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

Java 1.5 : principales nouveautés

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

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

CONCOURS DE L AGRÉGATION INTERNE «ÉCONOMIE ET GESTION» SESSION 2014

Introduction au pricing d option en finance

Java DataBaseConnectivity

Argument-fetching dataflow machine de G.R. Gao et J.B. Dennis (McGill, 1988) = machine dataflow sans flux de données

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

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

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

Analyse de sécurité de logiciels système par typage statique

Informatique I. Sciences et Technologies du Vivant (Semestre 1)

Un ordonnanceur stupide

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

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

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

Dans une année, il y a 12 mois. Dans une année, il y a 52 semaines. Dans une année, il y a 4 trimestres. Dans une année, il y a 365 jours.

Bases Java - Eclipse / Netbeans

Machines Virtuelles. et bazard autour. Rémi Forax

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

Transcription:

Trimestre Hiver, 2009 Mohamed Lokbani IFT1169 Examen Intra Inscrivez tout de suite votre nom et le code permanent. Nom: Prénom(s): Signature: Code perm: Date : mardi 24 février 2009 Durée : 2 heures (de 18h30 à 20h30) Local : Z-220 ; Pavillon Claire McNicoll Directives: - Toute documentation est permise. - Calculatrice non permise. - Répondre directement sur le questionnaire. - Les réponses doivent être brèves, précises, claires et nettement présentées. 1. /10 (1.1) 2. /18 (2.1, 2.2, 2.3, 2.4, 2.5, 2.6) 3. /18 (3.1) 4. /24 (4.1) 5. /30 (5.1) Total: /100 Directives officielles * Interdiction de toute communication verbale pendant l'examen. * Interdiction de quitter la salle pendant la première heure. * L'étudiant qui doit s'absenter après la première heure remettra sa carte d'étudiant au surveillant, l'absence ne devant pas dépasser 5 minutes. Un seul étudiant à la fois peut quitter la salle. * Toute infraction relative à une fraude, un plagiat ou un copiage est signalée par le surveillant au directeur de département ou au professeur qui suspend l'évaluation. F.A.S IFT1169 Trimestre Hiver, 2009: Examen Intra 1/9

Exercice 1 (10 points) Pour chaque terme lui associer une seule lettre des descriptions ci-dessous, qui lui correspond le mieux. Terme 1?: 2 Surcharge des opérateurs 3 L opérateur d accès à un membre de la classe 4 Constructeur de recopie 5 Variable statique de la classe 6 Affectation membre à membre 7 Destructeur 8 new et delete 9 Fonction amie 10 L encapsulation Correspondance Descriptions A) Un constructeur qui prend comme argument un objet de la même classe que la classe courante. B) C est le comportement par défaut de l opérateur «=». C) Le processus qui permet aux opérateurs du langage C++ d avoir des classes objets comme opérandes. D) Un opérateur du langage C++ qui ne peut être surchargé. E) Même si défini(e) à l extérieur de la classe, a quand même accès aux membres privés de la classe. F) Utilisé uniquement quand une copie de la variable doit être partagée par toutes les instances de la classe. G) Opérateurs utilisées pour l allocation et la libération de la mémoire. H) L inclusion d une chose dans une autre de telle manière qu elle ne soit pas apparente. I) L opérateur «.» ou «->». J) Il a la tâche de faire le ménage dans «la maison». IFT1169 Trimestre Hiver, 2009: Examen Intra 2/9

Exercice 2 (18 points) Supposer que la classe générique à l'entête suivante: template <class T1> class C1; Décrire les relations d'amitié établies lorsqu'on place chacune des déclarations ci-dessous, respectivement, dans la classe générique «C1». Les identifiants commençant par la lettre «f» correspondent à des fonctions, par la lettre «T» à un type quelconque et par la lettre «C» à des classes. 2.1 friend void f1(); 2.2 friend void f2(c1 < T1 > &); 2.3 friend void C2 :: f4(); 2.4 friend void C3 < T1 > :: f5(c1 < T1 > &); 2.5 friend class C5; 2.6 friend class C6 < T1 >; IFT1169 Trimestre Hiver, 2009: Examen Intra 3/9

Exercice 3 (18 points) Introduire les changements nécessaires pour que la classe «Paire», ci-dessous, puisse être une classe générique dont les champs membres «x» et «y», seront de types différents et qui supportent l'opération +. 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 class Paire { int x, y; public: Paire (int a, int b): x(a), y(b) { int getx ( ) { return x; int gety ( ) { return y; void setx (int a) { x=a; void sety (int b) { y=b; Paire & operator+ (const Paire & p) const { return Paire(x+p.x, y+p.y); ; IFT1169 Trimestre Hiver, 2009: Examen Intra 4/9

Exercice 4 (25 points) Que va afficher en sortie le programme suivant qui compile et s exécute correctement. 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 #include <iostream> using namespace std; class Voiture { int vitesse; public: Voiture( ) { vitesse=0; int getvitesse( ) { return vitesse; void acceleration1(int delta) { vitesse+=delta; virtual void acceleration2(int delta) { vitesse+=delta; ; class VoitureCourse: public Voiture { public: VoitureCourse( ): Voiture( ) { void acceleration1(int delta) { Voiture::acceleration1(2*delta); virtual void acceleration2(int delta) { Voiture::acceleration2(2*delta); ; void stop1(voiture& x) { x.acceleration1(-x.getvitesse( )); void stop2(voiture& x) { x.acceleration2(-x.getvitesse( )); int main( ) { Voiture c1, c2; c1.acceleration1(65); cout << c1.getvitesse( ) << endl; // Affichage -1- avec une courte explication stop1(c1); cout << c1.getvitesse( ) << endl; // Affichage -2- avec une courte explication c2.acceleration2(65); cout << c2.getvitesse( ) << endl; // Affichage -3- avec une courte explication stop2(c2); cout << c2.getvitesse( ) << endl; // Affichage -4- avec une courte explication VoitureCourse r1, r2; r1.acceleration1(100); cout << r1.getvitesse( ) << endl; // Affichage -5- avec une courte explication IFT1169 Trimestre Hiver, 2009: Examen Intra 5/9

69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 stop1(r1); cout << r1.getvitesse( ) << endl; // Affichage -6- avec une courte explication r2.acceleration2(100); cout << r2.getvitesse( ) << endl; // Affichage -7- avec une courte explication stop2(r2); cout << r2.getvitesse( ) << endl; // Affichage -8- avec une courte explication Voiture *p1=new VoitureCourse, *p2=new VoitureCourse; p1->acceleration1(100); cout << p1->getvitesse( ) << endl; // Affichage -9- avec une courte explication stop1(*p1); cout << p1->getvitesse( ) << endl; // Affichage -10- avec une courte explication p2->acceleration2(100); cout << p2->getvitesse( ) << endl; // Affichage -11- avec une courte explication stop2(*p2); cout << p2->getvitesse( ) << endl; // Affichage -12- avec une courte explication return 0; IFT1169 Trimestre Hiver, 2009: Examen Intra 6/9

Exercice 5 (30 points) Le programme suivant compile et s exécute correctement. 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 #include <iostream> #include <string> using namespace std; const int EmployeSalarie=1, EmployeHeure=2, EmployeCommission=3; struct Employe { string nom; int EmployeType; float SalaireAnnuel; float TauxHoraire; float Commission; ; float CalculPayeSemaine (Employe &e, float HeuresTravaillees, float VentesTotales) { double x = 0.0; switch (e.employetype) { case EmployeSalarie: return e.salaireannuel / 52; break; case EmployeHeure: return HeuresTravaillees * e.tauxhoraire; break; case EmployeCommission: return VentesTotales * e.commission/100; break; return x; int main( ) { struct Employe e[3]; e[0].nom="alain"; e[0].employetype=employesalarie; e[0].salaireannuel=52000.00; cout << e[0].nom << ':' << endl; cout << '$' << CalculPayeSemaine (e[0], 40, 0) << endl << endl; e[1].nom="bertrand"; e[1].employetype=employeheure; e[1].tauxhoraire=17.50; cout << e[1].nom << ':' << endl; cout << '$' << CalculPayeSemaine (e[1], 50, 8000) << endl << endl; e[2].nom="michel"; e[2].employetype=employecommission; e[2].commission=5.00; cout << e[2].nom << ':' << endl; cout << '$' << CalculPayeSemaine (e[2], 10, 25000) << endl << endl; return 0; L affiche en sortie obtenu après l exécution du programme : Alain: $1000 Bertrand: $875 Michel: $1250 Question : Il vous est demandé de réécrire le programme en utilisant un bon style orienté objet, en y incluant des membres privés, constructeurs nécessaires, l héritage, ligature dynamique, et des variables polymorphiques. Éliminer du programme toutes les constantes, «struct», l instruction de contrôle «switch/case», code redondant, les fonctions ordinaires (sauf la fonction «main»). Mise à part les modifications introduites pour satisfaire le style orientée objet, votre programme doit être équivalent à l original et doit afficher les mêmes résultats en sortie. IFT1169 Trimestre Hiver, 2009: Examen Intra 7/9

IFT1169 Trimestre Hiver, 2009: Examen Intra 8/9

IFT1169 Trimestre Hiver, 2009: Examen Intra 9/9