Vous êtes sur la page 1sur 6

USTHB/FEI/Master Réseaux et Télécommunications

Examen Final en Programmation Orientée Objet (12/02/2022)

Nom : …………………………….. Prénoms :…………………………….Matricule :………….......

Pour effectuer une classification du trafic réseau, on souhaite développer un programme orienté
objet qui permet de constituer une base de données à traiter par des techniques de classification
basées sur le plus proche voisin.

1. Pour la base de données, on demande de créer le template d’une classe « Base » avec un seul
typename T. Cette classe possède deux attributs de type int (Nbr : nombre de données, Dim :
dimension de la donnée). On considère un pointeur sur un vecteur Label de type int et un
pointeur sur une matrice Data de type T. Ajouter un constructeur d’arguments pour initialiser
Nbr et Dim. Ce constructeur doit faire une allocation dynamique de label à une taille Nbr et une
allocation dynamique de data avec un nombre de lignes Nbr et un nombre de colonnes Dim
(3 points).

Label : 0 1 … Nbr-1 Data : 0 1 … Dim-1

1 2 … Dim-1

… .. … …..

Nbr-1 … … Nbr-1, Dim-1

2. Ajouter une fonction « Valeurs » sans arguments et sans retour qui se charge de remplir la base
de données composée de Label et Data comme suit (3 points):

 De 0 à Nbr/ 2 : Label prend des valeurs nulles, et Data [i=0…Nbr/2][j=0…Dim-1] prend des
valeurs aléatoires dans l’intervalle [100, 200].

 De Nbr/2 à Nbr-1 : Label prend des valeurs égales à 1, et Data [i=Nbr/2…Nbr-1][j=0…Dim-1]


prend des valeurs aléatoires dans l’intervalle [0, 100].

3. Ajouter une fonction « Display » sans arguments et sans retour. La fonction doit demander à
l’utilisateur de choisir entre l’affichage de Label ou de Data (On peut utiliser un entier pour
récupérer le choix). Afficher l’attribut choisi (2 points).

1
//Interface de la classe Base :
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………………………………….
.………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………………………………..
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………..…
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………………………………..
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………..…
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………..…
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
2
…………………………………………………………………………………………………………………………………………………………..…
4. Pour effectuer la classification des données, on demande de créer un template d’une classe
« Classif » avec un seul typename T et amie avec Base. Cette classe possède un seul attribut k
de type int. Cette classe va servir de classe mère pour dériver une autre classe.
 Ajouter un constructeur par défaut qui met k à 1 et un autre constructeur qui permet une
initialisation par argument.
 Pour réaliser la classification par le plus proche voisin, on développe une fonction « Décision »
qui retourne le label de la classe (0 ou 1). La fonction reçoit en argument un pointeur sur un
tableau d’une donnée « Test » de type T de taille « Dim », et un pointeur sur un objet B de la
classe Base. La fonction doit effectuer le calcul de la distance Euclidienne entre Test et chaque
ligne de la matrice Data de B, comme suit (4 points):

∑ √( [] [ ][ ])

J : une ligne donnée de la matrice Data qui est un attribut de B transmis par pointeur à la fonction.

Une fois toutes les distances calculées, la fonction doit repérer la position J de la donnée qui permet
la distance minimale et renvoyer son label.

// Interface de la class Classif :


………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………………………………….
.………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………………………………….
.………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
3
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………………………………….
.………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………………………………….
.………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………

5. Définir le template d’une classe « Classif2 » qui hérite de Classif et Amie avec Base. Ajouter un
constructeur par argument pour initialiser k (attribut de Classif). Créer une surcharge de la
fonction « Décision » qui retourne une valeur int et reçoit en argument un pointeur sur un tableau
Test de type T et un pointeur sur un objet Base B. Cette fonction effectue une classification par
les k plus proches voisins (K supérieur à 1). On calcule la distance entre Test et chaque ligne de
Data comme suit (5 points) :

∑ ( [] [ ][ ])

Pour stocker les distances calculées, déclarer (par allocation dynamique) un tableau « Dist » de type
T et de dimension Nbr, et déclarer un autre tableau « Lab » type int et taille k. Le programme de la
fonction doit chercher les k plus petites distances et récupérer leurs label dans Lab. A partir de ce
tableau, on compte le nombre de 0 et de 1 et on retourne la valeur qui possède le plus grand nombre
d’apparition. (Pour récupérer la valeur de k, on utilise this->k).

Que doit-on faire pour permettre au compilateur d’exécuter Décision de Classif 2 dans le cas d’un
polymorphisme ? (1 point bonus)
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………

4
// Interface de la classe « Classif 2 »

………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………………………………….
.………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………………………………..
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………..…
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………………………………..
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………..…
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………..…
………………………………………………………………………………………………………………………………………………………………

5
6. Pour exécuter les programmes dans la fonction main, on demande de créer un objet Base et
appeler les fonctions Valeurs et Display. Créer ensuite un tableau dynamique de type Classif de
deux éléments. Le premier élément est un objet Classif (Constructeur par défaut) et le
deuxième est un objet Classif 2 (Constructeur par argument : prendre k supérieure à 1).
Effectuer un appel commun des fonctions Décision pour les deux objets (3 points).

// Programme de la fonction main :


………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………………………………….
.………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………………………………………………..
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………

Bon courage

Vous aimerez peut-être aussi