Département d informatique Professeur : Clermont Dupuis Université Laval Bureau : IFT Programmation orientée objet.

Documents pareils
GOL502 Industries de services

TP1 : Initiation à Java et Eclipse

Chapitre 2. Classes et objets

Structurer ses données : les tableaux. Introduction à la programmation

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

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

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

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

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

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

L exclusion mutuelle distribuée

Chapitre VIII. Les bases de données. Orientées Objet. Motivation

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

Plan Pédagogique du cours

Une introduction à Java

Programmer en JAVA. par Tama

Les structures. Chapitre 3

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

La technologie Java Card TM

as Architecture des Systèmes d Information

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

Premiers Pas en Programmation Objet : les Classes et les Objets

Cours: Administration d'une Base de Données

OLYMPIADES ACADEMIQUES DE MATHEMATIQUES. 15 mars 2006 CLASSE DE PREMIERE ES, GMF

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

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

Langage Java. Classe de première SI

Traduction des Langages : Le Compilateur Micro Java

UML. Diagrammes de classes (suite) Delphine Longuet.

Diagramme de classes

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Introduction à l héritage en C++

Connexion à une base de données. Connexion à une base de données. Connexion à une base de données Développement d'une application

et Programmation Objet

DÉRIVÉES. I Nombre dérivé - Tangente. Exercice 01 (voir réponses et correction) ( voir animation )

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres 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)

C est quoi le SWAT? Les équipes décrites par James Martin s appellent SWAT : Skilled With Advanced Tools.

ACTIVITÉ DE PROGRAMMATION

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

Java c est quoi? Java pourquoi?

TD/TP PAC - Programmation n 3

Initiation à l algorithmique

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

UML (Diagramme de classes) Unified Modeling Language

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

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

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

Bases Java - Eclipse / Netbeans

Alfstore workflow framework Spécification technique

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

INITIATION AU LANGAGE JAVA

Patrons de Conception (Design Patterns)

Projet Active Object

Programme Compte bancaire (code)

Université de Sherbrooke, Département d informatique

basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB Olivier Augereau Formation UML

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Les chaînes de caractères

Cours Composant 2. Qualité logicielle et spécications algébriques

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

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

Chapitre 1 : La gestion dynamique de la mémoire

Statistiques Descriptives à une dimension

Chapitre 2 Le problème de l unicité des solutions

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

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

UE C avancé cours 1: introduction et révisions

GOL-502 Industrie de services. Travaux Pratique / Devoir #7

LES TYPES DE DONNÉES DU LANGAGE PASCAL

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Comparaison de fonctions Développements limités. Chapitre 10

Programmation en Java IUT GEII (MC-II1) 1

Nouvelles propositions pour la résolution exacte du sac à dos multi-objectif unidimensionnel en variables binaires

Bases de programmation. Cours 5. Structurer les données

Ordinateurs, Structure et Applications

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

Table des matières Sources

Classes et Objets en Ocaml.

Les algorithmes de base du graphisme

Le modèle standard, SPE (1/8)

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

Initiation à la programmation en Python

Le langage C. Séance n 4

Qu est-ce qu une probabilité?

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

Master Modélisation Aléatoire Paris VII, Cours Méthodes de Monte Carlo en nance et C++, TP n 2.

POLITIQUE D EXECUTION DES ORDRES SUR INSTRUMENTS FINANCIERS

Conditions de Maintenance et Service Après-Vente

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

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

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

Développement d un interpréteur OCL pour une machine virtuelle UML.

Chapitre 10. Les interfaces Comparable et Comparator 1

BASES DE DONNEES ORIENTEES OBJETS BDA10.1

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

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

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml

Dérivation : Résumé de cours et méthodes

Continuité en un point

Transcription:

Département d informatique Professeur : Clermont Dupuis Université Laval Bureau : 3976 IFT-19946 Programmation orientée objet Date : 17 décembre 2001 Aucune documentation permise. Examen sur 60 Question # 1. (3 points) Considérons une classe abstraite «Objet». (i) Que renferme cette classe? (ii) Quelle conséquence cette propriété a-t-elle sur la classe «Objet»? (iii) Quelle conséquence cette propriété a-t-elle sur les classes dérivées de la classe «Objet»? Question # 2. (3 points) En dehors des principes d héritage et de polymorphisme, le concept de classe apporte un élément nouveau par rapport au concept de type de donnée. Il s agit du principe d encapsulation. À travers ce principe d encapsulation, trois opportunités s offrent à nous. Quelles sont-elles? Question # 3. (3 points) Considérons une classe «Element» renfermant des fonctions et classes amies. (i) Quel est le privilège que détiennent ces fonctions et classes amies? (ii) Doit-on accorder ce privilège systématiquement? Dites pourquoi? Question # 4. (4 points) Dans quelle situation le polymorphisme est appelé à jouer un rôle? Soyez explicite. Donnez un exemple concret décrivant cette situation.

Question # 5. (4 points) Distinguez entre la relation d héritage et la relation d agrégation ou d association. Donnez deux contextes où l utilisation du concept d héritage n est pas souhaitable. Soyez explicite. Question # 6. (2 points) Considérons les classes «Objet», «Polygone» et «Triangle» où «Objet» est une classe de base; «Polygone» est une classe dérivée de la classe «Objet» et «Triangle» est une classe dérivée de la classe «Polygone». La classe de base «Objet» renferme la donnée membre suivante : enum statut categorie; où le type de donnée statut est défini comme suit : enum statut { objet, polygone, triangle }; Comment faites-vous pour initialiser correctement la donnée membre categorie lorsque vous créez des objets de l une ou l autre des trois classes? Expliquez! Question # 7. (2 points) En quoi les fonctions membres de type const d une classe viennent appuyer le principe d encapsulation? Question # 8. (3 points) Décrivez trois approches vous permettant de construire une classe «Pile» où la définition de chaque élément de la pile est inconnue lors de la conception et de l implantation de cette classe. Question # 9. (6 points) Pour développer des systèmes informatiques, on doit prendre en compte plusieurs critères de qualité d un logiciel. Nommez-en trois. Donnez leur signification. Question # 10. (6 points) Décrire de façon détaillée les étapes de mise en œuvre d un programme test. 2

Question # 11. (10 points) Vous partez en expédition prochainement. Vous devez déterminer les objets que vous transporterez dans votre sac à dos sachant que vous ne voulez pas transporter un poids de plus de W kg. Sachant que chaque objet est décrit comme suit : - code entier unique représentant l'objet, - nom de l'objet (au plus 15 caractères), - nombre d'unités (valeur entière), - poids unitaire de l'objet (kg.), vous supposez l existence d une classe «Objet» permettant de créer un objet, d accéder aux caractéristiques de l objet ou de les mettre à jour. On vous demande de construire une classe "Sac_a_dos" qui renfermera les objets que vous emporterez tout en n'excédant pas le poids maximum W. Vous devez pouvoir créer un nouveau sac à dos avec un poids maximum défini, ajouter un nouvel objet ou en enlever un à votre sac à dos à partir de son code unique, vérifier la présence ou non d un objet dans le sac à dos à partir de son code numérique et détruire le sac à dos au complet. Donnez uniquement la spécification fonctionnelle et la représentation interne des données de la classe «Sac_a_dos» (i.e. le contenu du fichier en-tête «Sac_a_dos.h») en supposant que la classe «Objet» est disponible. Note : L utilisation d un constructeur et d un destructeur est obligatoire. Question # 12. (6 points) Soit la spécification de la classe «Polynome» suivante : class Polynome { /* Spécification fonctionnelle de la classe "Polynome". Composantes : Chaque composante représente un terme du polynôme de degré n. Structure : La structure choisie est une suite de n termes. Domaine : Le i ième terme du polynôme est de la forme a i x i : */ protected : int degre; float * coefficients; 3

public : Polynome(int n); /* Permet de construire un polynôme nul de degré n. Pré - Nil. Post - Nous avons un polynôme nul de degré n. */ void Inserer_Terme(int i, float Coefficient); /* Permet d'insérer le i ième terme dont le coefficient est passé en paramètre. Pré - Le polynôme de degré "degre" a déjà été créé. 0 <= i <= degre. Post - Le i ième terme fait maintenant partie du polynôme. */ float Acces_Coefficient_Terme(int i); /* Permet d'accéder au coefficient du i ième terme du polynôme. Pré - Le polynôme de degré "degre" a déjà été créé. 0 <= i <= degre. Post - Retourne le i ième coefficient du polynôme. */ }; (i) float Evaluer_polynome(float x); /* Permet d'évaluer le polynôme à x et retourne le résultat. Pré - Le polynôme est déjà créé. Post - Retourne la valeur du polynôme évalué à x. */ Réécrire la spécification de cette classe c est-à-dire, modifier les fonctionnalités de la classe «Polynome» afin de pouvoir prendre en compte la portion de code suivante : Polynome P(3); P[2] = 3.9f; P[1] = 2.7f; cout << P[0] << P[1] << P[2] << P[3]; cout << P(2.5); (ii) Donnez l implantation de la classe «Polynome» à partir de la spécification fournie en (i) (i.e. le contenu du fichier «Polynome.cpp»). 4

Question # 13. (2 points) Soit la définition d une classe «Collection_de_tableaux», vous décidez d introduire une nouvelle fonction permettant d afficher à l écran les caractéristiques de chaque tableau d une collection. En ajoutant dans le fichier «Collection_de_tableaux.h» la déclaration appropriée, vous devez faire en sorte que cette fonction d affichage soit la plus simple possible d utilisation. Indiquez un moyen pour y arriver. Question # 14. (2 points) Qu entend-on par pointeur généralisé? Question # 15. (2 points) Dans la librairie STL, on retrouve plusieurs conteneurs comme par exemple, les conteneurs «map» et «set» désignant respectivement un ensemble et un ensemble ordonné. Dans chaque cas, les composantes de chaque ensemble, ordonné ou pas, doivent être distinctes. Pour tenir compte de cette exigence, de quelle façon, chaque composante d un ensemble est représentée dans ces conteneurs? Question # 16. (2 points) Donnez 2 différences que l on retrouve entre les langages JAVA et C++ en ce qui a trait aux concepts vus dans ce cours. 5