Une introduction à Java

Slides:



Advertisements
Présentations similaires
A RECUPERER EN ENTRANT Le polycopié de Caml Partie 1
Advertisements

Programmation par Objets 1 Module IN504 Animé par : Marianne Huchard Marie-Laure Mugnier Khalil Ben Mohamed
SI3 MAM3 Hydro Nathan Cohen Igor Litovsky Christophe Papazian
Introduction à la Programmation Orientée Objet Retour sur les principaux concepts SI3 MAM3 Hydro Nathan Cohen
La classe String Attention ce n’est pas un type de base. Il s'agit d'une classe défini dans l’API Java (Dans le package java.lang) String s="aaa"; // s.
(Classes prédéfinies – API Java)
1 Tableaux des objets C++ si on connaît le nombre dobjets nécessaires davance on peut utiliser des tableau dobjets dans les fonctions dusage class Personne.
C.
Programmer en JAVA par Tama
LICENCE MIAGE Introduction Programmation Orientée Objet JAVA philippe
TD 1 IJA Introduction Objet, méthode, attribut Classe, instance
Les fonctions en Java Partie I Le type void. Dans cette rapide présentation, je vais expliquer :.à quoi servent les fonctions.à quoi faut-il penser avant.
1 Une introduction à Java IFT 287 (Semaine 1). 2 Java - Historique Développé par Sun Microsystems en 1994 –Inventeur James Gosling (canadien!) Objectif.
2ième Classe (Mercredi, 13 Octobre) C++ Intro CSI2572.
Introduction à la programmation (420-PK2-SL) cours 12 Gestion des applications Technologie de linformation (LEA.BW)
Les méthodes en java Une méthode est un regroupement d’instructions ayant pour but de faire un traitement bien précis. Une méthode pour être utilisée.
Badr Benmammar Programmation concurrente et temps réel en Java Badr Benmammar
Principes de programmation (suite)
Master 1 SIGLIS java Lecteur Stéphane Tallard Chapitre 4 – Structures de contrôle.
Introduction au paradigme objet Concepts importants surcharge (overload) redéfinition (override) Définition d’une classe Définition des attributs.
© 2007 P. Van Roy. All rights reserved. FSAB1402: Informatique 2 Le Langage Java et les Exceptions Peter Van Roy Département dIngénierie Informatique,
77 Utilisation des classes (suite). 7-2 Objectifs A la fin de ce cours, vous serez capables de : Définir des méthodes surchargées dans une classe Fournir.
Classes abstraites et Interfaces
Introduction à la programmation (Java)
Langage Oriente Objet Cours 2.
Structures de données IFT-2000
Introduction à la Programmation Orientée Objet Retour sur les principaux concepts SI3 MAM3 Hydro Nathan Cohen
P. Van Roy, LINF1251 LINF1251: Le Langage Java Peter Van Roy Département dIngénierie Informatique, UCL
IFT 6800 Atelier en Technologies d’information
1 Les paquetages («packages»). 2 L'objectif avec les paquetages («packages») est de rendre accessibles aux utilisateurs des classes définies par d'autres.
1 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 3 : Classes et Objects.
Badr Benmammar Programmation concurrente et temps réel en Java Badr Benmammar
Cours 4 Héritage (suite).
COURS DE PROGRAMMATION ORIENTEE OBJET :
Introduction au C++ héritage / polymorphisme
CSI 1502 Principes fondamentaux de conception de logiciels
CSI1502 Principes fondamentaux en conception des logiciels
CSI 1502 Principes fondamentaux de conception de logiciels
Les méthodes en java • Une méthode est un regroupement d’instructions ayant pour but de faire un traitement bien précis. • Une méthode pour être utilisée.
Masters IIGLI et IGLII – Programmation générique et conception objet – – Claude Montacié 1 Cours n° 3 Polymorphisme I.
Structures de données IFT Abder Alikacem Semaine 2 Tests sur les pointeurs Département d’informatique et de génie logiciel Édition Janvier 2009.
Informatique et science du numérique
Cours 7 Divers et exceptions. Chapitre V Enumeration, tableaux, conversion de types, noms.
2.1 - Historique Chapitre 2 : Introduction au langage C++
Notion de fonction A partir d’un exemple Types de fonctions
4 Introduction des objets. Les chaînes et tableaux
La notion de type revisitée en POO
Introduction à la programmation objet avec java
Android Kévin Giroux.
Java : Exceptions H Batatia. 5/03/2004Java12: H.Batatia2 Exemple 1 public class Bonjour { public static void main(String[] args) { System.out.println("Bonjour.
11/04/ L'héritage Cours 7 Cours 7.
Notions avancées du C++
Argc et argv Utilisation des paramètres de la ligne de commande.
© 2005 P. Van Roy. All rights reserved. FSAB1402: Informatique 2 Le Langage Java Peter Van Roy Département d’Ingénierie Informatique, UCL
Tutorat en bio-informatique
Entrées / Sorties.
Constructeurs H Batatia. Variable statique Une variable statique est partagée par tous les objets d’une classe.
Les sockets.
Les classes et les objets Les données finales class A { … private final int n = 20 ; // la valeur de n est définie dans sa déclaration … } class A { public.
Les opérateurs L’amitié Les opérateurs Introduction
Les surcharges d'opérateurs
8PRO100 Éléments de programmation Les pointeurs de caractères.
CSI2520 Un langage de programmation impérative et concurrente.
Cours du 5 novembre.
Cours 4 (14 octobre) Héritage. Chapitre III Héritage.
Conception de Programmes - IUT de Paris - 1ère année – Cours 6 - Les opérateurs L’amitié Les opérateurs –Introduction –Surcharge par fonction.
Conception de Programmes - IUT de Paris - 1ère année Cours 2 – Références et passage de paramètres Les Références –Introduction aux références.
Conception de Programmes - IUT de Paris - 1ère année Conception de Programmes Objectifs et organisation du cours Introduction à la P.O.O.
Philippe Gandy – 17 novembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Spécialisation covariante cours et TP. Plan  Introduction  Rappels théoriques  Définition de la covariance  Présentation du modèle servant d'exemple.
Transcription de la présentation:

Une introduction à Java IFT 287 (Semaine 1)

Aperçu de Java Comparable au C++ … mais différent 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

Premier exemple Code java Code C++ 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;

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

Processus d’obtention d’un exécutable import java.lang.* class PremierProg { public static void main (String[] args){ System.out.println(“Bonjour!”); } 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 }

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)

Catégories de types Types primitifs Types références 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).

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

Les tableaux Semblable au C++ Par exemple L'indexation commence à 0 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];

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

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

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”);

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

Soit un membre m déclaré dans une class A Privilèges d’accès Soit un membre m déclaré dans une class A

Les méthodes On appelle la méthode meth d’un objet obj avec les paramètres params par : 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)

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); }

Égalité entre objets == égalité sur les références equals 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 ==

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()

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 + " !" ;

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) …

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") ;

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 () …

La capacité de noms est augmenté de 1 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

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() …

Exemple d'une classe Champs méthode /** 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 class Personne { // variable de classe // no à allouer à la prochaine personne créée private static int noPersonneCourant = 0; // variables d'instances private String nom; 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; 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 Exemple d'une classe Champs méthode

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

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

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); …

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

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) public void addActeur(Personne p) { acteurs[nbActeurs] = p; nbActeurs = nbActeurs + 1; } classe Film ligne 70 invasions.addActeur(girard); classe Test1 ligne 20

Bibliothèques Les APIs de Java sont très développés On peut trouver une documentation en ligne avec le SDK téléchargé à partir du site de SUN java.sun.com

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

Java 1.5 aussi appelé nouveautés Java 2 Platform Standard Edition (J2SE) 5.0 nouveautés types génériques (template) conversion automatique entre type primitif et «wrapper class» itérateur intégré aux boucles for type énuméré printf de C primitives de traitement de la concurrence JVM plus efficace

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>

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); }

Java 1.6 web service and développement XML simplification développement GUI meilleur support desktop natif accès simplifié aux services natifs de sécurité comprend NetBeans 5.5 (environnement de développement similaire à Eclipse)

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). Pas de classes paramétrées.

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)