Ce chapitre présente les concepts de la programmation orientée objet (POO) et montre comment ils peuvent être implémentés en PHP.

Dimension: px
Commencer à balayer dès la page:

Download "Ce chapitre présente les concepts de la programmation orientée objet (POO) et montre comment ils peuvent être implémentés en PHP."

Transcription

1 6 PHP orienté objet Ce chapitre présente les concepts de la programmation orientée objet (POO) et montre comment ils peuvent être implémentés en PHP. L implémentation de la POO en PHP possède toutes les fonctionnalités que vous seriez en droit d attendre d un langage orienté objet complet. Nous signalerons chacune de ces fonctionnalités à mesure que nous avancerons dans ce chapitre. Concepts de la programmation orientée objet Les langages de programmation modernes supportent généralement, voire requièrent, une approche orientée objet du développement logiciel. Le développement orienté objet (DOO) consiste à exploiter les classifications, les relations et les propriétés des objets d un système pour faciliter le développement des programmes et la réutilisation du code. Classes et objets Dans le contexte de la POO, un objet peut être quasiment tout élément ou concept, c est-à-dire un objet physique comme un bureau ou un client, ou un objet conceptuel qui n existe que dans le programme lui-même, comme un champ de saisie ou un fichier. Le plus souvent, le développeur s intéresse aux objets du monde réel et aux objets conceptuels qui doivent être représentés dans le programme. Un logiciel orienté objet est conçu et construit sous la forme d un ensemble d objets indépendants dotés à la fois d attributs et d opérations qui interagissent pour répondre à nos besoins. Les attributs sont des propriétés ou des variables qui se rapportent à l objet. Les opérations sont des méthodes, des actions ou des fonctions que l objet peut accomplir, soit pour se modifier lui-même, soit pour produire un effet externe (le terme attribut est utilisé de manière interchangeable avec les termes variable membre et propriété, tandis que le terme opération est utilisé de manière interchangeable avec le terme méthode).

2 174 PHP & MySQL Le principal avantage d un logiciel orienté objet réside dans sa capacité à prendre en charge et à encourager l encapsulation, également appelée masquage de données. Pour l essentiel, les données contenues dans un objet ne sont accessibles que par le biais des opérations de celui-ci, qui forment l interface de l objet. La fonctionnalité d un objet est liée aux données qu il utilise. Les détails de l implé mentation d un objet peuvent être facilement modifiés pour améliorer les performances, ajouter de nouvelles caractéristiques ou corriger des bogues, sans qu il soit nécessaire de changer l interface. Le fait de modifier cette interface peut, en effet, avoir des réper cussions en cascade dans le projet, alors que l encapsulation vous permet d effectuer des modifications et de réaliser des corrections de bogues sans que vos actions ne se répercutent dans les autres parties du projet. Dans les autres secteurs du développement logiciel, la POO s est imposée comme la norme et le développement orienté fonctions est désormais considéré comme démodé. Cependant, pour diverses raisons, la plupart des scripts web restent malheureusement conçus et écrits avec une approche ad hoc, utilisant une méthodologie orientée fonctions. Ce "retard" a plusieurs causes. Une majorité de projets web sont de petite taille et rela tivement simples. Nul besoin d élaborer un plan détaillé pour construire une étagère avec une scie. De la même manière, la plupart des projets logiciels pour le Web peuvent être réalisés de cette façon parce qu ils sont de petite taille. En revanche, si vous prenez votre scie pour construire une maison sans avoir formellement planifié vos travaux, vous ne pourrez pas obtenir des résultats de qualité, si tant est que vous obteniez des résultats. Il en va exactement de même pour les projets logiciels importants. Nombre de projets web évoluent d un ensemble de pages reliées entre elles par des hyperliens vers des applications complexes. Ces applications complexes, qu elles soient présentées via des boîtes de dialogue et des fenêtres ou via des pages HTML dynamiques, requièrent une méthodologie de développement mûrement réfléchie. L orientation objet peut aider à gérer la complexité des projets logiciels, à augmenter la réutilisabilité du code et, par conséquent, à réduire les coûts de maintenance. En POO, un objet est une collection unique et identifiable de données et d opérations agissant sur ces données. Par exemple, considérons le cas de deux objets représentant des boutons. Même si ces boutons portent tous deux l intitulé "OK", ont une largeur de 60 pixels, une hauteur de 20 pixels et divers autres attributs identiques, nous devons pouvoir les distinguer et les manipuler séparément l un de l autre. D un point de vue logiciel, cette distinction s effectue via des variables séparées, qui servent de descripteurs (d identificateurs uniques) pour les objets. Les objets peuvent être regroupés en "classes". Une classe est un ensemble d objets qui peuvent être différents les uns des autres, mais qui ont certains points communs.

3 Chapitre 6 PHP orienté objet 175 Une classe contient des objets qui présentent tous des opérations se comportant de la même manière et des attributs identiques représentant les mêmes choses, bien que les valeurs de ces attributs puissent varier d un objet à l autre au sein de la classe. Vous pouvez ainsi considérer le nom bicyclette comme celui d une classe d objets qui décrit les nombreuses bicyclettes distinctes qui présentent toutes des caractéristiques ou attributs communs, comme deux roues, une couleur et une taille, et des opérations, comme le déplacement. Ma propre bicyclette pourrait ainsi être considérée comme un objet appartenant à la classe bicyclette. Elle a des caractéristiques identiques à toutes les bicyclettes, y compris l opération de déplacement, qui est tout à fait comparable à l opération de déplacement des autres bicyclettes, même si elle n est utilisée que très rarement. Les attributs de ma bicyclette ont toutefois des valeurs qui leur sont propres ; par exemple, sa couleur est verte, ce qui n est pas le cas de toutes les bicyclettes. Polymorphisme Un langage de programmation orienté objet doit prendre en charge le polymorphisme, qui signifie que différentes classes peuvent avoir des comportements différents pour la même opération. Par exemple, supposez que nous ayons défini une classe voiture et une classe bicyclette. Ces deux classes peuvent avoir des opérations de déplacement diffé rentes. Dans l univers des objets réels, cette différentiation pose rarement problème : il est peu probable en effet qu une bicyclette soit confondue avec une voiture et démarrée avec une opération de déplacement de voiture au lieu d une opération de déplacement de bicyclette. En revanche, un langage de programmation ne possède pas le sens commun du monde réel : il doit par conséquent disposer du polymorphisme pour qu il soit possible de distinguer l opération de déplacement appropriée à un objet particulier. Le polymorphisme est plus une caractéristique des comportements que des objets eux-mêmes. En PHP, seules les fonctions membres d une classe peuvent être polymor phiques. Les verbes des langages naturels sont un peu l équivalent dans le monde réel des fonctions membres d une classe. Considérez la manière dont peut être utilisée une bicyclette dans la vie réelle. Vous pouvez la nettoyer, la déplacer, la démonter, la répa rer ou la peindre, entre autres choses. Les verbes de cette dernière phrase décrivent des actions génériques parce que le type d objet auquel ils peuvent être appliqués n est pas précisé (ce type d abstraction concer nant les objets et les actions est, du reste, l une des caractéristiques distinctives de l intelligence humaine). Le déplacement d une bicyclette, par exemple, exige des actions totalement différentes de celles requises pour déplacer une voiture, même si les concepts sont

4 176 PHP & MySQL similaires. Le verbe "déplacer" peut donc être associé à un ensemble particulier d actions, mais uniquement après que l objet auquel il s applique a été défini. Héritage L héritage permet de créer une relation hiérarchique entre les classes au moyen de sous-classes. Une sous-classe hérite des attributs et des opérations de sa superclasse. Les voitures et les bicyclettes ont, par exemple, des points communs et nous pourrions donc définir une classe véhicule contenant des attributs comme la couleur et des opéra tions comme le déplacement qui sont communs à tous les véhicules. Il suffirait ensuite de laisser les classes voiture et bicyclette hériter de la classe véhicule. Les termes sous-classe, classe dérivée et classe fille sont utilisés de manière interchan geable. Il en va de même des termes superclasse, classe de base et classe parente. Grâce au concept d héritage, nous pouvons élaborer et enrichir l ensemble des classes existantes. À partir d une simple classe de base, des classes plus complexes et plus spécialisées peuvent être créées au fur et à mesure des besoins. Cette approche rend le code plus réutilisable et constitue l un des atouts indéniables de la programmation orientée objet. Exploiter la notion d héritage peut permettre d économiser du temps et des efforts de développement lorsque des opérations peuvent être implémentées une seule fois dans une superclasse, au lieu de l être à chaque fois dans des sous-classes séparées. Cette approche favorise également une modélisation plus précise des relations du monde réel. Lorsque la phrase décrivant la relation entre deux classes peut contenir les mots "est un" ou "est une", alors, le concept d héritage peut être exploité. La phrase "une voiture est un véhicule", par exemple, est tout à fait sensée, tandis que la phrase "un véhicule est une voiture" n est pas vraie dans le monde réel. Par conséquent, les voitures peuvent hériter de la classe véhicule. Création de classes, d attributs et d opérations en PHP Jusqu ici, la description que nous avons donnée des classes est plutôt abstraite. Plus concrètement, la création d une classe en PHP s effectue au moyen du mot-clé class. Structure d une classe La définition minimale d une classe se formule de la manière suivante : class nomclass {

5 Chapitre 6 PHP orienté objet 177 Pour qu une classe ait une quelconque utilité, elle doit être dotée d attributs et d opérations. Pour créer des attributs, il faut déclarer des variables au sein d une définition de classe en les précédant de mots-clés indiquant leur visibilité : public, private ou protec ted (ces mots-clés seront présentés plus loin dans ce chapitre). Le code qui suit crée une classe nomclasse dotée des deux attributs publics, $attribut1 et $attribut2 : class classname { public $attribut1; public $attribut2; La création d opérations dans une classe s effectue en déclarant des fonctions dans la définition de la classe. Le code suivant crée une classe nomclasse dotée de deux opéra tions qui n effectuent rien de particulier. L opération operation1() ne prend aucun para mètre, tandis que operation2() attend deux paramètres. class nomclasse { function operation1() { function operation2($param1, $param2) { Constructeurs La plupart des classes disposent d un type spécial d opération appelé constructeur. Un constructeur est appelé lors de la création d un objet et effectue généralement des tâches d initialisation comme l assignation de valeurs initiales aux attributs ou la création d autres objets nécessaires à l objet concerné. Un constructeur se déclare de la même manière que les autres opérations, sauf qu il porte le nom spécial construct(). Bien qu un constructeur puisse être appelé manuellement, son rôle principal est d être appelé automatiquement à la création d un objet. Le code qui suit déclare une classe dotée d un constructeur : class nomclasse { function construct($param) { echo "Constructeur appelé avec le paramètre ". $param. "<br />"; Destructeurs L opposé d un constructeur est un destructeur. Les destructeurs permettent d exécuter un traitement particulier juste avant qu un objet ne soit détruit, ce qui aura lieu automatiquement lorsque toutes les références à cet objet ont été indéfinies ou hors de portée. Le destructeur d une classe doit s appeler _destruct() et ne peut prendre aucun paramè tre.

6 178 PHP & MySQL Instanciation des classes Une fois que nous avons déclaré une classe, nous devons créer un objet (c est-à-dire un individu particulier appartenant à la classe) avec lequel nous pourrons ensuite travailler. Cette étape s appelle également création d une instance ou instanciation d une classe. On crée un objet à l aide du mot-clé new. Il faut également préciser la classe dont l objet sera l instance et fournir les paramètres éventuellement requis par le construc teur de la classe. Le code qui suit déclare une classe nomclasse avec un constructeur, puis crée trois objets de type nomclasse : class nomclasse { function construct($param) { echo "Constructeur appelé avec le paramètre ". $param."<br />"; $a = new nomclasse("premier"); $b = new nomclasse("second"); $c = new nomclasse(); Le constructeur étant invoqué à chaque création d objet, ce code produit le résultat suivant : Constructeur appelé avec le paramètre Premier Constructeur appelé avec le paramètre Second Constructeur appelé avec le paramètre Utilisation des attributs de classe À l intérieur d une classe, vous avez accès à un pointeur spécial appelé $this. Si un attri but de la classe courante porte le nom $attribut, vous pouvez le désigner par $this->attri but lorsque vous l initialisez ou que vous y accédez à partir d une opération située dans la classe. Le code qui suit illustre la définition et l accès à un attribut à l intérieur d une classe : class nomclasse { public $attribut; function operation($param) { $this->attribut = $param echo $this->attribut; La possibilité d accéder à un attribut depuis l extérieur de la classe est déterminée par des modificateurs d accès, comme vous le verrez dans la suite de ce chapitre.

7 Chapitre 6 PHP orienté objet 179 Cet exem ple ne restreignant pas l accès à l attribut, vous pouvez y accéder depuis l extérieur de la classe : class nomclasse { public $attribut; $a = new nomclasse(); $a->attribut = "valeur"; echo $a->attribut; Il est toutefois déconseillé d accéder directement aux attributs depuis l extérieur d une classe. L un des intérêts de l approche orientée objet réside justement dans le fait que l encapsulation y est encouragée. Vous pouvez garantir cette encapsulation à l aide des fonctions get et set. Au lieu d accéder directement aux attributs d une classe, vous pouvez écrire des fonctions accesseurs de sorte à effectuer tous vos accès par le biais d une seule section de code. Une fonction accesseur peut se formuler de la manière suivante : class nomclasse { public $attribut; function get($nom) { return $this->$nom; function set ($nom, $valeur) { $this->$nom = $valeur; Ce code se contente de fournir des fonctions minimales permettant d accéder à l attribut $attribut. La fonction get() renvoie simplement la valeur de $attribut, tandis que la fonction set() affecte une nouvelle valeur à $attribut. Notez que get() ne prend qu un seul paramètre le nom d un attribut et renvoie la valeur de cet attribut. De manière similaire, la fonction set() prend deux paramètres : le nom d un attribut et la valeur que vous souhaitez lui donner. Ces fonctions ne s appellent pas directement. Le double blanc souligné devant le nom indique que ces fonctions possèdent une signification spéciale en PHP, tout comme les fonctions construct() et destruct(). Si vous instanciez la classe : $a = new nomclasse(); vous pouvez utiliser les fonctions get() et set() pour tester et modifier la valeur de n importe quel attribut. Si vous tapez : $a->$attribut = 5;

8 180 PHP & MySQL cette instruction appellera implicitement la fonction set() avec la valeur $nom posi tionnée à "attribut" et la valeur $valeur initialisée à 5. Si vous souhaitez effectuer des contrôles sur les valeurs affectées à l attribut, vous devez écrire la fonction set() en conséquence. La fonction get() fonctionne de manière similaire. Dans votre code, si vous écrivez : $a->attribut l expression appellera implicitement la fonction get() avec le paramètre $nom posi tionné à "attribut". C est à vous d écrire la fonction get() pour retourner la valeur de l attribut. Au premier coup d œil, ce code peut sembler n avoir que peu ou pas d intérêt. Sous sa forme actuelle, c est probablement le cas, mais il existe une raison simple de proposer des fonctions d accès : vous n aurez alors qu une unique section de code qui accède à cet attribut particulier. Avec un seul point d accès, vous pouvez implémenter des contrôles de validité afin de vous assurer que les données stockées sont cohérentes. Si vous jugez par la suite que la valeur de $attribut doit être comprise entre 0 et 100, vous pouvez ajouter quelques lignes de code et opérer la vérification avant d autoriser les modifications. Vous pourriez ainsi modifier la fonction set() de la manière suivante : function set ($nom, $valeur) { if( $nom == "attribut" && $valeur >= 0 && $valeur <= 100 ) { $this->attribut = $valeur; Avec un unique point d accès, vous êtes libre de modifier l implémentation sousjacente. Si, pour une raison ou pour une autre, vous deviez modifier la manière dont $attribut est stocké, les fonctions accesseurs vous permettraient de le faire en ne modifiant le code qu à un seul emplacement. Il se peut que vous décidiez, au lieu de stocker $attribut sous forme de variable, de le récupérer à partir d une base de données selon les besoins, de calculer une nouvelle valeur à chaque fois qu elle est requise, de déduire une valeur à partir de valeurs d autres attributs ou d encoder les données sous un type de données plus compact. Quelle que soit la modification que vous souhaitiez opérer, il suffit de modifier les fonc tions accesseurs. Les autres sections du code ne seront pas affectées, pour autant que vous faites en sorte que les fonctions accesseurs continuent d accepter ou de renvoyer les données que les autres parties du programme s attendent à pouvoir utiliser.

9 Chapitre 6 PHP orienté objet 181 Contrôler l accès avec private et public PHP utilise des modificateurs d accès qui contrôlent la visibilité des attributs et des méthodes et qui sont placés devant les déclarations d attribut et de méthode. PHP dispose des trois modificateurs d accès suivants : L option par défaut est public. Cela signifie que, si vous n avez pas spécifié de modificateur d accès pour un attribut ou une méthode, ceux-ci seront publics. L accès aux éléments publics peut se faire depuis l intérieur ou l extérieur de la classe. Le modificateur d accès private signifie qu il n est possible d accéder à l élément marqué que depuis l intérieur de la classe. Vous pouvez l utiliser sur tous les attri buts si vous n utilisez pas get() et set(). Vous pouvez également choisir de rendre certaines méthodes privées, par exemple s il s agit de fonctions utilitaires à utiliser à l intérieur de la classe uniquement. Les éléments privés ne sont pas hérités (nous y reviendrons dans la suite de ce chapitre). Le modificateur d accès protected signifie que l on ne peut accéder à l élément marqué que depuis l intérieur de la classe. Il existe également dans toutes les sous-classes. Nous reviendrons aussi sur cette question lorsque nous traiterons de l héri tage dans la suite de ce chapitre. Pour l instant, considérez que protected est à mi-distance entre private et public. Le code suivant montre l utilisation du modificateur public : class nomclasse { public $attribut; public function get($nom) { return $this->$nom; public function set ($nom, $valeur) { $this->$nom = $valeur; Ici, chaque membre de classe est précédé d un modificateur d accès qui indique s il est privé ou public. Le mot-clé public peut être omis car il s agit du réglage par défaut, mais le code est plus simple à comprendre lorsque vous l incluez, notamment si vous utilisez d autres modificateurs. Appel des opérations d une classe Nous pouvons appeler une opération de classe en procédant de la même manière que pour un attribut de classe. Si nous déclarons la classe suivante : class nomclasse {

10 182 PHP & MySQL public function operation1() { public function operation2($param1, $param2) { et que nous créons un objet de type nomclasse, comme ici : $a = new nomclasse(); nous pouvons appeler des opérations en procédant de la même façon que pour l appel à d autres fonctions : en spécifiant leur nom, suivi des paramètres requis, placés entre parenthèses. Ces opérations appartenant à un objet, à la différence des fonctions norma les, il est nécessaire de préciser l objet concerné. Le nom de cet objet est indiqué de la même manière que pour ses attributs : $a->operation1(); $a->operation2(12, "test"); Si les opérations renvoient des valeurs, elles peuvent être récupérées de la manière suivante : $x = $a->operation1(); $y = $a->operation2(12, "test"); Implémentation de l héritage en PHP Une classe peut être déclarée comme étant une sous-classe d une autre classe en utili sant le mot-clé extends. Le code qui suit crée une classe B qui hérite d une classe A précédemment définie : class B extends A { public $attribut2; public function operation2() { En admettant que la classe A ait été déclarée comme suit : class A { public $attribut1; public function operation1() { tous les accès suivants aux attributs et opérations d un objet de la classe B seraient corrects : $b = new B(); $b->operation1(); $b->attribut1 = 10; $b->operation2(); $b->attribut2 = 10;

11 Chapitre 6 PHP orienté objet 183 Notez que, la classe B héritant de la classe A, nous pouvons faire référence à operation1() et $attribut1 bien que ceux-ci soient déclarés dans la classe A. En tant que sous-classe de A, la classe B en possède les caractéristiques et les données. En outre, B a déclaré un attribut et une opération qui lui sont propres. L héritage ne fonctionne que dans un sens. La sous-classe (la fille) hérite de sa super classe (le parent) mais le parent n hérite pas de son enfant. Il s ensuit que les deux dernières lignes du code suivant sont incorrectes : $a = new A(); $a->operation1(); $a->attribut1 = 10; $a->operation2(); $a->attribut2 = 10; En effet, la classe A ne possède pas d opération operation2() ni d attribut attribut2. Contrôler la visibilité via l héritage avec private et protected Les modificateurs d accès private et protected permettent de contrôler l héritage. Un attribut ou une méthode déclaré private ne sera pas hérité, alors qu un attribut ou une méthode déclaré protected ne sera pas visible en dehors de la classe (comme un élément privé) mais sera hérité. Considérez l exemple suivant : <?php class A { private function operation1() { echo "Appel de operation1"; protected function operation2() { echo "Appel de operation2"; public function operation3() { echo "Appel de operation3"; class B extends A { function construct() { $this->operation1(); $this->operation2(); $this->operation3(); $b = new B;?>

12 184 PHP & MySQL Ce code crée une opération de chaque type dans la classe A : public, protected et private. B hérite de A. Dans le constructeur de B, vous essayez donc d appeler des opérations du parent. La ligne suivante : $this->operation1(); produit une erreur fatale : Fatal error: Call to private method A::operation1() from context B Cet exemple montre que les opérations privées ne peuvent pas être appelées depuis une classe fille. Si vous mettez cette ligne en commentaire, vous remarquerez que les deux autres appels de fonction marchent bien. La fonction protected est héritée mais elle ne peut être utili sée que depuis l intérieur de la classe fille, comme nous le faisons ici. Si vous essayez d ajouter la ligne suivante : $b->operation2(); en bas du fichier, vous obtenez l erreur suivante : Fatal error: Call to protected method A::operation2() from context En revanche, vous pouvez appeler operation3() depuis l extérieur de la classe : $b->operation3(); Cet appel est possible car la fonction est déclarée public. Redéfinition (overriding) Nous venons de voir le cas d une sous-classe dans laquelle sont déclarés de nouveaux attributs et opérations. Il est également permis et parfois utile de redéclarer les mêmes attributs et opérations. Une telle redéclaration, qualifiée de "redéfinition" (overriding), permet en effet de donner à un attribut d une sous-classe une valeur par défaut diffé rente de celle du même attribut dans la superclasse, ou bien encore de donner à une opération d une sous-classe une fonctionnalité différente de la même opération dans la superclasse. Par exemple, si nous disposons de la classe A suivante : class A { public $attribut = "Valeur par défaut"; public function operation() { echo "Quelque chose<br />"; echo La valeur de $attribut est. $this->attribut. "<br />";

13 Chapitre 6 PHP orienté objet 185 et qu il nous apparaisse nécessaire de modifier la valeur par défaut de $attribut et de fournir une nouvelle fonctionnalité à operation(), nous pourrions créer la classe B en redéfinissant $attribut et operation() de la façon suivante : class B extends { public $attribut = "Valeur différente"; public function operation() { echo "Autre chose<br />"; echo La valeur de $attribut est. $this->attribut. "<br />"; Déclarer B n affecte en rien la définition originale de A. Considérez les deux lignes de code suivantes : $a = new A(); $a -> operation(); Elles créent un objet de type A et appellent sa fonction operation(). Le résultat obtenu à l exécution de ces lignes est le suivant : Quelque chose La valeur de $attribut est Valeur par défaut Ce résultat montre bien que la création de B n a pas affecté A. Si nous créons un objet de type B, nous obtiendrons un résultat différent. Les lignes suivantes : $b = new B(); $b -> operation(); produiront : Autre chose La valeur de $attribut est Valeur différente De la même manière que fournir de nouveaux attributs ou opérations dans une sous-classe n affecte pas la superclasse, la redéfinition d attributs ou d opérations dans une sous-classe n affecte pas la superclasse. Une sous-classe hérite de tous les attributs et opérations non privés de sa superclasse, à moins que vous effectuiez des remplacements. Si vous fournissez une définition de remplacement, celle-ci devient prépondérante et remplace la définition d origine. Le mot-clé parent vous permet d appeler la version originale de l opération dans la classe parente. Par exemple, pour appeler l opération A::operation depuis l intérieur de la classe B, vous utiliseriez : parent::operation();

14 186 PHP & MySQL La sortie produite est cependant différente. Bien que vous appeliez l opération depuis la classe parente, PHP utilise les valeurs d attribut de la classe courante. Vous obtiendrez donc la sortie suivante : Quelque chose La valeur de $attribut est Valeur différente L héritage peut être implémenté sur plusieurs niveaux. Par exemple, nous pourrions déclarer une classe appelée C qui hérite de B, c est-à-dire qui hérite à la fois des proprié tés de B et de celles du parent de B, c est-à-dire de A. Tout comme pour la classe B, nous serions libres de redéfinir et de remplacer dans la classe C des attributs et opérations des parents. Empêcher l héritage et les redéfinitions avec final PHP dispose du mot-clé final. Lorsque vous utilisez ce mot-clé devant une déclaration de fonction, la fonction ne pourra plus être redéfinie dans aucune sous-classe. Vous pouvez par exemple l ajouter à la classe A de l exemple précédent : class A { public $attribut = "Valeur par défaut"; final function operation() { echo "Quelque chose<br />"; echo La valeur de $attribut est. $this->attribut. "<br />"; Cette approche vous empêche de redéfinir operation() dans la classe B. Si vous essayez de le faire, vous obtenez l erreur suivante : Fatal error: Cannot override final method A::operation() Vous pouvez également utiliser le mot-clé final pour empêcher la création de sousclas ses à partir d une classe. Pour empêcher la création de sous-classes à partir de la classe A, ajoutez le mot-clé de la manière suivante : final class A {... Si vous essayez ensuite d hériter de A, vous obtiendrez une erreur comme celle-ci : Fatal error: Class B may not inherit from final class (A) Héritage multiple Quelques langages OO (dont C++ et Smalltalk) prennent en charge l héritage multiple mais, comme la plupart des autres, ce n est pas le cas de PHP. Il s ensuit que chaque classe ne peut hériter que d un seul parent. En revanche, aucune restriction n impose une limite sur le nombre d enfants que peut engendrer un même parent.

15 Chapitre 6 PHP orienté objet 187 Les implications de cet état de fait ne sont pas nécessairement évidentes à première vue. La Figure 6.1 montre trois modes d héritage différents. Figure 6.1 PHP ne prend pas en charge l héritage multiple. A B A A B C Héritage simple B C Héritage simple C Héritage multiple Dans le mode le plus à gauche, la classe C hérite de la classe B, qui hérite à son tour de la classe A. Chaque classe possède au plus un parent : ce mode d héritage unique est parfaitement valide en PHP. Dans le mode du centre, les classes B et C héritent toutes deux de la classe A. Là encore, chaque classe possède au plus un parent : ce mode d héritage unique est également valide en PHP. Dans le mode le plus à droite, la classe C hérite à la fois des classes A et B. Dans ce cas, la classe C possède deux parents : il s agit là d une situation d héritage multiple, non supportée par PHP. Implémentation d interfaces Si vous devez implémenter une fonctionnalité analogue à l héritage multiple, vous pouvez le faire grâce aux interfaces, qui sont un moyen de contourner l absence de l héritage multiple. Leur implémentation est semblable à celle des autres langages orientés objet, dont Java. Le principe d une interface consiste à préciser un ensemble de fonctions qui devront être implémentées dans les classes qui implémentent l interface. Par exemple, vous pourriez souhaiter qu un ensemble de classes soient capables de s afficher. Au lieu de créer une classe parente avec une fonction Afficher() dont hériteraient toutes les sous-classes et qu elles redéfiniraient, vous pouvez utiliser une interface de la manière suivante : interface Affichable { function Afficher(){ class pageweb implements Affichable { function Afficher() { //...

16 188 PHP & MySQL Cet exemple présente une alternative à l héritage multiple car la classe pageweb peut hériter d une seule classe et implémenter une ou plusieurs interfaces. Si vous n implémentez pas les méthodes spécifiées dans l interface (dans le cas présent, Afficher()), vous obtiendrez une erreur fatale. Conception de classes Maintenant que nous avons passé en revue les principaux concepts de l approche orien tée objet concernant les objets et les classes, ainsi que la syntaxe de leur implémen tation en PHP, nous pouvons nous intéresser à la conception de classes qui nous seront utiles. Souvent, les classes implémentées dans le code représentent des classes ou des catégo ries d objets réels. Dans le cadre d un développement web, les classes peuvent notam ment servir à représenter des pages web, des composants d interface utilisateur, des paniers virtuels, des gestionnaires d erreur, des catégories de produits ou des clients. Les objets de votre code peuvent également représenter des instances spécifiques des classes énumérées plus haut, comme une page d accueil, un bouton particulier ou le panier d achat de Jean Dupont à un moment donné. Jean Dupont lui-même pourrait d ailleurs être représenté par un objet de type client. Chaque article acheté par Jean peut être représenté sous la forme d un objet, appartenant à une catégorie ou à une classe. Dans le chapitre précédent, nous nous sommes servis de fichiers inclus pour donner une apparence cohérente à toutes les pages du site de l entreprise fictive TLA Consulting. Une version plus élaborée de ce site pourrait être obtenue en utilisant des classes et en exploitant le concept puissant d héritage. Nous voulons maintenant pouvoir ajouter rapidement de nouvelles pages web au site de TLA, qui aient la même présentation et un comportement similaire. Nous voulons toutefois être en mesure de modifier ces pages pour les adapter aux différentes parties du site. Pour les besoins de cet exemple, nous allons créer une classe Page dont le rôle principal est de limiter la quantité de code HTML nécessaire à la création d une nouvelle page. Cette classe devra nous permettre de modifier les sections qui changent d une page à l autre, tout en produisant automatiquement les éléments communs à toutes les pages. La classe Page devra donc fournir un cadre flexible pour la création de nouvelles pages, sans compromettre notre liberté. Comme les pages seront produites à partir d un script et non avec du code HTML statique, nous pouvons implémenter diverses possibilités astucieuses : N autoriser la modification d éléments de la page qu en un emplacement seulement. Par exemple, s il apparaît nécessaire de changer la déclaration de

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

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étail

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

Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2 Langage et Concepts de Programmation Objet Travaux Dirigés no2 Pôle Informatique École Nationale Supérieure des Mines de St-Etienne Vous trouverez plus de détails sur les concepts abordés lors de ce TD

Plus en détail

Programmer 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) 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étail

Premiers Pas en Programmation Objet : les Classes et les Objets

Premiers 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étail

TP1 : Initiation à Java et Eclipse

TP1 : 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étail

Encapsulation. 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. 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étail

Chapitre VI- La validation de la composition.

Chapitre VI- La validation de la composition. Chapitre VI- La validation de la composition. Objectifs du chapitre : Expliquer les conséquences de l utilisation de règles de typage souples dans SEP. Présenter le mécanisme de validation des connexions

Plus en détail

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

C++ 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

Traduction des Langages : Le Compilateur Micro Java

Traduction des Langages : Le Compilateur Micro Java BARABZAN Jean-René OUAHAB Karim TUCITO David 2A IMA Traduction des Langages : Le Compilateur Micro Java µ Page 1 Introduction Le but de ce projet est d écrire en JAVA un compilateur Micro-Java générant

Plus en détail

Programmation Orientée Objet

Programmation Orientée Objet Université de Pau et des Pays de l Adour Institut Universitaire de Technologie des Pays de l Adour Département Réseaux et Télécommunications 371, rue du Ruisseau BP 201 40004 Mont-de-Marsan Cedex tél :

Plus en détail

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

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 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étail

TP1. Outils Java Eléments de correction

TP1. 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étail

Manuel d utilisation 26 juin 2011. 1 Tâche à effectuer : écrire un algorithme 2

Manuel d utilisation 26 juin 2011. 1 Tâche à effectuer : écrire un algorithme 2 éducalgo Manuel d utilisation 26 juin 2011 Table des matières 1 Tâche à effectuer : écrire un algorithme 2 2 Comment écrire un algorithme? 3 2.1 Avec quoi écrit-on? Avec les boutons d écriture........

Plus en détail

Initiation à JAVA et à la programmation objet. raphael.bolze@ens-lyon.fr

Initiation à 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étail

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

BTS S.I.O. 2012-2013 PHP OBJET. Module SLAM4. Nom du fichier : PHPRévisionObjetV2.odt Auteur : Pierre Barais BTS S.I.O. 2012-2013 PHP OBJET Module SLAM4 Nom du fichier : PHPRévisionObjetV2.odt Auteur : Pierre Barais Table des matières 1 But... 3 2 Les bases :... 3 3 Utilisation d'une classe : Instanciation...3

Plus en détail

INITIATION AU LANGAGE JAVA

INITIATION AU LANGAGE JAVA INITIATION AU LANGAGE JAVA I. Présentation 1.1 Historique : Au début des années 90, Sun travaillait sur un projet visant à concevoir des logiciels simples et performants exécutés dans des PDA (Personnal

Plus en détail

as Architecture des Systèmes d Information

as Architecture des Systèmes d Information Plan Plan Programmation - Introduction - Nicolas Malandain March 14, 2005 Introduction à Java 1 Introduction Présentation Caractéristiques Le langage Java 2 Types et Variables Types simples Types complexes

Plus en détail

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

Hé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étail

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

Apprendre la Programmation Orientée Objet avec le langage Java (avec exercices pratiques et corrigés) Introduction à la POO 1. Histoire de la POO 9 2. Historique du 12 La conception orientée objet 1. Approche procédurale et décomposition fonctionnelle 13 2. La transition vers l'approche objet 14 3. Les

Plus en détail

Programmation Web. Madalina Croitoru IUT Montpellier

Programmation Web. Madalina Croitoru IUT Montpellier Programmation Web Madalina Croitoru IUT Montpellier Organisation du cours 4 semaines 4 ½ h / semaine: 2heures cours 3 ½ heures TP Notation: continue interrogation cours + rendu à la fin de chaque séance

Plus en détail

Les frameworks au coeur des applications web

Les frameworks au coeur des applications web Les frameworks au coeur des applications web Mémoire de bachelor réalisé par : Arielle Moro Directeur de mémoire : Peter Daehne, Professeur HES Genève, le vendredi 27 août 2010, Haute Ecole de Gestion

Plus en détail

TD/TP PAC - Programmation n 3

TD/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étail

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

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40 Déroulement du cours Introduction Concepts Java Remarques Langage et Concepts de Programmation Orientée-Objet Gauthier Picard École Nationale Supérieure des Mines de Saint-Étienne gauthier.picard@emse.fr

Plus en détail

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

Génie Logiciel avec Ada. 4 février 2013 Génie Logiciel 4 février 2013 Plan I. Généralités II. Structures linéaires III. Exceptions IV. Structures arborescentes V. Dictionnaires I. Principes II. Notions propres à la POO I. Principes Chapitre

Plus en détail

Créer et partager des fichiers

Créer et partager des fichiers Créer et partager des fichiers Le rôle Services de fichiers... 246 Les autorisations de fichiers NTFS... 255 Recherche de comptes d utilisateurs et d ordinateurs dans Active Directory... 262 Délégation

Plus en détail

UML (Diagramme de classes) Unified Modeling Language

UML (Diagramme de classes) Unified Modeling Language UML (Diagramme de classes) Unified Modeling Language Sommaire Introduction Objectifs Diagramme de classes Classe (Nom, attribut, opération) Visibilité et portée des constituants d une classe Association

Plus en détail

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

Tp 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étail

Université de Bangui. Modélisons en UML

Université de Bangui. Modélisons en UML Université de Bangui CRM Modélisons en UML Ce cours a été possible grâce à l initiative d Apollinaire MOLAYE qui m a contacté pour vous faire bénéficier de mes connaissances en nouvelles technologies et

Plus en détail

Programmation Orientée Objet en C#

Programmation 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étail

UML. Diagrammes de classes (suite) Delphine Longuet. delphine.longuet@lri.fr

UML. Diagrammes de classes (suite) Delphine Longuet. delphine.longuet@lri.fr Polytech Paris-Sud Formation initiale 3 e année Spécialité Informatique Année 2014-2015 UML Diagrammes de classes (suite) Delphine Longuet delphine.longuet@lri.fr Opérations Opérations Service qui peut

Plus en détail

TD/TP PAC - Programmation n 3

TD/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étail

Java Licence Professionnelle 2009-2010. Cours 7 : Classes et méthodes abstraites

Java Licence Professionnelle 2009-2010. Cours 7 : Classes et méthodes abstraites Java Licence Professionnelle 2009-2010 Cours 7 : Classes et méthodes abstraites 1 Java Classes et méthodes abstraites - Le mécanisme des classes abstraites permet de définir des comportements (méthodes)

Plus en détail

Une introduction à Java

Une 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étail

La gestion des exceptions

La gestion des exceptions La gestion des exceptions Même lorsqu un programme est au point, certaines circonstances exceptionnelles peuvent compromettre la poursuite de son exécution ; il peut s agir par exemple de données incorrectes

Plus en détail

Date M.P Libellé Catégorie S.Catégorie Crédit Débit Solde S.B

Date M.P Libellé Catégorie S.Catégorie Crédit Débit Solde S.B Excel : Réalisation d un classeur Compta Saisir les étiquettes Renommer la première feuille Compta Laisser la première ligne vide et sur la deuxième ligne saisir les étiquettes Se placer sur A2 et saisir

Plus en détail

Programmation MacOSX / ios

Programmation MacOSX / ios Programmation MacOSX / ios Master Ingénierie Informatique 2011-2012 Jean-Baptiste.Yunès@liafa.jussieu.fr deux extensions objets de C : C++ (Stroustrup) Objective-C (Cox & Love) ajout de constructions à

Plus en détail

Création d objet imbriqué sous PowerShell.

Création d objet imbriqué sous PowerShell. Création d objet imbriqué sous PowerShell. Par Laurent Dardenne, le 13/01/2014. Niveau Ce tutoriel aborde la création d objet composé, c est-à-dire que certains de ses membres seront eux-mêmes des PSObjects.

Plus en détail

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

Polymorphisme, 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étail

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

Exceptions. 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étail

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)

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) 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étail

Introduction aux concepts d ez Publish

Introduction aux concepts d ez Publish Introduction aux concepts d ez Publish Tutoriel rédigé par Bergfrid Skaara. Traduit de l Anglais par Benjamin Lemoine Mercredi 30 Janvier 2008 Sommaire Concepts d ez Publish... 3 Système de Gestion de

Plus en détail

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

Programmation par composants (1/3) Programmation par composants (2/3) Programmation par composants (1/3) La programmation par composant vise le développement de logiciel par aggrégation de briques logicielles existantes est indépendante de la POO La programmation par composant

Plus en détail

Java 7 Les fondamentaux du langage Java

Java 7 Les fondamentaux du langage Java 184 Java 7 Les fondamentaux du langage Java 1.1 Les bibliothèques graphiques Le langage Java propose deux bibliothèques dédiées à la conception d'interfaces graphiques. La bibliothèque AWT et la bibliothèque

Plus en détail

Java Licence Professionnelle CISII, 2009-2010. Cours 2 : Classes et Objets

Java 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étail

Programmation en Java IUT GEII (MC-II1) 1

Programmation en Java IUT GEII (MC-II1) 1 Programmation en Java IUT GEII (MC-II1) 1 Christophe BLANC - Paul CHECCHIN IUT Montluçon Université Blaise Pascal Novembre 2009 Christophe BLANC - Paul CHECCHIN Programmation en Java IUT GEII (MC-II1)

Plus en détail

les Formulaires / Sous-Formulaires Présentation...2 1. Créer un formulaire à partir d une table...3

les Formulaires / Sous-Formulaires Présentation...2 1. Créer un formulaire à partir d une table...3 Présentation...2 1. Créer un formulaire à partir d une table...3 2. Les contrôles :...10 2.1 Le contrôle "Intitulé"...11 2.2 Le contrôle "Zone de Texte"...12 2.3 Le contrôle «Groupe d options»...14 2.4

Plus en détail

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

Généralités. javadoc. Format des commentaires. Format des commentaires. Caractères spéciaux. Insérer du code Généralités javadoc Université de Nice - Sophia Antipolis Richard Grin Version 1.4.1 8/2/11 javadoc produit de la documentation en partant de commentaires particuliers insérés dans le code source des classes

Plus en détail

Guide d administration de Java Desktop System Configuration Manager Release 1.1

Guide d administration de Java Desktop System Configuration Manager Release 1.1 Guide d administration de Java Desktop System Configuration Manager Release 1.1 Sun Microsystems, Inc. 4150 Network Circle Santa Clara, CA 95054 U.S.A. Référence : 819 0952 10 Février 2004 Copyright 2004

Plus en détail

Bases Java - Eclipse / Netbeans

Bases 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étail

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

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr www.cril.univ-artois.fr/~jabbour LMI 2 Programmation Orientée Objet POO - Cours 9 Said Jabbour jabbour@cril.univ-artois.fr www.cril.univ-artois.fr/~jabbour CRIL UMR CNRS 8188 Faculté des Sciences - Univ. Artois Février 2011 Les collections

Plus en détail

< Atelier 1 /> Démarrer une application web

< Atelier 1 /> Démarrer une application web MES ANNOTATIONS SONT EN ROUGE : Axel < Atelier 1 /> Démarrer une application web Microsoft France Tutorial Découverte de ASP.NET 2.0 Sommaire 1 INTRODUCTION... 3 1.1 CONTEXTE FONCTIONNEL... 3 1.2 CONTEXTE

Plus en détail

Optimiser pour les appareils mobiles

Optimiser pour les appareils mobiles chapitre 6 Optimiser pour les appareils mobiles 6.1 Créer un site adapté aux terminaux mobiles avec jquery Mobile... 217 6.2 Transformer son site mobile en application native grâce à PhoneGap:Build...

Plus en détail

Auto-évaluation Programmation en Java

Auto-évaluation Programmation en Java Auto-évaluation Programmation en Java Document: f0883test.fm 22/01/2013 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INTRODUCTION AUTO-ÉVALUATION PROGRAMMATION EN

Plus en détail

Chapitre 1 Qu est-ce qu une expression régulière?

Chapitre 1 Qu est-ce qu une expression régulière? Chapitre 1 Qu est-ce qu une expression régulière? Les ordinateurs n ont pas du tout la même conception des textes que nous : pour nous, un texte est un ensemble d idées couchées sur papier. Nous nous en

Plus en détail

Cours 1: Java et les objets

Cours 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étail

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

Facultés Universitaires Notre-Dame de la Paix. Conception et Programmation Orientées- Object Facultés Universitaires Notre-Dame de la Paix Conception et Programmation Orientées- Object 2008-2009 RÉSUMÉ PRATIQUE... 4 CLASSE OBJET... 4 NOTION D HÉRITAGE... 4 LE POLYMORPHISME... 5 LES CLASSES ABSTRAITES...

Plus en détail

Guide de l utilisateur Mikogo Version Windows

Guide de l utilisateur Mikogo Version Windows Guide de l utilisateur Mikogo Version Windows Table des matières Création d un compte utilisateur 3 Téléchargement et installation 4 Démarrer une session 4 Joindre une session 5 Fonctionnalités 6 Liste

Plus en détail

WINDOWS NT 2000: Travaux Pratiques. -Boîtier partage d'imprimante- Michel Cabaré Janvier 2002 ver 1.0

WINDOWS NT 2000: Travaux Pratiques. -Boîtier partage d'imprimante- Michel Cabaré Janvier 2002 ver 1.0 WINDOWS NT 2000: Travaux Pratiques -Boîtier partage d'imprimante- Michel Cabaré Janvier 2002 TABLE DES MATIÈRES Installer un boitier Serveur...3 Fonctions du boitier :...3 Installation du boitier Hp Jetdirect

Plus en détail

WINDOWS SHAREPOINT SERVICES 2007

WINDOWS SHAREPOINT SERVICES 2007 WINDOWS SHAREPOINT SERVICES 2007 I. TABLE DES MATIÈRES II. Présentation des «content types» (Type de contenu)... 2 III. La pratique... 4 A. Description du cas... 4 B. Création des colonnes... 6 C. Création

Plus en détail

L envoi d un formulaire par courriel. Configuration requise... 236 Mail Texte... 237 Mail HTML... 242 Check-list... 248

L envoi d un formulaire par courriel. Configuration requise... 236 Mail Texte... 237 Mail HTML... 242 Check-list... 248 L envoi d un formulaire par courriel Configuration requise... 236 Mail Texte... 237 Mail HTML... 242 Check-list... 248 Chapitre 9 L envoi d un formulaire par courriel L envoi par courriel d informations

Plus en détail

Langage Java. Classe de première SI

Langage 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étail

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

Types d applications pour la persistance. Outils de développement. Base de données préexistante? 3 modèles. Variantes avec passerelles Types d applications pour la persistance Université de Nice Sophia-Antipolis Version 0.9 28/8/07 Richard Grin Toutes les applications n ont pas une complexité qui nécessite une architecture n- tiers Ce

Plus en détail

Alfresco Guide Utilisateur

Alfresco Guide Utilisateur Alfresco Guide Utilisateur ATELIER TECHNIQUE DES ESPACES NATURELS - 1 Table des matières Alfresco Guide Utilisateur...1 Accéder à la GED de l'aten...3 Via un client FTP...3 Onglet Général...3 Onglet Avancé...3

Plus en détail

Rapport de stage. Développement d un logiciel de vidéoconférence : Enjeux 3. Guillaume DOTT 2009

Rapport de stage. Développement d un logiciel de vidéoconférence : Enjeux 3. Guillaume DOTT 2009 Rapport de stage Développement d un logiciel de vidéoconférence : Enjeux 3 Guillaume DOTT 2009 Maître de stage : Louis Poulette Tutrice : Marie-Paule Muller Remerciements Je tiens à remercier toute l équipe

Plus en détail

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, 2000-2015, ISBN : 978-2-212-14154-2

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, 2000-2015, ISBN : 978-2-212-14154-2 Anne Tasso Java Le livre de premier langage 10 e édition Avec 109 exercices corrigés Groupe Eyrolles, 2000-2015, ISBN : 978-2-212-14154-2 Table des matières Avant-propos Organisation de l ouvrage..............................

Plus en détail

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

Devenez un véritable développeur web en 3 mois! Devenez un véritable développeur web en 3 mois! L objectif de la 3W Academy est de former des petits groupes d élèves au développement de sites web dynamiques ainsi qu à la création d applications web

Plus en détail

Dans cette Unité, nous allons examiner

Dans cette Unité, nous allons examiner 13.0 Introduction Dans cette Unité, nous allons examiner les fonctionnements internes d une des plateformes de publication web les plus largement utilisées de nos jours sur l Internet, WordPress. C est

Plus en détail

Développement d un interpréteur OCL pour une machine virtuelle UML.

Développement d un interpréteur OCL pour une machine virtuelle UML. ObjeXion Software Prototyping made easy SA au capital de 500 000 F Siret 421 565 565 00015 APE 722Z Téléphone : 03 89 35 70 75 Télécopie : 03 89 35 70 76 L embarcadère 5, rue Gutemberg 68 800 Vieux-Thann,

Plus en détail

basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB www.enseirb.fr/~legal Olivier Augereau Formation UML

basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB www.enseirb.fr/~legal Olivier Augereau Formation UML basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB www.enseirb.fr/~legal Olivier Augereau Formation UML http://olivier-augereau.com Sommaire Introduction I) Les bases II) Les diagrammes

Plus en détail

Paginer les données côté serveur, mettre en cache côté client

Paginer les données côté serveur, mettre en cache côté client Paginer les données côté serveur, mettre en cache côté client Vous voulez sélectionner des lignes dans une table, mais celle-ci comporte trop de lignes pour qu il soit réaliste de les ramener en une seule

Plus en détail

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau) CS WEB Ch 1 Introduction I. INTRODUCTION... 1 A. INTERNET INTERCONNEXION DE RESEAUX... 1 B. LE «WEB» LA TOILE, INTERCONNEXION DE SITES WEB... 2 C. L URL : LOCALISER DES RESSOURCES SUR L INTERNET... 2 D.

Plus en détail

EXCEL TUTORIEL 2012/2013

EXCEL TUTORIEL 2012/2013 EXCEL TUTORIEL 2012/2013 Excel est un tableur, c est-à-dire un logiciel de gestion de tableaux. Il permet de réaliser des calculs avec des valeurs numériques, mais aussi avec des dates et des textes. Ainsi

Plus en détail

GOL502 Industries de services

GOL502 Industries de services GOL502 Industries de services Conception d un service Partie IIb Version 2013 Introduction Conception d un service partie IIb Nous verrons dans ce chapitre Modélisation d un service; Langage de modélisation

Plus en détail

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

Programmation Orientée Objet application au langage Java Version Novembre 2007 Programmation Orientée Objet application au langage Java Version Novembre 2007 Mickaël BARON - 2007 mailto:baron.mickael@gmail.com ou mailto:mickael.baron@serli.com SERLI informatique SERLI : www.serli.com

Plus en détail

[WINDOWS 7 - LES FICHIERS] 28 avril 2010. Logiciel / Windows

[WINDOWS 7 - LES FICHIERS] 28 avril 2010. Logiciel / Windows Ce dossier a une forme un peu différente des précédentes : c est un ensemble de «fiches» décrivant chacune une des opérations que l on peut effectuer avec un fichier (enregistrer, renommer, etc.). Chaque

Plus en détail

Tutoriel. Votre site web en 30 minutes

Tutoriel. Votre site web en 30 minutes Tutoriel Votre site web en 30 minutes But du tutoriel Nous allons vous présenter comment réaliser rapidement votre site avec Web Creator Pro 6 en vous basant sur l utilisation des modèles fournis avec

Plus en détail

Chap. 3: Le modèle de données entité-association (E.A.)

Chap. 3: Le modèle de données entité-association (E.A.) Chap. 3: Le modèle de données entité-association (E.A.) En anglais: Entity-Relationship (ER) Origines: C.Bachman (1969), P.Chen (1976). Modèle de données > décrire la réalité perçue à travers les données

Plus en détail

TP1 : Initiation à Java et Eclipse

TP1 : Initiation à Java et Eclipse TP1 : Initiation à Java et Eclipse 1 I. Objectif du TP TP1 : Initiation à Java et Eclipse Programmation Mobile Initiation à l environnement Eclipse et aux notions de base du langage Java. II. Environnement

Plus en détail

Sommaire : Pourquoi créer un site web? Qu est-ce qu un site Web? Les différents types de sites. Quelles solutions peuvent être employées?

Sommaire : Pourquoi créer un site web? Qu est-ce qu un site Web? Les différents types de sites. Quelles solutions peuvent être employées? Sommaire : Pourquoi créer un site web? Qu est-ce qu un site Web? Les différents types de sites Quelles solutions peuvent être employées? Présentation d une des solutions Conclusion Aujourd hui le web est

Plus en détail

Diagramme de classes

Diagramme 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étail

Note de synthèse. Développement web sur le CMS Prestashop. Stage du 17 mai au 25 juin 2010. Entreprise decoratzia.com 15 rue Erlanger 75016 - Paris

Note de synthèse. Développement web sur le CMS Prestashop. Stage du 17 mai au 25 juin 2010. Entreprise decoratzia.com 15 rue Erlanger 75016 - Paris BENCHETRIT Michaël BTS IG 2 ème année Brevet de Technicien Supérieur Informatique de Gestion Option : Développeur d applications Session 2011 Note de synthèse Développement web sur le CMS Prestashop Stage

Plus en détail

CONCOURS DE L AGRÉGATION INTERNE «ÉCONOMIE ET GESTION» SESSION 2015 SECONDE ÉPREUVE

CONCOURS DE L AGRÉGATION INTERNE «ÉCONOMIE ET GESTION» SESSION 2015 SECONDE ÉPREUVE CONCOURS DE L AGRÉGATION INTERNE «ÉCONOMIE ET GESTION» SESSION 2015 SECONDE ÉPREUVE Épreuve de cas pratique dans la spécialité correspondant à l'option choisie par le candidat Option D Durée de préparation

Plus en détail

A. Structurer le catalogue. v Dans le menu Catalogue, sélectionnez Catégories. 1. Les catégories. Chapitre 6 : Construire le catalogue ...

A. Structurer le catalogue. v Dans le menu Catalogue, sélectionnez Catégories. 1. Les catégories. Chapitre 6 : Construire le catalogue ... Chapitre 6 :. Construire. le catalogue 177 Chapitre 6 : Construire le catalogue PrestaShop 1.5 - Créer un site de e-commerce A. Structurer le catalogue Ne vous précipitez pas pour créer vos produits immédiatement

Plus en détail

KAJOUT WASSIM INTERNET INFORMATION SERVICES (IIS) 01/03/2013. Compte-rendu sur ISS KAJOUT Wassim

KAJOUT WASSIM INTERNET INFORMATION SERVICES (IIS) 01/03/2013. Compte-rendu sur ISS KAJOUT Wassim 01/03/2013 Le rôle de Serveur Web (IIS) dans Windows Server 2008 R2 vous permet de partager des informations avec des utilisateurs sur Internet, sur un intranet ou un extranet. Windows Server 2008 R2 met

Plus en détail

CORBA. (Common Request Broker Architecture)

CORBA. (Common Request Broker Architecture) CORBA (Common Request Broker Architecture) Projet MIAGe Toulouse Groupe 2 1 CORBA, introduction (1/4) Les systèmes répartis permettent de créer des applications basées sur des composants auto-gérables,

Plus en détail

Conception des bases de données : Modèle Entité-Association

Conception des bases de données : Modèle Entité-Association Conception des bases de données : Modèle Entité-Association La modélisation d un problème, c est-à-dire le passage du monde réel à sa représentation informatique, se définit en plusieurs étapes pour parvenir

Plus en détail

Tapez le titre de la page «BASTIA ville méditerranéenne», puis allez deux fois à la ligne à l aide de la touche Entrée.

Tapez le titre de la page «BASTIA ville méditerranéenne», puis allez deux fois à la ligne à l aide de la touche Entrée. Créer un site Internet à l aide du logiciel NVU Le logiciel NVU, permet l édition Wysiwyg (What You See, Is What You Get, ce que vous voyez, est ce que vous obtenez ) d un site internet. Vous rédigez le

Plus en détail

Installer Joomla. 2013 Pearson France Joomla! Le guide officiel Jennifer Marriott, Elin Waring

Installer Joomla. 2013 Pearson France Joomla! Le guide officiel Jennifer Marriott, Elin Waring 3 Installer Joomla Dans ce chapitre, nous procéderons au téléchargement et à l installation manuelle de Joomla, et nous expliquerons la configuration de base. Les captures d écran et les instructions font

Plus en détail

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

Objets et Programmation. origine des langages orientés-objet Objets et Programmation origine des langages orientés-objet modularité, encapsulation objets, classes, messages exemples en Java héritage, liaison dynamique G. Falquet, Th. Estier CUI Université de Genève

Plus en détail

Patrons de Conception (Design Patterns)

Patrons de Conception (Design Patterns) Patrons de Conception (Design Patterns) Introduction 1 Motivation Il est difficile de développer des logiciels efficaces, robustes, extensibles et réutilisables Il est essentiel de comprendre les techniques

Plus en détail

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

Polycopié 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étail

Prise en main rapide

Prise en main rapide Prise en main rapide 4 Dans cette leçon, vous découvrirez les fonctionnalités de création de page web de Dreamweaver et apprendrez à les utiliser dans l espace de travail. Vous apprendrez à : définir un

Plus en détail

PRISE EN MAIN D UN TABLEUR. Version OPEN OFFICE

PRISE EN MAIN D UN TABLEUR. Version OPEN OFFICE PRISE EN MAIN D UN TABLEUR Version OPEN OFFICE Prise en main d un tableur page 2 1. L utilisation de la souris Pour faire fonctionner un tableur, on utilise le clavier mais aussi la souris. Rappelons,

Plus en détail

Reporting Services - Administration

Reporting Services - Administration Reporting Services - Administration Comment administrer SQL Server Reporting Services Cet article a pour but de présenter comment gérer le serveur depuis le "portail" de Reporting Services. Nous verrons

Plus en détail

alg - Classes, instances, objets [oo] Exercices résolus

alg - Classes, instances, objets [oo] Exercices résolus alg - Classes, instances, objets [oo] Exercices résolus Karine Zampieri, Stéphane Rivière, Béatrice Amerein-Soltner Unisciel algoprog Version 27 avril 2015 Table des matières 1 Compte bancaire OO 2 1.1

Plus en détail

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS Depuis SAS 9.2 TS2M3, SAS propose un nouveau langage de programmation permettant de créer et gérer des tables SAS : le DS2 («Data Step 2»). Ces nouveautés

Plus en détail

Cours Plugin Eclipse. Université Paris VI / Parcours STL / Master I Pierre-Arnaud Marcelot - Iktek - pamarcelot@iktek.com

Cours Plugin Eclipse. Université Paris VI / Parcours STL / Master I Pierre-Arnaud Marcelot - Iktek - pamarcelot@iktek.com Cours Plugin Eclipse Université Paris VI / Parcours STL / Master I Pierre-Arnaud Marcelot - Iktek - pamarcelot@iktek.com 1 Qui suis-je? Ancien étudiant de Jussieu - Paris VI Diplomé du Master Technologies

Plus en détail

Bases de données. Chapitre 1. Introduction

Bases de données. Chapitre 1. Introduction Références : Bases de données Pierre Wolper Email : pw@montefiore.ulg.ac.be URL : http : //www.montefiore.ulg.ac.be/~pw/ http : //www.montefiore.ulg.ac.be/ ~pw/cours/bd.html Henry F. Korth, Abraham Silberschatz,

Plus en détail

Classes et Objets en Ocaml.

Classes et Objets en Ocaml. Classes et Objets en Ocaml. Didier Rémy 2001-2002 http://cristal.inria.fr/ remy/mot/2/ http://www.enseignement.polytechnique.fr/profs/informatique/didier.remy/mot/2/ Cours Exercices Slide 1 1. Objets 2.

Plus en détail

ECLIPSE ET PDT (Php development tools)

ECLIPSE ET PDT (Php development tools) ECLIPSE ET PDT (Php development tools) Eclipse Eclipse est un IDE (Integrated Development Environment)).C estun projet de la Fondation Eclipse visant à développer tout un environnement de développement

Plus en détail