• Aucun résultat trouvé

Labo 3 – Classes simples

N/A
N/A
Protected

Academic year: 2022

Partager "Labo 3 – Classes simples"

Copied!
6
0
0

Texte intégral

(1)

Labo 3 – Classes simples

1. Présentation

1.1. Objectifs pédagogiques

- Mettre en œuvre la notion de classe sur des cas simples.

1.2. Recommandations

- Appliquer de façon judicieuse les principes d’encapsulation.

- Public, Private ?

- Créer un projet pour le développement et le test unitaire des classes.

- Intégrer ces classes dans le logiciel de commande lorsqu’elles sont au point.

2. Tâches à effectuer 2.1. Objectif

Le but de ce travail de laboratoire est de créer une petite application de commande de la machine de gravage laser, offrant les fonctionnalités suivantes :

- Apprentissage d’un segment constitué de 2 points A et B.

- Exécution d’un gravage laser du segment A et B. A la fin du gravage laser, le temps de gravage mesuré doit être affiché à l’écran.

- Chargement d’une nouvelle pièce.

Le segment A-B doit être persistant, c'est-à-dire que si on quitte le logiciel, puis on le redémarre, il doit toujours connaître les positions A et B qui avaient été apprises lors de la dernière exécution.

2.2. Espace de nommage

Toutes les classes seront développées dans l’espace de nommage ACOO.

2.3. Classes de données

2.3.1. Classe Point

Créer une classe « Point » comportant 3 champs X, Y et Z.

Ecrire l’opérateur de sérialisation << vers ostream produisant un affichage

(2)

2.3.2. Classe Segment

Créer une classe « Segment » comportant 2 points.

Ecrire l’opérateur de sérialisation << vers ostream.

2.3.3. Apprentissage de points

Ecrire une fonction d’aprentissage de point (pas une méthode) recevant en paramètre un objet point.

L’apprentissage d’un point se déroule de la façon suivante :

- Proposer à l’utilisateur de déplacer le robot vers la coordonnée courante (dernière coordonnée apprise).

- Exécuter le mode « déplacement manuel ».

- Après sortie du mode « déplacement manuel », demander à l’utilisateur si la coordonnée courante du robot doit être mémorisée pour le point considéré.

2.3.4. Apprentissage de segments

Ecrire une fonction d’aprentissage de segment recevant en paramètre un objet segment, et permettant d’apprendre les 2 points constituants ce segment.

2.4. Classes de traitement

2.4.1. Sérialisation XML

Les logiciels orientés objets ont fréquemment besoin d’enregistrer des données dont la composition est très variable et qui sont organisées de façon hiérarchique. Pour enregistrer les données dans un format lisible et supportant la grande variabilité des données, un format textuel nommé XML pour eXtensible Markup Language est largement utilisé aujourd’hui.

Un fichier XML bien formé peut être visualisé avec le logiciel Internet Explorer (il suffit qu’il ait l’extension .XML), ou avec le logiciel gratuit « XML Notepad ».

(3)

Exemple : Une liste de points de l’espace R3

XML impose qu’au niveau principal, il n’y ait qu’un seul nœud.

Si l’écriture par programme de fichiers XML ne pose pas de problèmes, la relecture n’est pas évidente et passe par la réalisation d’un analyseur lexical.

Pour simplifier la relecture de fichiers, nous utiliserons la convention suivante : une ligne comporte soit une balise, soit une valeur. En utilisant cette convention, la relecture se fait ligne à ligne, ce qui simplifie considérablement le traitement.

Exemple XML respectant notre convention :

(4)

2.4.2. Classe XMLWriter

Créer une classe offrant des méthodes facilitant la sérialisation XML de données. Cette classe reçoit un ostream lors de sa création, et permet ensuite : - d’écrire une balise ouvrante ou fermante.

- d’écrire une valeur pour les différents types courants (bool, int, double, const char *) encadrée par une balise ouvrante et fermante.

Ajouter ensuite une méthode XMLWrite aux classes Point et Segment, permettant de sérialiser les données correspondantes vers le XMLWriter.

Tester.

2.4.3. Classe XMLReader

Créer une classe offrant des méthodes facilitant la désérialisation XML de données. Cette classe reçoit un istream lors de sa création, et permet ensuite : - De lire une balise ouvrante ou fermante. Si la ligne lue est différente de la

balise attendue, une exception doit être levée.

- De lire une valeur pour les différents types courants (bool, int, double, const char *) encadrée par une balise ouvrante et fermante.

Ajouter ensuite une méthode XMLWrite aux classes Point et Segment, permettant de sérialiser les données correspondantes vers le XMLWriter.

Tester.

2.4.4. Chronomètre

Créer une classe chronomètre. Un objet chronomètre offre les possibilités suivantes :

- Accéder au temps courant chronométré.

- Démarrer le chronomètre.

- Arrêter le chronomètre.

- Réinitialiser le chronomètre.

(5)

La fonction long GetTickCount() de <windows.h> retourne le nombre de millisecondes écoulées depuis le lancement de Windows. Il suffit de mémoriser la valeur de GetTickCount à 2 instants et d’en faire la différence pour connaître le temps écoulé entre ces instants.

Tester.

2.5. Application

Exploiter les classes et fonctions développées pour écrire l’application de gravage laser d’un segment. Les différentes fonctionnalités utiles seront accessibles depuis un menu.

2.6. Gestion des erreurs

Durant les attentes de fin de mouvement, il faut tester l’occurrence d’erreurs.

Avec le simulateur, des erreurs peuvent survenir si un déplacement hors de l’espace de travail du robot est demandé.

Lorsqu’une erreur survient, le traitement en cours doit être interrompu, la lampe rouge doit être allumée, et le message d’erreur doit être affiché.

Lors du démarrage de la prochaine opération, les erreurs doivent être quittancées automatiquement.

(6)

2.7. Signalisation

Pendant les modes de déplacement manuels, la lampe orange doit être allumée pour signaliser le danger.

Pendant les modes automatiques, la lampe verte doit être allumée.

Lorsque la machine s’arrête sur un cas d’erreur, la lampe rouge doit être allumée jusqu’au prochain démarrage qui quittancera les erreurs.

3. Travaux à rendre 3.1. Livrables

- Placez l’intégralité du dossier contenant votre projet Visual C++ 2008 dans le dossier dépôt étudiants.

- Une version imprimée du code source comportant votre nom et prénom.

3.2. Délai

Les travaux sont à rendre impérativement en l’état à la fin de la séance, et terminés après une semaine.

Références

Documents relatifs

r la peirrnission de travailler. Il eût un succès formidable. est pas de mon invention. en tournant la main droite comme une roue. C'était /'express et nous

On reprend dans cette partie les données relatives à la consommation alimentaire3. de diérentes catégories socio-professionnelles étudiées dans les

Montrer que Σ est une variété complexe com- pacte de dimension 1.. On admet que Σ

Très souvent, il est placé avant le verbe mais pas toujours.  Il peut être placé juste avant

Lors de la location d'une place de parking, l'employé indique au système le numéro du client s'il est enregistré ou enregistre le client s'il ne l'est pas.. Il demande ensuite

[r]

Cette année, ce sont les 3QEM accompagnés de leur titulaire, Virginie Houben et les 3S4/S5 avec leur éducatrice, Isabelle Mathot, qui ont su le mieux gérer la nouvelle mouture

Les neuroleptiques se caractérisent par leurs propriétés réductrices des troubles psychotiques.. PSYCHOSE = altération de l’expérience de réalité ≠ névrose Quelles sont