Vous êtes sur la page 1sur 6

USTHB/FEI/Département de Télécommunications /Master RT 29-01-2020

‫جامعة هواري بومدين للعلوم والتكنولوجيا‬


Université des Sciences et de la Technologie Houari Boumediene

Faculté d’Electronique et d’Informatique

Département de Télécommunications

Programmation Orientée Objets en C++


Examen Final (Durée 1h15)

Nom : Note :

Prénom : /20

Matricule :

***************************************************************************************

1. Ecrire l’interface d’une classe « signal » avec 4 attributs tels que : n (Nombre d’échantillons), m
(Moyenne du signal), std (Ecart type) et un pointeur data (Vecteur contenant les échantillons). Notons
que m, std et data doivent avoir le type double. La classe dispose de 4 méthodes publiques :
 Un constructeur par argument pour initialiser n (m et std doivent être initialisés par défaut à 0) et
effectue l’allocation dynamique de la mémoire pour data.
 Une fonction « Init » qui initialise data par des valeurs aléatoires dans l’intervalle [0,50].
 Une fonction « Stat » qui calcule la moyenne et l’écart type de data.
 Une fonction « Display » qui affiche tous les attributs de la classe.

// Interface de la classe signal :

…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
1
USTHB/FEI/Département de Télécommunications /Master RT 29-01-2020

…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………

2. Pour effectuer des traitements sur signal, on définit une classe « Traitements » qui dispose de 2
méthodes publiques :
 Une fonction « centrer » (avec un objet signal comme argument et sans valeur de retour) qui normalise
les valeurs de data selon l’équation suivante :

(𝑑𝑎𝑡𝑎[𝑖] − 𝑚 )2
𝑑𝑎𝑡𝑎[𝑖] =
𝑠𝑡𝑑

 Une fonction « Filtrage » qui effectue un filtrage moyenneur aux échantillons de data. La fonction
reçoit un pointeur sur un objet signal et revoie un autre objet signal. Le filtre contient 3 éléments
contenus dans un vecteur « fit » avec une valeur de 1/3. Pour chaque échantillon data[i], l’opération de
filtrage se fait comme suit :

(𝑑𝑎𝑡𝑎[𝑖 − 1] ∗ 𝑓𝑖𝑡[0]) + (𝑑𝑎𝑡𝑎[𝑖] ∗ 𝑓𝑖𝑡[1]) + (𝑑𝑎𝑡𝑎[𝑖 + 1] ∗ 𝑓𝑖𝑡[2])

Le signal filtré doit être mis dans le vecteur data d’un autre objet signal qui sera retourné au programme
appelant.

N.B : Il faut prendre en considération le chemin d’accès à data selon le type de l’argument utilisé.

2
USTHB/FEI/Département de Télécommunications /Master RT 29-01-2020

 Que doit-on faire pour permettre à Traitements la manipulation directe des attributs de Signal ?

…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………

// Interface de la classe Traitements : (Ecrire le code de filtrage à l’extérieur de l’interface)

…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………

3
USTHB/FEI/Département de Télécommunications /Master RT 29-01-2020

3. Pour tester les programmes des classes, on demande de créer une instance de la classe signal. Appeler les
fonctions Init et Stat. Appliquer ensuite, les traitements centrer et filtrage et mettre le résultat dans un
nouvel objet signal dont on affiche les attributs par la fonction Display.

// Programme main :

…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………

4. Créer une classe « sinus » qui dérive de signal. Cette classe possède un seul attribut fréquence f de type
double. Ajouter les méthodes suivantes :
 Un constructeur par arguments pour initialiser les attributs.
 La fonction Init qui initialise data par : 𝑑𝑎𝑡𝑎[𝑖] = sin⁡(2. 𝜋. 𝑓. 𝑖).
 La fonction Display qui affiche le nom de la classe et appelle la fonction Display de signal

//Interface de la classe sinus :

…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
4
USTHB/FEI/Département de Télécommunications /Master RT 29-01-2020

 Dans main, créer un tableau qui va contenir un objet de type signal, et un objet sinus. On demande
d’effectuer un appel simultané des fonctions Init et Display. Quelles sont les modifications à apporter sur
la classe signal pour permettre l’héritage et l’exécution des fonctions Init de chaque classe ?

…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………

Pour les deux objets, appeler les fonctions Init, Stat, Filtrage et Display (On rappelle que Filtrage appartient à
la classe Traitements).

// Programme main :

…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………

5. Créer un template d’une classe « vecteur » avec un typename T. La classe contient deux attributs : un
pointeur sur Vect de type T et un entier n qui désigne la taille de Vect. Ajouter les méthodes publiques
suivantes :

 Un constructeur par arguments pour initialiser n et faire une allocation dynamique pour Vect.
 Une fonction « Valeur » qui reçoit comme argument un pointeur sur un vecteur a de type T et sans valeur
de retour. Cette fonction doit affecter les valeurs de a à Vect.
 Une fonction compare qui compte le nombre de fois où deux valeurs opposées soient égales
(Vect[0]=Vect[n-1], Vect[1]=Vect[n-2],….). La fonction renvoie le nombre retrouvé.

5
USTHB/FEI/Département de Télécommunications /Master RT 29-01-2020

// Interface de la classe Vecteur :

…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………

 Dans Main créer un vecteur a de type int contenant 100 éléments et rempli par des valeurs aléatoires dans
l’intervalle [0, 5]. Créer un objet Vecteur avec n =100. Appeler ensuite les fonctions valeur et compare.

// Programme Main :

…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………

6
Bon Courage

Vous aimerez peut-être aussi