Vous êtes sur la page 1sur 6

La république algérienne démocratique et populaire

Ministère de l’enseignement supérieur et de la recherche scientifique


Université M’hamed Bougara Boumerdes
Faculté de technologie

Département de l’ingénierie des systèmes électriques / Spécialité : Électronique


des Systèmes embarqué

M1 / S1 / Module : C++

DEVOIR MAISON N2
__________________________

Présenté par :
Nadjib Bounaim

L’année universitaire : 2023/2024


 Exercise 1:
La correction de programme :
#include <iostream>
#include <string>
using namespace std;

class Personne {
private:
string nom_;
int age_;

public:
void initialiser(string nom, int age) {
nom_ = nom;
age_ = age;
}

void afficherInformations() {
cout << "Nom: " << nom_ << ", Age: " << age_ << " ans" << endl;
}
};

int main() {
Personne personne1;
Personne personne2;

personne1.initialiser("Alice", 25);
personne2.initialiser("Bob", 30);

personne1.afficherInformations();
personne2.afficherInformations();

return 0;
}

Les fautes son :


On a déplacé les membres privés nom_ et age_ dans la classe Personne.
Correction des noms de variables dans la fonction.

 Exercice 2 :
 l’explication de code :
la correction de code :
La première faute c été ( using namespace std;)
La deuxième Animal()
La troisième private:
Le quatrième string race_;
La derniere animal.afficherInformations();

Le fonctionnement de ce code est comme suite :


Ce code définit deux classes : `Animal` et `Chien`. La classe `Animal` a deux attributs privés, `nom_` et
`age_`, ainsi qu'un constructeur et un destructeur. Le constructeur prend le nom et l'âge de l'animal en
paramètre et affiche un message lors de son appel. Le destructeur affiche également un message lors de
son appel. La méthode `afficherInformations()` est une méthode constante qui affiche les informations de
l'animal.
La classe `Chien` est une sous-classe de `Animal`. Elle a un attribut privé, `race_`, ainsi qu'un
constructeur et un destructeur. Le constructeur de `Chien` appelle le constructeur de la classe mère
`Animal`, en passant les paramètres du nom et de l'âge, puis initialise l'attribut `race_`. Le destructeur
d'une instance de `Chien` appelle le destructeur de la classe mère `Animal`. La méthode
`afficherInformations()` est surchargée dans la sous-classe `Chien` pour afficher les informations du chien,
y compris le nom, l'âge et la race.
Dans le programme principal, une instance de la classe `Animal` est créée, puis la méthode
`afficherInformations()` est appelée. Ensuite, une instance de la sous-classe `Chien` est créée avec un
nom, un âge et une race, et la méthode `afficherInformations()` est appelée. Les messages d'appel des
constructeurs et des destructeurs sont affichés lors de la création et de la destruction des instances.

 la correction finale :
#include <iostream>
#include <string>

using namespace std;

class Animal{

public:
Animal(string nom, int age) : nom_(nom), age_(age){
cout << "Constructeur appele." << endl;
}
~Animal() {
cout << "Destructeur appele." << endl;
}
void afficherInformations() const{
cout << "Animal:Nom :" << nom_ << ", Age :" << age_ << " ans" << endl;
}
public:
string nom_;
int age_;
};

class Chien : public Animal {


public:
Chien(string nom, int age, string race) : Animal(nom, age), race_(race) {
cout << "Constructeur appele." << endl;
}
~Chien(){
cout << "Destructeur appele." << endl;
}
void afficherInformations() const {
cout << "Chien: Nom - " << nom_ << ", Age - " << age_ << " ans, Race - " <<
race_ << endl;
}
private:
string race_;
};

int main(){
Animal animal("Anima", 5);
animal.afficherInformations();

cout << endl;

Chien chien("Buddy", 3, "Labrador");


chien.afficherInformations();

return 0;

 Exercice 3 :
Écriture d’un programme en C++ qui utilise des classes pour représenter les livres et la bibliothèque :

#include <iostream>
#include <vector>

using namespace std;

class Livre {
public:
Livre(string titre, string auteur, int annee, string isbn)
: titre_(titre), auteur_(auteur), annee_(annee), isbn_(isbn) {}

void afficherInformations() const {


cout << "Titre: " << titre_ << ", Auteur: " << auteur_
<< ", Année: " << annee_ << ", ISBN: " << isbn_ << endl;
}

private:
string titre_;
string auteur_;
int annee_;
string isbn_;
};

class Bibliotheque {
public:
void ajouterLivre(const Livre& livre) {
livres_.push_back(livre);
}

void afficherLivres() const {


cout << "Livres dans la bibliothèque:" << endl;
for (const auto& livre : livres_) {
livre.afficherInformations();
}
}

private:
vector<Livre> livres_;
};

int main() {
Bibliotheque bibliotheque;

while (true) {
cout << "\nMenu:\n1. Ajouter un livre\n2. Afficher tous les livres\n3.
Quitter\n";
int choix;
cin >> choix;

switch (choix) {
case 1: {
string titre, auteur, isbn;
int annee;

cout << "Entrez le titre du livre: ";


cin.ignore(); // Pour gérer les espaces dans le titre
getline(cin, titre);

cout << "Entrez l'auteur du livre: ";


getline(cin, auteur);

cout << "Entrez l'année de publication du livre: ";


cin >> annee;
cout << "Entrez l'ISBN du livre: ";
cin >> isbn;

Livre nouveauLivre(titre, auteur, annee, isbn);


bibliotheque.ajouterLivre(nouveauLivre);

cout << "Livre ajouté avec succès à la bibliothèque." << endl;


break;
}
case 2:
bibliotheque.afficherLivres();
break;
case 3:
cout << "Programme terminé. Au revoir!" << endl;
return 0;
default:
cout << "Choix non valide. Veuillez réessayer." << endl;
}
}

return 0;
}

La preuve que notre programme marche très bien :

Vous aimerez peut-être aussi