module SIN21 Rendre un syste me communicant Analyse UML et algorithmie 1 Modification du cahier des charges



Documents pareils
Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1


INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Programmation en Java IUT GEII (MC-II1) 1

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

TD3: tableaux avancées, première classe et chaînes

1.6- Génération de nombres aléatoires

Programme Compte bancaire (code)

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Programmation C++ (débutant)/instructions for, while et do...while

I. Introduction aux fonctions : les fonctions standards

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Cours d initiation à la programmation en C++ Johann Cuenin

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml

STS SE. FreeRTOS. Programmation réseau WIFI. Programmation réseau. Socket Tcp. FlyPort smart Wi-Fi module

Le langage C. Séance n 4

Cours d Algorithmique et de Langage C v 3.0

et Programmation Objet

Projet L1, S2, 2015: Simulation de fourmis, Soutenance la semaine du 4 mai.

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Corrigé des exercices sur les références

Chapitre 10. Les interfaces Comparable et Comparator 1

Notions fondamentales du langage C# Version 1.0

TD Objets distribués n 3 : Windows XP et Visual Studio.NET. Introduction à.net Remoting

TP : Gestion d une image au format PGM

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu.

Algorithmique et Programmation, IMA

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

INFO-F-105 Language de programmation I Séance VI

Java Licence Professionnelle CISII,

Cours de C++ François Laroussinie. 2 novembre Dept. d Informatique, ENS de Cachan

Classe ClInfoCGI. Fonctions membres principales. Gestion des erreurs

Création d objet imbriqué sous PowerShell.

Premiers Pas en Programmation Objet : les Classes et les Objets

TP 1. Prise en main du langage Python

TP1. Outils Java Eléments de correction

Langage Java. Classe de première SI

COMPARAISONDESLANGAGESC, C++, JAVA ET

Chapitre 2. Classes et objets

Cours Programmation Système

Tp 1 correction. Structures de données (IF2)

Programmation MacOSX / ios

Plan du cours. Historique du langage Nouveautés de Java 7

Développement d un logiciel de messagerie instantanée avec Dotnet (version simplifiée)

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

OCL - Object Constraint Language

Plateforme PAYZEN. Définition de Web-services

Algorithmique et programmation : les bases (VBA) Corrigé

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Généralités. javadoc. Format des commentaires. Format des commentaires. Caractères spéciaux. Insérer du code

Cours 1: Java et les objets

Sélection du contrôleur

Programmer en JAVA. par Tama

Modélisation PHP Orientée Objet pour les Projets Modèle MVC (Modèle Vue Contrôleur) Mini Framework

Introduction à l héritage en C++

TRAAM STI Acquisition et exploitations pédagogiques des données sur un système pédagogique

TP1 : Initiation à Java et Eclipse

Introduction au langage C

as Architecture des Systèmes d Information

Introduction à l algorithmique et à la programmation M1102 CM n 3

Génie Logiciel I. Cours VI - Typage statique / dynamique, fonctions virtuelles et classes abstraites, flots d entrées / sorties, et string

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Les structures. Chapitre 3

Bases de programmation. Cours 5. Structurer les données

Programmation Objet - Cours II

Recherche dans un tableau

Définition des Webservices Ordre de paiement par . Version 1.0

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e

STAGE IREM 0- Premiers pas en Python

INITIATION AU LANGAGE JAVA

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Université de Bangui. Modélisons en UML

Claude Delannoy. 3 e édition C++

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

Le prototype de la fonction main()

.NET - Classe de Log

Cahier Technique. «Développer une application intranet pour la gestion des stages des étudiants» Antonin AILLET. Remi DEVES

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Création d'un site dynamique en PHP avec Dreamweaver et MySQL

Programmation avec des objets : Cours 7. Menu du jour

ACTIVITÉ DE PROGRAMMATION

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

Installation d'un serveur sftp avec connexion par login et clé rsa.

Guide Utilisateur - Guide général d'utilisation du service via Zdesktop ou Webmail v.8. Powered by. Version EXOCA 1

Administration du site (Back Office)

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

Généralités sur le Langage Java et éléments syntaxiques.

Programmation système I Les entrées/sorties

Transcription:

Module SIN221 Rendre un syste me communicant Analyse UML et algorithmie Objectifs : Modifier des diagrammes UML suite à la modification du cahier des charges. Caractériser et valider une classe en C++. Prérequis : langage HTML UML module SIN21 Documents/ressources nécessaires : le projet console C++ Builder de départ donné dans le fichier SIN22_projet_console_de_depart_pour_stagiaires.zip 1 Modification du cahier des charges Aujourd hui les serveurs web sont implantés dans de nombreux produits industriels. C est devenu un standard de fait car il est facile de trouver un navigateur pour l affichage. La modification de notre cahier des charges consiste donc : à pouvoir afficher les données présentes dans l IHM de départ vers une page Web de manière automatique. à pouvoir activer ou désactiver la fonctionnalité à la demande. Le travail de modification suivra les étapes suivantes : modification des diagrammes UML utilisés dans le module SIN21 (diagramme de cas d utilisation, diagramme de séquence, diagramme de classes (imposé celui là) et diagramme de déploiement). Mise au point de la nouvelle classe IHM_WEB (l algorithme de la méthode GenererPageWeb). Intégration et validation. 2 Intégration des nouvelles contraintes dans les diagrammes UML. La modification du cahier des charges n entraine pas la réécriture complète des diagrammes UML. Au contraire, UML est aussi là pour arriver à mesurer l impact des changements dans le code du logiciel. SIN221_ _Communication_Web_ _analyse_uml_v2 1/5

Indications préparatoires : Le projet original de la station sous Visual Paradigm ne présente que 4 diagrammes. Il est bon de rappeler ici que même si UML 2 propose 13 diagrammes, ils ne sont pas tous à implémenter! UML propose des outils pour modéliser un système/logiciel le mieux possible. Ici avec 4 diagrammes nous avons largement fait le tour. Parmi les 4 diagrammes, le diagramme de classe sera peut être le plus difficile à comprendre, c'est pour cela qu'il est fourni. Celui ci représente la structure logicielle. La création d une page web pour l affichage des données météo va ainsi avoir pour conséquence la mise au point d une classe à part qui aura pour rôle la création de cette page. Comme déjà dit, elle se nommera IHM_WEB. Travail à faire Commentaire [B1]: Ajouter des vidéos? Après avoir bien compris les modifications, vous avez à les traduire sur les diagrammes UML de la manière suivante : Les fonctionnalités décrites par le diagramme de cas d utilisation sont quasiment identiques sauf que maintenant la consultation devra aussi se faire par navigateur web (indication : il faut penser au lien de spécialisation dans ce cas). Le diagramme de séquence montre un serveur web en plus. On complètera le diagramme de séquence pour faire apparaitre la ou les interactions avec le logiciel. Le diagramme de déploiement vous montre la présence de quatre machines distinctes. Vous devez compléter les liens. Vous utiliserez le fichier SIN22_OREGON_WEB.vpp pour compléter les diagrammes (à ouvrir avec Visual Paraadigm). Des notes y ont été insérées pour vous guider. Le diagramme de classes vous est donné. Il fait apparaitre une nouvelle classe IHM_WEB dont le travail est de générer une page web à jour des données météo. 3 Algorithme de la méthode GenererPageWeb La déclaration quasi complète de la classe IHM_WEB est la suivante : class IHM_WEB private : char chemin_enregistrement_page_web[1000] ; public : IHM_WEB(char* pchemin) //Constructeur strcpy(chemin_enregistrement_page_web, pchemin); bool GenererPageWeb(int temperature, int point_de_rosee, int humidite, int etat_meteo, int pression, bool etat_batterie ) //CODE DE LA MÉTHODE A COMPLÉTER (VOIR LA SUITE) ; Remarque : L implémentation du constructeur (première méthode appelée automatiquement lors de la création de l objet et portant le même nom que la classe) ne fait pas partie du travail. La méthode GenererPageWeb doit permettre de créer un fichier html contenant les données à afficher, c est pour cela que cette méthode prend en paramètre toutes les informations à afficher. Le pseudo code de la méthode vous est donné ci dessous : SIN221_ _Communication_Web_ _analyse_uml_v2 2/5

Méthode GenererPageWeb Déclarations (toutes les variables sont passées en paramètre) Temperature : entier Pression : entier Point_de_rosee : entier Etat_meteo : entier Humidite : entier Etat_batterie : booléen Valeur de retour : TRUE (si création fichier ok) ou FALSE Début FIN SI Ouvrir/Créer fichier html OK ALORS Ecrire entête de page HTML Ecrire "TEMPERATURE : " puis Temperature Ecrire "PRESSION : " puis Pression Ecrire "HUMIDITE : " puis Humidite Ecrire "POINT DE ROSEE : " puis Point_de_rosee SI Etat_batterie vaut TRUE ALORS Ecrire "Batterie OK" SINON Ecrire "Problème avec la batterie" FinSI SELON la variable Etat_meteo CAS 12 : Ecrire "Météo ensoleillée" CAS 6 : Ecrire "Ciel voilé" CAS 2 : Ecrire "Couvert" CAS 3 : Ecrire "pluvieux" DEFAUT : Ecrire "indéterminé" FinSELON Ecrire pied de page HTML Fermer fichier Renvoyer TRUE // >signifie que le fichier a été créé SINON Renvoyer FALSE //signifie que le fichier n'a pas été créé FinSI Le code de retour de la méthode est un booléen signifiant que la page web a été générée ou pas. Travail à faire A l aide de l algorithme ci dessus et des éléments qui vous sont donnés en annexe 1, complétez le code de la méthode GenererPageWeb() dans le fichier ihm_web.cpp de votre projet. Votre code doit écrire une syntaxe html dans un fichier! Vous devez donc écrire des lignes de code html en y mélangeant vos variables (regardez bien le code de départ qui vous est donné comme exemple dans le projet fourni!). Vous testerez dans un projet console (qui n'affiche qu'une fenêtre noire!) votre solution. Pour cela vous utiliserez le projet console fourni que vous n'aurez qu'à compléter (voir annexe 2 pour la structure du projet C++ Builder). SIN221_ _Communication_Web_ _analyse_uml_v2 3/5

rem : Lorsque vous lancerez le programme final, vous devrez aller voir le résultat dans le répertoire Debug\Win32 de votre projet console. Vous devrez y trouver le fichier html. ANNEXE Ecriture dans un fichier en C++ L utilisation des fichiers est en général assez simple. En C++ cela se fait en utilisant des objets de la bibliothèque standard. Ici nous ne traiterons que ce dont nous avons besoin, c'est à dire de l écriture dans un fichier, la lecture ne faisant pas partie du projet. Mais les principes sont les mêmes. Ci dessous, un exemple de code que je vais commenter pour explications : #include <ofstream> #include <iostream> using namespace std; int main () int var = 10; ofstream monfichier ; monfichier.open("essai.html") ; //ouvre un fichier à l'endroit de l'exécutable if monfichier.is_open() //on vérifie que le fichier est bien ouvert! cout << "Fichier ouvert " << endl; //ligne non obligatoire monfichier << "une phrase qui sera écrite dans le fichier" ; monfichier << "On peut aussi écrire la valeur d'une variable : " << var; monfichier << "et puis encore une autre phrase..."; monfichier.close() ; else cout << "Probleme à l'ouverture du fichier!" << endl; ofstream monfichier : cette ligne permet de déclarer un objet monfichier de type ofstream. monfichier.open("essai.html") : cette méthode permet tout simplement d'ouvrir le fichier. Il existe des options mais qui ne sont pas utiles pour l'instant. Par défaut, si le fichier existe il est écrasé sinon il est créé. l'opérateur << : il permet de diriger ce qui est à sa droite vers le fichier ouvert précédemment. monfichier.close() : évidemment, il ferme le fichier. rem : Les lignes contenant les cout permettent d'afficher à l'écran le texte associé. Dans un programme avec une IHM graphique elles doivent disparaitre. Annexe 2 Programmation modulaire Lors du développement d'un logiciel, il convient d'organiser son travail en modules. L'avantage d'une telle démarche est avant tout de pouvoir s'y retrouver. C'est un point crucial dans la qualité du développement. Cela veut dire que vous aurez : un fichier principal contenant la fonction main() et la ligne principal de votre logiciel. un fichier.cpp contenant le code des méthodes d'une classe. un fichier.h contenant le prototype de la classe. Ainsi, pour notre projet nous avons un fichier ihm_web.cpp et un fichier ihm_web.h. SIN221_ _Communication_Web_ _analyse_uml_v2 4/5

Quelques explications sur la syntaxe utilisée dans les différents fichiers en prenant une classe générique appelée maclasse. Fichier de déclaration : maclasse.h Ce fichier sert uniquement à donner le squelette de la classe. class maclasse private : // les données d'une classe sont privées en général. int val1; int val2; ; public : //les méthodes sont publiques en général maclasse(); //constructeur -> méthode appelée automatiquement à la création de l'objet. void Methode1 (char param); //-> ici on donne le prototype de la méthode et c'est tout. int Methode2 (int param); //idem Fichier d'implémentation : maclasse.cpp Ce fichier permet d'écrire le code des méthodes. Il y a une syntaxe particulière permettant de le faire. Elle a l'allure suivante : <Type de retour> <Nom de la Classe>::<Nom de la méthode> (<PARAMETRES>) //CODE DE LA METHODE #include "maclasse.h" //obligation d'insérer le fichier de déclaration maclasse::maclasse() //CODE DU CONSTRUCTEUR void maclasse::methode1(char param) //CODE DE METHODE1 int maclasse::methode2(int param) //CODE DE METHODE2 Utilisation des fichiers : main.cpp Il faut maintenant instancier un objet et l'utiliser. #include "maclasse.h" //obliger de déclarer la classe que l'on va utiliser. int main () //déclarations de variables si nécessaire char var; int resultat; maclasse unobjet; //création d'un objet. On appelle cette opération une instanciation // on instancie un objet de la classe maclasse unobjet.methode1(var); //appel de la méthode 1 resultat=unobjet.methode2(7); //appel de la méthode 2 //etc return 0; SIN221_ _Communication_Web_ _analyse_uml_v2 5/5