Download - KHARKIV National University of Economic Université Lumière ...mediamining.univ-lyon2.fr/velcin/public/GL-k/intro_java.pdf[3.4 10-38, 3.4 10+38] en valeur absolue double 8 octets

Transcript
Page 1: KHARKIV National University of Economic Université Lumière ...mediamining.univ-lyon2.fr/velcin/public/GL-k/intro_java.pdf[3.4 10-38, 3.4 10+38] en valeur absolue double 8 octets

Introduction au

Langage JavaMaster Informatique 1ère année

Julien Velcinhttp://mediamining.univ-lyon2.fr/velcin

Université Lumière Lyon 2KHARKIV National University of Economic Plan du cours

• Introduction au langage Java• Programmation Orientée Objet• Notions complémentaires• Quelques API standards• Interface graphique en Java FX• API pour la recherche d’information

Historique du langagehttps://www.baeldung.com/oracle-jdk-vs-openjdk

• Java 1.0 (1995) : Oak...

• Java 1.5.0 (2004) ou Java 5.0 : Tiger• Java 1.6.0 (2006) ou Java 6 : Mustang• Java 7 (2012) : Dolphin

Oracle JDK• Java SE 8 (2014)

free public updates -> 2020...

• Java SE 11 (sept. 2018)(dernière LTS)

OpenJDK(JDK project)• OpenJDK 8 (2014)...• OpenJDK 9 (2017)• JDK 10 (mars 2018)• JDK 11 (sept 2018)

2010

Et aussi

• Trois versions : JavaEE, JavaME et JavaSE

• Différence entre Java Runtime Environment(JRE) et Java SDK (JDK)

• Oracle JDK– Oracle Binary Code License Agreement -> GPL v2 + CPE

– besoin d’une licence commerciale

– plus stable

• Open JDK– GNU General Public License (GNU GPL)

– complètement open source, utilisable librement

– développé par Oracle, JDK et la communauté Java

Page 2: KHARKIV National University of Economic Université Lumière ...mediamining.univ-lyon2.fr/velcin/public/GL-k/intro_java.pdf[3.4 10-38, 3.4 10+38] en valeur absolue double 8 octets

Caractéristiques

• Langage interprété (bytecode)WORA : Write Once Run Anywhere

• Langage orienté objet• Gestion des exceptions• Garbage collector

Code Byte-Code

Pseudo compilateurjavac

Machine virtuelle(JVM) java

Exécution

â haut niveauâ portabilité

â réutilisabilitéâ extensibilité

â robustesseâ intégrité

Dans le fichier Hello.java, écrire :

• Ouvrir la ligne de commande (DOS, bash)• Se placer dans le répertoire de travail (cd nom_repertoire)• Tapez javac Hello.java (création du pseudo code)• Puis java Hello (interprétation du pseudo code)

public class Hello{

public static void main(String [] arg){System.out.print(" Hello world ");}

}

Mon premier programme

Variables d�environnementSous Windows :• Mise à jour du chemin de la JVM :

set path=%path%;c:\Program Files\Java\jdk1.5.0_06\bin

• Mise à jour du chemin de recherche des classes : set classpath=%classpath%;.

Sous Linux ou MacOS (architecture UNIX) :• Mise à jour du chemin de recherche des classes :

export CLASSPATH=$CLASSPATH:.

Environnement NetBeans (1)

Organisation du projet

Page 3: KHARKIV National University of Economic Université Lumière ...mediamining.univ-lyon2.fr/velcin/public/GL-k/intro_java.pdf[3.4 10-38, 3.4 10+38] en valeur absolue double 8 octets

Environnement NetBeans (2)

Code source

Environnement NetBeans (3)

Exécution (texte) du programme

Environnement NetBeans (4)

• Quelques raccourcis TRES utiles :

– Ctrl + Shift/Cmd + i : import automatique

– Cmd + Shift + C : toggle comments

– Clic droit + Insert Code

– St + tab : String

– sout + tab : System.out.println…

– ifelse : if (cond.) {} else {}

Environnement ECLIPSE (1)

Organisation du projet

Page 4: KHARKIV National University of Economic Université Lumière ...mediamining.univ-lyon2.fr/velcin/public/GL-k/intro_java.pdf[3.4 10-38, 3.4 10+38] en valeur absolue double 8 octets

Environnement ECLIPSE (2)

Code source

Environnement ECLIPSE (3)

Organisation de la classe

Environnement ECLIPSE (4)

Exécution (texte) du programme

Types de données simples (1)• Entiers (1, 2, 3, …) : int

Opérateurs : + - * / % (reste de la divistion)

Exemple : 5/2 = 2 et 5%2 = 1

• Réels (2.4, 3.1416, …) : doubleOpérateurs : + - * /Exemple : 5.0/2.0 = 2.5

• Booléens (true, false) : booleanOpérateurs : && (and), || (or), ! (not)Exemple : !true = false

Note : pas de type simple pour les chaînes de caractères

Page 5: KHARKIV National University of Economic Université Lumière ...mediamining.univ-lyon2.fr/velcin/public/GL-k/intro_java.pdf[3.4 10-38, 3.4 10+38] en valeur absolue double 8 octets

Types de données simples (2)

Type Codage DomaineChar 2 octets caractère Unicode

int 4 octets [-231, 231-1]

long 8 octets [-263, 263 -1]

byte 1 octet [-27 , 27 -1]

short 2 octets [-215, 215-1]

float 4 octets [3.4 10-38, 3.4 10+38] en valeur absolue

double 8 octets [1.7 10-308 , 1.7 10+308] en valeur absolue

boolean 1 bit true, false

String référence d'objet chaîne de caractères

Date référence d'objet date

Caractères spéciaux\ caractère d�échappement pour introduire caractères spéciaux

'\t' tabulation'\n' nouvelle ligne'\r' retour chariot retour arrière'\f' saut de page…

'\\' '\�' '\"�

�\u03a9� ( \u suivi du code hexadécimal à 4 chiffres d�uncaractère Unicode)

Types de données simples (3)

i

10i

11i

Valeurs

• Déclaration de variables :

int i; Nom de la variable,représente un espace mémoire.

Type de la variable,ce que peut contenir l’espace mémoire.

• Affectation :i = 10;i = i + 1;

int j = 11;

Types de données simples (4)• Opérateurs de comparaison :<, <=, >, >=, !=, ==

boolean ¬ var_type_1 opérateur var_type_1

Exemple :

boolean b = (5<2); // b = false

â ne pas confondre avec =

commentaire

Page 6: KHARKIV National University of Economic Université Lumière ...mediamining.univ-lyon2.fr/velcin/public/GL-k/intro_java.pdf[3.4 10-38, 3.4 10+38] en valeur absolue double 8 octets

Opérateurs d�entrées / sorties• Sortie :System.out.print("Ecrit à l'écran");System.out.println("Et passe à la ligne");

• Entrée :System.in.read( … );

Utiliser la classe Scanner du package java.util :Scanner scan = new Scanner(System.in);int i = scan.nextInt();String s = scan.nextLine();

Structures de contrôle (1)• Branchement conditionnel :

Syntaxe :

(facultatif)

if (condition){

instructions}else{instructions}

if (condition)

instruction

else

instruction

Structures de contrôle (2)Exemple (saisie d’information) :

public class Saisie {

public static void main(String [] arg) {System.out.println(“Pause ?");int reponse = Lire.i();if (reponse==1)

System.out.println(“Non, continuons.");else

System.out.println(“Oui, dans 1 heure.");}

} Tous les autres cas

Ne pas oublier !

Structures de contrôle (3)• Branchement multiple :

Syntaxe :

switch (variable_énumérable) {case valeur_1 :

instructionsbreak;

case valeur_2 :instructionsbreak;

default :instructions

}

Nouveauté Java 7 : String supportée

Page 7: KHARKIV National University of Economic Université Lumière ...mediamining.univ-lyon2.fr/velcin/public/GL-k/intro_java.pdf[3.4 10-38, 3.4 10+38] en valeur absolue double 8 octets

• Boucles indicées :L�exécution est contrôlée par un indice Þ nombre d�itérations

connu à l�avance.Syntaxe :

Exemple :

Structures de contrôle (4)

for (indice=0; indice<30; indice++) {System.out.println(indice); // réalisée 30 fois}

Exécuté 1 fois Exécuté à chaque fois

Continue tant que condition = vrai

for ( initialisation ; condition_de_boucle ; évolution ) {instructions;}

Structures de contrôle (5)• Boucles conditionnelles :L�exécution est contrôlée par une condition

â nombre d�itérations inconnu par avance.Syntaxe :

while ( condition ){instructions;}

Continue tant que condition = vrai

do {instructions;} while ( condition )

(On peut ne pas rentrer) (On rentre au moins une fois)

Fonctions et procédures (1)• Problème :

o Programme trop longo Copier/Coller

• Solution :Créer des blocs isolés réutilisables = fonctions et procédures

Syntaxe :public class nom_classe {

…public static type_retour nom_fonction(type_param nom_param1, …){

instructions; return valeur;

}…

}

Fonctions et procédures (2)Exemple :

public class UneFonction {

public static double la_fonction(int param_1) {System.out.println("Paramètre de la fonction: "+ param_1);return param_1*2;

}

public static void main(String arg[]) {System.out.println("Avant l'appel");int pour_fonction = 23;int resultat_fct = la_fonction(pour_fonction);System.out.println("Résultat de la fonction: "+resultat_fct);

}}

Avant l’appelParamètre de la fonction: 23Résultat de la fonction: 46

Page 8: KHARKIV National University of Economic Université Lumière ...mediamining.univ-lyon2.fr/velcin/public/GL-k/intro_java.pdf[3.4 10-38, 3.4 10+38] en valeur absolue double 8 octets

Fonctions et procédures (3)• Procédure :

o Type retour vide â voido Pas d’instruction return

Exemple :

public static void main( … )

Tableaux (1)• Déclaration :

type[] nom_tableau; Û type nom_tableau [];

Ex.: double[] t_d;

• Instanciation :nom_tableau = new type [taille];

Ex.: t_d = new double[4];

• Accès aux cellules du tableau :o Ecriture : t_d[0] = 3.2;

o Lecture : double d = t_d[0];

3.2

d

t_d

t_d

t_d

3.2

t_d[3]t_d[0]

Æ

Tableaux (2)• Autres :

o Instanciation à la volée :double t_d[] = {0.3,9.0,1.2,4.6 };

o Taille du tableau :t_d.length

Exemple :

for (int i=0;i<t_d.length;i++){

System.out.println("valeur case " + i + ":"+ t_d[i]);

}

Projet : une base d’actualité

• Objectif des TDs :– Construire un système d’information pour stocker et

interroger des news– Noyau du projet qui sera demandé pour l’évaluation

de cet enseignement

• Plusieurs étapes :– TD1 : squelette du SI sans interface graphique– TD2 : héritage, flux, manipulation de chaînes de

caractères, ajout d’une interface graphique– TD3 : indexation des textes avec Lucene

Page 9: KHARKIV National University of Economic Université Lumière ...mediamining.univ-lyon2.fr/velcin/public/GL-k/intro_java.pdf[3.4 10-38, 3.4 10+38] en valeur absolue double 8 octets

Petite démonstration Plan du cours

• Introduction au langage Java• Programmation Orientée Objet• Notions complémentaires• Quelques API standards• Interface graphique en Java FX• API pour la recherche d’information