2.2- Déclarer, définir et utiliser des objets
|
|
- Juliette Côté
- il y a 7 ans
- Total affichages :
Transcription
1 2.2- Déclarer, définir et utiliser des objets 1- Classes et objets 2- Construction d'objets 3- Destruction d'objets 1 Classes et objets A l'instar du fait de déclarer une fonction avant de l'utiliser, on déclare une classe avant de l'utiliser : on donne le prototype des méthode de ses classes ainsi que les variables de cette classe. Donc pour une classe, on doit distinguer : la déclaration de la classe qui donne les variables et les prototypes des fonctions de la classe. la définition des fonctions de classe. les utilisations de la classe. Bien sûr, avant de pouvoir définir des fonctions de classe ou avant de pouvoir utiliser une variable objet d'une classe, il faut avoir déclaré la classe. Déclaration de classe La déclaration se fait de la manière suivante : //on débute la déclaration de la classe Action //cette déclaration est comprise entre //un niveau de visibilité (voir plus bas) //la déclaration d'un attribut réel nommé coursdujour //la déclaration d'un attribut réel nommé coursancien //la déclaration d'une méthode renvoyant un double/prototype ; //la fin de la déclaration : bien noté qu'elle termine par ;
2 Ici on définit une classe Action qui donne le cours du jour, le coursancien et définit le calcul de la rentabilité. En définissant la classe de cette manière, et si le stockage d'un double représente bien 8 octets, alors le stockage d'un objet Action prendra 16 octets en mémoire. Autant que faire se peut, le nom retenu des variables/ attributs et des fonctions doit être significatif. Par ailleurs, par convention, on écrira le nom des classes avec une majuscule, le nom des attributs ou des méthodes, commençant à l'instar de ce qu'on a toujours fait pour les fonctions et les variables, par une minuscule et avec une majuscule dans le nom si il contient plusieurs mots : calcrentabilite par exemple. Bien noter que la déclaration d'une classe se termine par ';'. Les types des attributs de classe ne sont pas nécessairement des types primitifs, il peut y avoir des types objets : class Employe Date datenaissance; string nom; double salaire; Service serviceemploye; ; Dans ce qui précède, on a un attribut qui est un type primitif : double salaire, un attribut qui est d'un type objet de la librairie standard : string nom, deux attributs qui sont de types objets définis par l'utilisateur : Date, Service. Les déclarations de classe pourront bien sûr être faites dans un fichier header. Définition des méthodes de classe Une fois la déclaration de la classe faite, la définition des méthodes de classe peut se faire avant ou après leur utilisation. La déclaration d'une méthode de classe se fait en utilisant le nom de la classe, un séparateur et le nom de la méthode que l'on veut définir, ansi si on veut définir la méthode calcrentabilite() de la classe Action : double Action::calcRentabilite() return (coursdujour-coursancien)/ coursancien;
3 Pour le reste, le fonctionnement de la définition des fonctions est identique à ce qui a été déclarée au cours 1.4. Déclaration-définition d'une variable objet Un objet est une variable du type d'une classe. En supposant que des déclarations des classes Employe et Action ont été écrites dans le code qui précède, on peut déclarer des variables objets. Comme dans le cas des variables de type primitif, la déclaration des variables objets vaut également définition. La définition des variables de type objet se fait à l'instar des variables de type primitif : Action societegenerale; Accès aux données membres et aux fonctions membres #include <iostream> ; double Action::calcRentabilite() int main() Action societegenerale; societegenerale.coursdujour=5; societegenerale.coursancien=4.9; //L1 //L2 //L3 double variationenvaleur=societegenerale.coursdujour-societegenerale.coursancien; std::cout << "La rentabilite de l'action : " << societegenerale.calcrentabilite(); //L4 //L5 std::cout << "\nla taille : " << sizeof(action); //L6 return 0;
4 Dans ce qui précède, on commence par créer une variable objet de type Action qui a pour nom societegenerale (L1). Ensuite, on affecte 5 à la valeur de son attribut coursdujour (L2) puis on affecte 4.9 à son attribut coursancien (L3). Puis, on crée une variable de type primitif double à laquelle on affecte le résultat du calcul de la variation absolue du cours (L4). La ligne suivante est un appel la méthode calcrentabilite() de l'objet societegenerale (L5). La dernière ligne (L6) affiche la taille d'un objet Action. Pour cette dernière ligne, comme la classe Action a deux attributs de type double, le type Action sera deux fois la taille d'un type double, ie si une variable double occupe 8 octets, une variable Action sera codée sur 16 octets. Private / Public Dans l'exemple précédent, on peut prendre le code qui a été développé en enlevant cette ligne qui intervient dans la déclaration de la classe Action : En essayant de compiler le code obtenu, on obtient une série d'erreurs. Celles-ci indiquent que les éléments Action::coursDuJours, Action::coursAncien sont privées et que double Action::calcRentabilite() est privée. Les instructions qui posent problèmes sont celles qui sont dans le main() et qui tentent d'utiliser ces méthodes / attributs. Effectivement, si on ne précise plus que les attributs ou les méthodes sont public, ils sont tous private par défaut. Quand un attribut est private, il n'est utilisable qu'au sein des méthodes de la classe. On ne pourra donc l'utiliser que dans la définition des méthodes de classe. Pour déclarer comme public, on utilise le mot clé public à l'instar de ce qui a fait lors de la déclaration de la classe Action. De manière générale pour une classe pour laquelle il y a des attributs / méthodes de visibilité privée et des attributs / méthodes de visbilité #include <iostream> void affichagenumaction(); void affectationnumaction(int); private : int numaction; ;
5 double Action::calcRentabilite() void Action::affichageNumAction() std::cout << "Le numero de l'action : " << numaction; void Action::affectationNumAction(int num) numaction=num; int main() Action societegenerale; societegenerale.coursdujour=5; societegenerale.coursancien=4.9; societegenerale.affectationnumaction(3); double variationenvaleur=societegenerale.coursdujour-societegenerale.coursancien; std::cout << "La rentabilite de l'action : " << societegenerale.calcrentabilite(); std::cout << "\nla taille : " << sizeof(action) << "\n"; societegenerale.affichagenumaction(); return 0; Ce code fonctionne, il appelle un certain nombre de remaques : Toujours bien noter que la déclaration de classe se termine par un ; (tester ce qui se passe en l'enlevant) Pour une classe, il est possible de définir des attributs public et private. Dans la fonction donnenumaction, on manipule deux variables : le paramètre et un attribut de l'objet. Les attributs de l'objet peuvent être librement manipulé dans les méthode de l'objet Le code vérifie la règle énoncée plus haut qui est que les attributs privés (private) ne peuvent être manipulés que par des méthodes de l'objet. En effet, dans le main, on ne manipule pas l'attribut numaction. Si on essayait de le manipuler, on provoquera une erreur. Il est en revanche tout à fait possible de manipuler cet attibut via une méthode de la classe : on accède l'attribut dans la fonction affichagenumaction(), on aurait pu également lui affecter une valeur Quel est l'intérêt des niveaux de visbilité? Cf le fait de maintenir la cohérence externe de la classe. Le principe de la programmation objet veut qu'une classe soit réutilisable, soit par le même programmeur, soit par d'autres programmeurs. Il faut donc que les attributs de l'objet constituent un état cohérent de l'objet. Supposons que l'on rajoute un attribut dans la déclaration de la classe :
6 void affichagenumaction(); void affectationnumaction(int); private : int numaction; ; double Action::calcRentabilite() void Action::affichageNumAction() std::cout << "Le numero de l'action : " << numaction; void Action::affectationNumAction(int num) numaction=num; En effet, on veut que la valeur de la rentabilité soit stockée dans un attribut plutôt que recalculée à chaque fois qu'elle est accédée. A chaque appel de calcrentabilite() on recalculait la rentabilité, ici on préfère recalculer la rentabilité seulement si on modifie l'attribut coursdujour ou l'attribut coursancien. Celui qui conçoit la classe le sait ici et donc, si il modifie l'une ou l'autre des valeurs, il appel calcrentabilite() en faisant : societegenerale.coursdujour=5; double rentabilite=calcrentabilite(); Ensuite, on n'aura plus qu'à accéder directement la valeur de la rentabilité sans avoir à la recalculer. On peut vouloir cette optimisation, mais cependant, la forme actuelle de la classe est extrêmement dangereuse. Est ce que le programmeur ne risque pas à terme d'oublier l'instruction d'évolution de la rentabilité dès qu'il modifiera le coursdujour ou le coursancien? Plusieurs jours après construit cette classe avec cette contrainte, s'en souviendra t'il? Ne risque t'il pas d'oublier de parler de cette contrainte en donnant son code à un tiers qui veut utiliser la classe Action, le tiers parvenant rapidement à des abbérations dans l'utilisation de cette classe, si on ne lui a pas exposer les conditions d'utilisation. De fait, on préferera largement la version suivante de la classe :
7 void modifiercoursjour(double); double obtenircoursjour(); void modifiercoursancien(double); double obtenircoursancien(); double obtenirrentabilite(); void affichagenumaction(); void affectationnumaction(int); private : int numaction; ; double Action::calcRentabilite() void Action::affichageNumAction() std::cout << "Le numero de l'action : " << numaction; void Action::affectationNumAction(int num) numaction=num; void Action::modifierCoursJour(double x) coursdujour=x; rentabilite=calcrentabilite(); double Action::obtenirCoursJour() return coursdujour; void Action::modifierCoursAncien(double x) coursancien=x; rentabilite=calcrentabilite(); double Action::obtenirCoursAncien()
8 return coursancien; double Action::obtenirRentabilite() return rentabilite; Ici tous les attributs sont privés. Il n'est plus possible à un utilisateur externe à la classe de modifier ou de lire coursancien ou coursdujour directement. Pour voir la valeur de l'une ou l'autre des variables, il faut en passer par les méthodes : obtenircoursancien(), obtenircoursjour(). Pour modifier la valeur de l'une ou l'autre des variables, il faut en passer par les méthodes modifiercoursancien(double) pou modifiercoursjour(double). Pour ces deux dernières méthodes, on note qu'elles font évoluer la rentabilité. Donc à chaque fois qu'on modifie coursancien ou coursdujours, on modifiera la rentabilite. La classe sera donc maintenue dans un état cohérent. Pour les méthodes obtenircoursancien(), obtenircoursjour(), on parlera d'accesseurs (méthode qui permet d'accéder à la valeur d'un variable) et de modifieur (méthode qui permet de modifier la valeur d'une variable). On note que pour rentabilité, on a seulement défini un accesseur et pas de modifieur : on n'autorise pas la modification directe de l'attribut rentabilité. L'introduction de modifieurs ou d'accesseurs n'est pas une obligation, elle est cependant nécessaire dans la conception d'un grand projet pour maintenir la cohérence des objets. Pour les petits projets ou pour les exercices, il n'est bien sûr pas nécessaire d'introduire ces méthodes. On a donc conçu une classe de manière à maintenir la cohérence interne de la classe, des objets. Cependant, rien n'indique que chaque objet soit cohérent dès la déclaration d'une variable objet. On va donc s'intéresser à ce qui se passe lors de la déclaration des variables objets (et également lors de leur disparition) dans ce qui suit. 2 Construction d'objets Constructeur Il est possible de définir les opérations qui sont à faire lors de la création d'une variable objet. Cela se fait au travers d'une fonction qui s'appelle le constructeur. Sans l'évoquer, nous avons déjà utilisé implicitement une telle fonction. En reprenant le dernier listing de code qui a été présenté, on peut rajouter à la suite la ligne : int main() Action a;
9 Cette ligne de code, que l'on a déjà vu, sert à créer a comme une variable objet de type Action. Il s'agit d'un appel implicite à la fonction constructeur. C'est le seul cas d'appel à une méthode sans qu'il y ait de parenthèses. Lorsque le programmeur n'a pas défini de méthode constructeur, il existe une méthode constructeur par défaut : c'est le cas de tous les listings qui précèdent. On reprend, en la simplifiant la classe Action, ; double Action::calcRentabilite() int main() Action a; Ici lors de l'exécution de l'unique instruction du main, c'est le contructeur par défaut qui est appelé. On peut expliciter la déclaration implicite de la fonction constructeur : Action(); //la déclaration du constructeur par défaut. ; Action::Action() //la définition de la méthode constructeur.
10 double Action::calcRentabilite() int main() Action a; Ici, on a explicité la définition du constructeur. Ce constructeur était déjà défini de manière implicite. Une méthode constructeur à le nom de la classe pour laquelle elle sert à créer des objets et n'a pas de type de retour. Pour vérifier que cette fonction s'exécute bien avec l'unique instrution du main : Action(); //la déclaration du constructeur par défaut. ; Action::Action() //la définition de la méthode constructeur. std::cout << "Ceci vient du constructeur par defaut de Action\n"; double Action::calcRentabilite() int main() Action a; std::cout << coursdujour << " " << coursancien; On compile et on exécute. On constate qu'effectivement l'instruction Action a; exécute bien le code attendu. Par ailleurs, on constate que les valeurs coursdujours et coursancien sont incompréhesibles. A l'instar de ce qui se passe si on déclare une variable double sans l'initialiser, ici les variables attributs de la variables objets se voient affecter un espace mémoire dont on ne sait ce qu'il a contenu auparavant. Donc lors de la création de l'objet a, on a des valeurs incohérentes pour l'objet et donc une source d'erreur possible pour quelqu'un qui utiliserait la variable objet sans avoir initialiser convenablement
11 ces champs. Pour forcer à une initialisation correcte des attributs, on empêche l'utilisation du constructeur par défaut en spécifiant un constructeur. Action(double,double); //la déclaration d'un constructeur ; Action::Action(double x, double y) //la définition de la méthode constructeur. coursdujour=x; coursancien=y; double Action::calcRentabilite() int main() Action a; std::cout << a.coursdujour << " " << a.coursancien; Si on tente de compiler ce code, une erreur est renvoyée, en effet, Action a; appelle le constructeur par défaut, or celui ci n'est plus disponible puisque un constructeur a été explicitement défini. Le programmeur doit donc donner des valeurs à la création de l'objet, la documentation du code (des commentaires à rajouter à côté de la déclaration de la fonction) lui indique à quoi correspond chacun des paramètres de la fonction constructeur. Il suffit donc de remplacer le main par : Action(double,double); //la déclaration d'un constructeur ; Action::Action(double x, double y) //la définition d'une méthode constructeur.
12 coursdujour=x; coursancien=y; double Action::calcRentabilite() int main() Action a(12.5,13); std::cout << a.coursdujour << " " << a.coursancien; On constate qu'effectivement le code fonctionne : les attributs sont bien initialisée. La méthode constructeur récupère des valeurs pour le coursdujour et coursancien. Surcharge de constructeur A l'instar de n'importe quelle méthode de classe, il est possible de surcharger le constructeur. Notamment, il est possible de réintroduire le constructeur par défaut, si on le déclare explicitement lorsqu'un autre constructeur est déjà déclaré. Action(); Action(double,double); Action(double); ; Action::Action() coursdujour=0; coursancien=0; Action::Action(double x, double y) coursdujour=x; coursancien=y;
13 Action::Action(double x) coursdujour=x; coursancien=0; double Action::calcRentabilite() int main() Action a; std::cout << a.coursdujour << " " << a.coursancien << "\n"; Action a2(12,5.7); std::cout << a2.coursdujour << " " << a2.coursancien << "\n"; Action a3(12); std::cout << a3.coursdujour << " " << a3.coursancien << "\n"; Il peut y avoir plusieurs constructeur parce qu'il peut y avoir plusieurs attributs et plusieurs façon de construire un objet. Ces déclarations et les choix dépendent du contexte. Une erreur à éviter Bien noter dans le dernier listing le premier appel de constructeur dans le main. Malgré que le constructeur par défaut soit déclaré comme Action::Action();, il n'est pas possible de déclarer une variable en faisant Action a();, il faut s'en tenir à l'instruction Action a;. L'instruction Action a(); sera acceptée mais elle ne correspond pas au constructeur et provoquera rapidement des erreurs. 3 Destruction d'objets Alors qu'une méthode constructeur est appelée lors de la création d'un objet, une méthode destructeur est appelée lors de sa destruction. Pour s'en rendre compte, il suffit de rendre explicite la déclaration du constructeur par défaut : ~Action() et de lui associer une définition qui affiche un texte. A l'instar du constructeur par défaut, le destructeur par défaut est disponible sans que l'utilisateur ait besoin de la définir.
14 Action(); ~Action(); //on rajoute la déclaration du destructeur par défaut Action(double,double); Action(double); ; Action::Action() coursdujour=0; coursancien=0; Action::Action(double x, double y) coursdujour=x; coursancien=y; Action::Action(double x) coursdujour=x; coursancien=0; double Action::calcRentabilite() Action::~Action() //on donne une définition au destructeur par défaut std::cout << "Ceci vient du destructeur\n"; int main() Action a; std::cout << a.coursdujour << " " << a.coursancien << "\n"; Action a2(12,5.7); std::cout << a2.coursdujour << " " << a2.coursancien << "\n"; Action a3(12); std::cout << a3.coursdujour << " " << a3.coursancien << "\n"; En exécutant ce code, on se rend compte que le texte spécifié par le destructeur s'affiche 3 fois. Cela vient du fait que l'on a construit 3 objets de type Action, le destructeur est donc appelé à 3 reprises.
15 Il peut être intéressant de définir le destructeur par défaut. On peut penser de manière simple au fait d'un logiciel qu'on veut maintenir dans un état cohérent : chaque objet pourrait lancer une procédure de sauvegarde de son état courant lors de la destruction des objets, soit la destruction du logiciel. A noter que lorsque l'on cherche à déclarer un destructeur avec des paramètres cela n'est pas possible : le destructeur ne peut pas être surchargé. Il n'est jamais fait d'appel explicite au destructeur pour les variables locales aux fonctions qui sont définies dans la pile. On verra dans le chapitre suivant qu'on détruira les objets créés dans le tas en utilisant delete et non pas directement le destructeur. 4 Methodes const Parler d'optimisation ici mais, à ne pas forcément voir en C++ Il est possible d'utiliser le mot clé const sur une méthode. Ce mot clé indique la fonction ne contient aucune instruction de modification des membres de la classe. Ainsi dans le code qui suit, la fonction f1 #include <iostream> class A int j; void f1() const; void f2(); void f3() const; A(); ; void A::f1() const j=5; void A::f2() j=5; void A::f3() const
16 std::cout << "Ceci vient de f3\n"; A::A() std::cout << "Appel au constructeur\n"; int main() A vara; vara.f1(); vara.f2(); vara.f3(); return 0; Ceci provoque une erreur à la compilation à cause de la fonction f1 déclarée comme const mais qui contient une instruction de modification de j. En revanche, le code suivant se compile : #include <iostream> class A int j; void f1() const; void f2(); void f3() const; A(); ; void A::f1() const std::cout << "Ceci vient de f1\n"; void A::f2() j=5; void A::f3() const std::cout << "Ceci vient de f3\n"; A::A() std::cout << "Appel au constructeur\n";
17 int main() A vara; vara.f1(); vara.f2(); vara.f3(); return 0; Autant que faire se peut, il vaut mieux déclarer comme const les fonctions qui le sont, pour que le compilateur puisse détecter d'éventuelles erreurs.
Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère
L'héritage et le polymorphisme en Java Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère En java, toutes les classes sont dérivée de la
Plus en détail1.6- Génération de nombres aléatoires
1.6- Génération de nombres aléatoires 1- Le générateur aléatoire disponible en C++ 2 Création d'un générateur aléatoire uniforme sur un intervalle 3- Génération de valeurs aléatoires selon une loi normale
Plus en détailChapitre 2. Classes et objets
Chapitre 2: Classes et Objets 1/10 Chapitre 2 Classes et objets Chapitre 2: Classes et Objets 2/10 Approche Orientée Objet Idée de base de A.O.O. repose sur l'observation de la façon dont nous procédons
Plus en détailPremiers Pas en Programmation Objet : les Classes et les Objets
Chapitre 2 Premiers Pas en Programmation Objet : les Classes et les Objets Dans la première partie de ce cours, nous avons appris à manipuler des objets de type simple : entiers, doubles, caractères, booléens.
Plus en détailJava Licence Professionnelle CISII, 2009-2010. Cours 2 : Classes et Objets
Licence Professionnelle CISII, 2009-2010 Cours 2 : Classes et Objets 1 Classes et Objets Objectifs des LOO : - Manipuler des objets - Découper les programmes suivant les types des objets manipulés - Regrouper
Plus en détailC++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement
C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement des objets d'une classe Utilisation d'une classe Droit
Plus en détailGénéralités sur le Langage Java et éléments syntaxiques.
Généralités sur le Langage Java et éléments syntaxiques. Généralités sur le Langage Java et éléments syntaxiques....1 Introduction...1 Genéralité sur le langage Java....1 Syntaxe de base du Langage...
Plus en détailProgrammation par les Objets en Java
Programmation par les Objets en Java Najib TOUNSI Les classes en Java (TD 3) I. Notion de classe I.1 Classe, champs, méthodes, instanciation, this, private vs. public. Créer une classe Point (coordonnée
Plus en détailINITIATION AU LANGAGE C SUR PIC DE MICROSHIP
COURS PROGRAMMATION INITIATION AU LANGAGE C SUR MICROCONTROLEUR PIC page 1 / 7 INITIATION AU LANGAGE C SUR PIC DE MICROSHIP I. Historique du langage C 1972 : naissance du C dans les laboratoires BELL par
Plus en détailTravaux pratiques. Compression en codage de Huffman. 1.3. Organisation d un projet de programmation
Université de Savoie Module ETRS711 Travaux pratiques Compression en codage de Huffman 1. Organisation du projet 1.1. Objectifs Le but de ce projet est d'écrire un programme permettant de compresser des
Plus en détailHéritage presque multiple en Java (1/2)
Héritage presque multiple en Java (1/2) Utiliser deux classes ou plus dans la définition d'une nouvelle classe peut se faire par composition. class Etudiant{ int numero; Diplome d; float passeexamen(examen
Plus en détailChapitre 1 : Introduction aux bases de données
Chapitre 1 : Introduction aux bases de données Les Bases de Données occupent aujourd'hui une place de plus en plus importante dans les systèmes informatiques. Les Systèmes de Gestion de Bases de Données
Plus en détailTp 1 correction. Structures de données (IF2)
Tp 1 correction Structures de données (IF2) Remarque générale : compilez et exécutez le code au-fur-et-à mesure de son écriture. Il est plus facile de corriger une petite portion de code délimitée que
Plus en détailet Programmation Objet
FACULTE POLYTECHNIQUE DE MONS Service d Informatique et Programmation Objet Mohammed Benjelloun 2 ème Bachelier Année académique 2008-2009 Table des matières Avant-propos--------------------------------------------------------------------------
Plus en détailDE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51
DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51 PLAN DU COURS Introduction au langage C Notions de compilation Variables, types, constantes, tableaux, opérateurs Entrées sorties de base Structures de
Plus en détailI. Introduction aux fonctions : les fonctions standards
Chapitre 3 : Les fonctions en C++ I. Introduction aux fonctions : les fonctions standards A. Notion de Fonction Imaginons que dans un programme, vous ayez besoin de calculer une racine carrée. Rappelons
Plus en détailLes chaînes de caractères
Les chaînes de caractères Dans un programme informatique, les chaînes de caractères servent à stocker les informations non numériques comme par exemple une liste de nom de personne ou des adresses. Il
Plus en détailSeance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu.
Seance 2: Complétion du code de jeu. (durée max: 2h) Mot clé const et pointeurs: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu. Implémentez jeu_recupere_piece
Plus en détailApplication 1- VBA : Test de comportements d'investissements
Application 1- VBA : Test de comportements d'investissements Notions mobilisées Chapitres 1 à 5 du cours - Exemple de récupération de cours en ligne 1ère approche des objets (feuilles et classeurs). Corps
Plus en détailCours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java
Langages objets Introduction M2 Pro CCI, Informatique Emmanuel Waller, LRI, Orsay présentation du module logistique 12 blocs de 4h + 1 bloc 2h = 50h 1h15 cours, 45mn exercices table, 2h TD machine page
Plus en détailTD/TP PAC - Programmation n 3
Université Paris Sud Licence d informatique/iup-miage2 - Année 2004-2005 auteur : Frédéric Vernier semaine : 11-16 octobre 2004 conditions : sur machine avec les outils standards java web: http://vernier.frederic.free.fr/indexpac.html
Plus en détailExceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;
CNAM NFP121 TP 10 19/11/2013 (Séance 5) Objectif Manipuler les exceptions ; 1 Entrées/sorties Exercice 1 : Lire un entier à partir du clavier Ajouter une méthode readint(string message) dans la classe
Plus en détailRAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)
CLASSE RACINE Object ancêtre de toutes les classes RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION) définit donc des méthodes héritées par toutes
Plus en détailAlgorithmique et Programmation, IMA
Algorithmique et Programmation, IMA Cours 2 : C Premier Niveau / Algorithmique Université Lille 1 - Polytech Lille Notations, identificateurs Variables et Types de base Expressions Constantes Instructions
Plus en détailTrier les ventes (sales order) avec Vtiger CRM
Trier les ventes (sales order) avec Vtiger CRM Dans l'activité d'une entreprise, on peut avoir besoin d'un outil pour trier les ventes, ce afin de réaliser un certain nombre de statistiques sur ces ventes,
Plus en détailINTRODUCTION A JAVA. Fichier en langage machine Exécutable
INTRODUCTION A JAVA JAVA est un langage orienté-objet pur. Il ressemble beaucoup à C++ au niveau de la syntaxe. En revanche, ces deux langages sont très différents dans leur structure (organisation du
Plus en détailStructure d un programme et Compilation Notions de classe et d objet Syntaxe
Cours1 Structure d un programme et Compilation Notions de classe et d objet Syntaxe POO 1 Programmation Orientée Objet Un ensemble d objet qui communiquent Pourquoi POO Conception abstraction sur les types
Plus en détail1. Étape: Activer le contrôle du compte utilisateur
Contenu : 1. Étape: Activer le contrôle du compte utilisateur 2. Etape : Activer le pare-feu 3. Etape : Utiliser le logiciel anti-virus 4. Etape : Activer les mises à jour automatiques 5. Etape: Créer
Plus en détailSysteme d'exploitation
Introduction au dévellopement de Methodes Natives Partie I : appelle de methodes C++ sous windows Auteur: Frank Sauvage. 1 \ introduction aux methodes natives : Les methodes natives sont des methodes devellopées
Plus en détailLicence ST Université Claude Bernard Lyon I LIF1 : Algorithmique et Programmation C Bases du langage C 1 Conclusion de la dernière fois Introduction de l algorithmique générale pour permettre de traiter
Plus en détailCours d initiation à la programmation en C++ Johann Cuenin
Cours d initiation à la programmation en C++ Johann Cuenin 11 octobre 2014 2 Table des matières 1 Introduction 5 2 Bases de la programmation en C++ 7 3 Les types composés 9 3.1 Les tableaux.............................
Plus en détailJava Licence Professionnelle CISII, 2009-10
Java Licence Professionnelle CISII, 2009-10 Cours 4 : Programmation structurée (c) http://www.loria.fr/~tabbone/cours.html 1 Principe - Les méthodes sont structurées en blocs par les structures de la programmation
Plus en détailTD/TP PAC - Programmation n 3
Université Paris Sud Licence d informatique/iup-miage2 Année 2004-2005 Auteur : Frédéric Vernier Semaine : 11-16 octobre 2004 Conditions : sur machine avec les outils standards java web: http://vernier.frederic.free.fr/indexpac.html
Plus en détailCours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples
Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation impérative et structures de données simples Introduction au langage C Sandrine Blazy - 1ère année 24 octobre 2007 Cours d Algorithmique-Programmation
Plus en détailInfo0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java
Info0101 Intro. à l'algorithmique et à la programmation Cours 3 Le langage Java Pierre Delisle, Cyril Rabat et Christophe Jaillet Université de Reims Champagne-Ardenne Département de Mathématiques et Informatique
Plus en détailEncapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.
Encapsulation L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets. La visibilité dépend des membres : certains membres peuvent être visibles et d'autres
Plus en détailProgrammation C++ (débutant)/instructions for, while et do...while
Programmation C++ (débutant)/instructions for, while et do...while 1 Programmation C++ (débutant)/instructions for, while et do...while Le cours du chapitre 4 : le for, while et do...while La notion de
Plus en détailInitiation à JAVA et à la programmation objet. raphael.bolze@ens-lyon.fr
Initiation à JAVA et à la programmation objet raphael.bolze@ens-lyon.fr O b j e c t i f s Découvrir un langage de programmation objet. Découvrir l'environnement java Découvrir les concepts de la programmation
Plus en détailLe langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie
Chapitre I : Les bases du C++ Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie du logiciel, et ce depuis
Plus en détailTP1 : Initiation à Java et Eclipse
TP1 : Initiation à Java et Eclipse 1 TP1 : Initiation à Java et Eclipse Systèmes d Exploitation Avancés I. Objectifs du TP Ce TP est une introduction au langage Java. Il vous permettra de comprendre les
Plus en détailUtilisation d objets : String et ArrayList
Chapitre 6 Utilisation d objets : String et ArrayList Dans ce chapitre, nous allons aborder l utilisation d objets de deux classes prédéfinies de Java d usage très courant. La première, nous l utilisons
Plus en détailP r ob lé m a t iq u e d e la g é n é r icit é. Pr in cip e d e la g é n é r icit é e n Ja v a ( 1 /3 )
P r ob lé m a t iq u e d e la g é n é r icit é les versions de Java antérieures à 1.5 permettaient de créer des classes de structures contenant n'importe quels types d'objet : les collections (classes
Plus en détail2 Grad Info Soir Langage C++ Juin 2007. Projet BANQUE
2 Grad Info Soir Langage C++ Juin 2007 Projet BANQUE 1. Explications L'examen comprend un projet à réaliser à domicile et à documenter : - structure des données, - objets utilisés, - relations de dépendance
Plus en détailDiagramme de classes
Diagramme de classes Un diagramme de classes décrit les classes et leurs relations (associations, généralisation/spécialisation, ). classe association méthodes attributs héritage Diagramme de classes :
Plus en détailQuelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)
Quelques patterns pour la persistance des objets avec DAO Ce cours présente des modèles de conception utilisés pour effectuer la persistance des objets Université de Nice Sophia-Antipolis Version 1.4 30/8/07
Plus en détail1. Introduction... 2. 2. Création d'une macro autonome... 2. 3. Exécuter la macro pas à pas... 5. 4. Modifier une macro... 5
1. Introduction... 2 2. Création d'une macro autonome... 2 3. Exécuter la macro pas à pas... 5 4. Modifier une macro... 5 5. Création d'une macro associée à un formulaire... 6 6. Exécuter des actions en
Plus en détailBrefs rappels sur la pile et le tas (Stack. / Heap) et les pointeurs
Brefs rappels sur la pile et le tas (Stack / Heap) et les pointeurs (exemples en C) v1.11 - Olivier Carles 1 Pile et Tas Mémoire allouée de manière statique Mémoire Allouée Dynamiquement variables locales
Plus en détailBases de programmation. Cours 5. Structurer les données
Bases de programmation. Cours 5. Structurer les données Pierre Boudes 1 er décembre 2014 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License. Types char et
Plus en détailLa sauvegarde (backup) de votre comptabilité a pour but de vous permettre de retrouver vos données si un incident est survenu.
Logiciels concernés Ciel Compta Premium, Evolution et Réseau. Depuis la version 10.xx jusqu'à la version 13.xx Sauvegarde Remarque préliminaire La sauvegarde (backup) de votre comptabilité a pour but de
Plus en détailLangage Java. Classe de première SI
Langage Java Table des matières 1. Premiers pas...2 1.1. Introduction...2 1.2. Mon premier programme...2 1.3. Les commentaires...2 2. Les variables et les opérateurs...2 3. La classe Scanner...3 4. Les
Plus en détailTP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile
TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile Dans ce TP, vous apprendrez à définir le type abstrait Pile, à le programmer en Java à l aide d une interface
Plus en détailProjet gestion d'objets dupliqués
Projet gestion d'objets dupliqués Daniel Hagimont Daniel.Hagimont@enseeiht.fr 1 Projet Service de gestion d'objets dupliqués Mise en cohérence lors de la prise d'un verrou sur un objet Pas de verrous imbriqués
Plus en détailTP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet
TP Composants Java ME - Java EE Vous allez, dans ce TP, construire une architecture client serveur, plus précisément MIDlet cliente, servlet serveur. Pour cela, on va d'abord installer la partie serveur
Plus en détailJAVA TD0. Prise en main du langage Environnement de base JAVA 1
JAVA TD0 Prise en main du langage Environnement de base JAVA 1 Mon premier programme public class HelloWorld { public static void main(string [] arg){ System.out.println("Hello, World!"); main(string []
Plus en détailB2i. LE B2i Brevet Informatique et Internet. Niveau : tous. 1 S'approprier un environnement informatique de travail. b2ico1.odt.
1 S'approprier un environnement informatique de travail 1.1) Je sais m'identifier sur un réseau ou un site et mettre fin à cette identification. 1.2) Je sais accéder aux logiciels et aux documents disponibles
Plus en détailRMI le langage Java XII-1 JMF
Remote Method Invocation (RMI) XII-1 Introduction RMI est un ensemble de classes permettant de manipuler des objets sur des machines distantes (objets distants) de manière similaire aux objets sur la machine
Plus en détailCréation d'un site dynamique en PHP avec Dreamweaver et MySQL
Création d'un site dynamique en PHP avec Dreamweaver et MySQL 1. Création et configuration du site 1.1. Configuration de Dreamweaver Avant de commencer, il est nécessaire de connaître l'emplacement du
Plus en détailCours de C++ François Laroussinie. 2 novembre 2005. Dept. d Informatique, ENS de Cachan
Cours de C++ François Laroussinie Dept. d Informatique, ENS de Cachan 2 novembre 2005 Première partie I Introduction Introduction Introduction Algorithme et programmation Algorithme: méthode pour résoudre
Plus en détailLa programmation des PIC en C. Les fonctions, les interruptions.
La programmation des PIC en C Les fonctions, les interruptions. Réalisation : HOLLARD Hervé. http://electronique-facile.com Date : 26 août 2004 Révision : 1.2 Sommaire Sommaire... 2 Introduction... 3 Structure
Plus en détailTP1. Outils Java Eléments de correction
c sep. 2008, v2.1 Java TP1. Outils Java Eléments de correction Sébastien Jean Le but de ce TP, sur une séance, est de se familiariser avec les outils de développement et de documentation Java fournis par
Plus en détail03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing
3/4/27 Programmation Avancée Multimédia Multithreading Benoît Piranda Équipe SISAR Université de Marne La Vallée Besoin Programmes à traitements simultanés Réseau Réseau Afficher une animation en temps
Plus en détailLe Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr
Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr Table des matières 1 Les bases 3 2 Variables et constantes 5 3 Quelques fonctions indispensables
Plus en détailIntroduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski cegielski@u-pec.fr
Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski cegielski@u-pec.fr Mars 2002 Pour Irène et Marie Legal Notice Copyright c 2002 Patrick Cégielski Université
Plus en détailLe stockage local de données en HTML5
Le stockage local HTML5, pourquoi faire? Dans une optique de réduction des couts de maintenance, de déploiement, beaucoup d'entreprises ont fait le choix de migrer leurs applicatifs (comptables, commerciales,
Plus en détailUE Programmation Impérative Licence 2ème Année 2014 2015
UE Programmation Impérative Licence 2 ème Année 2014 2015 Informations pratiques Équipe Pédagogique Florence Cloppet Neilze Dorta Nicolas Loménie prenom.nom@mi.parisdescartes.fr 2 Programmation Impérative
Plus en détailIntroduction à l héritage en C++
Algorithmique/Langage 1ère année Introduction à l héritage en C++ Yacine BELLIK IUT d Orsay Yacine.Bellik@iut-orsay.fr 1 Bibliographie Ce cours est basé sur le livre suivant : Programmer en C++, 5ème édition
Plus en détailFichiers, dossiers, enregistrer et arborescence
Fichiers, dossiers, enregistrer et arborescence La notion de fichiers Dans les années 1960, les supports magnétiques (disques durs, disquettes,...) étaient encore très chers. D'autres méthodes ont été
Plus en détailSuite dossier d appel
Suite dossier d appel Table des matières 1. INTRODUCTION... 3 2. TRAITEMENT D'UN APPEL... 4 2.1. TRAITEMENT EN DIRECT... 4 2.2. TRAITEMENT DIFFERE... 4 2.3. MECANISME DU TRAITEMENT D'UN APPEL AU NIVEAU
Plus en détailProjet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte
Projet d informatique M1BI : Compression et décompression de texte Le but de ce projet est de coder un programme réalisant de la compression et décompression de texte. On se proposera de coder deux algorithmes
Plus en détailPlan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml
OCL Object Constraint Language Le langage de contraintes d'uml Plan 1. Introduction 2. Les principaux concepts d'ocl Object Constraint Language 1 Object Constraint Language 2 Exemple: une application bancaire
Plus en détailPlan Pédagogique du cours
Plan Pédagogique du cours Module: Programmation Orientée Objet Section : informatique Niveau : 3 ème niveau (gestion, industriel, réseau) Volume Horaire : 22,5 heures Cours Intégrés + 45 Travaux Pratiques
Plus en détailProgrammer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr)
Programmer en JAVA par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Plan 1. Présentation de Java 2. Les bases du langage 3. Concepts avancés 4. Documentation 5. Index des mots-clés 6. Les erreurs fréquentes
Plus en détail1. Qu'est-ce que SQL?... 2. 2. La maintenance des bases de données... 2. 3. Les manipulations des bases de données... 5
1. Qu'est-ce que SQL?... 2 2. La maintenance des bases de données... 2 2.1 La commande CREATE TABLE... 3 2.2 La commande ALTER TABLE... 4 2.3 La commande CREATE INDEX... 4 3. Les manipulations des bases
Plus en détailCours 14 Les fichiers
Cours 14 Les fichiers F. Gayral 1 Fichier : définition /media/travaux/documents/fgenseignement/java1/courstpsfgfc/14-fichiers/voirtypefichiers Fichier = ensemble d informations codées et stockées sur une
Plus en détail1 sur 5 10/06/14 13:10
Time Machine est un outil proposé par Mac OS depuis sa version 10.5 (Leopard) et qui permet d'effectuer des sauvegardes de votre disque dur de manière régulière. Mais au-delà de la simple sauvegarde périodique,
Plus en détailPage 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T>
Page 1 sur 5 TP3 Lectures préalables : l Java_II l tutorial Interfaces Thèmes du TP : l la classe Object l Vector l Stack Une pile d'objects Les éléments de la classe Pile sont maintenant des instances
Plus en détailTP SIN Programmation sur androïde Support : eclipse
TP SIN Programmation sur androïde Support : eclipse Support : Smartphone sur androïde Pré requis (l élève doit savoir): Savoir utiliser un ordinateur Savoir utiliser un Smartphone Programme Objectif terminale
Plus en détailLe langage C. Séance n 4
Université Paris-Sud 11 Institut de Formation des Ingénieurs Remise à niveau INFORMATIQUE Année 2007-2008 Travaux pratiques d informatique Le langage C Séance n 4 But : Vous devez maîtriser à la fin de
Plus en détailCours 1: Java et les objets
Ressources Les interface homme-machine et le langage Java DUT première année Henri Garreta, Faculté des Sciences (Luminy) Cyril Pain-Barre & Sébastien Nedjar, IUT d Aix-Marseille (Aix) Cours 1: infodoc.iut.univ-aix.fr/~ihm/
Plus en détailPolymorphisme, la classe Object, les package et la visibilité en Java... 1
Polymorphisme, la classe Object, les package et la visibilité en Java. Polymorphisme, la classe Object, les package et la visibilité en Java.... 1 Polymorphisme.... 1 Le DownCast... 4 La Classe Object....
Plus en détailTP Service HTTP Serveur Apache Linux Debian
Compte rendu de Raphaël Boublil TP Service HTTP Serveur Apache Linux Debian Tout au long du tp, nous redémarrons le service apache constamment pour que les fi de configuration se remettent à jour - /etc/init.d/apache2
Plus en détailConception d'applications de base de données ios plus rapides Guide Pratique FileMaker
Conception d'applications de base de données ios plus rapides Guide Pratique FileMaker Table des Matières Introduction... 3 Conception de modèles... 3 Conception de bases de données... 5 Conception pour
Plus en détailPROJET ALGORITHMIQUE ET PROGRAMMATION II
PROJET 1 ALGORITHMIQUE ET PROGRAMMATION II CONTENU DU RAPPORT A RENDRE : o Fiche signalétique du binôme o Listing des différents fichiers sources o CD sources o Il sera tenu compte de la présentation du
Plus en détailCours Langage C/C++ Programmation modulaire
Cours Langage C/C++ Programmation modulaire Thierry Vaira BTS IRIS Avignon tvaira@free.fr «v0.1 Rappel Programmation modulaire (1/2) Le découpage d'un programme en sous-programmes est appelée programmation
Plus en détailCours d Algorithmique et de Langage C 2005 - v 3.0
Cours d Algorithmique et de Langage C 2005 - v 3.0 Bob CORDEAU cordeau@onera.fr Mesures Physiques IUT d Orsay 15 mai 2006 Avant-propos Avant-propos Ce cours en libre accès repose sur trois partis pris
Plus en détailClaude Delannoy. 3 e édition C++
Claude Delannoy 3 e édition Exercices Exercices C++ en en langage langage delc++ titre 4/07/07 15:19 Page 2 Exercices en langage C++ AUX EDITIONS EYROLLES Du même auteur C. Delannoy. Apprendre le C++.
Plus en détailTraitement de texte : Quelques rappels de quelques notions de base
Traitement de texte : Quelques rappels de quelques notions de base 1 Quelques rappels sur le fonctionnement du clavier Voici quelques rappels, ou quelques appels (selon un de mes profs, quelque chose qui
Plus en détailSOFI Gestion+ Version 5.4. Echanges de données informatiques Spicers Sofi gestion+ Groupements. SOFI Informatique. Actualisé le 10.09.
SOFI Gestion+ SOFI Informatique Version 5.4 Echanges de données informatiques Spicers Sofi gestion+ Groupements Actualisé le 10.09.2004 Table des matières 1. Catalogue et tarifs... 4 1.1 Définition EDI...
Plus en détailTD Objets distribués n 3 : Windows XP et Visual Studio.NET. Introduction à.net Remoting
IUT Bordeaux 1 2005-2006 Département Informatique Licence Professionnelle ~ SI TD Objets distribués n 3 : Windows XP et Visual Studio.NET Introduction à.net Remoting Partie 1 : l'analyseur de performances
Plus en détailDistinguer entre «Enregistrer» et «Sauvegarder»
Compétence D1.4 IV - : Pérenniser ses données IV Assurer une sauvegarde 33 Compresser / Décompresser un fichier ou un ensemble de fichiers / dossiers 35 A. Assurer une sauvegarde Distinguer entre «Enregistrer»
Plus en détailProgrammation Orientée Objet en C#
Programmation Orientée Objet en C# 1 Introduction 1.1 Présentation Tout bon développeur le sait, le code d'un programme doit être propre, commenté, facile à maintenir et à améliorer. Vous êtes adepte de
Plus en détailDébuter avec OOo Base
Open Office.org Cyril Beaussier Débuter avec OOo Base Version 1.0.7 Novembre 2005 COPYRIGHT ET DROIT DE REPRODUCTION Ce support est libre de droit pour une utilisation dans un cadre privé ou non commercial.
Plus en détailPolycopié Cours Programmation Orientée Objet sous Java Programme : Filière SMI S5
UNIVERISTE MOHAMMED PREMIER Faculté des Sciences d Oujda Oujda - Maroc Polycopié Cours Programmation Orientée Objet sous Java Programme : Filière SMI S5 Pr. El Mostafa DAOUDI Département de Mathématiques
Plus en détailBases Java - Eclipse / Netbeans
Institut Galilée PDJ Année 2014-2015 Master 1 Environnements Java T.P. 1 Bases Java - Eclipse / Netbeans Il existe plusieurs environnements Java. Il est ESSENTIEL d utiliser la bonne version, et un environnement
Plus en détailChapitre 1 : La gestion dynamique de la mémoire
Chapitre 1 : La gestion dynamique de la mémoire En langage C un programme comporte trois types de données : Statiques; Automatiques ; Dynamiques. Les données statiques occupent un emplacement parfaitement
Plus en détailConnexion à une base de données. Connexion à une base de données. Connexion à une base de données Développement d'une application
On souhaite réaliser la connexion d'un programme avec des sources de données Ici, des bases de données relationnelles Deux approches sont possibles qui mettent en œuvre chacune son propre jeu de classes
Plus en détailUne introduction à Java
Une introduction à Java IFT 287 (Semaine 1) UNIVERSITÉ DE SHERBROOKE 1 Java - Historique Développé par Sun Microsystems en 1994 Inventeur James Gosling (canadien!) Objectif langage sûr (fortement typé)
Plus en détailAlgorithmique & Langage C IUT GEII S1. Notes de cours (première partie) cours_algo_lgc1.17.odp. Licence
Licence Algorithmique & Langage C Paternité - Pas d'utilisation Commerciale Partage des Conditions Initiales à l'identique 2.0 France Vous êtes libres : * de reproduire, distribuer et communiquer cette
Plus en détailCOMMISSION DES NORMES COMPTABLES. Avis CNC 138/5 Logiciels
COMMISSION DES NORMES COMPTABLES Avis CNC 138/5 Logiciels Introduction La Commission a consacré une étude approfondie au traitement comptable de la création ou de l acquisition d un logiciel par une entreprise,
Plus en détailC++ Programmer. en langage. 8 e édition. Avec une intro aux design patterns et une annexe sur la norme C++11. Claude Delannoy
Claude Delannoy Programmer en langage C++ 8 e édition Avec une intro aux design patterns et une annexe sur la norme C++11 Groupe Eyrolles, 1993-2011. Groupe Eyrolles, 2014, pour la nouvelle présentation,
Plus en détail