Tutorat en bio-informatique Le 14 novembre 2012. Au programme… Les objets –Propriétés (attributs) –Constructeurs –Méthodes.

Slides:



Advertisements
Présentations similaires
La programmation orientée objet avec Java L3-MIAGE Plan
Advertisements

La boucle for : init7.c et init71.c
La classe String Attention ce n’est pas un type de base. Il s'agit d'une classe défini dans l’API Java (Dans le package java.lang) String s="aaa"; // s.
(Classes prédéfinies – API Java)
TD 1 IJA Introduction Objet, méthode, attribut Classe, instance
PHP5 poo.
Programmation Orientée Objet (POO)
Paramètres et pointeurs
ESIEE Paris © Denis BUREAU I N Initiation à la programmation avec le langage Java.
FLSI602 Génie Informatique et Réseaux
Introduction à la programmation (420-PK2-SL) cours 15 Gestion des applications Technologie de linformation (LEA.BW)
Leçon 3 : Héritage IUP 2 Génie Informatique
Introduction à la POO: Les classes vs les objets
Algorithme et programmation
Les sous-programmes Chapitre n° 5: Objectifs : Activité:
Principes de programmation (suite)
Sous-programmes Concepts généraux Passage de paramètres Fonctions
Cours 7 - Les pointeurs, l'allocation dynamique, les listes chaînées
Introduction à la programmation (420-PK2-SL) cours 12 Gestion des applications Technologie de linformation (LEA.BW)
Javascript les spécificités du langage - Partie 2-
Les méthodes en java Une méthode est un regroupement d’instructions ayant pour but de faire un traitement bien précis. Une méthode pour être utilisée.
Faculté I&C, Claude Petitpierre, André Maurer What is this ? (Quest ce que this ?)
Langage Oriente Objet Cours 4.
Introduction au paradigme objet Concepts importants surcharge (overload) redéfinition (override) Définition d’une classe Définition des attributs.
Les Classes les structures en C (struct) regroupent des variables : structuration de l'analyse mais problèmes de cohérence problèmes de sécurité d'accès.
77 Utilisation des classes (suite). 7-2 Objectifs A la fin de ce cours, vous serez capables de : Définir des méthodes surchargées dans une classe Fournir.
Langage Oriente Objet Cours 2.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 5 – Héritage, Interfaces et Listes génériques.
Structures de données IFT-2000
66 Utilisation des classes et des objets. 6-2 Objectifs A la fin de ce cours, vous serez capables de : Créer de nouvelles classes à laide de Eclipse Utiliser.
Manipulation de formulaires en Javascript
Les Fonctions. Définir une fonction Sections de code indépendantes que lon peut appeler à nimporte quel moment et dans nimporte quel ordre. Bout de code.
Introduction au paradigme orienté-objet (suite)
Sixième cours Les chaînes de caractères et le passage de paramètres par référence Passage de paramètres par référence String.h.
1 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 3 : Classes et Objects.
Chapitre 9 Les sous-programmes.
COURS DE PROGRAMMATION ORIENTEE OBJET :
Leçon 1 : notion dobjet IUP Génie Informatique Besançon Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
Tutorat en bio-informatique Le 21 novembre Exercices 2 et 3 (MAT1400) - solutions Chapitre 11.7, Analyse - concepts et contextes vol. 2 27) Cherchez.
99 Réutilisation du code grâce à l'héritage. 9-2 Objectifs À la fin de ce cours, vous serez capables de : Définir l'héritage Utiliser l'héritage pour.
Procédures et fonctions
Patrons de conceptions de créations
Le langage C Structures de données
JavaScript Nécessaire Web.
4 Introduction des objets. Les chaînes et tableaux
La notion de type revisitée en POO
JavaScript.
Programmation objet La base.
Créer des packages.
Tutorat en bio-informatique
Réaliser par: Sadok Amel Cheboui hassiba
Strings et Tableaux en Java
PHP objet Jérôme CUTRONA 10:13:27 Programmation Web
Les classes présenté par: RAHMOUNE RIME / ZEKRI SELMA.
Les classes et les objets Les données finales class A { … private final int n = 20 ; // la valeur de n est définie dans sa déclaration … } class A { public.
Les types composés Les enregistrements.
Bureautique M1 Publipostage.
ISBN Chapitre 10 L'implémentation des sous- programmes.
Cours LCS N°4 Présenté par Mr: LALLALI
Cours 4 (14 octobre) Héritage. Chapitre III Héritage.
Héritage Conception par Objet et programmation Java
Conception de Programmes - IUT de Paris - 1ère année Quelques éléments du langage C++ Les références La surcharge de fonctions Les fonctions «
Tutorat en bio-informatique Le 2 novembre Exercice 5 et 6 (MAT1400) Chapitre 9.7, Analyse - concepts et contextes vol. 2 23) Écrivez l'équation.
8PRO107 Éléments de programmation Les tableaux. Étude de cas 1 Description du problème : Lire une liste d’entiers et l’afficher d’abord dans le même ordre.
1 PHP 5 Notions fondamentales (niveau 1 cours #3) Formation continue – Cégep de Sainte-Foy François G Couillard.
Philippe Gandy - 22 septembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Correction du TD Chapitre 3.
LES CLASSES ET LES OBJETS
Transcription de la présentation:

Tutorat en bio-informatique Le 14 novembre 2012

Au programme… Les objets –Propriétés (attributs) –Constructeurs –Méthodes

Avant de commencer… JavaScript supporte la programmation orientée objet (comme C++ et Java) Ce ne sont pas tous les langages de programmation qui permettent l'utilisation d'objets (C par exemple)

Les objets On peut se servir des objets (en programmation) pour représenter des objets concrets : –table, voiture, étudiant, compte bancaire, etc. On peut également définir des objets pour représenter des structures de notre programme : –liste, nœud (d'une liste), arbre, etc.

Les objets On peut créer un objet table de la façon suivante : var table = {largeur: 50, longueur: 75, hauteur: 60}; ou encore de cette façon, plus verbeuse : var table = new Object(); table.largeur = 50; table.longueur = 75; table.hauteur = 60;

Les objets Ici, 'table' est un objet spécifique (avec des propriétés définies). On peut accéder aux propriétés (en lecture ou en écriture) de deux façons : var table = {largeur: 50, longueur: 75, hauteur: 60}; print(table.largeur); //façon 1 print(table["longueur"]); //façon 2, un peu comme un tableau

Les objets Contrairement aux noms de variables, on peut utiliser des espaces dans les noms des propriétés. Il faut par contre utiliser les guillemets et la façon "tableau" pour y accéder : var pizza = {prix: 12.99, "nom de pizza": "hawaïenne"} print(pizza.prix); print(pizza."nom de pizza"); //ERREUR! print(pizza["nom de pizza"]); //OK

Les objets On peut vérifier si un propriété existe avec l'instruction 'in' : var pizza = {prix: 12.99, "nom de pizza": "hawaïenne"} if("prix" in pizza) print("Le prix est " + pizza.prix); Le nom de la propriété doit être entre guillemets

Les objets On peut aussi parcourir toutes les propriétés d'un objet avec une boucle for et l'instruction in var pizza = {prix: 12.99, "nom de pizza": "hawaïenne"} for(var prop in pizza) { print(prop + " = " + pizza[prop]) } imprime :prix = nom de pizza = hawaïenne

Les objets Les objets utilisés comme on vient de le voir sont parfaits pour représenter des dictionnaires : var dictioAngFr = {hi: "salut", "good morning": "bonjour"}; var motAng = "hi"; if(motAng in dictioAngFr) var motFr = dictioAngFr[motAng];

Les objets Le problème avec la création d'objets comme on vient de le voir, c'est que l'objet créé n'est pas réutilisable On ne peut pas créer rapidement plusieurs 'versions' du même type d'objet : var pizza1 = {prix: 12.99, "nom de pizza": "hawaïenne"} var pizza2 = {prix: 11.49, "nom de pizza": "pepperoni"} var pizza3 = {prix: 10.99, "nom de pizza": "fromage"} …

Les objets Nous allons maintenant voir comment créer un "modèle" (ou prototype) d'objet réutilisable Nous verrons également comment y associer des méthodes

Les objets On dit d'un objet en particulier qu'il s'agit d'une instance En effet, une instance d'un objet se conforme au modèle d'un prototype (possède les propriétés définies dans le prototype)

Les objets Exemple : –Soit un objet "table". Le modèle (prototype) d'une table contient les propriétés suivantes : largeur longueur hauteur –Une instance de l'objet table sera une table en particulier, avec sa largeur, sa longueur et sa hauteur

Les objets Pourquoi utiliser des objets? –On peut stocker un grand nombre d'informations différentes dans un seul objet –On peut définir des méthodes propres aux instances d'un objet (compartimentalisation du code)

Les propriétés On appelle propriétés les 'variables' qui sont associées à un objet Chaque instance d'un objet possèdera une valeur spécifique pour chacune de ses propriétés C'est ce qui fait que chaque instance est différente (tout en faisant partie du même prototype d'objets)

Constructeurs Lorsqu'on veut définir un modèle d'objets réutilisable, on utilise un constructeur La déclaration et l'initialisation des propriétés se fait normalement dans le constructeur, quoiqu'on peut à tout moment ajouter des propriétés à un objet déjà défini

Constructeurs Un constructeur est une fonction spéciale qui sert à instancier un objet Ils peuvent également servir à accomplir des tâches qui doivent être faites lors de la création de l'objet (écriture dans la console, calcul d'une valeur en fonction des propriétés, etc.)

Constructeurs Un constructeur doit être défini de cette façon : function NomDuTypeObjet(paramètres) { … } Le nom du constructeur doit (par convention) commencer par une lettre majuscule (permet de faire la différence entre une fonction normale et un constructeur)

Constructeurs Exemple : function Table(largeur, longueur, hauteur) { this.largeur = largeur; this.longueur = longueur; this.hauteur = hauteur; } Le mot réservé 'this' représente une variable spéciale qui pointe sur l'instance courante. Cela nous permet d'accéder aux propriétés de l'instance à l'intérieur du constructeur (et des méthodes) On n'utilise pas 'var' pour déclarer les propriétés, mais on utilise 'this'

Constructeurs La déclaration d'un objet se fait comme celle d'une variable ordinaire : –var table; L'instanciation se fait à l'aide du constructeur et du mot réservé 'new' : –var petiteTable = new Table(25, 35, 45); –var grandeTable = new Table(55, 75, 100);

Méthodes Les méthodes sont des fonctions associées à des instances d'objets Elles sont appelées sur des instances et ont accès aux valeurs des propriétés de l'instance Appel à l'extérieur de du constructeur : instance.methodeDinstance(); Appel à l'intérieur du constructeur : this.methodeDinstance();

Méthodes On définit des méthodes à l'intérieur du constructeur, de la même manière que les propriétés (en fait, les méthodes sont des propriétés de type 'function') : function Etudiant(nom, niveau) { this.nom = nom; this.niveau = niveau; this.changeNiveau = function(nouveauNiv) { this.niveau = nouveauNiv; }; }

Méthodes Exemple complet : function Etudiant(nom, niveau) { this.nom = nom; this.niveau = niveau; this.changeNiveau = function(nouveauNiv) { this.niveau = nouveauNiv; }; } var etud = new Etudiant("Rodrigo", "Maîtrise"); //Construction etud.changeNiveau("Doctorat"); //Appel de la méthode

Méthodes Il est possible d'ajouter des nouvelles méthodes après la définition du constructeur (en dehors du constructeur) On va alors ajouter les nouvelles méthodes au prototype de l'objet

Méthodes function Etudiant(nom, niveau) { this.nom = nom; this.niveau = niveau; this.changeNiveau = function(nouveauNiv) { this.niveau = nouveauNiv; }; } var etud = new Etudiant("Rodrigo", "Maîtrise"); //Construction etud.changeNiveau("Doctorat"); //Appel de la méthode Etudiant.prototype.imprime = function() { print("Etudiant : " + this.nom + ", " + this.niveau); };

Création d’un objet Lors de la création d'une instance, un espace mémoire est réservé pour stocker les valeurs des propriétés. Ici, 't' contient la référence (adresse) vers l'objet. var t = new Table(2, 3, 4); Largeur Longueur Hauteur Adresse mémoire

Création d’un objet var t = new Table(2, 3, 4); Largeur Longueur Hauteur Adresse mémoire 1

Création d’un objet var t = new Table(2, 3, 4); t = new Table(2, 3, 4); Largeur Longueur Hauteur Adresse mémoire 1 Largeur Longueur Hauteur Adresse mémoire 2

Copie d’un objet On ne peut pas copier des objets (et des tableaux) de la même façon que des nombres et des strings : var a = 55; var b = a; //Erreur logique! var t = new Table(2, 3, 4); var t2 = t; //Erreur logique! De cette façon, on ne fait qu'obtenir 2 pointeurs vers la même instance! Largeur (2) Longueur (3) Hauteur (4) Adresse mémoire t t2

Copie d’un objet Pour copier correctement un objet (ou un tableau), il faut créer un nouvel objet qui aura les mêmes valeurs de propriétés (ou les mêmes valeurs dans les cases du tableau) On peut créer une méthode pour créer une vraie copie des objets

Copie d’un objet function Etudiant(nom, niveau) { this.nom = nom; this.niveau = niveau; this.changeNiveau = function(nouveauNiv) { this.niveau = nouveauNiv; }; this.clone = function() { return new Etudiant(this.nom, this.niveau); }; } var etu = new Etudiant("Georges", "Secondaire"); var etuCopie = etu.clone();

Comparaison de deux objets La comparaison suivante compare uniquement les références et non pas les valeurs des propriétés : if (t1 == t2) Afin de vérifier si deux objets sont identiques, il faut plutôt vérifier si les valeurs de leurs propriétés sont identiques

Comparaison de deux objets function Etudiant(nom, niveau) { this.nom = nom; this.niveau = niveau; this.estIdentique = function(autreEtud) { return this.nom == autreEtud.nom && this.niveau == autreEtud.niveau; }; } var etu = new Etudiant("Georges", "Secondaire"); var etuCopie = etu.clone(); if(etu.estIdentique(etuCopie)) print("Ils sont identiques!!");

Les objets Les objets sont en quelques sortes des types que vous créez Les objets peuvent donc être employés comme : –propriétés –paramètres –valeurs de retour

Objets comme paramètres Avec les nombres et les strings, on passe en paramètre une copie de la valeur Avec les objets (et les tableaux), on passe en paramètre une copie de la référence

Objets comme paramètres Si on modifie les valeurs des propriétés du paramètre formel, les valeurs des propriétés du paramètre actuel sont modifiées aussi Si on modifie la référence du paramètre formel, on ne modifie pas la référence du paramètre actuel

Objets comme paramètres function Etudiant(nom, niveau) { this.nom = nom; this.niveau = niveau; this.modifieRef = function(autreEtud) { autreEtud = new Etudiant("Bill", "Cegep"); }; } La fonction modifieRef n'aura aucun effet sur le paramètre actuel

Exercice 1 Créez un constructeur pour l'objet Table, possédant comme propriétés une largeur, une longueur et une hauteur. Créez un constructeur possédant 3 paramètres (largeur, longueur, hauteur). Ajoutez une méthode calculeAire() dans le constructeur qui retournera l’aire de la table. Ajoutez une méthode imprime() en dehors du constructeur qui imprimera une description de la table.

Exercice 1 (réponse) function Table(largeur, longueur, hauteur) { this.largeur = largeur; this.longueur = longueur; this.hauteur = hauteur; this.calculeAire = function() { return this.largeur * this.longueur; }; } Table.prototype.imprime = function() { print("Largeur = " + this.largeur + ", longueur = " + this.longueur + ", hauteur = " + this.hauteur + ", aire = " + this.calculeAire()); };

Exercices 2 et 3 (MAT1400) Chapitre 11.7, Analyse - concepts et contextes vol. 2 27) Cherchez le maximum et le minimum absolu de f sur l'ensemble D., D est la région bornée par la parabole et la droite. 35) Déterminez trois nombres positifs dont la somme vaut 100 et dont le produit est maximum.