Une introduction à Java



Documents pareils
Programmer en JAVA. par Tama

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

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

PROGRAMMATION PAR OBJETS

as Architecture des Systèmes d Information

TP1 : Initiation à Java et Eclipse

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

Java c est quoi? Java pourquoi?

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Initiation à JAVA et à la programmation objet.

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

Chapitre 10. Les interfaces Comparable et Comparator 1

Cours 1: Java et les objets

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

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

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

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

Langage Java. Classe de première SI

Chapitre V. Les classes : Object, Vector, etc.

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

Utilisation d objets : String et ArrayList

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

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

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

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

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

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

INITIATION AU LANGAGE JAVA

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

Premiers Pas en Programmation Objet : les Classes et les Objets

Package Java.util Classe générique

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

Java Licence Professionnelle CISII,

TD3: tableaux avancées, première classe et chaînes

Java Licence Professionnelle CISII,

INF 321 : mémento de la syntaxe de Java

La JVM. La machine virtuelle Java. La JVM. La JVM

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

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

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

ALGORITHMIQUE ET PROGRAMMATION ORIENTEE OBJET

La technologie Java Card TM

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

Introduction au langage Java

Programmation par les Objets en Java

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

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

Auto-évaluation Programmation en Java

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

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

Introduction au langage de programmation Java

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

Programmation Par Objets

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

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

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

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

Apprendre Java en 154 minutes

Java 1.5 : principales nouveautés

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

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

Java Licence professionnelle CISII,

RMI le langage Java XII-1 JMF

Cours de C++ François Laroussinie. 2 novembre Dept. d Informatique, ENS de Cachan

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

TP, première séquence d exercices.

Programmation en Java IUT GEII (MC-II1) 1

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

Chapitre 2. Classes et objets

Introduction au langage C

Programmation Par Objets et Langage Java

Chapitre I Notions de base et outils de travail

Support de cours et TD Programmation Orientée Objet

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

Programmation Orientée Objet Java

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

1 Définition d une classe en Java

Chapitre VI- La validation de la composition.

Java DataBaseConnectivity

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

CPR Informatique. (poste 3159 ou 3164) Septembre 2002

Un ordonnanceur stupide

TD/TP PAC - Programmation n 3

NFP 121. Java et les Threads. Présentation : Thierry Escalarasse Mai 2007

COMPARAISONDESLANGAGESC, C++, JAVA ET

Info0604 Programmation multi-threadée. Cours 5. Programmation multi-threadée en Java

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

Programmation VBA/Excel. Programmation VBA. Pierre BONNET. Masters SMaRT & GSI - Supervision Industrielle P. Bonnet

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

Java - la plateforme

Programmation avec des objets : Cours 7. Menu du jour

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

1. Langage de programmation Java

Programmation Bas Niveau

Programmation Orientée Objets Le Langage JAVA

OpenPaaS Le réseau social d'entreprise

Introduction : les processus. Introduction : les threads. Plan

Derrière toi Une machine virtuelle!

Dis papa, c est quoi un bus logiciel réparti?

Threads. Threads. USTL routier 1

Transcription:

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é) gestion automatique de la mémoire usage sur le web 2

Aperçu de Java Comparable au C++ Syntaxe très proche du C++ Prog. Orienté-objet et prog. structurée Fortement typé Types de bases Gestion des tableaux Exceptions mais différent Interprété Gestion implicite de la mémoire Existence d une classe Objet Bibliothèque de base très développée Pas de gestion explicite des pointeurs Pas de surcharge d opérateurs 3

Premier exemple Code java import java.lang.* class PremierProg { public static void main (String[] args){ System.out.println( Bonjour! ); } } Code C++ #include <iostream.h> int main (int argc, char *argv[]) { cout << Bonjour! << endl; } 4

Compilation/interprétation Pour obtenir un programme : à partir du code C++, on compile directement le source : gcc programme.cc à partir du java, on transforme le source dans un langage qui sera interprété dans la machine virtuel : javac PremierProg.java java PremierProg 5

Processus d obtention d un exécutable Fichier.java (source) import java.lang.* class PremierProg { public static void main (String[] args){ System.out.println( Bonjour! ); } } Compilation : javac class PremierProg { method public static void main (java.lang.string[]) max_stack 2 { getstatic java.io.printstream java.lang.system.out ldc "Bonjour!" invokevirtual void java.io.printstream.println(java.lang.string) return } } Fichier.class (bytecode) Interprétation: Java libjava.so 6

Conventions Fichier: porte le nom de la classe qu il décrit (PremierProg.java) Package: commencent par une minuscule (java.lang.*) Classe : commencent par une majuscule (String) Variable: commence par une minuscule (mavariable) Constante: en majuscule (UNE_CONSTANTE) 7

Catégories de types Types primitifs entier, caractère, point flottant, booléen Types références classes et vecteurs ce sont des pointeurs vers des objets allocation avec new pas de destructeur (garbage collection par la machine virtuelle). 8

Types primitifs boolean : true ou false byte : -128 à 127 short : -32768 à 32767 int : -2147483648 à 2147483647 long : -9223372036854775808 à 9223372036854775807 char : \u0000 à \uffff float : 1e-45 à 1e+38 double : 1e-324 à 1e+308 9

Les tableaux Semblable au C++ Par exemple int numero[] = new int[3]; L'indexation commence à 0 Création implicite d'une classe Accès à la longueur par le champ length noms.length ; Tableaux multidimensionnels int[][][] a = new int[l][m][n]; 10

Les structures de contrôle Les mêmes qu en C++ : if while / for / do until case goto On retrouve : break continue 11

Le paradigme «orienté-objet» Caractéristique : encapsulation, héritage et polymorphisme Les entités sont des objets dont le modèle est une classe On fait agir les objets en activant des méthodes 12

Les classes On crée une nouvelle instance (un objet) d une classe avec le mot-clé new Par exemple pour créer une nouvelle chaîne de caractères dont la valeur est Bonjour : String machaine = new String ( Bonjour ); Raccourci String machaine = Bonjour ; 13

Contenu d'une classe Champs Méthodes Constructeurs Destructeurs (Finalizer) Visibilité public protected private package Caract. Capacités Naissance Mort 14

Privilèges d accès Soit un membre m déclaré dans une class A visibilité classe A accès au membre m à partir de classe B B et A même package B n'est pas B sousclasse de A de sous-classe A B et A package différent B n'est pas B sousclasse de A de sous-classe A private O N N N N protected O O O O N public O O O O O package O O O N N 15

Les méthodes On appelle la méthode meth d un objet obj avec les paramètres params comme suit : obj.meth(params) Comme pour une procédure C on transmet des paramètres et on reçoit une valeur de retour : char prem = machaine.charat(0) 16

Exemple public class Test2 { public static void main(string[] args) { Personne p1 = new Personne("Denys Arcand"); Personne p2 = new Personne("Denise Robert"); Personne[] personnes = new Personne[3]; personnes[0] = p1; personnes[1] = p2; p1.setconjoint(p2); p2.setconjoint(p1); } } 17

Égalité entre objets == égalité sur les références v1 == v2 ssi v1 et v2 réfère au même objet equals pour vérifier si deux objets distincts sont égaux en contenu v1.equals(v2) ssi v1 est égal en contenu à v2 À redéfinir dans chaque classe, car l implémentation de equals dans la classe Object est faite avec == 18

Passage d argument Le passage en java est toujours par valeur Comme les variables de type référence contiennent un pointeur vers un objet, seul le pointeur est copié lors d un appel; l objet référencé n est pas copié, donc la méthode appelée peut modifier l objet référencé. Attention aux effets de bord Nécessité de dupliquer un objet valeur si on ne veut pas qu il soit modifié par la méthode appelée o.clone() 19

La classe String Du package java.lang Représente une chaîne de caractères immutable Exemple String prenom = new String ("Benoit"); Pour les accents, il est conseillé d'utiliser l'unicode : \uxxxx où xxxx est le code du caractère Création dynamique de String avec ""et + x = "Je me nomme " + prenom + "!" ; 20

Méthodes de la classe String boolean equals(object o) int compareto(object o) String concat(string str) boolean endswith(string suffix) boolean startswith(string prefix) char[] tochararray() String substring(int beginindex) 21

La classe StringBuffer Du package java.lang Contrairement à String est mutable Permet de créer une créer une chaîne de caractères par morceaux Création: StringBuffer = new StringBuffer (32) ; StringBuffer = new StringBuffer ("Allo") ; 22

Méthodes de StringBuffer StringBuffer append(string s) int capacity() StringBuffer delete (int start, int end) StringBuffer insert (int offset, String s) StringBuffer reverse () String substring (int start, int end) String tostring () 23

La classe Vector Du package java.util Représente un tableau qui peut grossir dynamiquement Exemple Vector<String> noms = new Vectors<String>(2); noms.add("benoit"); noms.add("marc"); noms.add("bob"); noms.capacity(); noms.lastelement(); La capacité de noms est augmenté de 1 24

Méthodes de la classe Vector boolean add (E o) int capacity () boolean contains (Object o) E get (int index) E set(int index, E o) boolean isempty() boolean remove(object o) E lastelement() 25

/** Permet de créer une personne et de l'associer à une autre personne qui est son conjoint. Chaque personne a un numéro unique, attribuée a sa création. */ public classexemple Personne { // variable d'une de classe classe // no à allouer à la prochaine personne créée private static int nopersonnecourant = 0; // variables d'instances private String nom; Champs private Personne conjoint; private final int nopersonne; /** Construit une personne et lui assigne un numéro unique. */ public Personne(String nom) { this.nom = nom; nopersonne = nopersonnecourant; méthode nopersonnecourant = nopersonnecourant + 1; } /** Retourne une chaîne de caractères représentant la personne. */ public String tostring() { return nom + " " + nopersonne; } /** Associe un conjoint à la personne. */ public void setconjoint(personne p) { conjoint = p; } }// fin classe 26

Mot-clé final Comment empêcher qu une variable soit modifiée par la suite? Comment créer une constante? final est l'équivalent de const en C: il empêche la modification de la variable 27

Variable de classe : mot-clé static Est-on obligé de toujours instancier un objet pour utiliser une méthode? Comment faire pour utiliser une variable partagée par tous les objets d une même classe? Utilisation du mot-clé static Celui ci rend le champs ou la méthode commune à tout objet de la classe; on dit qu il définit une variable de classe A.v1 : accède à la variable v1 de la classe A a.v2 : accède à la variable v2 de l objet référencé par a 28

Exemple la classe java.lang.math La classe Math contient des méthodes pour effectuer des calculs mathématiques On appelle les méthodes en indiquant la classe et non l'objet : double x = Math.acos (10); double y = Math.sqrt(50); 29

Les exceptions Mécanisme pour gérer facilement les cas limites Capture la continuation du programme (pile des exécutions) pour pouvoir y revenir le cas échéant Même système qu'en C++ Les exceptions sont des objets hérités de la classe java.lang.exception Attention aux baisses de performances 30

Une trace d'exception ~/ift287/h04/tp1 > java Test1 Exception in thread "main" java.lang.nullpointerexception at Film.addActeur(Film.java:70) at Test1.main(Test1.java:20) invasions.addacteur(girard); classe Test1 ligne 70 ligne 20 public void addacteur(personne p) { acteurs[nbacteurs] = p; nbacteurs = nbacteurs + 1; } classe Film 31

Bibliothèques Les APIs de Java sont très développés On peut trouver une documentation en ligne sur le site d'oracle http://www.oracle.com/technetwork/jav a/javase/overview/index.html 32

Packages courant java.lang java.util java.math java.io java.awt java.sql java.net 33

Types Génériques Permet de spécifier des paramètres dénotant des types à utiliser dans une classe Exemples classiques : les collections Collection<E> Set<E> List<E> Map<K,V> 34

Exemples d usage de types génériques import java.util.*; public class Test { public static void main(string[] args) { Set<Integer> m = new HashSet<Integer>(); m.add(new Integer(1)); for (Integer i : m) System.out.println(i); } } 35

Conclusion Programmation par objets (basé sur les classes, de la famille C++). Langage extrêmement simplifié (seulement types de données de base, objets et tableaux). Pas de fonctions (seulement des méthodes), pas de structure de données enregistrement (seulement des objets), pas de types somme (i.e. variantes). 36

Conclusion Compilé vers du bytecode (indépendant du processeur et du système d'exploitation), et plus récemment vers du code natif (au vol, plus rapide, moins portable). Ramasse-miette Concurrence (threads) 37