SETIT 2005 3 rd International Conference: Sciences of Electronic, Technologies of Information and Telecommunications March 27-31, 2005 TUNISIA Programmation Orientée 0bjet d un Editeur Graphique dans un contexte d Enseignement Assisté par Ordinateur : EGEAO D.Souilem Boumiza 1, M.Ben Youssef 2 Ecole Nationale d Ingénieur de Monastir 1 Dalila.Souilem@enim.rnu.tn 2 maher222222003@yahoo.fr Résumé: C est dans un contexte d Enseignement Assisté par Ordinateur que nous travaillons et notre objectif est de concevoir un Editeur graphique convivial et simple qui sera utilisé aussi bien au niveau Système Auteur comme outil d aide à la création d un cours qu au niveau système Apprenant comme outil d aide au suivi d un cours. Les concepts de base de la réalisation de cet Editeur peuvent être évoqués à travers les points suivants : Elaborer des fonctionnalités graphiques de base (objets). Schématiser un graphe soit à partir de sa forme vectorielle soit à partir de sa forme bitmap. Création d une base d objets graphiques qui peut faire partie de la base d informations d un Système d E.A.O. EGEAO est programmé en Orienté Objet où chaque forme graphique élémentaire est représentée à l aide d objet défini par le triplet <identifiant, Attributs, Méthodes >. Mots clés: Editeur Graphique, Enseignement Assisté par Ordinateur, Héritage, Méthodes, Programmation Orientée Objet. 1 INTRODUCTION Notre Projet consiste à développer un Editeur Graphique dans un contexte d Enseignement Assisté par Ordinateur (EGEAO). La conséquence pratique de notre travail est de fournir un environnement qui permet de rendre le développement et la réalisation d'application d EAO plus complet en fournissant un moyen qui permet de créer ou modifier des dessins selon les besoins de l'enseignant ou selon les désirs de créativité de l'élève. L EGEAO va permettre d une part, aux enseignants et aux auteurs utilisant le système Auteur de créer facilement leur cours éducatifs multimédias toute en assurant le partage efficace et pertinent de l'interactivité entre l'étudiant et le système et respectant le concept de facilité/difficulté des questions en relation avec la compétence, la personnalité et l'intime conviction de l apprenant Comme ce logiciel sera mis à la disposition de tout utilisateur, même s il n est pas un informaticien, de plus le fait de disposer d une présentation agréable et d une grande souplesse d utilisation peut avoir une importance déterminante pour l utilisateur. Ainsi, notre premier but à réaliser était donc de créer une interface graphique qui englobe les principales fonctions qui puisse guider l utilisateur dans la création de son graphique à l aide de la représentation claire et facile de son menu principal. Un autre but que nous nous étions fixé était de développer un code aisément compréhensible, fortement commenté et relativement facile à maintenir ce qui nous insiste à utiliser un langage de programmation orienté objet. 2 LES PRINCIPALES FONCTIONS DE L EDITEUR GRAPHIQUE Cet éditeur graphique possède des outils permettant de traiter les images en fonction de besoins spécifiques de l'enseignant ou de l'élève. Ses principales fonctions sont les suivantes : Saisir et mémoriser des données graphiques. Construire des graphiques, tableaux, schémas. Traiter des images. Créer des dessins Importer des dessins à partir d'une banque de données graphiques. Mise à jour d'un fichier (modification d'un dessin, graphique). Exporter un dessin ou fichier vers un autre logiciel (dessin, traitement de texte, etc.)
3. L ENVIRONNEMENT DU TRAVAIL : 3.1 MFC (Microsoft Fondation Classes) Les Microsoft Fondation Classes (MFC) constituent à l heure actuelle l interface de programmation Windows la plus utilisée. Elles sont constituent sur un ensemble de classes prédéfinies bâties sur Win32 API autour desquelles s articule la programmation Windows avec Visual C++. On eut les voir comme l'aspect orienté objet de la programmation Windows. L utilisation des MFC simplifie considérablement la création d applications Windows, notamment en facilitant l accès à des classes existantes réputées stables et en permettant de réutiliser des structures développées par l utilisateur. Des assistants (Wizards) puissants créent en quelques secondes des applications opérationnelles et immédiatement utilisables ou de nouvelles classes dotées de la fonctionnalité souhaitée par le programmeur. Travailler avec MFC revient en quelque sorte à jouer avec un jeu de construction. Vous disposer les pièces à l intérieur d une structure prédéfinie, dans laquelle vous sont également proposés quantité d outils tous plus pratiques les uns que les autres. Le générateur de code créé des objets qui contiennent des fonctions membres permettant la communication avec Windows, le traitement des messages Windows et l échange des messages entre eux. Il reste au programmeur à ajouter les fonctions membres et les champs qui permettent de personnaliser les classes. Il nous est de plus possible de jouer sur l'héritage d'une ou plusieurs de ces classes afin de définir nos propres éléments basés sur les classes MFC, mais avec des propriétés que nous leur adjoindrons. Nous pourrons ainsi personnaliser nos classes pour doter nos programmes de fonctionnalités spécifiques dont ils ont besoin. La structure de L API Win32 est procédurale. Les MFC encapsulent leurs fonctions et proposent ainsi aux programmeurs une interface orientée objet. Les MFC proposent également un modèle complet d applications qui autorise la réalisation rapide et pratique de programmes complexes. Dans la programmation MFC, chaque type de fenêtre (application, document, vue, boite de dialogue ), correspond à une classe de base. Pour que la fenêtre ait un comportement spécifique dans chaque application (réaction aux événement), on définit pour chaque application et pour chaque type de fenêtre on définie une classe qui dérive (hérite) d une classe MFC de base. 3.2 Images bitmap et images vectorielles : L importation et l exportation d images vont bien au-delà du simple chargement/sauvegarde de fichiers image. Cela englobe, des algorithmes de dés encodage et d encodage propres à chaque format de fichier. On distingue deux grandes catégories d'images: Les images bitmap : il s'agit d'images pixellisées, c'est-à-dire un ensemble de points (pixels) contenus dans un tableau, chacun de ces points possédant une ou plusieurs valeurs décrivant sa couleur. Les images vectorielles: les images vectorielles sont des représentations d'entités géométriques simples telles qu'un cercle, un rectangle ou un segment. Ceux ci sont représentés par des formules mathématiques (un rectangle est défini par deux points, un cercle par un centre et un rayon, une courbe par plusieurs points et une équation) donc il est possible de lui appliquer facilement des transformations géométriques (zoom, étirement,...), tandis qu'une image bitmap, faite de pixels, ne pourra subir de telles transformations qu'au prix d'une perte d'information (distorsion). image vectorielle image bitmap 3.3 Structure d un fichier graphique *.BMP La structure d'un fichier bitmap est la suivante : Entête du fichier, Entête du bitmap, Palette (optionnellement), Corps de l image. 3.3.1 En-tête du fichier L'entête est composé de quatre champs : La signature (sur 2 octets), indiquant qu'il s'agit d'un fichier BMP à l'aide des deux caractères. La taille totale du fichier en octets (codée sur 4octets). Un champ réservé (sur 4 octets). L'offset de l'image (sur 4 octets), en français décalage, c'est-à-dire l'adresse relative du début des informations concernant l'image par rapport au début du fichier. 3.3.2 En-tête de l image L'entête de l'image est composé de: La taille de l'entête de l'image en octets (codée sur 4 octets). La largeur de l'image (sur 4 octets), c'est-à-dire le nombre de pixels horizontalement La hauteur de l'image (sur 4 octets), c'est-à-dire le nombre de pixels verticalement Le nombre de plans (sur 2 octets). Cette valeur vaut toujours 0 La profondeur de codage de la couleur (sur 2 octets), c'est-à-dire le nombre de bits utilisés pour coder la couleur. Cette valeur peut-être égale à 1, 4, 8, 16, 24 ou 32 La méthode de compression (sur 4 octets). Cette valeur vaut 0 lorsque l'image n'est pas compressée, ou bien 1, 2 ou 3 suivant le type de compression utilisé. La taille totale de l'image en octets (sur 4 octets). La résolution horizontale (sur 4 octets), c'est-à-dire le nombre de pixels par mètre horizontalement. La résolution verticale (sur 4 octets), c'est-à-dire le nombre de pixels par mètre verticalement.
Le nombre de couleurs de la palette (sur 4 octets) Le nombre de couleurs importantes de la palette (sur 4 octets). Ce champ peut être égal à 0 lorsque chaque couleur a son importance. 3.3.3 Palette de l image La palette est optionnelle. Lorsqu'une palette est définie, elle contient successivement 4 octets pour chacune de ses entrées représentant : La composante bleue (sur un octet). La composante verte (sur un octet). La composante rouge (sur un octet). Un champ réservé (sur un octet). 3.3.4 Codage de l image Le codage de l'image se fait en écrivant successivement les bits correspondant à chaque pixel, ligne par ligne en commençant par le pixel en bas à gauche. Les images en 2 couleurs utilisent 1 bit par pixel, ce qui signifie qu'un octet permet de coder 8 pixels. Les images en 16 couleurs utilisent 4 bits par pixel, ce qui signifie qu'un octet permet de coder 2 pixels. Les images en 256 couleurs utilisent 8 bits par pixel, ce qui signifie qu'un octet code chaque pixel. Les images en couleurs réelles utilisent 24 bits par pixel, ce qui signifie qu'il faut 3 octets pour coder chaque pixel, en prenant soin de respecter l'ordre de l'alternance bleu, vert et rouge. Effacement. Déplacement d'un objet. Rajoutons maintenant par exemple deux classes spécialisées : Ligne et Cercle. Chacune rajoute ses attributs propres : le rayon pour le cercle, la longueur et l'angle pour la ligne. Ainsi, les classes Ligne et Cercle disposent: Des attributs qu ils héritent de la classe de base. De leurs attributs propres qui traduisent leur spécialisation. Les méthodes de la classe de base sont également héritées. Les classes Ligne et Cercle n'ont pas, par exemple, à fournir de code pour la méthode getx chargée de renvoyer la valeur de l'attribut X. En revanche, elles sont libres de rajouter les méthodes qui leur sont spécifiques, en particulier des méthodes permettant d accéder aux attributs supplémentaires. 4. MISE EN OEUVRE DES NOTIONS DE LA POO DANS NOTRE APPLICATION La programmation orientée objets a pour but de rapprocher la représentation de la réalité en programmation. Elle permet d organiser et d exploiter des types abstraits de données à l aide des techniques d encapsulation, d héritage et de liaisons dynamiques et polymorphismes. Chaque forme graphique élémentaire est représentée sous forme d objet qui présente des caractéristiques propres qui permettent de l identifier (attributs) et d autres qui sont commun avec les autres objets. La représentation est faite de telle façon que ces formes communiquent et interagirent entre elles à l aide des relations. Chaque objet graphique peut être considéré relativement à un point de base que nous représenterons par ses coordonnées cartésiennes X et Y. On lui associe également sa Couleur ainsi que l'épaisseur du trait. Hormis la création et la destruction d'objets, nous associons les méthodes suivantes à notre objet graphique : Accès en lecture et en écriture des attributs. Affichage. En outre, les objets Ligne et Cercle redéfinissent les méthodes Afficher et Effacer : en effet, un cercle ne s'affiche pas de la même manière qu'une ligne : c est le polymorphisme appliqué aux méthodes Afficher et Effacer dans le cadre des classes Ligne et Cercle et qui se présente sous deux formes : Une forme faible : la surcharge qui permet d utiliser le même nom de méthode / procédure / fonction avec des listes paramètres différentes. La forme forte du polymorphisme concerne la redéfinition d une méthode d une classe mère par ses classes dérivées en utilisant la même signature d arguments (même liste de paramètres et même type de retour). On se rend compte très vite par cette modélisation simple des avantages que l'on retire à utiliser l'héritage : Le code est de taille plus faible car l'on factorise au niveau des classes généralisées les comportements communs à toute une hiérarchie. Au niveau des classes dérivées, seul le code spécifique reste à écrire, il est donc inutile de réinventer la roue à chaque étape, et le développement est plus rapide.
La modélisation repose sur une approche naturelle qui permet de créer des systèmes conceptuellement cohérents. Le mécanisme de polymorphisme fort repose largement sur l héritage. Le code des classes les plus élevées dans la hiérarchie (les plus généralistes) est utilisé très souvent. Il gagne donc rapidement en fiabilité du fait d un déboguage précoce. 5. PRESENTATION DE MENU OUTILS DE L EDITEUR GRAPHIQUE Ce menu permet de réaliser un bon nombre de fonctionnalité graphique tel que personnaliser le tracer d un objet où choisir un format pour le texte ou encore visualiser le traçage d une courbe. La commande Set Ligne, permet de personnaliser le traçage d un trait en choisissant une couleur, une épaisseur et également un style. La commande Set Cercle, permet de personnaliser le traçage d un cercle puisque elle offre la possibilité de choisir une couleur intérieure,un style de remplissage... Commande Set Rectangle : cette boite de dialogue s affiche nous permet de personnaliser le traçage de notre rectangle puisque elle offre la possibilité de choisir une couleur intérieure, un style de remplissage... La commande Graphe : En choisissant cette commande, une boite de dialogue s affiche et qui nous permet de Visualiser le traçage d un graphe à partir d une série de points fournis par l utilisateur. 6. EXEMPLE DE CONCEPTION D UN COURS Système Auteur : création d un cours Cours : Géométrie Titre : Cercle 6.1 Définition Courbe plane fermée dont tous les points sont à égale distance d'un point intérieur appelé centre. La distance commune est appelée rayon. Courbe algébrique plane. Étant donné un point A d'un plan euclidien P et un nombre réel R, on appelle cercle (ou circonférence) de centre A et de rayon R l'ensembles des points P dont la distance à A est égale à R Un cercle est une sphère dans le plan euclidien Le cercle de diamètre AB est le lieu des points d'où l'on voit le segment AB sous l'angle droit Le cercle est une courbe fermée de courbure constante Le cercle est la figure qui enferme la surface maximale pour un périmètre donné 6.2 Equations Coordonnées cartésiennes x² + y² = R² de centre O de centre I (a, b) (x-a)² + (y-b)² = R² Coordonnées polaires x = a + R cos θ y = b + R sin θ Coordonnées x = a + R (1-t²) / (1+t²) paramétriques y = b + 2Rt / (1+t²) avec t = tg ( ) Système Apprenant : suivi d un cours (évaluation) Cours : Géométrie Titre : Cercle. Commande Set Format Texte : En cliquant une boite de dialogue apparaît et nous permet de choisir une police, un style, une taille et une couleur pour l affichage de notre chaîne de caractère. Commande Equation : En choisissant la commande Equation, une boite de dialogue s affiche et nous permet de Visualiser la forme et la pente d une droite dont l équation caractéristique est donnée par l utilisateur NB : Barrer la mauvaise réponse Q : Définir un cercle? Quadrilatère, côtés opposés parallèles et égaux deux à deux. Courbe fermée de courbure constante. Ensemble de points dont la distance au centre n est pas égale. Q : Comment est représenter graphiquement un cercle? NB : Mettre une croix sur la réponse juste
CONCLUSION L objectif d un tel outil est de pouvoir définir au moyen d un langage Orienté Objet des objets à dessiner, afin de les placer dans des didacticiels. Associé à un système expert, cette interface graphique devrait aider à la mise en oeuvre d un système d EAO à qualité appréciable. Nous pensons que de telles fonctionnalités graphiques provoqueront un imaginaire à la fois marquant, concis et normatif, ce qui est important pour l enseignement. REMERCIEMENTS Nous faisons un devoir de remercier toute la famille, nos professeurs, le personnel administratif et technique du l école qui ont contribué à nous assurer une bonne formation et nous garantir tous les moyens de succès. Il nous est très agréable de remercier vivement Mohamed Slim BOUHLEL & Bassel SOLAIMAN en acceptant notre travail. Veuillez trouver ici l expression de notre grande estime et de notre profonde reconnaissance. REFERENCES (Maryléne & Medard 1997) Marylène Micheloud, Medard Rieder, Programmation orientée objet en C++, une approche évolutive. Presse polytechnique et universitaires romandes 1997. (Soyed & Kachbouri 1995) Soyed Hassen & Kachbouri khaled, Utilitaires de développement d un système d informatique multimédia appliqué à l EAO 1995 (www1) http://www.recherche.aix-mrs.iufm.fr (www2) http://castyde.christian.free.fr