Support de Cours Christophe Dony Université Montpellier-II



Documents pareils
Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

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

Programmer en JAVA. par Tama

PROGRAMMATION PAR OBJETS

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

Java Licence Professionnelle CISII,

as Architecture des Systèmes d Information

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Une introduction à Java

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

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

Cours 1: Java et les objets

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

INITIATION AU LANGAGE JAVA

Programmation en Java IUT GEII (MC-II1) 1

TP1 : Initiation à Java et Eclipse

Java c est quoi? Java pourquoi?

Langage Java. Classe de première SI

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

INF 321 : mémento de la syntaxe de Java

Chapitre I Notions de base et outils de travail

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

La technologie Java Card TM

Java Licence professionnelle CISII,

Java Licence Professionnelle CISII,

Auto-évaluation Programmation en Java

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

Initiation à JAVA et à la programmation objet.

La carte à puce. Jean-Philippe Babau


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

Programmation par les Objets en Java

TP1. Outils Java Eléments de correction

ALGORITHMIQUE ET PROGRAMMATION ORIENTEE OBJET

1. Langage de programmation Java

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

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

Initiation à la Programmation Java

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

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

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

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

Chapitre 10. Les interfaces Comparable et Comparator 1

Corrigé des exercices sur les références

Introduction au langage C

Introduction au langage Java

Premiers Pas en Programmation Objet : les Classes et les Objets

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

Présentation de Java. Olivier de Pertat IT GROUP

1 Définition d une classe en Java

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Chapitre VI- La validation de la composition.

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

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

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

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

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

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

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

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Apprendre Java en 154 minutes

Java - la plateforme

Utilisation d objets : String et ArrayList

Structurer ses données : les tableaux. Introduction à la programmation

UE C avancé cours 1: introduction et révisions

Remote Method Invocation (RMI)

Notions fondamentales du langage C# Version 1.0

Programmation Par Objets et Langage Java

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

Threads. Threads. USTL routier 1

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

Bases Java - Eclipse / Netbeans

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

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

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

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Machines Virtuelles. et bazard autour. Rémi Forax

UE Programmation Impérative Licence 2ème Année

Programmation Orientée Objet Java

Vulgarisation Java EE Java EE, c est quoi?

Programmation Orientée Objets Le Langage JAVA

CPR Informatique. (poste 3159 ou 3164) Septembre 2002

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

COMPARAISONDESLANGAGESC, C++, JAVA ET

Évaluation et implémentation des langages

Package Java.util Classe générique

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

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

Informatique / Programmation

Traitement de données

F. Barthélemy. 17 mai 2005

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

TP1 : Initiation à Java et Eclipse

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

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

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

ALGORITHMIQUE ET PROGRAMMATION En C

Étude de l interopérabilité de deux langages de programmation basée sur la machine virtuelle de Java

Programmation en langage C

Transcription:

Cours de base d Ingéniérie des applications objet. Généralités sur le langage Java - Modèle d exécution - Syntaxe Support de Cours Christophe Dony Université Montpellier-II 1 Le langage Java 1.1 Langage de programmation par objets Langage de programmation Orienté Objet (types abstraits, surcharge, polymorphisme d inclusion, liaison dynamique) Synthèse de Smalltalk (pas de variables de type pointeur, allocation dynamique, recupération dynamique, machine virtuelle) et de C++ (Syntaxe, constructeurs,...). C est un C++ adapté pour plus de simplicité d utilisation. 1.2 Bibliotheques La machine virtuelle (l interpréteur) est livré avec un ensemble de bibliothèques regroupées logiquement en API. API (Application Programming Interface) : l interface à une bibliothèque spécialisée dans un certain domaine d application. Ex API JDBC (Java Database Connectivity). L implantation d une API regroupe un où plusieurs packages (cf. Chapître 3). dans lesquels sont définis un ensemble classes et de méthodes. Ex de packages: - java.lang regroupe les classes de base necessaire à la définition de tout programme Java (Object, Exception, String, Thread). - java.math... - java.net : classes pour la réalisation d applications réseau. - java.util : Classes utilitaires pour la réalisation d applications classiques (structures de données (Vecteur, Dictionnaire...), Date, Time, Calendar, Evènements,... - java.io : Entrées-Sorties, Serialisation,... 1.3 Principe d exécution : Machine virtuelle - Portabilité - Mobilité Le code compilé n est pas du code directement exécutable mais un ensemble d instruction interprétables par la machine virtuelle Java. Java peut être exécuté sous quasi tous les unix, sous windows, sous macos, ou dans des systèmes embarqués possédant une puce javaos. Definition : Machine virtuelle : machine logicielle définie par un ensemble d instruction et une manière d interpréter chaque instruction. Principe d exécution: 1. compilation des instruction en bytecodes ou instructions de la machine virtuelle Java. 2. interprétation de ces instructions par un interpréteur 3. un interpréteur plus l API définissant les classes de base du système constituent une plate-forme d exécution Java (JRE : Java runtime environment). Définition : Interpréteur Un Interpréteur d un langage est un programme capable de lire les instructions du langage, de les interpréter i.e. de mettre en oeuvre les calculs spécifiés par ces instructions et de faire connaitre, lorsque nécessaire les résultats fournis par ces calculs. 1

Java est relativement peu gourmand en mémoire. On peut intégrer une machine virtuelle java dans des applications embarquées (un oscilloscope, une montre) ou dans des logiciels (netscape). Mobilité : Les programmes Java peuvent voyager (applets). Le code est testé plusieurs fois avant d être exécuté. Vérificateur de Byte-Code : teste le format des fragments de code et applique un algorithme qui détermine leur légalité (pas de modification des pointeurs, pas de violation des droits d accès aux objets). Class Loader (chargeur de classes). Les classes peuvent être locales (liées à la machine virtuelle en cours d utilisation) ou chargées via le réseau (Applets). Le chargeur sépare les espaces-noms des deux types de classes (aucune classe importée ne peut se faire passer pour une classe locale,... en principe). 2 Syntaxe et Eléments de base du langage 2.1 Anatomie des programmes Un programme est un ensemble de classes dont le texte est défini dans des fichiers (une seule classe publique par fichier). Chaque classe est définie dans une unité de visibilité nommée package. Contenu (extrait) du fichier Point.java package picture; import java.lang.math; public class Point { private int x; private int y; public int gety() {return y;} public Point setx(int i) { x = i; return this;} 2.2 Anatomie d une application Java Une application indépendante possède un point d entrée unique qui une classe détentrice d une méthode nommée main. Elle est exécutée directement par la machine virtuelle Java. /** * The HelloWorldApp class implements an application that * simply displays "Hello World!" to the standard output. */ class HelloWorldApp { public static void main(string[] args) { System.out.println("Hello World!"); //Display the string. }} Compilation : javac HelloWorldApp.java, produit HelloWorldApp.class Exécution : java HelloWorldApp 2.3 Anatomie d une applet Une applet est une application s exécutant dans un Breowser. Une application de type Applet ne possède pas de point d entrée main mais de points d entrée sous le contrôle de l afficheur d Applets (AppletViewer, Netscape). Une applet est modélisée par une sous-classe de Applet implémentant au moins une des 3 méthodes suivantes : init, start, ou paint. 2

import java.applet.applet; import java.awt.graphics; public class HelloWorld extends Applet { public void paint(graphics g) { g.drawstring("hello world!", 50, 25); }} Compilation : javac HelloWorldApp.java Invocation. Dans une page HTML : <APPLET CODE=HelloWorld.class WIDTH=anInt HEIGHT=anInt> </APPLET> 2.4 Instructions Sortes d instructions : déclarations, expressions et structures de contrôles. expression : série d opérateurs et d opérandes syntaxiquement correcte et ayant une valeur. Identificateur : mot commençant par une lettre. Règles : Une affectation est une expression. Toutes les expressions ne peuvent être utilisées en position d instruction, le peuvent : affectations, envois de messages, création d objets. Les déclarations et les structures de contrôle ne sont pas des expressions (ne rendent pas de valeur). Terminateur d instruction: ;. 2.5 Commentaires // commentaire sur une seule ligne /* commentaire sur plusieurs lignes */ /** commentaire traité * par javadoc */ Javadoc : Utilitaire capable de générer automatiquement de la documentation au format HTML à partir des fichiers sources java. Tag Rôle @author auteur de l élement @deprecated un élément est déprécié @docroot répertoire principal de génération de la documentation @exception permet de préciser une exception qui peut être levée par l élément @link inserer un lien vers un élément de la documentation dans n importe quel texte @param permet de préciser un paramètre de l élément @see permet de préciser un élément en relation avec l élément documenté @serial @serialdata @serialfield @since permet de préciser depuis quel version l élément a été ajouté 1.0 package, classe, interface, mé @throws identique à @exception @version permet de préciser le numéro de version de l élément @return permet de préciser la valeur de retour d un élément 3

2.6 Structures de contrôle Statement decision making loop exception miscellaneous Exemple while : Keyword if-else, switch-case for, while, do-while try-catch-finally, throw break, continue, label:, return int count = 0; while (in.read()!= -1) count++; Exemple switch : int month;... switch (month) { case 1: System.out.println("January"); break; case 2: System.out.println("February"); break;... default: System.out.println("not a valid month!"); break; } 2.7 Opérateurs Arithmétiques binaires : +, -, *, /, % Affectation : =, op=, ++, -- {\tt ++a} équivaut (valeur) à : {a = a + 1;} {\tt a++} équivaut (valeur) à : {\tt b = a; a = a + 1; b} {\tt int i = 1; i += 2;} équivaut à : {\tt int i = 1; i = i + 2;} relationnels : >, >=, <, <=, ==,!= conditionnels : &&,,!, &. décalages : >>, << logiques : &(AND), (OR), ^(XOR) déclaration et accès aux tableaux : [], déclaration de paramètres : (params), blocs : {} création d objets : new, conversion de type : ( type ) test de classe d un objet : instanceof formation de noms qualifiés :. 4

2.7.1 précédence et associativité Associativité : - à précédence égale, tous les opérateurs binaires (sauf ceux d affectation) associent de gauche à droite. - affectation : a = b = c a = (b = c) Précédence : operateurs postfixes ([], (params), ++, --) > unary ops > creation or cast > multiplicatifs > additifs > décalage > relationnels > tests égalité > & (bitwise AND) > ^ (XOR) > (OR) > opérateurs logiques > opérateurs d affectation. 2.8 Types Langage statiquement typé : toute variable et toute expression ont un type. Les types de java sont les types dits prédéfinis et les types dits référence. Toute classe définit un nouvel élément de l ensemble des types référence. 2.8.1 Types prédéfinis byte 8-bit two s complement Byte-length integer short 16-bit two s complement Short integer int 32-bit two s complement Integer long 64-bit two s complement Long integer float 32-bit IEEE 754 Single-precision floating point double 64-bit IEEE 754 Double-precision floating point char 16-bit Unicode character A single character boolean A boolean value (true or false) Les caractères sont codés sur 16 bits (unicode caractères) afin d autoriser l utilisation de tous les caractères internationaux (ascii, latin, grecs, russes,...). 2.8.2 A propos des types prédéfinis Chaque type prédéfini possède des valeurs constantes appelées constantes littérales ou littéraux. type littéral type référence #null boolean true, false int 035 octal 0x35 hexa 35 décimal 2.8.3 Les tableaux Un tableau est une collection d entités toutes du même type s utilisant de façon usuelle (issue de C et C++). Le type tableau est un type référence mais ceci est implanté de façon ad.hoc. 5

int[] tabint; //déclaration d un tableau d entiers tabint = new int[10]; //initialisation de la variable tabint Initialisation des éléments du tableau for int i = 0; i < tab.length; i = i + 1) {tabint[i] = 0;} accès aux éléments int j = tab[5]; tab[3] = 12; 2.8.4 Conversion de types Le compilateur peut être amené à réaliser des conversions de type et le programmeur peut être amené à en programmer. Conversions implicites : Toute valeur numérique d un type primitif T peut être affectée à une variable d un type numérique T si le domaine de valeurs de T est plus large que celui de T. (double > float > long > int > short > byte), (int > char). float f = 1234; int i = a ; // i = 97 Conversions explicites : D autres conversions peuvent être réalisées explicitement, avec des risques de perte d information ou de signalement d exceptions. Pour les types primitifs, voir la documentation pour la liste de toutes les possibilités et tous les détails. Un exemple : double d = 7.99; long l = (long)d; Pour les types référence, voir plus loin dans le cours. Point p = new Point3D(1,2,3); Point3D p3 = (Point3D) p; 2.9 Les Variables Les variables Java ont un nom et un type. Une variable peut être initialisée à sa déclaration : int i = 12; Le mot clé final transforme, à sa première affectation, une variable en constante nommée : final int i = 0; Par ailleurs, les variables Java ont une portée (scope) lexicale. 3 Note En plus des divers ouvrages publiés consultés pour réaliser ces notes, j ai également utilisé : Programmation Java par Michel Buffa, Peter Sander, Richard Grin, Jean-Philippe Orsini de l Université de Nice. 6