Vous êtes sur la page 1sur 1

Programmation oriente objet pour le calcul Scientifique Master MIPS - Anne 2011-2012

TD/TP 2
Objectifs Introduire les concepts de classe, oprateur, hritage et interface (classe abstraite) sur des lments d'algbre linaire. Pr requis : Exercice 3 partie II du TD/TP 1 avec au minimum le solveur gradient conjugu test pour un type de matrice (le type matrice pleine tant la plus simple). Le code type sera ici la construction d'une matrice symtrique dfinie positive, d'un vecteur, la rsolution linaire associe ces deux lments et la vrification de la validit de cette solution. Un compte-rendu de TP individuel devra tre produit (uniquement ce TD/TP 2). Les diffrents lments du compte-rendu (code source, rapport au format PDF) devront tre envoys l'adresse pascal.have@ifpenergiesnouvelles.fr pour le mercredi 7 dcembre 2011 minuit. lments dalgbre linaire Exercice 4 : En reprenant les lments fonctionnels de l'exercice 3 partie II du TD/TP 1 (un seul type de matrice suffit ici), transformez l'encapsulation en struct et les diffrentes oprations algbriques en classes. Les classes ainsi construites seront formes par regroupement en units de sens. Exercice 5 : En reprenant les fonctions et mthodes obtenues la suite de l'exercice 4, transformez en oprateurs (operator) les oprations de sommes et produits. Surchargez l'oprateur d'criture sur flux operator<< pour crire des matrices et vecteurs. NB: Information complmentaire: std::cout << objet; quivaut operator<<(std::cout,objet); et appelle ainsi l'oprateur de signature
std::ostream & operator<<(std::ostream &, const TypeDObjet &);

C'est ainsi par la surcharge de cet oprateur pour un type TypeDObjet donn qu'il est possible d'obtenir l'criture sur flux d'un objet de type TypeDObjet (hors type de base). Exercice 6 : Introduisez le concept de matrice abstraite via une interface de matrice nomme IMatrice. Fates une modlisation UML des diffrents lments d'algbre linaire en prsence (oprations, rsolution, construction, remplissage, vecteur, matrices abstraite et les diffrentes variantes d'implmentations: pleine, creuse, diagonale...). En dfinir les potentielles limitations, en particulier vis--vis des concepts de remplissage (les discuter). Adaptez votre code pour manipuler les matrices au maximum via leur interface IMatrice et en particulier dans le solveur linaire (o la spcificit de la matrice ne doit plus du tout apparatre). Ajoutez une autre implmentation de matrice issues de l'exercice 3 partie II du TD/TP 1. Vrifier la porte des modifications induites par l'introduction de cette nouvelle implmentation. Exercice 7 : En instrumentant, les constructeurs et destructeurs des diffrentes classes (principalement les vecteurs et les matrices), observez les processus de construction et de destruction des objets. O observez vous des copies potentiellement pnalisantes pour les performances ? Que peuton faire pour y remdier ? Vous devrez ici appliquer au mieux les techniques C++ vues en cours pour les rduire au maximum (vous disposez a priori par encore de tous les lments techniques pour toutes les liminer).