Home Random Page


CATEGORIES:

BiologyChemistryConstructionCultureEcologyEconomyElectronicsFinanceGeographyHistoryInformaticsLawMathematicsMechanicsMedicineOtherPedagogyPhilosophyPhysicsPolicyPsychologySociologySportTourism






TRAVAIL PRATIQUE N13

Thème :programmation avec l`utilisation des classes dérivées .

But du travail : réception de l`expérience de la programmation avec l`utilisation des principes de polymorphisme et de l`héritage.

 

Devoir

Il faut élaborer un organigramme et composer un programme pour la réalisation des actions indiquées dans le tableau 5.11 avec les éléments de la matrice donnée A[m x n] qui est composée des nombres entiers à valeurs arbitraires.

Il est nécessaire de prévoir deux classes,à savoir : celle de base et celle dérivée.

La classe de base doit comprendre les fonctions suivantes :

- la fonction pour faire entrer une série de nombres par clavier ;

- la fonction pour faire entrer une matrice de nombres d`un fichier externe ;

- la fontion pour faire sortir une matrice de nombres sur l`écran ;

- la fonction pour faire sortir une matrice de nombres dans un fichier externe ;

- la fonction pour faire sortir une série de nombres sur l`écran ;

- la fonction pour faire sortir une série de nombres dans un fichier externe.

 

Les deux dernières fonctions sont créées dans les variantes où le résultat est le vecteur de nombres.

Dans la classe dérivée, il faut prévoir les fonctions qui assurent l`exécution des actions indiquées dans le tableau 5.11.

Il est nécessaire de prévoir dans la fonction principale main( ) la possibilité de choisir la variante de l`entrée de la matrice (par clavier ou d`un fichier externe ).

L`affichage du résultat sur l`écran doit avoir la forme suivante :

 

PROGRAMMATION AVEC L`UTILISATION DES CLASSES

ET DES PRINCIPES DE POLYMORPHISME ET DE L`HÉRITAGE

Matrice de départ

. . . . . . . . . . . . . . .

. . . . . . . . . . . . . . .

Résultat du calcul

( matrice, vecteur )

. . . . . . . . . . . . . .

Òàbleau 5.11

¹ de variante Dimension de la matrice Sortes des actions
      Il faut échanger dans la matrice de départ les éléments :
4   de la diagonale principale et la dernière colonne, première et dernière colonne, première ligne et de la diagonale principale, première et dernière ligne, symétriques à la diagonale principale, première colonne et de la diagonale principale.  
      Il faut ranger en accroissement les éléments:
des lignes, des colonnes, des lignes paires, des colonnes paires, des lignes impaires, des colonnes impaires.
      Il faut ranger en décroissement les éléments:
des lignes, des colonnes, des lignes paires, des colonnes paires, des lignes impaires, des colonnes impaires.
      Il faut créer un vecteur :
des éléments maximums des lignes, des éléments minimums des colonnes, des sommes des éléments des lignes, des sommes des éléments des colonnes ,
      Il faut changer par zéro:
les elements maximums des lignes, les éléments maximums des colonnes, les éléments minimums des lignes, les éléments minimums des colonnes.

 



 

5.13.2 Généralités et recommandations pour l`exécution du travail

Une de conceptions principales du langage C++ est l`héritage. C`est un mécanisme qui permet d`hériter des propriétées d`une classe par l`autre.

La classe héritée par l`autre est appelée classe de base . La classe qui hérite est appelée classe dérivée. L`instrument d`héritage a ses règles bien déterminées.

Usuellement la création de l`hiérarchie des classes est commencée à la création de la classe de base. Les fonctions qui doivent être disposées dans la classe de base sont énumerées dans le devoir . Parmis ces fonctions il y a deux fonctions qui sont destinées à faire entrer la matrice par clavier et d`un fichier externe. Il y a deux fonctions qui sont destinées à faire ces actions mais avec un vecteur de nombres. Il y a deux fonctions pour faire sortir une matrice ( sur l`écran et dans un fichier externe ). Autrement dit, il y a quelques groupes des fonctions destinées à faire les actions ressemblantes. En tenant compte de ce fait il est rationnel d`utiliser le principe de polymorphisme . C`est-à-dire pour les fonctions ressemblantes il faut donner les mêmes noms. La diversité des ces fonctions est déterminée par la liste des paramètres. L`utilisation de queleques fonctions avec le même identificateur s`appele la surcharge des fonctions .

Il faut avoir en vue que la fonction qui utilise la variable du type de fichier doit obtenir l`adresse et le nom de ce fichier physique par la liste de paramètres. Cette méthode rend la fonction assez universele. L`adresse et le nom du fichier externe doivent être présentés dans la fonction principale main ( ).

Lors de la composition du texte de la fonction destinée à faire sortir l`information dans un fichier externe, il faut attirer l`attention à un détail. L`adresse et le nom du fichier externe est utilisée dans l`opérateur d`ouverture du fichier ( open ( ) ). Cette opération peut être fait seulement avec le fichier fermé. Avec cela il faut tenir compte du fait que l`information dans le même fichier peut transmettre des différentes fonctions. Par exemple, la phrase ‘’ Matrice de départ A’’ est transmise de la fonction principale main ( ), les valeurs des éléments de cette matrice A sont transmises d`une fonction-membre. Après cela nouvelle phrase ‘’Matrice de résultat B’’ est transmise de nouveau de la fonction principale main( ) etc. De telle manière l`information peut transmettre de différentes fonctions dans le même fichier externe. Par conséquent, chaque fois, avant d`appeler la fonction-membre pour faire sortir la partie suivante de l`information dans le fichier externe, il faut fermer ce fichier dans la fonction principale main( ). Cependant, si l`information n`est pas transmise de la fonction principale, par exemple, elle est transmite de l`autre fonction-membre alors le fichier externe doit être fermé dans cette fonction. Cela n`est pas commode et bien plus n`est même pas possible. Pour éviter ces difficultées, il est rationnele de construire d`après le principe suivant toutes les fonctions, qui font sortir l`information dans un fichier externe

// la fonction de la transmission de l`information dans un fichier externe

void outmatr (fstream & fw, char path[ ], float B[m][ ])

{

fw.close( );

fw.open(path,ios::out);

. . . . . . . . . . . . .

fw.close( );

fw.open(path, ios::app);

}

Une telle organisation du fonctionnement de la fonction permet de prévoir dans la fonction principale main( ) une seule ouverture de la variable du type de fichier ( au début ) et une seule fermeture de cette variable ( à la fin ). Par exemple,

void main ( )

{

const short M=3, N=4 ;

. . . . . . . . . . . . . . . . . .

fstream f1;

char h[ ]=’’rez.txt’’;

float C[M][N], D[M][N];

class_alfa obj; // declaration de l`objet obj

f1.open(h,ios::out); // ouverture de la variable du type de fichier f1

f1<<. . . . . ; // sortie de l`information de main( )

obj.outmatr(f1,h,C) ; // appel de la fonction-membre outmatr( )

f1<<. . . . . . ; // sortie de l`information de main( )

obj.outmatr(f1,h,D) ; // appel de la fonction-membre outmatr( )

f1<<. . . . . . ; // sortie de l`information de main( )

. . . . . . . . . . .

f1.close( ) ; // fermeture de la variable du type de fichier

}

 

5.13.3 Questions de contrôle et devoirs

1. Quel est le sens du principe de l`héritage ?

2. Dans quel cas la spécification protected est-elle utulisée ?

3. À quels membres de la classe de base peuvent avoir la disponibilité les membres de la classe dérivée ?

4. Quel est le sens du principe du polymorphisme ? Donnez la définition de la notion « surcharge d`une fonction » .

 

 


Date: 2015-12-24; view: 921


<== previous page | next page ==>
TRAVAIL PRATIQUE N 12 | TRAVAIL PRATIQUE N14
doclecture.net - lectures - 2014-2024 year. Copyright infringement or personal data (0.008 sec.)