Programmation Orient´ ee Objet Cours 1 Mohamed Nabil Saidi msaidi@insea.ac.ma 4

Programmation Orient´ ee Objet Cours 1 Mohamed Nabil Saidi msaidi@insea.ac.ma 4 Mars 2020 Mohamed Nabil Saidi - INSEA POO Plan Pr´ esentation de Java Le paradigme objet Classes Objets L’essentiel du langage de Java Variables Op´ erateurs Commandes basiques Mohamed Nabil Saidi - INSEA POO Pr´ esentation de Java Mohamed Nabil Saidi - INSEA POO JAVA c’est quoi ? Une technologie d´ evelopp´ ee par SUN MicrosystemTM lanc´ e en 1995 Un langage de programmation Une plateforme, environnement logiciel dans lequel les programmes java s’ex´ ecutent Pr´ esent dans de tr` es nombreux domaines d’application : des serveurs d’applications aux smart phones (android) et cartes ` a puces (JME) Mohamed Nabil Saidi - INSEA POO D´ efinition de Sun : Java est un langage simple, orient´ e objet, distribu´ e, robuste, sˆ ur, ind´ ependant des architectures mat´ erielles, portable, de haute performance, multithread et dynamique Mohamed Nabil Saidi - INSEA POO G´ en´ eralit´ es Simple & Robuste Abandonner les ´ el´ ements mal compris ou mal exploites dans d’autres langages Pas de pointeur Pas d’h´ eritage multiple Typage des donn´ ees tr` es strict Sˆ ur Java n’est pas compil´ e ` a destination d’un processuer particulier mais en “byte code” qui pourra ˆ etre ensuite interpr´ et´ e sur une machine virtuelle (JVM = Java Virtual Machine). Le “byte code” g´ en´ er´ e est v´ erifi´ e par les interpr´ eteurs java avant ex´ ecution. Un d´ ebordement de tableau d´ eclenchera automatiquement une exception. L’absence d’arithm´ etique de pointeur ´ evite les malversations. Mohamed Nabil Saidi - INSEA POO G´ en´ eralit´ es Portable Les types de donn´ ees sont ind´ ependants de la plate forme (par exemple les types num´ eriques sont d´ efinis ind´ ependamment du type de plate forme sur laquelle le byte code sera interpr´ et´ ee). Multi thread Une applications peut ˆ etre d´ ecompos´ ee en unit´ es d’ex´ ecution fonctionnant simultan´ ement Dynamique Les classes Java peuvent ˆ etre modifi´ ees sans avoir ` a modifier le programme qui les utilise Politique Java est actuellement totalement control´ e par Oracle. Mohamed Nabil Saidi - INSEA POO Plusieurs Java Java EE : “Enterprise Edition”. Rajoute certaines API et fonctionalit´ es pour les entreprises. Java ME : “Micro Edition”. ´ Edition qui sert ` a ´ ecrire des applications embarqu´ ees Ex. : t´ el´ ephone portable, carte ` a puce Java SE : “Standard Edition” : JRE : “Java Runtime Environment”. Contient la plate-forme Java (JVM + API). JDK : (“Java Development Kit”). Contient le langage de programmation et la plate-forme (compilateur + JVM + API). Java Android Mohamed Nabil Saidi - INSEA POO Les diff´ erentes version de java Java 1.0 (Janvier 1995) 8 packages 212 Classes et Interfaces 1545 M´ ethodes Java 1.1 (F´ evrier1997) 23 packages 504 Classes et Interfaces 3 851 M´ ethodes Java 1.2 (D´ ecembre 1998) 60 packages 1 781 Classes et Interfaces 15 060 M´ ethodes Et bien plus encore dans les versions suivantes : 1.3, ..., java SE 8 (On est a la version java SE 13 actuellement - Septembre 2019) Mohamed Nabil Saidi - INSEA POO L’environnement de travail Un ´ editeur de texte Ex. : Emacs, gedit, GVim Le compilateur (javac) La JVM (java) Le g´ en´ erateur automatique de documentation (javadoc) Le debogueur (jdb) La documentation du JDK 9, disponible ` a : https://docs.oracle.com/javase/9/docs/api Mohamed Nabil Saidi - INSEA POO Plate-forme Java La plate-forme est le mat´ eriel (“hardware”) et/ou l’environnement logiciel dans lequel un programme s’ex´ ecute. La plate-forme Java est un environnement logiciel, compos´ ee de deux parties : API : (“Application Programming Interface “) grande collection de composants logiciels qui offrent de nombreuses fonctionnalit´ es. JVM : (“Java Virtual Machine”) le logiciel qui interpr` ete le bytecode g´ en´ er´ e par le compilateur Java. Mohamed Nabil Saidi - INSEA POO Plate-forme Java (2) Un programme Java est ex´ ecut´ e par la JVM, qui s’utilise de l’API. Mohamed Nabil Saidi - INSEA POO Compilation et ex´ ecution Mohamed Nabil Saidi - INSEA POO La machine virtuelle Il y a des JVM pour la plupart des syst` emes Ex. : Windows, Linux, Mac OS, Solaris Si un syst` eme poss` ede une JVM, il peut ex´ ecuter le bytecode g´ en´ er´ e sur n’importe quel autre syst` eme. Avantages de cet approche : Portabilit´ e : le bytecode peut ˆ etre charg´ e depuis une machine distante sur Internet. S´ ecurit´ e : la JVM effectue des nombreuses v´ erifications sur le bytecode pour ´ eviter des actions “dangereuses”. Mohamed Nabil Saidi - INSEA POO La machine virtuelle (2) D´ esavantage de cet approche : lenteur. Mais, des nouvelles techniques essayent de minimiser ce probl` eme : Ex., la traduction en code binaire des parties du bytecode qui sont utilis´ es tr` es fr´ equemment. Mohamed Nabil Saidi - INSEA POO Utilisation de JAVA Le Langage java peut g´ en´ erer des applications des applets des servlets des Appletications etc. Mohamed Nabil Saidi - INSEA POO G´ en´ eration du code ex´ ecutable Le code est g´ en´ er´ e par un compilateur en plusieurs ´ etapges : V´ erification syntaxique. V´ erification s´ emantique (typage). Production de code dans un langage plus proche de la machine Mohamed Nabil Saidi - INSEA POO Production de code Avantages/inconv´ enients du code natif Rapidit´ e d’ex´ ecution N´ ecessit´ e de recompiler lors du portage d’un logiciel sur une autre architecture/syst` eme d’exploitation Choix de la distribution du logiciel: source ou binaire ? Java, production de code interm´ ediaire: le bytecode Mohamed Nabil Saidi - INSEA POO Avantages/inconv´ enients du bytecode Code portable au niveau binaire Moins efficace que du code natif Mohamed Nabil Saidi - INSEA POO Un programme en Java Code source (dans un fichier texte) : HelloWorld.java class HelloWorld{ public static void main(String[ ] args) { System.out.println(”Hello World!”); } } Mohamed Nabil Saidi - INSEA POO Le main() Le point d’entr´ ee pour l’ex´ ecution d’une application Java est la m´ ethode statique main de la classe sp´ ecifi´ ee ` a la machine virtuelle Profil de cette m´ ethode public static void main(String [] args) String args ??? args : tableau d’objets String (chaˆ ınes de caract` eres) contenant les arguments de la ligne de commande Mohamed Nabil Saidi - INSEA POO Le paradigme objet Mohamed Nabil Saidi - INSEA POO Paradigmes de programmation Un paradigme de programmation correspond ` a une mani` ere de mod´ eliser le monde. Il existent plusieurs paradigmes : programmation imp´ erative (ex. : Pascal, C, Fortran) ; programmation fonctionnelle (ex. : Scheme, Lisp) ; programmation logique (ex. : Prolog) ; programmation orient´ ee objet (ex. : C++, Java). Dans le paradigme objet : Le monde est mod´ elis´ e comme un ensemble d’objets. Les objets ont un ´ etat interne et un comportement. Ils collaborent en s’´ echangeant des messages. Mohamed Nabil Saidi - INSEA POO Qu’est-ce qu’un objet ? Toute entit´ e identifiable, concr` ete ou abstraite. Ex. : stylo, table, ordinateur, v´ elo, logiciel. Deux caract´ eristiques importantes : ´ Etat Comportement L’objet v´ elo : ´ Etats : vitesse, couleur, direction, etc. Comportements : acc´ el´ erer, s’arrˆ eter, tourner ` a droite, etc. Mohamed Nabil Saidi - INSEA POO Concepts des langages objet Concept de base de la programmation orient´ ee objet : la classe Une classe mod´ elise la structure statique (donn´ ees membres) et le comportement dynamique (m´ ethodes) des objets associ´ es ` a cette classe. Un objet d’une classe est appel´ e une instance. Une classe est la description d’un objet. Chaque objet est cr´ e´ e ` a partir d’une classe (avec l’op´ erateur new). Mohamed Nabil Saidi - INSEA POO Notion d’objet en programmation Un objet a : une identit´ e : adresse en m´ emoire un ´ etat : la valeur de ses attributs un comportement : ses m´ ethodes Mohamed Nabil Saidi - INSEA POO Classes d’objets Une d´ efinition abstraite selon laquelle les objets sont cr´ ees (un type d’objet) Ex. : la classe des v´ elos, la classe des stylos Exemple : D´ efinir une classe Velo : Attributs : vitesse Mthodes : Acc´ el´ erer, Freiner et ImprimeEtat Mohamed Nabil Saidi - INSEA POO D´ efinition d’une classe Velo.java class Velo { int vitesse = 0; void accelerer(int increment) { vitesse = vitesse + increment; } void freiner(int decrement) { vitesse = vitesse - decrement; } void imprimeEtat() { System.out.println(”vitesse: ” + vitesse); } } Mohamed Nabil Saidi - INSEA POO Cr´ eation des objets et messages DemoVelo.java class DemoVelo { public static void main(String[] args) { // Genere deux objets differents du type Velo Velo velo1 = new Velo(); Velo velo2 = new Velo(); // Invoque les methodes velo1.accelerer(10); velo1.imprimeEtat(); velo2.accelerer(20); velo2.imprimeEtat(); } } Mohamed Nabil Saidi - INSEA POO Un programme en Java (2) Compilation (dans la console) : $ javac HelloWorld.java Le compilateur recoit un nom d’un fichier uploads/Ingenierie_Lourd/ courspoo-sem1.pdf

  • 10
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager