Une introduction à JAVA

Slides:



Advertisements
Présentations similaires
La programmation orientée objet avec Java L3-MIAGE Plan
Advertisements

Les fonctions A quoi ça sert ?
Rappels C.
Formation universitaire à .NET: Introduction à C#
1 Quelques précisions sur l'héritage. 2 Signification de super.f() appel à la méthode f() masquée super : désigne l'objet appelant comme s'il était de.
Approfondissement du langage
Cours n°2M2. IST-IE (S. Sidhom) UE 303 Promo. M2 IST-IE 2005/06 Conception dun système d'information multimédia Architecture trois-tiers : PHP/MySQL &
C.
Programmer en JAVA par Tama
TD 1 IJA Introduction Objet, méthode, attribut Classe, instance
Leçon 3 : Héritage IUP 2 Génie Informatique
Introduction à la POO: Les classes vs les objets
Chapitre III Héritage (début)
Programmation orientée objet
JavaBeans Réalise par: EL KHADRAOUY TARIK AOUTIL SAFOWAN.
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.
Langage Oriente Objet Cours 4.
Principes de programmation (suite)
IFT1025, Programmation 2 Jian-Yun Nie
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,
Classes abstraites et Interfaces
POO : Objets et classes (Rappels)
Introduction à la programmation (Java)
Langage Oriente Objet Cours 2.
Les pointeurs Modes d’adressage de variables. Définition d’un pointeur. Opérateurs de base. Opérations élémentaires. Pointeurs et tableaux. Pointeurs et.
Structures de données IFT-2000
Introduction au paradigme orienté-objet (suite)
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 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 3 : Classes et Objects.
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
Cours 4 Héritage (suite).
COURS DE PROGRAMMATION ORIENTEE OBJET :
COURS DE PROGRAMMATION ORIENTEE OBJET :
99 Réutilisation du code grâce à l'héritage. 9-2 Objectifs À la fin de ce cours, vous serez capables de : Définir l'héritage Utiliser l'héritage pour.
Les Opérateurs Ils régissent toutes les opérations ou transformations sur les valeurs des variables. Opérateur d'affectation Opérateurs arithmétiques Opérateurs.
Héritage et composition
La notion de type revisitée en POO
11/04/ L'héritage Cours 7 Cours 7.
Un survol du language C.
1 Structures des données. 2  Le tableau permettait de désigner sous un seul nom un ensemble de valeurs de même type, chacune d'entre elles étant repérée.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Les erreurs communes en Java.
© 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
5ième Classe (Mercredi, 19 octobre) Prog CSI2572.
Introduction au langage C Fonctions et Procédures
Les classes présenté par: RAHMOUNE RIME / ZEKRI SELMA.
Sémantique des instructions pour le langage Z minimal Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
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.
Cours du 5 novembre.
IUT du Limousin L.U.P Michel Vergnaud Programmation Objet - Java.
Les classes Introduction aux Langages Orientés Objets
Cours 4 (14 octobre) Héritage. Chapitre III Héritage.
Héritage Conception par Objet et programmation Java
Classes abstraites, interface Classe interne Classes enveloppes
PRO-1027 Programmation Scientifique en C
22 Concepts de base du langage Java. 2-2 Objectifs A la fin de ce cours, vous serez capables de : Identifier les éléments essentiels de Java Identifier.
pour les programmeurs en C++ Java 2 Part 1 3 Histoire de Java Projet de connexion des machines: 1991 Le nom Java a été introduit dans un café Développé.
Philippe Gandy - 8 septembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Philippe Gandy - 15 septembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Philippe Gandy – 10 novembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Master 1 SIGLIS Jave Lecteur Stéphane Tallard Chapitre 5 – Correction TD.
Introduction au langage C
LES CLASSES ET LES OBJETS
C++ BY AURÉLIEN MODULO MARION. PLAN DES TROIS PRÉSENTATIONS C++ avancé C++ orienté objet Bases de C++
Java Réalisé par: Mouna POKORA. PLAN: Définition : Historique: Caractéristiques: un langage orienté objet: un langage interprété : un langage portable:
Transcription de la présentation:

Une introduction à JAVA Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI) http://zegour.esi.dz/ email: d_zegour@esi.dz

Java : Caractéristiques Java est un langage orienté objet Java est un langage interprété Java est un langage portable Java est un langage sécurisé Java est un langage robuste

Java : Outils Configuration minimale : Le kit complet (pour compiler, exécuter et déboguer des programmes java) peut être téléchargé à partir du site www.javasoft.com. javac : le compilateur Java java : l'interpréteur Java appletviewer : le visualiseur des applets Après installation du JDK il vous sera alors possible d'invoquer tous ces programmes depuis le DOS prompt Environnement de programmation Eclipse, Netbeans, …

Java : concepts de base Les méthodes : déclaration et appel des méthodes Récursivité Surcharge des méthodes Classes : déclaration, champs, constructeur Les modificateurs Les packages Composition Héritage Redéfinition des méthodes Wrapper classes Les interfaces

Java : Premier programme //votre premier programme Java public class Hello { public static void main(String args[ ]) System.out.println("Hello World !"); } Compilation : javac Hello.java Exécution : java Hello L'interpréteur Java devra se lancer et exécuter le programme Hello.class. Résultat : HelloWorld !.

Java : Types élémentaires et opérateurs Syntaxe de déclaration : Type nom_de_variable; Par exemple : { int valeur; // instructions quelconques valeur=3; } Les types : boolean, char, short, int, long, float, double

Java : Portée La portée d'une variable est par définition la partie du code où cette variable est visible. Exemple : { int i=1; { int i=2; System.out.println(i); // 2 s'affiche } System.out.println(i); // 1 s'affiche

Java : Tableau La déclaration d'un tableau se fait par l'instruction new. Exemple : int tab1[ ]=new int[30]; //tableau à une dimension de 30 éléments int tab2[ ][ ]=new int[25][10]; //tableau à deux dimensions de 25*10 éléments Note : La numérotation des indices du tableau se fait à partir de 0 et non de 1. Ainsi les éléments de tab[3] sont tab[0], tab[1] et tab[2].

Java : Opérateurs Opérateur Signification ++ incrémentation -- décrémentation +, - Addition, Soustraction ~ Complément binaire ! Complément logique (type) Changement du type d'une variable *, /, % Multiplication, division, modulo + Concaténation des chaînes de caractères <, <= Strictement inférieur, inférieur ou égal >, >= Strictement supérieur, supérieur ou égal

Java : L'instruction if...else Syntaxe : if(condition) Seq où condition est une expression booléenne à évaluer et Seq est une instruction (ou un bloc d'instructions) Un bloc = { instr1; instr2;… , instrn; } Exemple : public class Classement { public static void main(String args[ ]) { int note=5; if(note>10) System.out.println("L'élève est brave"); }

Java : L'instruction if...else Syntaxe : if(condition) Seq1 else Seq2 Exemple : public class AutreClassement { public static void main(String args[ ]) { int note=5; if(note>10) System.out.println("L'élève est brave"); else System.out.println("L'élève est faible"); } Plusieurs instructions if...else peuvent être imbriquées. Convention : le ‘else’ se rapportant toujours au if le plus proche.

Java :L'instruction switch Syntaxe : switch(variable_ent) { case const1: séq1 case const2: séq2 .. case constM: séqM default: séqN } Où variable_ent est une variable entière (int), constX est une constante et la partie ‘default’ optionnelle.

Java :L'instruction switch Exemple : public class TestSwitch { public static void main(String args[ ]) { int teste=4; switch(teste) { case 1: System.out.println("1"); case 4: System.out.println("4"); case 6: System.out.println("6"); default: System.out.println("autre"); } De préférence ajouter l'instruction break en fin de chaque cas

Java : L'instruction for Syntaxe : for(expr1;expr2;expr3) Séq expr1 est une expression permettant l'initialisation de la boucle, expr2 est une expression booléenne imposant une condition sur sa continuation expr3 est une expression permettant sa progression. Exemple : public class BoucleFor { public static void main(String args[ ]) { for(int i=0;i<5;i++) System.out.println("Itération de la boucle"); }

Java : L'instruction while Syntaxe : while(condition) Seq Exemple : public class BoucleWhile { public static void main(String args[ ]) { int m=1,n=3,p=100; while(n*m/p<100) { n++; m++; p--; } System.out.println(m);

Java : L'instruction do...while Syntaxe: do Seq while(condition) la boucle est exécutée une fois avant que la condition soit évaluée.

Java : les méthodes Syntaxe : modificateurs type_valeur_retour nom_de_méthode(arguments) { corps_de_méthode } Où : modificateurs : nature de la méthode ( définis plus loin) type_valeur_retour le type de la valeur retournée corps_de_méthode contient les déclarations des variables locales et le code exécutable. Une méthode est une séquence de déclarations et d'instructions encapsulées ensemble comme un mini-programme indépendant. Dans Java chaque instruction devra se situer dans une méthode;

Java : les méthodes Exemple public class AfficheCarre { public static void main(String args[ ]) { int j; for(int i=1;i<6;i++) { j=carre(i); System.out.println(i+"\t"+j); } static int carre(int n) { return n*n; Note : L'instruction return est obligatoire si la méthode rend un résultat

Java : Récursivité Une méthode peut très naturellement s'appeler elle-même. Exemple : La factorielle : n! = 1 si n=0 ou n.(n-1)! si n>0 public class CalculFactoriel { public static void main(String args[ ]) { long j; for(int i=0;i<7;i++) { j=fact(i); System.out.println(i+"\t"+j); } static long fact(int n) { if(n<2) return 1; return n*fact(n-1);

Java : Surcharge des méthodes On peut utiliser le même nom pour plusieurs méthodes avec des listes d'arguments différentes. Cette pratique s'appelle surcharge (overloading en anglais). f(int a, int b, int c) et f(int a, int b) ont des nombres d'arguments différents g(int a, int b, int c) , g(int a, float b, int c) et g(float a, float b, float c) : les types sont différents Le nom d'une méthode et sa liste d'arguments s'appelle sa signature.

Java : Surcharge des méthodes Exemple : public class Surcharge { public static void main(String args[ ]) { int i=5,j=6; carre(i); carre(j); carre(i,j); } static void carre(int n) { System.out.println(n*n); static void carre(int m,int n) { System.out.println(n*n+"\t"+m*m);

Java : Les classes un programme Java est un ensemble d'objets appelés classes Ces classes peuvent être réparties entre plusieurs fichiers mais une d'entre elles devra être une classe publique (modificateur public) contenant la méthode main Le fichier contenant cette classe devra porter le même nom qu'elle. C'est ce fichier qu'on passera au compilateur qui se chargera alors à son tour de trouver les autres classes dans les autres fichiers. La programmation orientée objet (POO) implique donc l'écriture de programmes contenant des classes

Java : Les classes Déclaration d'une classe : modificateurs class nom_de_classe { corps_de_classe // l'ensemble des données et des méthodes. } Où modificateurs : nature de la classe et sa portée Note : Il est d'usage de choisir pour une classe un nom commençant par une majuscule et pour une méthode un nom commençant par une minuscule.

Java : Les classes Champs d'une classe On appelle champ (field en anglais) d'une classe une donnée (variable par exemple)déclarée à l'intérieur de cette classe et qui pourra être modifiée par les méthodes de cette classe ou éventuellement les méthodes d'autres classes. L'ensemble des champs constitue l'état (state en anglais) de cette classe. Exemple public class Point { private float x; private float y; private float z; // Les_méthodes_de_la_classe }

Java : Les classes Constructeur d'une classe La déclaration d'une classe est un modèle abstrait non utilisable directement. Pour utiliser un objet d’une classe il faut créer des instances de cette classe (le processus s'appelle instanciation). Pour créer une instance d'une classe on utilise l'instruction : nom_de_classe nom_de_référence Où nom_de_référence est le nom de la référence qui pointe vers l'instance de la classe nom_de_classe (pensez à la référence comme étant une case contenant l'adresse du début de l'instance). Exemple : Point p;

Java : Les classes Constructeur d'une classe Un constructeur est tout simplement une méthode utilisée lors de l'instanciation d'une classe pour initialiser les champs de l'instance. Un constructeur diffère d'une méthode ordinaire par trois caractéristiques : 1. Un constructeur possède le même nom que la classe (il est donc imposé). 2. Un constructeur ne retourne pas de valeur. 3. Un constructeur est invoqué par l'opérateur new.

Java : Les classes Exemple public class Point { private float x; private float y; private float z; public Point(float a, float b, float c) { x=a; y=b; z=c; } //Les_autres_méthodes_de_la_classe Ainsi pour créer une instance initialisée de la classe Point on écrit : Point p=new Point(3.1, 2.3, 1.4); Si une classe est déclarée sans constructeur le compilateur génère automatiquement un constructeur par défaut sans arguments et qui initialise tous les champs de l'instance à leurs valeurs par défaut.

Java : les modificateurs Les modificateurs sont utilisés dans les déclarations des classes, des constructeurs, des méthodes, des champs et des variables locales pour indiquer leur portée et leur nature. modificateurs de classe Modificateur Signification public Elle est accessible à partir de toutes les autres classes (une seule permise par fichier) abstract Elle ne pourra pas être instanciée final On ne pourra pas déclarer des sous-classes (en relation avec l'héritage) <rien> Elle est accessible uniquement à l'intérieur du même package

Java : les modificateurs modificateurs de constructeur Modificateur Signification public Il est accessible à partir de toutes les autres classes protected Il est accessible uniquement à partir de sa classe, des sous-classes et des classes appartenant au même package private Il est accessible uniquement à partir de sa classe <rien> Il est accessible uniquement à l'intérieur du même package

Java : les modificateurs modificateurs de méthodes Modificateur Signification public accessible à partir de toutes les autres classes protected accessible uniquement à partir de sa classe, des sous-classes et des classes appartenant au même package private accessible uniquement à partir de sa classe …

Java : les modificateurs modificateurs d'attribut Modificateur Signification public Il est accessible à partir de toutes les autres classes protected Il est accessible uniquement à partir de sa classe, des sous-classes et des classes appartenant au même package private Il est accessible uniquement à partir de sa classe <rien> Il est accessible uniquement à l'intérieur du même package ….

Java : Accès aux champs et méthodes d’un objet L'accès se fait tout simplement en précédant le nom du champ ou de la méthode par le nom de l'objet (en effet le nom de la référence qui pointe vers l'objet) suivit d'un point. Par exemple pour accéder à la variable nom d'un objet p on écrira : p.nom Et pour accéder à la méthode imprime par exemple on écrira : p.imprime()

Java : un exemple de programme java class Point { private double x;private double y;private double z; public Point(double a, double b, double c) { x=a; y=b; z=c;} public void imprime() { System.out.println(x+"\t"+y+"\t"+z); } } public class TestPoint { public static void main(String args[ ]) { Point p=new Point(2.1, 3.5, 6.7); p.imprime();

Java : Les packages Si une classe n’utilise pas de modificateur, elle ne sera accessible que depuis l'intérieur du même package. C'est quoi alors précisément un package ? Le concept de package permet de réunir l’ensemble des classes en relation étroite les unes par rapport aux autres. L'accès aux classes depuis l'extérieur de ce package est interdit. Pour pouvoir regrouper des classes dans un package il faut utiliser l'instruction : package nom_du_package Accessibles si la directive d'importation : import nom_du_package

Java : Les packages Exemples de packages java.lang les classes fondamentales du langage (importé automatiquement) java.io Entrées/Sorties java.util Des classes utiles java.net Pour la programmation réseau java.awt Pour l'interface graphique java.applet Pour utiliser les applets …

Java : Héritage modificateurs class nom_de_classe extends classe_mère L'héritage est la création d'une classe en étendant une autre classe déjà déclarée. De ce fait la nouvelle classe hérite automatiquement les champs et les méthodes de sa "classe mère" On appelle la nouvelle classe classe dérivée ou "classe fille". Une "classe fille" est déclarée comme héritant d'une "classe mère" en respectant la syntaxe suivante : modificateurs class nom_de_classe extends classe_mère { corps_de_classe }

Java : Héritage Exemple class Point { protected double x; protected double y; } class PointCouleur extends Point { private int couleur; public PointCouleur(double a, double b, int c) { x=a;y=b;couleur=c;} public void imprime() { System.out.println("coordonnées: "+x+","+y+"\t couleur: "+couleur);} } public class TestPointCouleur { public static void main(String args[ ]) { PointCouleur p=new PointCouleur(2.3,4.6,10); p.imprime();

Java : Redéfinition des méthodes Si dans la "classe fille" on déclare une méthode dont : La signature (nom+liste d'arguments) est la même que celle d'une méthode de la "classe mère". Le type de la valeur de retour est le même que celui de cette même méthode. La portée définie par les modificateurs est plus grande ou égale que celle de cette même méthode. Alors une référence de cette méthode utilisera celle nouvellement déclarée (c-à-d celle de la "classe fille") et non celle de la "classe mère" Cette pratique s'appelle redéfinition (overriding en anglais).

Java : Redéfinition des méthodes Si dans la "classe fille" on se trouve contraint d'utiliser la méthode de la "classe mère" il suffit alors d'employer le mot-clé super comme dans super.imprime() par exemple. D'autre part si on utilise super() tout simplement alors on appelle le constructeur de la classe de base ; cela ne pouvant se faire qu'à l'intérieur du constructeur de la classe dérivée.

Java : Redéfinition des méthodes Exemple : class Point { protected int x,y; public void imprime() { System.out.println(x+","+y); } } class PointCouleur extends Point { private int cl; public PointCouleur(int a,int b,int c) { x=a; y=b; cl=c;} { super.imprime(); System.out.println(cl); } public class Test { public static void main(String args[ ]) { PointCouleur p=new PointCouleur(1,2,3);p.imprime();}

Java : Les classes ‘Wrapper’ Chacun des types primitifs en Java (boolean, byte, char, short, int, long, float et double) possède une classe correspondante appelée une ‘wrapper class’ qui étend ce type en lui ajoutant des fonctionnalités. Les huit classes sont Boolean, Byte, Character, Short, Integer, Long, Float et Double. Ces classes appartiennent au package java.lang et sont donc importées par défaut. L'utilité de ces classes est qu'elles fournissent des méthodes pour convertir entre les types primitifs et de les manipuler plus facilement.

Java : Les interfaces Dans Java, il est interdit d'hériter de plus d'une classe. Les interface permettent une sorte d'héritage multiple. Une interface est tout simplement une collection de déclarations de méthodes dépourvues de corps (donc abstraites). La syntaxe est la suivante : interface nom_interface { //déclarations de méthodes abstraites } Par exemple on désire définir une interface Dessin dans laquelle une méthode tracer définit l'action à entreprendre pour dessiner des objets à l'écran : interface Dessin { void tracer(); }

Java : Les interfaces Ainsi différentes classes définissant des objets différents pouvant être dessinés implémenterons cette interface et sa méthode de façon spécifique à la nature de l'objet que ce soit un cercle, un triangle, un carré ... Utilise le mot-clé implements Par Exemple : class Cercle extends Figure implements Dessin { //données membres void tracer //instructions spécifiques pour tracer un cercle } // autres méthodes

Java : Les interfaces Une classe qui implémente une interface devra implémenter toutes les méthodes de cette interface, sinon il se produira une erreur de compilation. Une classe peut aussi implémenter plusieurs interfaces dont les noms seront séparés par des virgules. Exemple class Cercle implements Dessin, Coloriage