ENSTA : cours IN204 Introduction à JAVA



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

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

Java Licence professionnelle CISII,

Une introduction à Java

as Architecture des Systèmes d Information

TP1 : Initiation à Java et Eclipse

TP1. Outils Java Eléments de correction

INITIATION AU LANGAGE JAVA

Programmer en JAVA. par Tama

Cours 1: Java et les objets

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

Initiation à JAVA et à la programmation objet.

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

PROGRAMMATION PAR OBJETS

Auto-évaluation Programmation en Java

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

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Programmation en Java IUT GEII (MC-II1) 1

RN2-Programmation Orientée Objet - JAVA CH 1 Introduction à la POO et Java

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

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

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

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

Généralités sur le Langage Java et éléments syntaxiques.

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

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

Support de cours et TD Programmation Orientée Objet

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Langage Java. Classe de première SI

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

ACTIVITÉ DE PROGRAMMATION

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

Introduction au langage Java

Bases du langage. Historique Applications et applets Éléments de base du langage Classes et objets Les exceptions

RMI le langage Java XII-1 JMF

ALGORITHMIQUE ET PROGRAMMATION ORIENTEE OBJET

Systeme d'exploitation

Java - la plateforme

Java 7 Les fondamentaux du langage Java

Remote Method Invocation (RMI)

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

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Remote Method Invocation Les classes implémentant Serializable

TP3. Mail. Attention aux fausses manoeuvres lors de ce TP vous pouvez endommager votre mail sur ouindose.

TD/TP PAC - Programmation n 3

4. Groupement d objets

Valeur C - RSM Conception d Applications Multimedia. Objectifs du cours: 1. Java en général

Java Licence Professionnelle CISII,

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

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Fichiers d'archives java - *.jar

Utiliser Java sans BlueJ

Serveur d'archivage 2007 Installation et utilisation de la BD exist

Java c est quoi? Java pourquoi?

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

Programmation Réseau. Sécurité Java. UFR Informatique jeudi 4 avril 13

Java Licence Professionnelle CISII,

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

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

Premiers Pas en Programmation Objet : les Classes et les Objets

Utilisation d objets : String et ArrayList

TD/TP PAC - Programmation n 3

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

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

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

Package Java.util Classe générique

JAVA 8. JAVA 8 - Les fondamentaux du langage. Les fondamentaux du langage Java. Avec exercices pratiques et corrigés JAVA 8 29,90.

Java c est quoi? Java. Java. Java : Principe de fonctionnement 31/01/ Vue générale 2 - Mon premier programme 3 - Types de Programme Java

Programmation par les Objets en Java

JAVA. Introduction à la programmation objet avec java 1/4. Nadir BOUSSOUKAIA

Interfaces graphiques avec l API Swing

Java DataBaseConnectivity

Programmation avancée et répartie en Java : interfaçage avec d autres langages

Lambda! Rémi Forax Univ Paris-Est Marne-la-Vallée

Apprendre Java en 154 minutes

Développement Logiciel

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

Introduction. Introduction au langage Java. Un livre de Wikilivres.

Anne Tasso. Java. Le livre de. premier langage. 6 e édition. Groupe Eyrolles, 2000, 2002, 2005, 2006, 2008, 2010, ISBN :

Langage à objets : JAVA (1)

Création d objet imbriqué sous PowerShell.

TP1 : Initiation à Java et Eclipse

Eclipse atelier Java

Java Avancé. Le langage Java. Rémi Forax

Chapitre I Notions de base et outils de travail

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

Classe Interne, Anonyme & Enumération

Traitement de données

Introduction à Java. Philippe Genoud.

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

Le langage JAVA G. Baulieu Institut de Physique Nucléaire de Lyon Septembre 2009

P r ob lé m a t iq u e d e la g é n é r icit é. Pr in cip e d e la g é n é r icit é e n Ja v a ( 1 /3 )

Initiation à la programmation orientée-objet avec le langage Java

1 Définition d une classe en Java

Threads. Threads. USTL routier 1

Développons en Java 1007

Programmation Orientée Objets Le Langage JAVA

EP60.92 Projet d application pluridisciplinaire La chasse aux trésors

Corrigé des exercices sur les références

Initiation à la Programmation Java

Transcription:

Ecole Nationale Supérieure de Techniques Avancées (ENSTA) -http://www.ensta.fr ENSTA : cours IN204 Introduction à JAVA Olivier Sigaud LIP6/AnimatLab olivier.sigaud@lip6.fr 01.44.27.88.53 Page : 1

Plan Ecole Nationale Supérieure de Techniques Avancées du (ENSTA) -http://www.ensta.fr cours 3 Modularité et packages Encapsulation et contrôle d'accès CLASSPATH JAVADOC Page : 2

Ecole Nationale Supérieure de Techniques Avancées (ENSTA) -http://www.ensta.fr Packages Page : 3

Modularité Ecole Nationale Supérieure de Techniques Avancées (ENSTA) -http://www.ensta.fr La modularité est une propriété fondamentale de tous les langages orientés objets. Le découpage en module est une technique de structuration de la conception Le but est d'assurer le maximum d'indépendance entre des modules Un des moyens de programmer de façon modulaire est de découper le programme en packages Java offre des moyens de restreindre la visibilité des éléments entre les différents packages/classes Page : 4

Packages Ecole Nationale Supérieure de Techniques Avancées (ENSTA) -http://www.ensta.fr Le but de la modularisation est de découper les gros programmes en modules bien séparés La difficulté consiste à minimiser les interactions entre modules Bien identifier les interfaces (ce qui est visible) Les << paquetages >> ou << packages >> fournissent une représentation du découpage en modules qui permet d'exprimer ce qui est visible d'un module à l'autre Les packages peuvent être imbriqués Page : 5

Ecole Nationale Supérieure de Techniques Avancées (ENSTA) -http://www.ensta.fr Module : Vue externe Volant Injecteur Pistons Bougies BoiteDeVitesse Embrayage Moteur Voiture demarrer() conduire() stopper() Page : 6

Ecole Nationale Supérieure de Techniques Avancées (ENSTA) -http://www.ensta.fr Les packages : syntaxe Déclaration : package Vehicules; en début de tous les fichiers du package Tous ces fichiers doivent être rassemblés dans un répertoire Vehicules Si on ne déclare pas de package, il existe un package par défaut De l'extérieur, les classes publiques sont visibles sous le nom Vehicules.Voiture Les autres classes ne sont pas visibles Page : 7

Ecole Nationale Supérieure de Techniques Avancées (ENSTA) -http://www.ensta.fr Exemple On dispose d un package Vehicules dans lequel est définie la classe voiture package Principal; Class Main { public static void main(string args[]) { Vehicules.Voiture mavoiture = new Vehicules.Voiture(); mavoiture.demarrer(); } } Page : 8

Import Ecole Nationale Supérieure de Techniques Avancées (ENSTA) -http://www.ensta.fr Utiliser Vehicules.Voiture partout où l'on a besoin d'une voiture n'est pas très pratique On peut déclarer au début d'un fichier que la classe Voiture provient du package Vehicules : import Vehicules.Voiture; Dès lors, la classe Voiture est connue comme si l'on était dans le package Vehicules (si elle est publique) Cas imbriqué : import NomPackage1. NomPackage2.*; Page : 9

Exemple Ecole Nationale Supérieure de Techniques Avancées (ENSTA) -http://www.ensta.fr package Principal; import Vehicules.Voiture; // ou import Vehicules.*; Class Main { public static void main(string args[]) { Voiture mavoiture = new Voiture(); mavoiture.demarrer(); } } Pour importer toutes les classes publiques d'un package : import NomPackage.*; Page : 10

Conflit Ecole Nationale Supérieure de Techniques Avancées de (ENSTA) -http://www.ensta.fr noms Si on a une classe Vehicules.Voiture et une classe BienDeConsommation.Voiture import Vehicules.Voiture; import BienDeConsommation.Voiture; Quand on parle de la classe Voiture, on ne sait pas de laquelle des deux il s agit Dans ce cas, il ne faut importer que l une des deux Page : 11

Exemple Ecole Nationale Supérieure de Techniques Avancées (ENSTA) -http://www.ensta.fr package Principal; import BienDeConsommation.Voiture; // ou import Vehicules.*; Class Main { public static void main(string args[]) { Voiture monepave = new Voiture(); // il s agit de BienDeConso.Voiture Vehicules.Voiture mavoiture = new Vehicules.Voiture(); monepave.vendre(); mavoiture.demarrer(); } } Page : 12

Packages Ecole Nationale Supérieure de Techniques imbriqués Avancées (ENSTA) -http://www.ensta.fr Il est fréquent d avoir des packages imbriqués les uns dans les autres Si Package1 contient Package2; import Package1.*; importe le contenu de Package1 mais pas celui de Package2 import Package1.Package2.*; importe le contenu de Package2 import Package1.*; import Package1.Package2.*; pour avoir les deux Exemple : java.awt.*, java.awt.event.* Page : 13

Ecole Nationale Supérieure de Techniques Avancées (ENSTA) -http://www.ensta.fr Conventions de nommage Intérêt du nommage par package : permet de faire cohabiter deux classes de même nom ne provenant pas du même package : NomPackage.NomClasse Risque d'avoir deux classes de même nom dans deux packages de même nom Convention des noms de packages fournis sur internet : com.site.package.autrepackage Page : 14

Ecole Nationale Supérieure de Techniques Avancées (ENSTA) -http://www.ensta.fr Quelques Packages java.io; Entrées/Sorties java.applet; Manipulation des applets java.math; Traitements mathématiques java.lang; Primitives du langage java.util; Utilitaires, structures de données java.awt; Interface graphique AWT java.awt.events; Evénements graphiques AWT javax.swing; Interface graphique SWING javax.swing.event;evénements graphique SWING Page : 15

Packages Ecole Nationale Supérieure de Techniques fréquents Avancées (ENSTA) -http://www.ensta.fr Interface graphique (IHM) Couche de communication Bases de données... Couches basses/supérieures Page : 16

Ecole Nationale Supérieure de Techniques Avancées (ENSTA) -http://www.ensta.fr Encapsulation Page : 17

Encapsulation Ecole Nationale Supérieure de Techniques Avancées (ENSTA) -http://www.ensta.fr Outre les packages, le second élément pour réaliser modularité et encapsulation est l existence d un mécanisme de contrôle de la visibilité des données Consiste à ne laisser apparaître d'un code que ce qui doit être visible de l'extérieur On parle de contrôle d accès On peut masquer des membres d'une classe ou des classes d'un package Page : 18

Contrôle Ecole Nationale Supérieure d'accès de Techniques Avancées (ENSTA) -http://www.ensta.fr : package public : classes accessibles sans restriction par défaut : éléments visibles de la totalité du package, mais pas hors du package Eviter qu une classe porte le même nom que le package qui la contient Page : 19

Contrôle Ecole Nationale Supérieure de d'accès Techniques Avancées (ENSTA) -http://www.ensta.fr : classes public : éléments accessibles sans restriction private : éléments accessibles uniquement dans la classe locale. Membres non hérités protected : éléments accessibles uniquement dans la classe et ses sous-classes par défaut : équivalent de public Page : 20

Ecole Nationale Supérieure de Techniques Avancées (ENSTA) -http://www.ensta.fr Module : Vue externe Volant Injecteur Pistons Bougies BoiteDeVitesse Embrayage Moteur Voiture demarrer() conduire() stopper() Page : 21

Membres Ecole Nationale Supérieure de Techniques Avancées privés (ENSTA) -http://www.ensta.fr Vue d'un conducteur : public class Voiture { public Embrayage public BoiteVitesse public Volant private Moteur private Bougies embrayage; boite; volant; moteur; bougies; } public void demarrer(){...} public void conduire(){...} public void stopper (){...} private void amortirchaos(){...} private void activerbougie(){...} Problème : pas la même vue pour un garagiste Page : 22

Accesseurs Ecole Nationale Supérieure de et Techniques Avancées (ENSTA) -http://www.ensta.fr modifieurs En général, il est bon que les attributs d'une classe ne soient modifiés que par les objets de cette classe Avoir des méthodes spécifiques pour lire et modifier les attributs : les accesseurs Les accesseurs sont des méthodes comme les autres Syntaxe : Type get + Nom de l'attribut () renvoie l'attribut void set + Nom de l'attribut (Type valeur) affecte l'attribut Page : 23

Exemple Ecole Nationale Supérieure de Techniques Avancées (ENSTA) -http://www.ensta.fr public class Personne { private int age; public int getage() { return age; } public void setage (int a) { age = a; } } public class Medecin { public static void main(string args[]) { Personne jean = new Personne( ); jean.getage(); } } Page : 24

Ecole Nationale Supérieure de Techniques Avancées (ENSTA) -http://www.ensta.fr Intérêt des accesseurs On peut modifier l'attribut sans renommer les accesseurs Exemple : Si int age; devient Date datedenaissance; Partout où l'on a utilisé l'attribut age, il faut modifier le code Si l'on a utilisé getage(); setage();, alors il suffit de changer le code de l'accesseur Page : 25

Ecole Nationale Supérieure de Techniques Avancées Classe (ENSTA) -http://www.ensta.fr interne Notion de inner class Exemple : class A { class B { methode1deb() {} methode2deb() {} } methodedea(){} } C est encore un moyen d encapsulation, mais c est à éviter autant que possible Page : 26

Ecole Nationale Supérieure de Techniques Avancées (ENSTA) -http://www.ensta.fr Danger des classes internes Nom1.Nom2 peut désigner : La classe Nom2 dans le package Nom1 La classe Nom2 interne à la classe Nom1 Certains compilateurs s y perdent Eviter autant que possible d avoir une classe qui porte le même nom qu un package Page : 27

Réutilisation Ecole Nationale Supérieure de Techniques Avancées (ENSTA) -http://www.ensta.fr L intérêt principal de la modularité et de l encapsulation est la possibilité de réutiliser les programmes Il est plus facile de réutiliser des morceaux de code en programmation orientée objets Si une classe correspond à un objet concret et si ses méthodes sont naturelles, tout programme qui la met en œuvre peut réutiliser ses méthodes Il est aussi plus facile d'interpréter ce que fait le programme si les noms de classe, d'attributs et de méthodes sont naturels Page : 28

Ecole Nationale Supérieure de Techniques Avancées (ENSTA) -http://www.ensta.fr Le CLASSPATH (1) Javac est capable de compiler à la volée les classes nécessaires pour compiler d autres classes class Voiture { Moteur moteur; } La compilation de Voiture.java entraîne la compilation de Moteur.java Le CLASSPATH est une variable d'environnement qui décrit tous les chemins où Java doit aller chercher des packages Page : 29

Ecole Nationale Supérieure de Techniques Avancées (ENSTA) -http://www.ensta.fr Le CLASSPATH (2) Quand les classes à compiler ne sont pas immédiatement accessibles, recherche à partir du CLASSPATH S il y a plusieurs classes identiques dans plusieurs répertoires différents, on peut choisir celle que le compilateur ira chercher Danger : si vous n avez pas bien positionné le CLASSPATH, java utilise peut-être une autre classe que celle que vous croyez Page : 30

Ecole Nationale Supérieure de Techniques Avancées (ENSTA) -http://www.ensta.fr Positionner le CLASSPATH Un chemin est une suite de répertoires depuis la racine de la machine Le CLASSPATH donne une suite de chemins, qui désignent tous les répertoires dans lesquels java peut aller chercher des classes En csh, tsch... : setenv CLASSPATH chemin1:chemin2 En bash : export CLASSPATH=chemin1:chemin2 Page : 31

Ecole Nationale Supérieure de Techniques Avancées (ENSTA) -http://www.ensta.fr Usage du CLASSPATH Le CLASSPATH doit pointer à la racine des packages de votre application Il est important que les packages portent le même nom que les répertoires qui les contiennent Compilation : à la racine des packages Exécution : n importe où Exemple : dans /home/moi/monpackage/maclasse.java CLASSPATH = /home/moi/ Compilez dans /home/moi/ Exécutez où vous voulez Page : 32

Ecole Nationale Supérieure de Techniques Avancées (ENSTA) -http://www.ensta.fr JAVADOC Outil de documentation automatique d un programme Produit un ensemble de fichiers HTML à partir des classes, attributs, méthodes et commentaires Respecte le découpage en packages, met des liens, option pour ne documenter que ce qui est public. Extrêmement utile pour diffuser son propre code Page : 33

Ecole Nationale Supérieure de Techniques Avancées (ENSTA) -http://www.ensta.fr Commentaires On commente : Les classes Les attributs Les méthodes Les paramètres Les valeurs de retour Page : 34

Ecole Nationale Supérieure de Techniques Avancées (ENSTA) -http://www.ensta.fr Syntaxe des commentaires /** * ici, un commentaire * autres éléments (@ ) */ @param nomvariable : rôle de la variable @return rôle de la valeur retournée @see classe, package : mise d un lien @deprecated : périmé @author nom de l auteur Page : 35

Conventions Ecole Nationale Supérieure de de Techniques Avancées (ENSTA) -http://www.ensta.fr notation class MaClasse : majuscule pour les classes et pour les premières lettres de chaque mot int mavariable : minuscule pour les variables, attributs et méthodes, mais majuscule pour les premières lettres de chaque mot accesseurs : get et set + NomAttribut + (params) Une seule classe par fichier, le fichier porte le nom de la classe Page : 36

La Ecole Nationale Supérieure de Techniques Avancées classe (ENSTA) System -http://www.ensta.fr Permet d accéder à différentes fonctionnalités du système, en particulier les entrées-sorties Les variables in, out et err permettent d accéder à l entrée standard, la sortie standard, et la sortie standard d erreur public static currenttimemillis() renvoie le nb de millisecondes depuis 01/01/1970 public static void exit(int status) permet de quitter le programme avec un code de sortie (status) Page : 37

Ecole Nationale Supérieure de Techniques Besoin Avancées (ENSTA) -http://www.ensta.fr d'évasion? Page : 38