• Aucun résultat trouvé

Programmation par Objets, TD 2: H´eritage

N/A
N/A
Protected

Academic year: 2022

Partager "Programmation par Objets, TD 2: H´eritage"

Copied!
4
0
0

Texte intégral

(1)

Programmation par Objets, TD 2: H´eritage

Exercice 1. Classe Cercle

On suppose donn´ee la classe Point suivante :

c l a s s P o i n t{ p u b l i c:

P o i n t (d o u b l e x, d o u b l e y) : x(x) , y(y) {}

v o i d d e p l a c e (d o u b l e dx, d o u b l e dy) {x += dx; y += dy;}

v o i d a f f i c h e() {std::cout< <" P o i n t de c o o r d o n n e e s ( " < < x < < " , "

< < y < < " ) "< <std::e n d l;;}

d o u b l e g e t X() {r e t u r n x;}

d o u b l e g e t Y() {r e t u r n y;}

p r i v a t e: d o u b l e x,y;

};

On souhaite r´ealiser une classe Cercle disposant des m´ethodes suivantes :

— un constructeur avec les coordonn´ees du centre et un rayon

deplaceCentre

changeRayon

getCentre

affiche

a. D´efinir la classe Cerclecomme ayant un objet membre Point b. D´efinir la classe Cercle comme d´eriv´ee de Point

c. Quelle option est pr´ef´erable ? Exercice 2. Panier en ligne

Un site de vente en ligne repr´esente ses articles par des objets. Il y a par exemple une classe

Chaussure, une classePantalon, une classeBonnet, etc. Chaque classe contient les informations relatives

`

a l’article, comme sa marque, son identifiant unique (un nombre entier) et son prix unitaire. Le client remplit un panier et le site doit calculer le montant correspondant `a ce panier afin de lui faire effectuer le paiement

a. Proposer une structuration et une impl´ementation de ces classes d’articles et de la classe

Panier.

Exercice 3. Compile – Compile pas

Pour chaque fichier suivant, indiquer s’il compile ou ne compile pas et dans ce cas, indiquer les raisons et proposer une correction pour chacune.

c l a s s A{

int f() {r e t u r n 1;}

p u b l i c:

int g() {r e t u r n 2;}

};

L3 Maths/info – TD d’algorithmique – Cl´ement Pernet Page 1/4

(2)

c l a s s B: p r o t e c t e d A{ p u b l i c:

v o i d h() { int x = f() ; int y =g() ; r e t u r n x+y;

} };

int m a i n() { A a; B b;

A * ab = new B() ; int n = B::h() ; int m = ab- >g() ;

}

# i n c l u d e < i o s t r ea m >

c l a s s A{

int _x;

p u b l i c:

v o i d f() {std::cout< <" je s u i s un A "< <std::e n d l;}

v i r t u a l int g() c o n s t {r e t u r n _x;}

A(int x) :_x(x) {}

};

c l a s s B: p u b l i c A{

v o i d f() {std::cout< <" je s u i s un B "< <std::e n d l;}

int g() o v e r r i d e {r e t u r n _x+ 1 ; } int g(int x) {r e t u r n 3+g() ;}

};

int m a i n() { A a(1) ; B b;

B * c = &a;

c.g(3) ;

}

Exercice 4. Trace d’un programme

a. Que fait le programme suivant ?

# i n c l u d e < i o s t r ea m >

c l a s s A{ p r o t e c t e d:

int _x; p u b l i c:

A(int x=0) :_x(x) {}

int f() {r e t u r n _x+ + ; } v i r t u a l int g() {r e t u r n _x;}

v i r t u a l v o i d h() {std::cout< <g() < <std::e n d l;}

};

c l a s s B: p u b l i c A{

p u b l i c:

int g() o v e r r i d e {r e t u r n _x+ = 2 ; } };

c l a s s C: p u b l i c B{

p u b l i c:

int f() {r e t u r n g() + 1 ; }

v o i d h() {std::cout< <f() < <std::e n d l;}

L3 Maths/info – TD d’algorithmique – Cl´ement Pernet Page 2/4

(3)

};

int m a i n() { A a; B b; C c;

A& ab = b; B& bc = c; A& ac = bc; a.h() ; b.h() ; c.h() ; ab.h() ; bc.h() ; ac.h() ;

}

Exercice 5. Conception de hi´erarchie de classe

Dans une entreprise, il y a des Employ´es qui ont un nom, et un identifiant unique dans l’entrepise : leur num´ero d’employ´e.

Parmis ces employ´es, certains sont des Managers. Ceux-ci g`erent un ensemble d’employ´es. Par ailleurs ils ont un niveau hi´erarchique qui mesure le nombre de niveaux d’encadrement o`u ils se trouvent : un employ´e non-manager a un niveau 0, et un Manager a un niveau +1 par rapport `a tous les employ´es qu’il g`ere.

a. Proposer une structuration en classe de ces personnels. Il faut en particulier pouvoir disposer d’une m´ethodeaffichequi affiche les informations caract´eristiques de chaque personnel. On veillera

`

a ce que les num´eros d’employ´e soient automatiquement g´en´er´es.

b. Impl´ementez les m´ethodes.

c.L’entreprise dispose aussi d’employ´es temporaires dont la dur´ee du contrat doit aussi figurer.

Parmis eux, les consultants sont aussi des Manager. Impl´ementez des classes pour ces personnels Exercice 6. Th´eorie des ensembles

Hierarchie des structures alg´ebriques de l’ensemble Z

On souhaite repr´esenter les diff´erentes structures alg´ebriques (ensemble, groupe, anneau) de l’ensemble Z, grˆace `a la programmation par objets.

a. Proposer une hi´erarchie de classes pour repr´esenter les diff´erentes structures de l’ensembleZ, dont les ´el´ements seront repr´esent´es par desint: ensemble, groupe, anneau.

b. Ecrire les impl´ementations de ces classes.

G´en´eralisation

On souhaite maintenant aussi repr´esenter les diff´erentes structures alg´ebriques de l’ensemble Z/nZ={0,1, . . . , n−1} : ensemble, groupe additif, anneau, corps.

c.Proposer une hi´erarchie de classes bas´ee sur la hi´erarchie pr´ec´edente, en d´etaillant les nouvelles classes et leurs nouveaux membres.

d. Y-a-t-il plusieurs possibilit´es ? Si oui, laquelle pr´ef´erez-vous ?

e. Comment isoler les structures communes de groupe, d’anneau, de corps, propres `a ces en- sembles ?

f. Proposer une nouvelle impl´ementation bas´ee sur les classes abstraites ou sur les interfaces.

L3 Maths/info – TD d’algorithmique – Cl´ement Pernet Page 3/4

(4)

Espace vectoriel et anneau des polynˆomes Z/pZ[X]

On souhaite maintenant repr´esenter les polynˆomes de degr´e inf´erieur `a un entierd, `a coefficients dans un corps Z/pZ, avec p premier : (Z/pZ[X])d. On rappelle que cet ensemble a une structure d’espace vectoriel sur Z/pZ.

g. Quelle structuration de classe allez-vous employer (interface, h´eritage, classe interne, objet membre...) pour cette nouvelle classe.

h. Ecrire cette classe polynˆ´ ome.

i. Peut-on utiliser votre classe pour repr´esenter indiff´erement les polynˆomes `a coefficients dans Z et dansZp. Faire les modifications n´ecessaires le cas ´ech´eant.

Pour aller plus loin : structures g´en´eriques et polymorphisme

On rappelle que l’ensemble des polynˆomes de degr´e inf´erieur `a d, `a coefficients dans Z/pZ poss`ede ´egalement la structure d’anneau, de part sa loi de multiplication ×. On souhaiterait donc maintenant illustrer le fait que les deux ensemblesZ/pZ et (Z/pZ[X])d sont des anneaux.

j. Peut-on utiliser le mˆeme proc´ed´e que pour la question f ?

k. Proposer une solution. (Indication : on pourra essayer de cr´eeer une classe abstraiteElement de laquelle d´eriveront des classes r´epr´esentant les ensembles Z/nZ et les polynˆomes (Z/pZ[X])d pour utiliser le polymorphisme.

Remarque : on verra bientˆot en cours que la programmation g´en´erique permet de r´esoudre plus ´el´egamment cette difficult´e.

L3 Maths/info – TD d’algorithmique – Cl´ement Pernet Page 4/4

Références

Documents relatifs

Groupe infini dont les ´ el´ ements sont d’ordre fini. On dit d’un groupe (G, ·) qu’il est d’ordre fini (ou fini ) si l’ensemble G

[r]

Etudier la convergence simple et la convergence uniforme des suites de fonctions ci-dessous, ´ en pr´ecisant `a chaque fois les domaines de convergence simple et les domaines

Bien sˆ ur, pour calculer I, on peut faire autrement: par exemple une variante en utilisant le T.C.D.. ou bien (mais ce n’´ etait pas la question pos´ ee !) utiliser les techniques

Comment repr´esenter une s´erie statistique (classes d’amplitude diff´erente) `a l’aide d’un histogramme..

Conjecturer ` a partir de combien de voitures fabriqu´ ees et vendues l’entreprise r´ ealisera un b´ en´ efice.. Pour combien de voitures fabriqu´ ees le b´ en´ eficie

Indiquer en montrant le calcul la moyenne de cette s´erie.. Indiquer la m´ediane de cette s´erie en indiquant

En d´ eduire le sens de variation de f et dresser son tableau des variations sur l’intervalle [0 ; 20].. D´ eterminer la valeur moyenne de la fonction f sur l’intervalle [2