MC-II1 - Cours n o 1 Langages de programmation Introduction à la POO



Documents pareils
Éléments de programmation et introduction à Java

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

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

Initiation à JAVA et à la programmation objet.

Évaluation et implémentation des langages

Programmation en Java IUT GEII (MC-II1) 1

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Visual Paradigm Contraintes inter-associations

Programmation Orientée Objet

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

IFT2255 : Génie logiciel

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

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

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

UML (Diagramme de classes) Unified Modeling Language

TP1 : Initiation à Java et Eclipse

Mise en œuvre des serveurs d application

Machines virtuelles. Brique ASC. Samuel Tardieu Samuel Tardieu (ENST) Machines virtuelles 1 / 40

Introduction à l informatique en BCPST

LANGAGUE JAVA. Public Développeurs souhaitant étendre leur panel de langages de programmation

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski

Notions fondamentales du langage C# Version 1.0

L informatique en BCPST

Préparation à l examen EFA en Macro

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

as Architecture des Systèmes d Information

Projet de développement

Chapitre I Notions de base et outils de travail

SSTIC Désobfuscation automatique de binaires. Alexandre Gazet. Yoann Guillot. Et autres idyles bucoliques...

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

Introduction aux concepts d ez Publish

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

WEB & DÉVELOPPEMENT LES BASES DU WEB LE LANGAGE HTML FEUILLES DE STYLES CSS HISTORIQUE D INTERNET ET DU WEB LES DIFFÉRENTS LANGAGES

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

Programmation Web. Madalina Croitoru IUT Montpellier

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

INITIATION AU LANGAGE JAVA

Annexe : La Programmation Informatique

S7 Le top 10 des raisons d utiliser PHP pour moderniser votre existant IBM i

Java - la plateforme

Machines Virtuelles. et bazard autour. Rémi Forax

INDUSTRIALISATION ET RATIONALISATION

Programmer en JAVA. par Tama

Cours de Java. Sciences-U Lyon. Java - Introduction Java - Fondamentaux Java Avancé.

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

Module.NET 3 Les Assemblys.NET

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

Sessions en ligne - QuestionPoint

Réglages du portail de P&WC

1 Introduction et installation

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

Programmation C. Apprendre à développer des programmes simples dans le langage C

Table des matières Avant-propos... V Scripting Windows, pour quoi faire?... 1 Dans quel contexte?

XML, PMML, SOAP. Rapport. EPITA SCIA Promo janvier Julien Lemoine Alexandre Thibault Nicolas Wiest-Million

Cours de Génie Logiciel

Projet Active 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

Projet de développement. Introduction à Eclipse. Application à votre projet. Philippe Collet. Organisation. Cours 1 : principes généraux - svn

Armand PY-PATINEC 2010

GOL502 Industries de services

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

Chapitre VI- La validation de la composition.

C est quoi le SWAT? Les équipes décrites par James Martin s appellent SWAT : Skilled With Advanced Tools.

Les logiciels indispensables à installer sur votre ordinateur

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

Panorama des solutions analytiques existantes

WysiUpStudio. CMS professionnel. pour la création et la maintenance évolutive de sites et applications Internet V. 6.x

Créer et partager des fichiers

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)

DotNet. Plan. Les outils de développement

Cours 1 : Qu est-ce que la programmation?

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

QUELQUES ÉLÉMENTS DU DÉVELOPPEMENT LOGICIEL

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

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

Syfadis. > Configuration du poste client. Nous vous aidons à réussir. REFERENCE : Syfadis LMS - 20/06/2007. AUTEUR : Equipe technique Syfadis

DES CONCEPTS OBJET PAR JAVA

Introduction à MapReduce/Hadoop et Spark

les techniques d'extraction, les formulaires et intégration dans un site WEB

Information utiles. webpage : Google+ : digiusto/

Université de Bangui. Modélisons en UML

IBM Tivoli Compliance Insight Manager

MODELISATION UN ATELIER DE MODELISATION «RATIONAL ROSE»

programmation S initier à la la Avec des exemples en C, C++, C#, Java et PHP Avec des exemples en C, C++, C#, Java et PHP Claude Delannoy

Cours en ligne Développement Java pour le web

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

MODULE I1. Plan. Introduction. Introduction. Historique. Historique avant R&T 1ère année. Sylvain MERCHEZ

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

Java 7 Les fondamentaux du langage Java

Java c est quoi? Java pourquoi?

AVEC LIVE TRADER, VISEZ PLUS HAUT POUR VOS INVESTISSEMENTS

Traduction des Langages : Le Compilateur Micro Java

Programmation Objet - Cours II

Machines virtuelles Cours 1 : Introduction

Vulgarisation Java EE Java EE, c est quoi?

Christian Soutou UML 2. pour les. bases de données. Avec 20 exercices corrigés. Groupe Eyrolles, 2007, ISBN :

Transcription:

MC-II1 - Cours n o 1 Langages de programmation Introduction à la POO Sebastien.Kramm@univ-rouen.fr IUT GEII Rouen 2012-2013 S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 1 / 36

Sommaire 1 Langages de programmation 2 Programmation orientée objet (P.O.O.) Introduction Encapsulation Héritage Polymorphisme Regroupement d objets S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 2 / 36

Niveau 0 : le processeur Un processeur ne peut exécuter que son langage natif ( code machine ), représenté sous une forme lisible par le langage dit assembleur 1?add_pairs@@YAXPBMH@Z (void _cdecl add_pairs(float,.. 2 00000000: 8B 54 24 0C mov edx,dword ptr [esp+0ch] 3 00000004: 85 D2 test edx,edx 4 00000006: 74 1F je 00000027 5 00000008: 8B 44 24 08 mov eax,dword ptr [esp+8] 6 0000000C: 8B 4C 24 04 mov ecx,dword ptr [esp+4] 7 00000010: D9 00 fld dword ptr [eax] Question : que fait ce programme??? S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 3 / 36

Figure: classification sur un axe d abstraction : de la machine à l homme S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 3 / 36 Niveau 0 : le processeur Un processeur ne peut exécuter que son langage natif ( code machine ), représenté sous une forme lisible par le langage dit assembleur 1?add_pairs@@YAXPBMH@Z (void _cdecl add_pairs(float,.. 2 00000000: 8B 54 24 0C mov edx,dword ptr [esp+0ch] 3 00000004: 85 D2 test edx,edx 4 00000006: 74 1F je 00000027 5 00000008: 8B 44 24 08 mov eax,dword ptr [esp+8] 6 0000000C: 8B 4C 24 04 mov ecx,dword ptr [esp+4] 7 00000010: D9 00 fld dword ptr [eax] Question : que fait ce programme??? Idée : Rapprocher la programmation du langage naturel

Objectif d un langage de programmation Introduction d un niveau d abstraction, et suppression de l information non essentielle : S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 4 / 36

Modèles d exécution Interprété (Basic, Perl, Javascript,...) : S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 5 / 36

Modèles d exécution Interprété (Basic, Perl, Javascript,...) : Le code est traduit en instructions-machine au moment de l exécution, S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 5 / 36

Modèles d exécution Interprété (Basic, Perl, Javascript,...) : Le code est traduit en instructions-machine au moment de l exécution, Avantages : simplicité du développement, S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 5 / 36

Modèles d exécution Interprété (Basic, Perl, Javascript,...) : Le code est traduit en instructions-machine au moment de l exécution, Avantages : simplicité du développement, Inconvénients : lent, peu efficace, structuration difficile. S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 5 / 36

Modèles d exécution Interprété (Basic, Perl, Javascript,...) : Le code est traduit en instructions-machine au moment de l exécution, Avantages : simplicité du développement, Inconvénients : lent, peu efficace, structuration difficile. Compilé (C, C++,...) : S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 5 / 36

Modèles d exécution Interprété (Basic, Perl, Javascript,...) : Le code est traduit en instructions-machine au moment de l exécution, Avantages : simplicité du développement, Inconvénients : lent, peu efficace, structuration difficile. Compilé (C, C++,...) : Le code est traduit en instructions-machine lors de la phase de développement, on distribue les binaires (fichiers exécutables), S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 5 / 36

Modèles d exécution Interprété (Basic, Perl, Javascript,...) : Le code est traduit en instructions-machine au moment de l exécution, Avantages : simplicité du développement, Inconvénients : lent, peu efficace, structuration difficile. Compilé (C, C++,...) : Le code est traduit en instructions-machine lors de la phase de développement, on distribue les binaires (fichiers exécutables), Avantage : code rapide, S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 5 / 36

Modèles d exécution Interprété (Basic, Perl, Javascript,...) : Le code est traduit en instructions-machine au moment de l exécution, Avantages : simplicité du développement, Inconvénients : lent, peu efficace, structuration difficile. Compilé (C, C++,...) : Le code est traduit en instructions-machine lors de la phase de développement, on distribue les binaires (fichiers exécutables), Avantage : code rapide, Inconvénient : portabilité des binaires aléatoire. S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 5 / 36

Modèles d exécution Interprété (Basic, Perl, Javascript,...) : Le code est traduit en instructions-machine au moment de l exécution, Avantages : simplicité du développement, Inconvénients : lent, peu efficace, structuration difficile. Compilé (C, C++,...) : Le code est traduit en instructions-machine lors de la phase de développement, on distribue les binaires (fichiers exécutables), Avantage : code rapide, Inconvénient : portabilité des binaires aléatoire. Mixte (Java, C#,...) : S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 5 / 36

Modèles d exécution Interprété (Basic, Perl, Javascript,...) : Le code est traduit en instructions-machine au moment de l exécution, Avantages : simplicité du développement, Inconvénients : lent, peu efficace, structuration difficile. Compilé (C, C++,...) : Le code est traduit en instructions-machine lors de la phase de développement, on distribue les binaires (fichiers exécutables), Avantage : code rapide, Inconvénient : portabilité des binaires aléatoire. Mixte (Java, C#,...) : Le code est traduit dans un langage intermédiaire (JVM, MSIL), la machine-cible doit disposer d un interpreteur, S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 5 / 36

Modèles d exécution Interprété (Basic, Perl, Javascript,...) : Le code est traduit en instructions-machine au moment de l exécution, Avantages : simplicité du développement, Inconvénients : lent, peu efficace, structuration difficile. Compilé (C, C++,...) : Le code est traduit en instructions-machine lors de la phase de développement, on distribue les binaires (fichiers exécutables), Avantage : code rapide, Inconvénient : portabilité des binaires aléatoire. Mixte (Java, C#,...) : Le code est traduit dans un langage intermédiaire (JVM, MSIL), la machine-cible doit disposer d un interpreteur, Avantage : portabilité garantie, S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 5 / 36

Modèles d exécution Interprété (Basic, Perl, Javascript,...) : Le code est traduit en instructions-machine au moment de l exécution, Avantages : simplicité du développement, Inconvénients : lent, peu efficace, structuration difficile. Compilé (C, C++,...) : Le code est traduit en instructions-machine lors de la phase de développement, on distribue les binaires (fichiers exécutables), Avantage : code rapide, Inconvénient : portabilité des binaires aléatoire. Mixte (Java, C#,...) : Le code est traduit dans un langage intermédiaire (JVM, MSIL), la machine-cible doit disposer d un interpreteur, Avantage : portabilité garantie, Langages récents : haut niveau d abstraction et large bibliothèques applicatives, S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 5 / 36

Modèles d exécution Interprété (Basic, Perl, Javascript,...) : Le code est traduit en instructions-machine au moment de l exécution, Avantages : simplicité du développement, Inconvénients : lent, peu efficace, structuration difficile. Compilé (C, C++,...) : Le code est traduit en instructions-machine lors de la phase de développement, on distribue les binaires (fichiers exécutables), Avantage : code rapide, Inconvénient : portabilité des binaires aléatoire. Mixte (Java, C#,...) : Le code est traduit dans un langage intermédiaire (JVM, MSIL), la machine-cible doit disposer d un interpreteur, Avantage : portabilité garantie, Langages récents : haut niveau d abstraction et large bibliothèques applicatives, Inconvénients : moins rapide qu un binaire pur. S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 5 / 36

Langages de programmation source :Di Scala S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 6 / 36

Langages de nouvelle génération Python (1990) Ruby (1995) Multiparadigmes, Haut niveau d abstraction (typage dynamique, ramasse-miettes,...), Large contexte d utilisation (desktop ou web), Simplicité de la syntaxe, Fonctionnalités étendues grace à de nombreux frameworks. S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 7 / 36

Logiciel : historique A l origine, travaux de recherche, labos publics ou privés S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 8 / 36

Logiciel : historique A l origine, travaux de recherche, labos publics ou privés 1970 : informatique = matériel, logiciel assimilé à du réglage. S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 8 / 36

Logiciel : historique A l origine, travaux de recherche, labos publics ou privés 1970 : informatique = matériel, logiciel assimilé à du réglage. Aujourd hui : Big Business S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 8 / 36

Logiciel : historique A l origine, travaux de recherche, labos publics ou privés 1970 : informatique = matériel, logiciel assimilé à du réglage. Aujourd hui : Big Business Industrie majoritairement pilotée par des grands groupes (Microsoft, Sun, Borland, Adobe, Google,...) S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 8 / 36

Logiciel : historique A l origine, travaux de recherche, labos publics ou privés 1970 : informatique = matériel, logiciel assimilé à du réglage. Aujourd hui : Big Business Industrie majoritairement pilotée par des grands groupes (Microsoft, Sun, Borland, Adobe, Google,...) Les langages de programmation sont souvent liés à un acteur économique et sont partie intégrante de leur stratégie marketing : S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 8 / 36

Logiciel : historique A l origine, travaux de recherche, labos publics ou privés 1970 : informatique = matériel, logiciel assimilé à du réglage. Aujourd hui : Big Business Industrie majoritairement pilotée par des grands groupes (Microsoft, Sun, Borland, Adobe, Google,...) Les langages de programmation sont souvent liés à un acteur économique et sont partie intégrante de leur stratégie marketing : Java Sun (racheté par Oracle en janv. 2010) S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 8 / 36

Logiciel : historique A l origine, travaux de recherche, labos publics ou privés 1970 : informatique = matériel, logiciel assimilé à du réglage. Aujourd hui : Big Business Industrie majoritairement pilotée par des grands groupes (Microsoft, Sun, Borland, Adobe, Google,...) Les langages de programmation sont souvent liés à un acteur économique et sont partie intégrante de leur stratégie marketing : Java Sun (racheté par Oracle en janv. 2010) C#, VB.NET Microsoft ( plateforme.net ) S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 8 / 36

Logiciel : historique A l origine, travaux de recherche, labos publics ou privés 1970 : informatique = matériel, logiciel assimilé à du réglage. Aujourd hui : Big Business Industrie majoritairement pilotée par des grands groupes (Microsoft, Sun, Borland, Adobe, Google,...) Les langages de programmation sont souvent liés à un acteur économique et sont partie intégrante de leur stratégie marketing : Java Sun (racheté par Oracle en janv. 2010) C#, VB.NET Microsoft ( plateforme.net ) Delphi Borland S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 8 / 36

Logiciel : historique A l origine, travaux de recherche, labos publics ou privés 1970 : informatique = matériel, logiciel assimilé à du réglage. Aujourd hui : Big Business Industrie majoritairement pilotée par des grands groupes (Microsoft, Sun, Borland, Adobe, Google,...) Les langages de programmation sont souvent liés à un acteur économique et sont partie intégrante de leur stratégie marketing : Java Sun (racheté par Oracle en janv. 2010) C#, VB.NET Microsoft ( plateforme.net ) Delphi Borland Flash Macromédia (Adobe) S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 8 / 36

Logiciel : historique A l origine, travaux de recherche, labos publics ou privés 1970 : informatique = matériel, logiciel assimilé à du réglage. Aujourd hui : Big Business Industrie majoritairement pilotée par des grands groupes (Microsoft, Sun, Borland, Adobe, Google,...) Les langages de programmation sont souvent liés à un acteur économique et sont partie intégrante de leur stratégie marketing : Java Sun (racheté par Oracle en janv. 2010) C#, VB.NET Microsoft ( plateforme.net ) Delphi Borland Flash Macromédia (Adobe) Une exception : C++, langage indépendant S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 8 / 36

Logiciel : historique A l origine, travaux de recherche, labos publics ou privés 1970 : informatique = matériel, logiciel assimilé à du réglage. Aujourd hui : Big Business Industrie majoritairement pilotée par des grands groupes (Microsoft, Sun, Borland, Adobe, Google,...) Les langages de programmation sont souvent liés à un acteur économique et sont partie intégrante de leur stratégie marketing : Java Sun (racheté par Oracle en janv. 2010) C#, VB.NET Microsoft ( plateforme.net ) Delphi Borland Flash Macromédia (Adobe) Une exception : C++, langage indépendant Evolutions futures : developpement de l exécution distribuée, notion de services web : un programme ne s exécute plus sur une machine, mais sur un réseau de machines. S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 8 / 36

Modélisation : différentes approches On peut introduire différents niveaux d abstraction, amenant différentes approches (paradigmes de programmation). On distingue (parmi d autres...) : Programmation procédurale Axée sur les traitements : le problème est découpée en tâches de plus en plus détaillées Programmes = Algorithmes + structures de données. S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 9 / 36

Modélisation : différentes approches On peut introduire différents niveaux d abstraction, amenant différentes approches (paradigmes de programmation). On distingue (parmi d autres...) : Programmation procédurale Axée sur les traitements : le problème est découpée en tâches de plus en plus détaillées Programmes = Algorithmes + structures de données. Programmation Orientée Objet (POO) Axée sur les données : le problème est découpé en objets qui communiquent entre eux par envois de messages Programmes = objets communiquant entre eux. S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 9 / 36

Modélisation : procédural vs. POO Programmation procédurale 1 int a[50], b, c; 2 b = FonctionQuiCalculeUnTruc( a ); 3 c = UneAutreFonction( b ); S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 10 / 36

Modélisation : procédural vs. POO Programmation procédurale 1 int a[50], b, c; 2 b = FonctionQuiCalculeUnTruc( a ); 3 c = UneAutreFonction( b ); Programmation Orientée Objet (POO) 1 int a; // creation d un objet a de type int 2 MACHIN b; // creation d un objet b de type MACHIN 3 b.calculerceci(); 4 b.calculercela( a ); // passage d argument S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 10 / 36

Sommaire 1 Langages de programmation 2 Programmation orientée objet (P.O.O.) Introduction Encapsulation Héritage Polymorphisme Regroupement d objets S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 11 / 36

Sous-sommaire 1 Langages de programmation 2 Programmation orientée objet (P.O.O.) Introduction Encapsulation Héritage Polymorphisme Regroupement d objets S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 12 / 36

P.O.O.? - Objet? POO : Tentative de rapprochement du comportement d un programme avec le comportement du monde réel. S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 13 / 36

P.O.O.? - Objet? POO : Tentative de rapprochement du comportement d un programme avec le comportement du monde réel. On modélise la tâche à accomplir par des objets qui interagissent entre eux. S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 13 / 36

P.O.O.? - Objet? POO : Tentative de rapprochement du comportement d un programme avec le comportement du monde réel. On modélise la tâche à accomplir par des objets qui interagissent entre eux. Les objets au sens informatique peuvent représenter : S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 13 / 36

P.O.O.? - Objet? POO : Tentative de rapprochement du comportement d un programme avec le comportement du monde réel. On modélise la tâche à accomplir par des objets qui interagissent entre eux. Les objets au sens informatique peuvent représenter : des objets réels : voiture, conducteur, chaise, porte, chien,..., S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 13 / 36

P.O.O.? - Objet? POO : Tentative de rapprochement du comportement d un programme avec le comportement du monde réel. On modélise la tâche à accomplir par des objets qui interagissent entre eux. Les objets au sens informatique peuvent représenter : des objets réels : voiture, conducteur, chaise, porte, chien,..., S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 13 / 36

P.O.O.? - Objet? POO : Tentative de rapprochement du comportement d un programme avec le comportement du monde réel. On modélise la tâche à accomplir par des objets qui interagissent entre eux. Les objets au sens informatique peuvent représenter : des objets réels : voiture, conducteur, chaise, porte, chien,..., S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 13 / 36

P.O.O.? - Objet? POO : Tentative de rapprochement du comportement d un programme avec le comportement du monde réel. On modélise la tâche à accomplir par des objets qui interagissent entre eux. Les objets au sens informatique peuvent représenter : des objets réels : voiture, conducteur, chaise, porte, chien,..., des notions immatérielles : algorithme, point de l espace, ligne de texte, rendez-vous, élement d un programme..., S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 13 / 36

P.O.O.? - Objet? POO : Tentative de rapprochement du comportement d un programme avec le comportement du monde réel. On modélise la tâche à accomplir par des objets qui interagissent entre eux. Les objets au sens informatique peuvent représenter : des objets réels : voiture, conducteur, chaise, porte, chien,..., des notions immatérielles : algorithme, point de l espace, ligne de texte, rendez-vous, élement d un programme..., Des agrégations d objets (listes), homogènes ou hétérogènes. S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 13 / 36

Exemple type : logiciel avec interface graphique S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 14 / 36

Exemple type : logiciel avec interface graphique Ce qu on ne voit pas (noyau du programme) S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 15 / 36

Exemple type : logiciel avec interface graphique Ce qu on ne voit pas (noyau du programme) Ce qu on voit (fenêtre) S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 15 / 36

Exemple type : logiciel avec interface graphique Ce qu on ne voit pas (noyau du programme) Ce qu on voit (fenêtre) Eléments de la fenêtre S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 15 / 36

Exemple type : logiciel avec interface graphique Ce qu on ne voit pas (noyau du programme) Ce qu on voit (fenêtre) Eléments de la fenêtre Barre titre S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 15 / 36

Exemple type : logiciel avec interface graphique Ce qu on ne voit pas (noyau du programme) Ce qu on voit (fenêtre) Eléments de la fenêtre Barre titre Barre menus S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 15 / 36

Exemple type : logiciel avec interface graphique Ce qu on ne voit pas (noyau du programme) Ce qu on voit (fenêtre) Eléments de la fenêtre Barre titre Barre menus Barre d outils S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 15 / 36

Exemple type : logiciel avec interface graphique Ce qu on ne voit pas (noyau du programme) Ce qu on voit (fenêtre) Eléments de la fenêtre Barre titre Barre menus Barre d outils Ascenseurs S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 15 / 36

Exemple type : logiciel avec interface graphique Ce qu on ne voit pas (noyau du programme) Ce qu on voit (fenêtre) Eléments de la fenêtre Barre titre Barre menus Barre d outils Ascenseurs... S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 15 / 36

Exemple type : logiciel avec interface graphique Ce qu on ne voit pas (noyau du programme) Ce qu on voit (fenêtre) Eléments de la fenêtre Barre titre Barre menus Barre d outils Ascenseurs... Contenu de la fenêtre (page HTML affichée en mode graphique) S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 15 / 36

Exemple type : logiciel avec interface graphique Ce qu on ne voit pas (noyau du programme) Ce qu on voit (fenêtre) Eléments de la fenêtre Barre titre Barre menus Barre d outils Ascenseurs... Contenu de la fenêtre (page HTML affichée en mode graphique) image(s) S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 15 / 36

Exemple type : logiciel avec interface graphique Ce qu on ne voit pas (noyau du programme) Ce qu on voit (fenêtre) Eléments de la fenêtre Barre titre Barre menus Barre d outils Ascenseurs... Contenu de la fenêtre (page HTML affichée en mode graphique) image(s) texte S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 15 / 36

Exemple type : logiciel avec interface graphique Ce qu on ne voit pas (noyau du programme) Ce qu on voit (fenêtre) Eléments de la fenêtre Barre titre Barre menus Barre d outils Ascenseurs... Contenu de la fenêtre (page HTML affichée en mode graphique) image(s) texte hyperliens S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 15 / 36

Exemple type : logiciel avec interface graphique Ce qu on ne voit pas (noyau du programme) Ce qu on voit (fenêtre) Eléments de la fenêtre Barre titre Barre menus Barre d outils Ascenseurs... Contenu de la fenêtre (page HTML affichée en mode graphique) image(s) texte hyperliens... S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 15 / 36

Exemple type : logiciel avec interface graphique Ce qu on ne voit pas (noyau du programme) Ce qu on voit (fenêtre) Eléments de la fenêtre Barre titre Barre menus Barre d outils Ascenseurs... Contenu de la fenêtre (page HTML affichée en mode graphique) image(s) texte hyperliens... Autant d objets! S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 15 / 36

Exemple de programme On pourrait écrire le programme précédent en 8 lignes! En POO, les fonction main() sont courtes! Tout est délégué aux objets 1 int main() 2 { 3 KERNEL noyau; // creation noyau 4 GUI gui; // creation interface graphique 5 do { 6 EVENT e = gui.getevent(); // evenement 7 CONTENU c = noyau.process( e ); // traitement par le noyau 8 gui.show( c ); // affichage ( éventuel) 9 } 10 while( e.getmsg()!= QUIT ); // tant que c est pas fini... 11 } noyau : variable (=objet) de type KERNEL S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 16 / 36

noyau : variable (=objet) de type KERNEL S. Kramm gui :(IUT variable Rouen) (=objet) de type MCII1 - GUI Cours 1 (Graphical User Interface) 2012-2013 16 / 36 Exemple de programme On pourrait écrire le programme précédent en 8 lignes! En POO, les fonction main() sont courtes! Tout est délégué aux objets 1 int main() 2 { 3 KERNEL noyau; // creation noyau 4 GUI gui; // creation interface graphique 5 do { 6 EVENT e = gui.getevent(); // evenement 7 CONTENU c = noyau.process( e ); // traitement par le noyau 8 gui.show( c ); // affichage ( éventuel) 9 } 10 while( e.getmsg()!= QUIT ); // tant que c est pas fini... 11 }

Notion de classe Une classe représente le modèle de l objet ( moule ). la liste de ses caractéristiques attributs, les choses qu il peut faire méthodes (fonctions associées à l objet). S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 17 / 36

Classe Instance Un objet est une instance de la classe (création en mémoire d une zone pour le stockage de ses données propres). S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 18 / 36

Principes fondamentaux de la POO Trois principes à retenir : Encapsulation : on cache/protège ce qui n a pas besoin d être connu/manipulé par l utilisateur de l objet, S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 19 / 36

Principes fondamentaux de la POO Trois principes à retenir : Encapsulation : on cache/protège ce qui n a pas besoin d être connu/manipulé par l utilisateur de l objet, Heritage : On hierarchise les objets afin de mutualiser ce qui peut l être (factorisation) : attributs et/ou méthodes, S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 19 / 36

Principes fondamentaux de la POO Trois principes à retenir : Encapsulation : on cache/protège ce qui n a pas besoin d être connu/manipulé par l utilisateur de l objet, Heritage : On hierarchise les objets afin de mutualiser ce qui peut l être (factorisation) : attributs et/ou méthodes, Polymorphisme : on définit des méthodes communes qui peuvent s adapter à la nature réelle de l objet. S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 19 / 36

Sous-sommaire 1 Langages de programmation 2 Programmation orientée objet (P.O.O.) Introduction Encapsulation Héritage Polymorphisme Regroupement d objets S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 20 / 36

A - Encapsulation On ne montre de l objet que ce qui est nécessaire à son utilisation : l objet est une boite noire, munie de boutons sur lesquelles on peut agir. S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 21 / 36

A - Encapsulation On ne montre de l objet que ce qui est nécessaire à son utilisation : l objet est une boite noire, munie de boutons sur lesquelles on peut agir. Les données (attributs) sont protégés : leur modification est contrôlée par l objet. S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 21 / 36

A - Encapsulation On ne montre de l objet que ce qui est nécessaire à son utilisation : l objet est une boite noire, munie de boutons sur lesquelles on peut agir. Les données (attributs) sont protégés : leur modification est contrôlée par l objet. Avantages : S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 21 / 36

A - Encapsulation On ne montre de l objet que ce qui est nécessaire à son utilisation : l objet est une boite noire, munie de boutons sur lesquelles on peut agir. Les données (attributs) sont protégés : leur modification est contrôlée par l objet. Avantages : simplification de l utilisation de l objet, S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 21 / 36

A - Encapsulation On ne montre de l objet que ce qui est nécessaire à son utilisation : l objet est une boite noire, munie de boutons sur lesquelles on peut agir. Les données (attributs) sont protégés : leur modification est contrôlée par l objet. Avantages : simplification de l utilisation de l objet, meilleure robustesse (les valeurs peuvent être contrôlées), S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 21 / 36

A - Encapsulation On ne montre de l objet que ce qui est nécessaire à son utilisation : l objet est une boite noire, munie de boutons sur lesquelles on peut agir. Les données (attributs) sont protégés : leur modification est contrôlée par l objet. Avantages : simplification de l utilisation de l objet, meilleure robustesse (les valeurs peuvent être contrôlées), simplification maintenance, S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 21 / 36

A - Encapsulation On ne montre de l objet que ce qui est nécessaire à son utilisation : l objet est une boite noire, munie de boutons sur lesquelles on peut agir. Les données (attributs) sont protégés : leur modification est contrôlée par l objet. Avantages : simplification de l utilisation de l objet, meilleure robustesse (les valeurs peuvent être contrôlées), simplification maintenance, optimisations possibles sans conséquence pour l utilisateur. S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 21 / 36

A - Encapsulation On ne montre de l objet que ce qui est nécessaire à son utilisation : l objet est une boite noire, munie de boutons sur lesquelles on peut agir. Les données (attributs) sont protégés : leur modification est contrôlée par l objet. Avantages : simplification de l utilisation de l objet, meilleure robustesse (les valeurs peuvent être contrôlées), simplification maintenance, optimisations possibles sans conséquence pour l utilisateur. On fournit à l utilisateur des méthodes d accès aux données en lecture et en écriture ( notion d interface). S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 21 / 36

A - Encapsulation : analogie avec le monde réel Exemple : automobile L utilisateur utilise une interface pour contrôler sa voiture (volant, pédales, levier de vitesse,...) Il n a pas besoin d aller ouvrir le capot pour démarrer : le fonctionnement est caché. On peut changer des pièces sous le capot sans conséquences pour l utilisateur. S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 22 / 36

Exemple d implémentation 1 class AUTOMOBILE 2 { 3 public: // interface 4 void Demarrer(); 5 void PasserUneVitesse( int num ); 6... 7 private: // données privées 8 int QteCarburant; 9 int Vitesse; 10 int RapportBoite; 11... 12 }; S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 23 / 36

Sous-sommaire 1 Langages de programmation 2 Programmation orientée objet (P.O.O.) Introduction Encapsulation Héritage Polymorphisme Regroupement d objets S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 24 / 36

B - Heritage - 1 On peut regrouper les objets par famille d objets : on introduit une hiérarchie entre les classes. S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 25 / 36

B - Heritage - 2 On créera d abord la classe Vehicule, ayant des attributs et des méthodes communes à tous les véhicules. Par exemple : Attributs : couleur, vitesse-maxi,... Méthodes : demarrer(), arreter(),... Les classes VehiculeRoulant, Helicoptère, Bateau seront dérivées de la classe Vehicule : elles héritent de tous les attributs et méthodes de la classe de base. On parle de classe de base et de classes dérivées. Une règle : La classe dérivée est une version spécialisée de la classe de base Remarque : une classe dérivée peut à son tour être dérivée. S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 26 / 36

B - Heritage - 3 Intérêt de l héritage : on peut mutualiser des données ou des méthodes communes. Dans l exemple précédent : Inutile d avoir une méthode Demarrer() à la fois dans Voiture et dans Camion : on peut l inclure dans la classe VéhiculeRoulant. Un attribut VitesseMaxi pourra être inclus dans la classe Véhicule : il sera alors automatiquement disponible dans toutes les classes dérivées. S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 27 / 36

Sous-sommaire 1 Langages de programmation 2 Programmation orientée objet (P.O.O.) Introduction Encapsulation Héritage Polymorphisme Regroupement d objets S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 28 / 36

C - Polymorphisme Le polymorphisme est la capacité qu à une méthode de s adapter automatiquement à l objet manipulé (lié à la notion d héritage). Exemple : soit le modèle d héritage suivant (4 classes) : S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 29 / 36

C - Polymorphisme Le polymorphisme est la capacité qu à une méthode de s adapter automatiquement à l objet manipulé (lié à la notion d héritage). Exemple : soit le modèle d héritage suivant (4 classes) : Dessiner un carré ne se fait pas comme dessiner un cercle. S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 29 / 36

C - Polymorphisme Le polymorphisme est la capacité qu à une méthode de s adapter automatiquement à l objet manipulé (lié à la notion d héritage). Exemple : soit le modèle d héritage suivant (4 classes) : Dessiner un carré ne se fait pas comme dessiner un cercle. Pourtant, les trois formes doivent pouvoir se dessiner on va inclure une méthode dessiner() dans la classe Forme. S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 29 / 36

C - Polymorphisme Le polymorphisme est la capacité qu à une méthode de s adapter automatiquement à l objet manipulé (lié à la notion d héritage). Exemple : soit le modèle d héritage suivant (4 classes) : Dessiner un carré ne se fait pas comme dessiner un cercle. Pourtant, les trois formes doivent pouvoir se dessiner on va inclure une méthode dessiner() dans la classe Forme. On doit pouvoir regrouper plusieurs formes différentes dans un tableau, et appeler leur méthode dessiner() sur chacun d eux. S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 29 / 36

C - Polymorphisme Le polymorphisme est la capacité qu à une méthode de s adapter automatiquement à l objet manipulé (lié à la notion d héritage). Exemple : soit le modèle d héritage suivant (4 classes) : Dessiner un carré ne se fait pas comme dessiner un cercle. Pourtant, les trois formes doivent pouvoir se dessiner on va inclure une méthode dessiner() dans la classe Forme. On doit pouvoir regrouper plusieurs formes différentes dans un tableau, et appeler leur méthode dessiner() sur chacun d eux. On dit que la méthode dessiner() est polymorphe : elle s adapte à la nature de l objet qu elle manipule. S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 29 / 36

Sous-sommaire 1 Langages de programmation 2 Programmation orientée objet (P.O.O.) Introduction Encapsulation Héritage Polymorphisme Regroupement d objets S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 30 / 36

Regroupement d objets Une classe voiture peut dériver (hériter) d une classe véhicule. S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 31 / 36

Regroupement d objets Une classe voiture peut dériver (hériter) d une classe véhicule. Mais une classe roue ne peut pas dériver d une classe voiture! S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 31 / 36

Regroupement d objets Une classe voiture peut dériver (hériter) d une classe véhicule. Mais une classe roue ne peut pas dériver d une classe voiture! Par contre une classe voiture pourra contenir d autres objets : 4 objets de la classe roue, 1 objet de la classe moteur, 1 objet de la classe volant. S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 31 / 36

Regroupement d objets Une classe voiture peut dériver (hériter) d une classe véhicule. Mais une classe roue ne peut pas dériver d une classe voiture! Par contre une classe voiture pourra contenir d autres objets : 4 objets de la classe roue, 1 objet de la classe moteur, 1 objet de la classe volant. On parle de relation d association, et plus précisémment : de composition si la destruction de l objet entraîne la destruction des éléments contenus, d agregation si les objets contenus ont une existence indépendante. S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 31 / 36

Relation de composition Si l objet Voiture est détruit, les objets contenus le seront aussi. S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 32 / 36

Relations d agregation S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 33 / 36

Relations d agregation Les objets ont une existence indépendante : la mare contient des canards, la mare existe sans canards, les canards existent sans la mare. En C++, l agregation sera implémentée par des pointeurs. S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 33 / 36

Difficultés liée à la POO L analyse préalable du problème est primordiale! Il faut : Identifier les objets en jeu, Identifier leurs interactions, statiques et dynamiques. Dans la réalité, la modélisation et la décomposition en objets est souvent difficile. Attention à ne pas faire des décompositions trop lourdes. Ex : une classe jamais instanciée peut éventuellement être supprimée. Un outil : UML : Unified Modeling Language (langage de modélisation objet unifié). S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 34 / 36

Pour aller plus loin... Références http://fr.wikipedia.org/wiki/programmation_orientée_objet http://fr.wikipedia.org/wiki/unified_modeling_language http://laurent-audibert.developpez.com/cours-uml/ Sources des images Bruno Garcia (http://bruno-garcia.net/) yuml (http://yuml.me/) RM Di Scala (http://rmdiscala.free.fr/) S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 35 / 36

Questions Quel est le langage le plus ancien : Java / Delphi / C#? S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 36 / 36

Questions Quel est le langage le plus ancien : Java / Delphi / C#? Quel entreprise vaut le plus : Microsoft / Google / Apple / IBM? S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 36 / 36

Questions Quel est le langage le plus ancien : Java / Delphi / C#? Quel entreprise vaut le plus : Microsoft / Google / Apple / IBM? Le langage C# peut-il s exécuter sur une plateforme Linux? S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 36 / 36

Questions Quel est le langage le plus ancien : Java / Delphi / C#? Quel entreprise vaut le plus : Microsoft / Google / Apple / IBM? Le langage C# peut-il s exécuter sur une plateforme Linux? Citer un autre langage permettant la POO (en sus de ceux cités dans ce cours...) : S. Kramm (IUT Rouen) MCII1 - Cours 1 2012-2013 36 / 36