3 PHP avancé Les objets : définitions



Documents pareils
Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

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

Héritage presque multiple en Java (1/2)

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2

Application web de gestion de comptes en banques

Initiation à JAVA et à la programmation objet.

Apprendre la Programmation Orientée Objet avec le langage Java (avec exercices pratiques et corrigés)

Programmer en JAVA. par Tama

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

Chapitre VI- La validation de la composition.

Polymorphisme, la classe Object, les package et la visibilité en Java... 1

JAVA TD0. Prise en main du langage Environnement de base JAVA 1

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Cours 1: Java et les objets

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

Programmation par les Objets en Java

Présentation. Au programme. Fonctionnement. A l issue de ce module vous devriez...

Programmation par composants (1/3) Programmation par composants (2/3)

P 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 )

Chapitre 2. Classes et objets

Premiers Pas en Programmation Objet : les Classes et les Objets

1. Installation d'un serveur d'application JBoss:

Devenez un véritable développeur web en 3 mois!

BTS S.I.O PHP OBJET. Module SLAM4. Nom du fichier : PHPRévisionObjetV2.odt Auteur : Pierre Barais

1. Base de données SQLite

TD/TP PAC - Programmation n 3

INITIATION AU LANGAGE JAVA

UML. Diagrammes de classes (suite) Delphine Longuet.

Auto-évaluation Programmation en Java

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

Génie Logiciel avec Ada. 4 février 2013

Design patterns. Design patterns - définition. Design patterns - avantages

Facultés Universitaires Notre-Dame de la Paix. Conception et Programmation Orientées- Object

2 e édition JAVA 5 et 6. Jérôme Bougeault. TSoft et Groupe Eyrolles, 2003, 2008, ISBN :

Objets et Programmation. origine des langages orientés-objet

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

Développement Logiciel

Les frameworks au coeur des applications web

La programmation orientée objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des données PHP/MySQL. Le langage PHP (2)

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

Chapitre 10. Les interfaces Comparable et Comparator 1

Université de Bangui. Modélisons en UML

Programmation Objet - Cours II

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

TP1 : Initiation à Java et Eclipse

Java c est quoi? Java pourquoi?

Langage Java. Classe de première SI

Programmation Orientée Objet en C#

Plan Pédagogique du cours

Applet pour visualiser les variables «automate» notifiées

Diagramme de classes

as Architecture des Systèmes d Information

Projet de programmation (IK3) : TP n 1 Correction

Patrons de Conception (Design Patterns)

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

OpenPaaS Le réseau social d'entreprise

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

Bases Java - Eclipse / Netbeans

Programmation avec des objets : Cours 7. Menu du jour

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1

RMI le langage Java XII-1 JMF

Info0604 Programmation multi-threadée. Cours 5. Programmation multi-threadée en Java

Programmation Orientée Objet

Polycopié Cours Programmation Orientée Objet sous Java Programme : Filière SMI S5

Programmation en Java IUT GEII (MC-II1) 1

IFT2255 : Génie logiciel

Types d applications pour la persistance. Outils de développement. Base de données préexistante? 3 modèles. Variantes avec passerelles

LOG4430 : Architecture logicielle et conception avancée

Par Laurent DESECHALLIERS. Mastère Spécialisé en Management de Projets en Milieu Industriel. CESI de Rouen Promotion 2002/2003.

Aide mémoire UML & Java 1ère partie : Introduction. marc.lemaire@u-cergy.fr

et Programmation Objet

Programmation MacOSX / ios

Jacques Lonchamp. Conception. d applications en Java/JEE. Principes, patterns et architectures

GOL502 Industries de services

Alfstore workflow framework Spécification technique

I4 : Bases de Données

TD/TP PAC - Programmation n 3

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

Développement mobile MIDP 2.0 Mobile 3D Graphics API (M3G) JSR 184. Frédéric BERTIN

TP JEE Développement Web en Java. Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web.

Remote Method Invocation (RMI)

Approche Contract First

Machines virtuelles fonctionnelles (suite) Compilation ML Java

Programmation Orientée Objet

Technologie Web. Conception de sites Web. Alexandre Pauchet. INSA Rouen - Département ASI. INSA - ASI TechnoWeb : Rappels UML 1/21

Environnements de développement (intégrés)

CREATION WEB DYNAMIQUE

Programmation Orientée Objet application au langage Java Version Novembre 2007

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

Création d objet imbriqué sous PowerShell.

Classe Interne, Anonyme & Enumération

C++ Programmer. en langage. 8 e édition. Avec une intro aux design patterns et une annexe sur la norme C++11. Claude Delannoy

basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB Olivier Augereau Formation UML

TP1. Outils Java Eléments de correction

Tutoriel: Création d'un Web service en C++ avec WebContentC++Framework

RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants.

Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T>

Information utiles. webpage : Google+ : digiusto/

Transcription:

Les objets : définitions Structure de données associant des attributs et des méthodes qui décrivent le comportement de l'objet. Héritage de la conception objet (UML). Définie dans une classe. Un objet est une instance de classe. Ex : Voiture est une classe. Punto est un objet instance de cette classe. 1 Les objets : UML Véhicule modele:string * construit 1 Constructeur nom:string string:print() Lien d'héritage : Une Voiture est un Véhicule. Voiture est un descendant de Véhicule (spécialisation). Véhicule est le parent de Voiture (généralisation). Voiture nbplaces : int Moteur cylindree : int int:getnbplaces() string : demarrer() int:getcylindree() 2 1

Les objets : Encapsulation Un objet ne montre pas toutes ces propriétés (attributs et méthodes), c'est l'encapsulation : Private : accessible uniquement dans la classe. Public : accessible par tous (var de php4). Protected : accessible uniquement par les descendants. 3 Les objets : Les messages Les classes communiquent entre elles par des messages : - Appel de méthodes avec paramètre et retour éventuel d'information. Constructeur nom:string Afficher() Véhicule modele:string modele string:afficher() 4 2

Les objets : déclaration de classe class nomclasse { // déclaration des attributs private $prop1; private $prop2; // définition du constructeur function construct ($prop1,$prop2) { $this prop1=$prop1; $this prop2=$prop2; // définition des méthodes function method1($arg1,$arg2 ) { 5 Les objets : méthodes Accesseurs: donnent accès aux propriétés function getprop1() { return $this prop1; Mutateurs: modifient les propriétés function setprop1($val1) { $this prop1=$val1; 6 3

Les objets : exemple // fichier vehicule.class.php class Vehicule { private $modele; // les attributs peuvent être déclarés dynamiquement. function construct($modele) { $this->modele=$modele; function getmodele() { return $this->modele; function setmodele($modele) { $this->modele=$modele; function print() { echo $this modele."<br/>"; 7 Les objets : utilisation On parle d'instanciation de la classe <?php require("vehicule.class.php"); $voiture=new vehicule("punto"); echo $voiture getmodele(); $voiture->setmodele("bravo"); $voiture->print();?> 8 4

Les objets : remarques Un objet peut être stocké dans une variable de session si il est déclaré avant son utilisation En php4, les méthodes et attributs des objets sont tous public, donc accessibles partout ou l'objet est utilisé. 9 Les objets : héritage Vehicule modele:string string:print() Voiture nbplace : string int:getnbplace() <?php class Voiture extends Vehicule { private $nbplace; function construct($modele,$nbplaces) { parent:: construct($modele); $this nbplaces = $nbplaces; fucntion print() { parent::print(); echo "Nombre de places assises ".$this getnbplaces(); function getnbplaces() { return $this->nbplaces;?> 10 5

Les objets : Polymorphisme d'héritage Une méthode peut être redéfinie lors de la spécialisation : c'est la redéfinition. Les deux classes peuvent avoir des méthodes de même nom, de même signature et de comportement différent. L'appel à ces méthodes est identique. C'est le polymorphisme. On appel la méthode sans se soucier du type de l'objet. 11 Les objets : Polymorphisme ad hoc On peut étendre cette propriété à des classes non parentes class Voiture { private $marque; private $modele; function construct($marque, $modele) { $this->marque=$marque; $this->modele=$modele; function print() { echo $this->marque." ".$this->modele; class Animal { private $espece; private $poids; function construct($espece, $poids) { $this->espece=$espece; $this->poids=$poids; function print() { echo $this->espece." ".$this->poids; $tableau : array($chat,$chien,$voit1,$lapin,$voit2); foreach ($tableau as $truc) $truc print(); 12 6

Les objets : Polymorphisme paramétrique Deux méthodes de même nom définies dans la même classe, avec une signature différente. C'est la surcharge. Lors de l'appel elles sont différenciées par les paramètres et la bonne méthode est appelée. Interdit en php 13 Les objets : Classe abstraite Classe uniquement définie pour être étendue. Elle est non instanciable. Factorise du code. Déclare des méthodes abstraites (sans code) qui devrons être définies dans les classes filles abstract class MaClasse { private $nom; function print() { echo $nom; abstract mamethode($monattrib); 14 7

Les objets : méthodes statiques Méthodes appelées sans instanciation (new) maclasse::mamethodstatic(); Exemple class Voiture { static function liste_attributs() { return array("marque","modele"); print_r($voiture::liste_attributs()); Ne contient pas de $this parce que les attributs, ne sont pas accédées lors de l'appel de méthodes statiques. 15 Les objets : classe finale Classes ou méthodes qui ne peuvent être étendues final class maclasse { class maclass { final function connect() { 16 8

Les objets : Interface Décrivent les classes sans instancier les méthodes. Définis les pré-requis à l'instanciation des classes qui les implémentent. Contient les prototypes des méthodes. Définis un contrat à remplir. 17 Les objets : Interface interface DAO { function get($id); function update($obj); function delete($id); function insert($obj); 18 9

Les objets : Interface class DAOArticle implements DAO { function get($id) { function update($obj) { function delete($id) { function insert($obj) { Si la classe n'implémente pas au minimum ces 4 fonction => erreur php. 19 Les objets : Interface N'assure pas de contrôle des types de variable passées en argument des méthodes Simule l'héritage multiple en assurant que la classe fille disposera bien au moins de toutes les méthodes de ses "classes mères". 20 10

Les objets : Interface class DAOArticle extends Element implements DAO { function construct($id,$title,$content,$auteur){ Element +id: integer +title: string DAO parrent:: construct($id,$title); $this content = $content; $this auteur = $auteur; DAOArticle +content: text +auteur: string function insert($obj) { function update($obj) { function get($id) { function delete($id) { 21 Les objets : sérialisation serialize() transforme un objet en chaine. permet de l'enregistrer dans un fichier ou une base de données. unserialize() appelé après la déclaration de la classe reconstruit l'objet. Opération effectuée automatiquement quand un objet est stocké dans la session. Il faut donc déclarer la classe avant session_start(). Problème si session automatique dans php.ini 22 11

TP 7 Element +pos_x: int +pos_y: int +date_creation: date +date_modification: date +display() Article +titre: string +chapeau: string +texte: string Photo +titre: string +fichier: string +commentaire: string Lien +titre: string +href: string +target: string Implémenter ce diagramme en PHP à l'aide de classes 23 TP 8 Ecrire une classe DAOElement charger d'instancier la classe Element à partir des données de la base de donnée : - Créer une table Element(pos_x,pos_y,date_creation,date_modification) - Créer la classe DAOElement selon la classe UML DAOElement +db: resource +connect() +find() +insert() +update() +delete() +findall() 24 12

3 - Design pattern Décrivent un ensemble de solution standard de conception d'architecture logiciels répondant à une préoblématique donnée. Le design pattern le plus utilisé pour le web est MVC 25 3 - MVC Modèle - Vue - Contrôleur. Décompose la conception en 3 parties : Les modèles décrivent les classes et méthodes d'accès aux données. Les vues se chargent de la présentation de ces données. Les contrôleurs manipulent les premières pour alimenter en contenu les secondes. 26 13

3 - MVC - Vue article.tpl.php <div class="article"> <h1><?php echo $article titre;?></h1> <h2><?php echo $article soustitre;?></h2> <p> <b><?php echo $article chapeau;?></b> </p> <p> <?php echo $article contenu;?> </p> </div> 27 3 - MVC - Modèle article.obj.php Class Article extends Element implements DAO { private $id; private $titre; private $soustitre; private $chapeau; private $contenu; function construct($id,$titre,$soustitre$chapeau,$contenu) { $this id=$id; $this titre=$titre; 28 14

3 - MVC - Modèle function insert() { $article=array{"id"=>$this id, "titre"=>$this->titre ; DB::insert("Article,"$article); 29 3 - MVC - Contrôleur Article.ctrl.php require("article.obj.php"); function addarticle($post) { $article=new Article('',$post["titre"], $post["soustitre"], $post["chapeau"], $post["contenu"]); $article insert(); function viewarticle($id) { $article=article::get($id); include("article.tpl.php"); 30 15