Vous êtes sur la page 1sur 3

Université Ibn Khaldoun –Tiaret Faculté des Sciences Appliquées

Département de Génie Electrique Filière (M1ELN) (2021/2022)


Matière : P.O.O en C++ Correction de l'examen

Questions de cours (6 pts)


1. Donnez la définition d'un constructeur et d'un destructeur. (1 pts)

Le constructeur est la fonction membre appelée automatiquement lors de la création d'un


objet (en statique ou en dynamique). Cette fonction membre est la première fonction
membre à être exécutée, il s'agit donc d'une fonction permettant l'initialisation des
variables.
Le constructeur d'un objet porte le même nom que la classe et ne possède aucune valeur de
retour (même pas void).

 un constructeur porte le même nom que la classe dans laquelle il est défini
 un constructeur n'a pas de type de retour (même pas void)
 un constructeur peut avoir des arguments
 la définition d'un constructeur n'est pas obligatoire lorsqu'il n'est pas nécessaire

Le destructeur est une fonction membre dont la définition ressemble étrangement à celle du
constructeur, hormis le fait que le nom du destructeur est précédé d'un tilde (~), et qu'il ne
possède aucun argument.

un destructeur porte le même nom que la classe dans laquelle il est défini et est précédé
d'un tilde
 un destructeur n'a pas de type de retour (même pas void)
 un destructeur ne peut pas avoir d'argument
 la définition d'un destructeur n'est pas obligatoire lorsque celui-ci n'est pas
nécessaire

2. Que signifier les mots : surcharge, polymorphisme et héritage? (2 pts)

L’héritage est une technique extrêmement efficace pour créer des classes plus spécialisées,
appelées sous-classes, à partir de classes plus générales déjà existantes, appelées super-
classes. Elle représente la relation «est-un»

Le polymorphisme est une fonctionnalité de l'héritage : la capacité d'appeler une méthode


en fonction du type réel d'un objet (sa classe). ne pas confondre avec la surcharge, où les
fonctions peuvent avoir un même nom, mais différents types de paramètres.

3 . Quelle est la différence entre les trois mots clés de droit d'accès : public, private et
protected ? (2 pts)

Il y a généralement trois mots-clés pour le contrôle d’accès : public, private et protected.


Les membres définis après la propriété public sont accessibles à tous les utilisateurs de la
classe. D’autre part, le spécificateur private définit les membres qui ne peuvent être
accessibles que par les fonctions membres de la classe et le spécificateur protected définit
les membres qui ne peuvent être accessibles que par les fonctions membres de la classe et
les fonctions membres de la classe dirivée .
4 . Quel est le rôle de la bibliothèque iostream dans un programme C++?(1 pts)
Utiliser l'en-tête <iostream> pour inclure des objets de flux globaux dans C++
La bibliothèque d'entrée/sortie est la partie centrale de la STL C++ utilisée par presque
tous les programmes du monde réel.

Exercice 01 : (08 pts 0.5 pour chaque instruction)

Commenter les instructions des trois fonctions (main(),fa(),fb()) par "Ok" ou "Interdit"

class A { z = 1; //OK }
private : int x; int main() {
protected : int y; A a; //OK
public : int z ; B b; //OK
void fa( ); a.x = 1; //Interdit
}; a.y = 1; //Interdit
class B : private A { a.z = 1; //OK
public : void fb( ); a.fa( ) ; //OK b.x = 1; //Interdit (0.5pts
}; pour les deux instructions)
void A :: fa ( ) b.y = 1; //Interdit
{x = 1; //OK b.z = 1; //Interdit
y = 1; //OK b.fa( ) ; //Interdit
z = 1; //OK } b.fb( ) ; //OK
}
void B :: fb () {x = 1; // Interdit
y = 1; //OK

Exercice 02 : (06 pts)

1. Définir une classe Rectangle ayant les attributs suivants : Longueur et Largeur. (1pt)
2. Ajouter un constructeur d’initialisation. (1pt)
3. Définir les accesseurs aux attributs de la classe. (1pt)
4. Ajouter les méthodes suivantes : (3pt)
- périmètre ( ) : retourne le périmètre du rectangle.

- surface ( ) : retourne la surface du rectangle.

- isCarre ( ) : vérifie si le rectangle est un carré.

class
Rectangl
e
{
Private:
double longueur, largeur;

Public:
double getLargeur() { return largeur; }
void setLargeur(double value) { largeur = value; }

double getLongueur { return longueur; }


void setLongueur(double value) { longueur = value; }

public Rectangle(double longueur=0, double largeur=0)


{
this.longueur = longueur;
this.largeur = largeur;
}

int EstCarre()
{
if (longueur == largeur)
{
return 1;
}
else
{
return 0;
}
}

double Surface()
{
return longueur * largeur;
}

double Perimetre()
{
return 2 * (longueur + largeur);
}
}

Vous aimerez peut-être aussi