Interface Homme-Machine 2

Dimension: px
Commencer à balayer dès la page:

Download "Interface Homme-Machine 2"

Transcription

1 Interface Homme-Machine 2 Internationalisation des applications Éléments de base et mise en œuvre Jacques Bapst

2 Internationalisation et localisation L'internationalisation (I18n) est le processus de conception d'une application visant à la rendre suffisamment générique et flexible pour qu'elle puisse s'exécuter correctement en des lieux géographiques quelconques (sans recompilation). La localisation (L10n) est le processus d'adaptation d'un logiciel à une région et à une langue donnée en y ajoutant les composants nécessaires et en traduisant les textes. L'internationalisation et la localisation s'appliquent aux logiciels ainsi qu'aux applications, sites web, applications mobiles, etc. L'internationalisation nécessite naturellement de traiter tous les éléments liés à la langue utilisée (textes, voix) mais également un certain nombre d'éléments liés aux différents usages locaux (présentation, formatage) ainsi que certains éléments liés à la culture locale (couleurs, graphisme). EIA-FR / Jacques Bapst IHM2_I18N 2

3 Points à considérer Parmi les points à considérer, on peut mentionner : Les textes des messages Les labels des composants visuels (GUI) L'aide en ligne et autres documents Les sons, la voix Les couleurs Les graphiques, les icônes La représentation des nombres Les calendriers, les dates et les heures Les valeurs numéraires (monnaies) Les unités de mesure Les numéros de téléphone Les titres des personnes Les adresses postales La mise en page (disposition) L'ordre lexical (ordre alphabétique)... EIA-FR / Jacques Bapst IHM2_I18N 3

4 Outils disponibles avec Java Dans une application internationalisée tous les éléments qui dépendent de la région doivent être placés hors du code implémentant les fonctions de base l'application (logique fonctionnelle, UI) et seront chargés dynamiquement. Différents mécanismes sont offerts par l'environnement Java pour faciliter ce travail. Le jeu de caractères Unicode La notion de lieu : Locale ResourceBundle, ListResourceBundle, PropertyResourceBundle Calendar, TimeZone, DateFormat, DateFormatSymbols NumberFormat, DecimalFormat, ChoiceFormat, MessageFormat Collator, Comparator, Comparable BreakIterator... EIA-FR / Jacques Bapst IHM2_I18N 4

5 Codification des caractères Dès son origine, le langage Java utilise l'encodage Unicode pour les caractères (char) et les chaînes de caractères (les implémentations de CharSequence comme String, StringBuffer, etc. ). Java 7 est basé sur Unicode V6.0. L'encodage Unicode de base (Basic Multilingual Plane) permet de définir, sur 16 bits (U U+FFFF), 65'536 caractères distincts ce qui permet de couvrir les caractères utilisés dans les principales langues écrites actuelles. Des caractères supplémentaires (Supplementary characters) ont été ajoutés dans seize plans additionnels (U U+10FFFF) pour assurer une représentation plus complète des langues asiatiques (chinoises et japonaises notamment). Le standard nommé Unicode (www.unicode.org) est une implémentation d'une norme plus générale ISO qui a pour but de définir un Universal Character Set (UCS). EIA-FR / Jacques Bapst IHM2_I18N 5

6 Caractères Unicode Malheureusement, la prise en charge du standard Unicode s'avère encore limité sur certaines plateformes et il n'est pas encore implémenté de bout en bout (OS, File-Manager, DB, Langages, Réseaux, Polices de caractères, Imprimantes,...). Unicode reste cependant la meilleure manière de coder les caractères et symboles internationaux. Son adoption devrait continuer à se généraliser. Le standard Unicode classe les caractères dans différentes catégories que l'on peut tester, en Java, à l'aide de méthodes statiques de la classe Character : isdigit() isspacechar() isisocontrol() isletter() iswhitespace() isdefined() islowercase() isuppercase()... On peut également utiliser la méthode gettype() qui retourne la catégorie à laquelle appartient un caractère. EIA-FR / Jacques Bapst IHM2_I18N 6

7 Catégories de caractères Un programme internationalisé devra impérativement utiliser les méthodes génériques de la classe Character et ne pas tester explicitement des domaines de valeurs. if ((c>='a' && c<='z') (c>='a' && c<='z')) { // c'est une lettre } if (Character.isLetter(c)) { // c'est une lettre } if (Character.getType(c) == Character.CONNECTOR_PUNCTUATION { // c'est un caractère de connexion (p. ex '_') } else if (Character.getType(c) == Character.MATH_SYMBOL { // c'est un symbole mathématique } EIA-FR / Jacques Bapst IHM2_I18N 7

8 Types d'encodage Différents types d'encodage sont utilisés pour enregistrer les valeurs des codes qui définissent les caractères (Code point). Hormis US-ASCII et ISO (Latin-1) qui sont limités, les plus classiques sont les encodages baptisés UTF (Unicode Transformation Format) UTF-32 : Chaque caractère est représenté sous forme d'un entier de 32 bits. UTF-16 : Séquence d'un ou deux mots de 16 bits. - Caractères de base (BMP) : un mot de 16 bits - Caractères supplémentaires : deux mots de 16 bits UTF-8 : Séquence de un à quatre bytes - Les caractères ASCII sont représentés par un byte. Il existe d'autres types d'encodages ainsi que des variantes par exemple UTF-16BE, UTF-16LE, etc. EIA-FR / Jacques Bapst IHM2_I18N 8

9 Encodage en Java En interne, Java encode les caractères (char) sous forme d'un entier à 16 bits (non-signé). Les caractères Unicode supplémentaires ne peuvent donc pas être représentés. Les chaînes de caractères (String, char[],...) sont, par contre, encodées en UTF-16 et comprennent donc les caractères Unicode supplémentaires (0x x10FFFF). Dans un programme Java, on peut gérer différents types d'encodages de et vers l'extérieur en utilisant les classes InputStreamReader : choix de l'encodage d'entrée OutputStreamWriter : choix de l'encodage de sortie Les classes FileReader et FileWriter en sont des sousclasses et utilisent automatiquement ces flux pour lire et écrire des fichiers de texte utilisant l'encodage par défaut de la plate-forme cible. EIA-FR / Jacques Bapst IHM2_I18N 9

10 Exemples [1] EIA-FR / Jacques Bapst IHM2_I18N 10

11 Exemples [2] EIA-FR / Jacques Bapst IHM2_I18N 11

12 Notion de lieu (Locale) En Java les lieux sont représentés par des instances de la classe Locale. Un lieu peut définir : Une langue : code à deux lettres minuscules selon ISO 639 Exemples : fr, en, de,... Un pays : code à deux lettres majuscules selon ISO 3166 Exemples : FR, CH, GB, US,... Une variante optionnelle : interprétation libre (dialecte, OS,...) Représentation habituelle : "fr_fr", "fr_ch", "en_us_mac" Certaines classes fonctionnent différemment selon le lieu et sont dites locale-sensitive. Par exemple : DateFormat La classe Locale définit un lieu par défaut qui est déterminé en fonction des paramètres courants de la plate-forme cible. EIA-FR / Jacques Bapst IHM2_I18N 12

13 Locale / Exemple Exemple d'utilisation de la classe Locale (java.util) : Locale mylocale = Locale.getDefault(); System.out.println(myLocale); System.out.println(myLocale.getCountry()); System.out.println(myLocale.getDisplayCountry()); System.out.println(myLocale.getLanguage()); System.out.println(myLocale.getDisplayLanguage()); Locale uslocale = new Locale("en","US","Florida"); System.out.println(usLocale); System.out.println(usLocale.getCountry()); System.out.println(usLocale.getDisplayCountry()); System.out.println(usLocale.getLanguage()); System.out.println(usLocale.getDisplayLanguage()); System.out.println( uslocale.getdisplaylanguage(uslocale)); fr_ch CH Suisse fr français en_us_florida US Etats-Unis en anglais english Locale[] alllocale = Locale.getAvailableLocales(); EIA-FR / Jacques Bapst IHM2_I18N 13

14 Externalisation des ressources Une étape importante dans l'internationalisation d'une application consiste à externaliser les ressources qui dépendent de la région (ressources localisées). Java facilite cette tâche grâce à la classe ResourceBundle. Une instance de cette classe représente un ensemble de ressources localisées qui peuvent être récupérées par leur nom (clé) et dont la valeur dépend du lieu (Locale). Deux implémentations de cette classe abstraite existent : ListResourceBundle : Les ressources localisées sont enregistrées dans des sous-classes chargées dynamiquement. PropertyResourceBundle : Les ressources localisées sont enregistrées dans des fichiers textes (fichiers de propriétés selon la classe Properties). EIA-FR / Jacques Bapst IHM2_I18N 14

15 ListResourceBundle Si l'on a le programme, non-localisé, suivant : public static void main(string[] args) { System.out.println("Bonjour"); System.out.println("Mme"); Color c = new Color(230, 210, 30); System.out.println(c); } Si l'on souhaite internationaliser ce programme en utilisant la classe abstraite ListResourceBundle on va extraire les éléments localisés dans différentes sous-classes (une par lieu) dont le nom est préfixé avec un nom de base (Idat dans l'exemple ci-dessous) : public class Idat extends ListResourceBundle {...} public class Idat_de extends ListResourceBundle {...} public class Idat_de_CH extends ListResourceBundle {...} EIA-FR / Jacques Bapst IHM2_I18N 15

16 Classe localisée [1] La sous-classe portant le nom de base (Idat dans cet exemple) contiendra les valeurs par défaut pour les éléments externalisés. Les éléments externalisés sont enregistrés sous forme d'un tableau d'association clé valeur (la clé et les valeurs pouvant être des objets quelconques). public class Idat extends ListResourceBundle { private Object[][] contents = {{"Salutation", "Bonjour"}, {"Titre", "Mme"}, {"Couleur", new Color(230,210,30)}}; } protected Object[][] getcontents() { return contents; } EIA-FR / Jacques Bapst IHM2_I18N 16

17 Classe localisée [2] Pour chaque lieu (Locale) on créera une sous-classe avec comme préfixe le nom de base auquel on ajoutera le code de la langue, puis éventuellement le code du pays et finalement le code de la variante (avec le caractère '_' comme séparateur). Il n'est pas nécessaire de répéter les éléments qui ne changent pas par rapport aux valeurs par défaut (enregistrés ici dans la classe Idat). public class Idat_de extends ListResourceBundle { private Object[][] contents = {{"Salutation", "Guten Tag"}, {"Titre", "Frau"} }; } protected Object[][] getcontents() { return contents; } EIA-FR / Jacques Bapst IHM2_I18N 17

18 Classe localisée [3] La classe Idat_de_CH contient les éléments externalisés pour la langue allemande (de) et la région Suisse (CH) La valeur "Titre" n'est pas répétée ici. Elle sera recherchée (automatiquement) dans la classe Idat_de qui couvre la localisation de la langue allemande en général. public class Idat_de_CH extends ListResourceBundle { private Object[][] contents = {{"Salutation", "Grüetzi"}, {"Couleur", Color.YELLOW}}; } protected Object[][] getcontents() { return contents; } EIA-FR / Jacques Bapst IHM2_I18N 18

19 Accès aux ressources externalisées On accède aux ressources externalisées en créant un objet de type ResourceBundle et en utilisant ses différentes méthodes (principalement getstring() et getobject()). La version internationalisée du programme initial (pour la région locale) deviendrait ainsi : public static void main(string[] args) { Locale loc = Locale.getDefault(); ResourceBundle bidat = ResourceBundle.getBundle("test.i18n.Idat", loc); System.out.println(bIdat.getString("Salutation")); System.out.println(bIdat.getString("Titre")); c = (Color) bidat.getobject("couleur"); System.out.println(c); Remarque : Dans la méthode getbundle(), on passe en paramètre une chaîne de caractères ("test.i18n.idat") qui représente le chemin d'accès à la classe qui sera chargée dynamiquement (package + class-name). EIA-FR / Jacques Bapst IHM2_I18N 19

20 Exemple avec différentes localisation L'exécution du programme précédent sur une machine cible fr_ch afficherait les résultats suivants : Bonjour Mme java.awt.color[r=230,g=210,b=30] Sur une machine cible de_ch on aurait : Grüetzi Frau java.awt.color[r=255,g=255,b=0] Remarque : Cette différence d'affichage ne nécessite aucune modification ni dans l'application ni dans ses paramètres. Seule la localisation de la machine cible provoque ce changement de comportement. EIA-FR / Jacques Bapst IHM2_I18N 20

21 Programmation de la localisation On peut également modifier la localisation dans le programme lui-même (en laissant à l'utilisateur le choix de la langue par exemple) : public static void main(string[] args) { } Locale loc = new Locale("de"); ResourceBundle bidat = ResourceBundle.getBundle("test.i18n.Idat", loc); System.out.println(bIdat.getString("Salutation")); System.out.println(bIdat.getString("Titre")); c = (Color) bidat.getobject("couleur"); System.out.println(c); L'exécution du programme précédent afficherait les résultats ci-contre : (indépendamment de sa localisation) Guten Tag Frau java.awt.color[r=230,g=210,b=30] EIA-FR / Jacques Bapst IHM2_I18N 21

22 PropertyResourceBundle [1] Une autre manière d'externaliser les ressources est d'utiliser la classe PropertyResourceBundle. Les éléments externalisés seront enregistrés dans des fichiers de propriétés (fichiers textes avec une association clé valeur). Les noms des fichiers suivront les mêmes règles que pour les noms des sous-classes avec ListResourceBundle. Les fichiers doivent porter l'extension ".properties". Exemples de fichiers : # File: MenuText.properties m1 = Computer m2 = Disk m3 = Monitor m4 = Keyboard # File: MenuText_fr.properties m1 = Ordinateur m2 = Disque dur m3 = Moniteur m4 = Clavier EIA-FR / Jacques Bapst IHM2_I18N 22

23 Exemple d'un menu localisé EIA-FR / Jacques Bapst IHM2_I18N 23

24 Exemple d'un menu # File Menus.properties # Default resource bundle # US English colors.label=colors colors.red.label=red colors.red.accelerator=alt R colors.green.label=green colors.green.accelerator=alt G colors.blue.label=blue colors.blue.accelerator=alt B EIA-FR / Jacques Bapst IHM2_I18N 24

25 Exemple d'un menu # File Menus_en_GB.properties # Resource bundle for British English. # Overrides only a single resource # definition and inherits the rest # from the default bundle colors.label=colours EIA-FR / Jacques Bapst IHM2_I18N 25

26 Exemple d'un menu # File Menus_fr.properties # Resource bundle for all french-speaking # Overrides most, but not all, of the # resources in the default bundle colors.label=couleurs colors.red.label=rouge colors.green.label=vert colors.green.accelerator=alt V colors.blue.label=bleu EIA-FR / Jacques Bapst IHM2_I18N 26

27 PropertyResourceBundle [2] Avec la classe PropertyResourceBundle, les clés et les valeurs sont limitées au type String (contrairement à la classe ListResourceBundle qui permet d'enregistrer n'importe quel type d'objet, par exemple des couleurs, des images, des clips audio,...). Syntaxe des fichiers : clé = valeur ou clé : valeur # ou! en premier caractère : commentaire \ en fin de ligne permet de continuer sur la ligne suivante Des caractères d'échappement peuvent être insérés \... # File: BundleExample.properties (distinction minuscules/majuscules) Descr = "Les guillemets sont inclus" Remarque = Un texte qui \ s'étend sur plusieurs lignes \ avec les caractères spéciaux \\ et \u2211 KeyA = Une valeur pour la clé "KeyA" keya = Une mauvaise idée de clé! EIA-FR / Jacques Bapst IHM2_I18N 27

28 PropertyResourceBundle [3] Contrairement à ListResourceBundle, il n'est pas nécessaire de créer des sous-classes ni même une instance de la classe PropertyResourceBundle. La méthode getbundle() de la classe ResourceBundle se chargera de créer automatiquement une instance de cette classe sur la base du contenu des fichiers de propriétés. Aucun changement n'est nécessaire dans le programme qui accède aux ressources externalisées. La méthode getbundle() recherchera les ressources : dans les sous-classes de ListResourceBundle et dans les fichiers de propriétés avec création automatique d'une instance de PropertyResourceBundle Remarque : On évitera de mélanger les deux techniques d'externalisation EIA-FR / Jacques Bapst IHM2_I18N 28

29 Algorithme de recherche L'algorithme de recherche de la méthode getbundle() est hiérarchique (spécifique général) : Recherche de la classe NomDeBase_Langue_Pays_Variante.class Recherche de la classe NomDeBase_Langue_Pays.class Recherche de la classe NomDeBase_Langue.class Recherche de la classe NomDeBase_LangueParDefaut.class Recherche de la classe NomDeBase.class Recherche du fichier Recherche du fichier Recherche du fichier Recherche du fichier Recherche du fichier NomDeBase_Langue_Pays_Variante.properties NomDeBase_Langue_Pays.properties NomDeBase_Langue.properties NomDeBase_LangueParDefaut.properties NomDeBase.properties MissingResourceException EIA-FR / Jacques Bapst IHM2_I18N 29

30 Que faut-il externaliser? Identifier et isoler tous les éléments de l'application qui dépendent du lieu (région, langue). On pensera naturellement : aux messages d'état (Status message) aux messages d'erreur aux messages de journalisation (Log file Entries) à l'aide en ligne... sans oublier tous les composants et libellés de l'interface utilisateur (GUI) : JButton btok = new JButton("Ok"); ResourceBundle rlabels = ResourceBundle.getBundle("appl.Labels"); String oklabel = rlabels.getstring("okkey"); JButton btok = new JButton(okLabel); EIA-FR / Jacques Bapst IHM2_I18N 30

31 ListResourceBundle Quelle variante choisir? Avantages Inconvénients PropertyResourceBundle Avantages Inconvénients EIA-FR / Jacques Bapst IHM2_I18N 31

32 Informations temporelles Dans de nombreux programmes le concept du temps intervient (calendrier, jours, mois, heure, calculs,...). La représentation de ces informations temporelles est typiquement associée à des conventions locales qui varient d'une région à l'autre et qu'il faut respecter. "02/04/13" 2 avril 2013? ou 4 février 2013? Dans la plate-forme Java, on trouve différentes classes qui permettent de gérer ces informations temporelles. Date TimeZone, SimpleTimeZone Calendar, GregorianCalendar DateFormat, SimpleDateFormat, DateFormatSymbol... EIA-FR / Jacques Bapst IHM2_I18N 33

33 Date Une instance de la classe Date représente un instant précis dans le temps avec une résolution d'une milliseconde. En interne, la date est enregistrée sous forme d'un entier représentant le nombre de millisecondes écoulées depuis le 1 er janvier 1970 à minuit (GMT). Excepté quelques méthodes permettant de comparer des dates (equals(), before(), after(), compareto()), la classe Date ne comporte pratiquement plus que des méthodes dépréciées (Deprecated) qui ont été remplacées par des méthodes des classes Calendar et DateFormat qui prennent en compte le lieu (Locale-sensitive). Date now = new Date(); Ne permet pas de créer une date quelconque (à moins de calculer le nombre de millisecondes depuis le ) EIA-FR / Jacques Bapst IHM2_I18N 34

34 TimeZone Une instance de la classe TimeZone représente un fuseau horaire dans lequel les régions ont toutes une même différence d'heure par rapport à l'heure GMT. Cette différence peut varier durant l'année car cette classe tient compte de la notion d'heure d'été (Daylight Savings Time ou DST). La classe TimeZone est une classe abstraite mais on peut obtenir une instance d'une sous-classe concrète en invoquant une des deux factory methods : TimeZone mytz = TimeZone.getDefault(); TimeZone TokyoTz = TimeZone.getTimeZone("Asia/Tokyo"); On peut obtenir la liste des zones existantes en invoquant : String[] tzlist = TimeZone.getAvailableIDs(); EIA-FR / Jacques Bapst IHM2_I18N 35

35 Calendar La classe abstraite Calendar permet d'enregistrer et d'interpréter un instant donné (une date) comme un ensemble de valeurs représentant des subdivisions temporelles (année, mois, jour, heure,...). Il a existé, et il existe encore plusieurs calendriers dans le monde (grégorien, julien, lunaire, hébraïque,...). Le plus courant est le calendrier grégorien qui est représenté en Java par la sous-classe concrète GregorianCalendar. La classe GregorianCalendar est locale-sensitive mais n'offre pas de fonctions de formatage des dates qui sont déléguées à la classe DateFormat. La classe offre cependant des méthodes pour définir ou consulter les informations (année, mois, jour, heure,...) sous forme numérique (sans formatage). EIA-FR / Jacques Bapst IHM2_I18N 36

36 GregorianCalendar Dans la classe GregorianCalendar on trouve plusieurs constructeurs qui permettent de définir une date en précisant éventuellement la zone (Time-Zone) et le lieu (Locale). Par défaut, ce sont les valeurs courantes qui sont utilisées. GregorianCalendar cal = new GregorianCalendar(); // Current date+time int year = cal.get(calendar.year); int month = cal.get(calendar.month); int day = cal.get(calendar.day_of_month); int wdays = cal.get(calendar.day_of_week); int hour = cal.get(calendar.hour_of_day); int min = cal.get(calendar.minute); int sec = cal.get(calendar.second); boolean leap = cal.isleapyear(2000); cal.set(calendar.month, 11); // December (starts at zero)! cal.set(calendar.day_of_month, 25); cal.add(calendar.day_of_month, 60); EIA-FR / Jacques Bapst IHM2_I18N 37

37 Formatage des dates [1] Pour formater les dates on se basera sur la classe abstraite DateFormat et, éventuellement, sur sa spécialisation concrète la sous-classe SimpleDateFormat. Ces classes utilisent la classe DateFormatSymbols qui définit pour chaque lieu (Locale) la représentation du nom des mois (nom complet et abrégé), le nom des jours, l'indicateur AM/PM, le nom de l'ère (avant/après JC), etc. La classe DateFormatSymbols est très rarement utilisée directement. Dans la classe SimpleDateFormat le formatage des dates peut être spécifié en donnant un modèle (pattern). Cette manière de faire compromet l'internationalisation de l'application (à moins, naturellement, que les modèles soient externalisés et soient adaptés à chaque région). EIA-FR / Jacques Bapst IHM2_I18N 38

38 Formatage des dates [1] La classe DateFormat offre des méthodes statiques (factory methods) permettant de créer des instances de formateurs adaptés à différents styles (SHORT, MEDIUM, LONG, FULL) et à différents lieux (Locale). getinstance() getdateinstance() gettimeinstance() : Formateur date et heure Style SHORT, Locale par défaut : Formateur de date uniquement Style et Locale paramétrables (opt.) : Formateur de l'heure uniquement Style et Locale paramétrables (opt.) getdatetimeinstance() : Formateur date et heure Style et Locale paramétrables (opt.) La méthode format() constitue la méthode principale du formateur. Elle prend en paramètre une date et retourne une chaîne de caractères (texte formaté). EIA-FR / Jacques Bapst IHM2_I18N 39

39 DateFormat / SimpleDateFormat [1] Date now = new Date(); DateFormat fm1 = DateFormat.getDateInstance(); System.out.println(fm1.format(now)); DateFormat fm2 = DateFormat.getTimeInstance(); System.out.println(fm2.format(now)); DateFormat fm3 = DateFormat.getDateTimeInstance(); System.out.println(fm3.format(now)); DateFormat fm4 = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL); System.out.println(fm4.format(now)); 13 sept :48:12 13 sept :48:12 vendredi, 13. septembre h CEST EIA-FR / Jacques Bapst IHM2_I18N 40

40 DateFormat / SimpleDateFormat [2] Date now = new Date(); Locale frloc = new Locale("fr", "CH"); DateFormat fm5 = DateFormat.getDateInstance(DateFormat.MEDIUM, frloc); System.out.println(fm5.format(now)); Locale deloc = new Locale("de", "CH"); DateFormat fm6 = DateFormat.getDateInstance(DateFormat.LONG, deloc); System.out.println(fm6.format(now)); Locale tiloc = new Locale("it", "CH"); DateFormat fm7 = DateFormat.getDateInstance(DateFormat.LONG, tiloc); System.out.println(fm7.format(now)); Locale enloc = new Locale("en"); DateFormat fm8 = DateFormat.getDateInstance(DateFormat.FULL, enloc); System.out.println(fm8.format(now)); 13 sep September settembre 2013 Friday, September 13, 2013 EIA-FR / Jacques Bapst IHM2_I18N 41

41 Saisie et interprétation de dates La classe DateFormat peut également être utilisée pour analyser des dates représentées sous forme de chaînes de caractères et de les interpréter en tenant compte des informations de style et de localisation. La méthode parse() du formateur transforme ainsi une chaîne de caractères (String) en un objet de type Date. L'exception ParseException est générée si la chaîne de caractères ne peut pas être analysée correctement. Locale frloc = new Locale("fr", "CH"); DateFormat fm9 = DateFormat.getDateInstance(DateFormat.MEDIUM, frloc); Date birth = null; try { birth = fm9.parse("7 mars 1991"); } catch (ParseException e) { System.out.println("Erreur dans le format de la date"); } System.out.println(fm9.format(birth)); EIA-FR / Jacques Bapst IHM2_I18N 42

42 Formatage des nombres [1] Le formatage des nombres varie également selon les usages locaux. Par exemple pour le nombre : 1' ,45 La classe NumberFormat est dédiée au formatage et au parsing des nombres. Les valeurs monétaires (Currency) ainsi que les pourcentages sont également pris en compte. Une sous-classe concrète DecimalFormat est utilisée pour la plupart des lieux (Locale) mais il est préférable d'utiliser les factory methods de NumberFormat et de transtyper si nécessaire. NumberFormat f = NumberFormat.getNumberInstance(loc); if (f instanceof DecimalFormat) { ((DecimalFormat)f).setDecimalSeparatorAlwaysShown(true); } EIA-FR / Jacques Bapst IHM2_I18N 43

43 Formatage des nombres [2] La classe NumberFormat offre des méthodes statiques (factory methods) permettant de créer des instances de formateurs adaptés à différents lieux (Locale). getnumberinstance() getintegerinstance() : Formateur de nombres décimaux : Formateur de nombres entiers getcurrencyinstance() : Formateur de valeurs monétaires getpercentinstance() : Formateur de pourcentages Pour chacune de ces méthodes, on peut optionnellement passer un lieu (Locale) en paramètre. Par défaut, c'est la région courante de la machine cible qui est prise en compte. La méthode format() constitue la méthode principale du formateur. Elle prend en paramètre un nombre (plusieurs types possibles) et retourne une chaîne de caractères (texte formaté). EIA-FR / Jacques Bapst IHM2_I18N 44

44 Formatage des nombres [3] int i6 = ; double d6 = ; double d15 = ; Locale locus = new Locale("en", "US"); NumberFormat nf1 = NumberFormat.getNumberInstance(); NumberFormat nf1us = NumberFormat.getNumberInstance(locUS); NumberFormat nf2 = NumberFormat.getIntegerInstance(); NumberFormat nf3 = NumberFormat.getCurrencyInstance(); NumberFormat nf4 = NumberFormat.getPercentInstance(); System.out.println(nf1.format(i6)); System.out.println(nf1US.format(i6)); System.out.println(nf2.format(i6)); System.out.println(nf3.format(i6)); System.out.println(nf1.format(d15)); System.out.println(nf1US.format(d15)); System.out.println(nf2.format(d15)); System.out.println(nf4.format(d15)); System.out.println(nf4.format(d6)); 123' , '456 SFr. 123' ' , '457 12'345'679% 12% EIA-FR / Jacques Bapst IHM2_I18N 45

45 Formatage des nombres [4] double i4 = 1234; double d7 = ; double d11 = ; NumberFormat nf5 = NumberFormat.getNumberInstance(); nf5.setminimumfractiondigits(2); nf5.setmaximumfractiondigits(4); System.out.println(nf5.format(i4)); System.out.println(nf5.format(d7)); System.out.println(nf5.format(d11)); 1' ' ' nf5.setgroupingused(false); System.out.println(nf5.format(i4)); System.out.println(nf5.format(d7)); System.out.println(nf5.format(d11)); EIA-FR / Jacques Bapst IHM2_I18N 46

46 Formatage des messages Très souvent, les messages sont composés : de parties fixes (qui dépendent généralement du lieu) de parties variables (avec un formatage qui dépend év. du lieu) Les parties fixes seront externalisées dans des Ressource Bundles et les parties variables proviennent généralement de l'application. Exemples : "Erreur sur la ligne 10 du fichier cfga.xml" "Le solde du compte B45 est de SFr 1'422.75" La classe MessageFormat a pour objectif de simplifier la création de messages comportant des parties variables. Les parties variables peuvent représenter des nombres, des dates, des heures, ou des choix (ChoiceFormat est décrit plus loin) et ces informations seront formatées en conséquence. EIA-FR / Jacques Bapst IHM2_I18N 47

47 Messages avec contenu variable Les messages avec contenu variable seront écrits en remplaçant les parties variables par des balises indicées (les paramètres sont entourés par des accolades). "Erreur sur la ligne {0} du fichier {1}" Les parties variables peuvent également contenir des indications de formatage : "Échéance du mot de passe le {0,date} à {1,time,short}" "Nouveau prix : {0,number} / TVA : {1,number,percent}" EIA-FR / Jacques Bapst IHM2_I18N 48

48 Utilisation de MessageFormat [1] Exemple d'utilisation de la classe MessageFormat. Les textes paramétrés sont externalisés dans des Ressource Bundles (PropertyResourceBundle). Deux fichiers de propriétés sont créés : un fichier par défaut (en français) un fichier avec les textes en anglais # File: Messages Text_1 = Erreur sur la ligne {0} du fichier {1} Text_2 = Échéance du mot de passe le {0,date} à {1,time,short} Text_3 = Nouveau prix : {0,number} / TVA : {1,number,percent} # File: Messages_en Text_1 = Error in file {1} at line {0} Text_2 = Password will expire on {0,date, long} at {1,time,short} Text_3 = New price : {0,number} / VAT : {1,number,percent} EIA-FR / Jacques Bapst IHM2_I18N 49

49 Utilisation de MessageFormat [2] ResourceBundle msg = ResourceBundle.getBundle("i18n.test.Messages"); Object[] param1 = {new Integer(123), "Test.cfg"}; Date now = new Date(System.currentTimeMillis()+10*24*3600*1000); // Now + 10 days Object[] param2 = {now, now}; Object[] param3 = {new Float( ), new Float(0.123)}; // Call static method (one-time use) String fmttext = MessageFormat.format(msg.getString("Text_1"), param1); System.out.println(fmtText); // Create a MessageFormat instance (can be used repeatedly) MessageFormat fmt; fmt = new MessageFormat(msg.getString("Text_2")); System.out.println(fmt.format(param2)); fmt = new MessageFormat(msg.getString("Text_3")); System.out.println(fmt.format(param3)); Erreur sur la ligne 123 du fichier Test.cfg Échéance du mot de passe le 23 sept à 15:35 Nouveau prix : 1' / TVA : 12% EIA-FR / Jacques Bapst IHM2_I18N 50

50 Utilisation de MessageFormat [3] Locale.setDefault(new Locale("en")); // Change default Locale ResourceBundle msg = ResourceBundle.getBundle("i18n.test.Messages"); Object[] param1 = {new Integer(123), "Test.cfg"}; Date now = new Date(System.currentTimeMillis()+10*24*3600*1000); Object[] param2 = {now, now}; Object[] param3 = {new Float( ), new Float(0.123)}; // Call static method (one-time use) String fmttext = MessageFormat.format(msg.getString("Text_1"), param1); System.out.println(fmtText); // Create a MessageFormat instance (can be used repeatedly) MessageFormat fmt; fmt = new MessageFormat(msg.getString("Text_2")); System.out.println(fmt.format(param2)); fmt = new MessageFormat(msg.getString("Text_3")); System.out.println(fmt.format(param3)); Error in file Test.cfg at line 123 Password will expire on September 23, 2013 at 3:35 PM New price : 1, / VAT : 12% EIA-FR / Jacques Bapst IHM2_I18N 51

51 Messages plus complexes Il arrive relativement fréquemment que la partie fixe des messages dépendent légèrement des parties variables. C'est le cas, par exemple, avec les messages contenant des quantités : "Aucun fichier trouvé" "Un fichier trouvé" "4 fichiers trouvés" La classe ChoiceFormat permet de simplifier le formatage des messages dont le format à utiliser dépend de la valeur d'une variable (on associe un format à un intervalle de valeurs). On peut travailler directement avec la classe ChoiceFormat ou l'utiliser au travers de la classe MessageFormat. Syntaxe avec MessageFormat (partie variable) : { IndexNr, choice, ChoiceFormatPattern } EIA-FR / Jacques Bapst IHM2_I18N 52

52 ChoiceFormat Pattern Syntaxe de ChoiceFormatPattern : Limit 0 #Text 0 Limit 1 #Text 1 Limit 2 #Text 2... Limit N <Text N 0#Zéro 1#Un 1<Plusieurs Text 0 sera utilisé si Limit 0 <= val < Limit 1 Text 1 sera utilisé si Limit 1 <= val < Limit 2 Text 2 sera utilisé si Limit 2 <= val < Limit 3 Text N sera utilisé si Limit N <= val val : La valeur de la variable Text x : Un texte fixe ou un format avec la syntaxe {...} Imbrication Exemples : 0#Aucune erreur 1#Une seule erreur 1<{0,number,integer} erreurs 0.1#{0,number,percent} 0.5#moitié 1.2#{0,number,integer} 50<Beaucoup EIA-FR / Jacques Bapst IHM2_I18N 53

53 Utilisation de ChoiceFormat [1] Exemple d'utilisation de la classe ChoiceFormat au travers de la classe MessageFormat. Les textes paramétrés sont externalisés dans des Ressource Bundles (PropertyResourceBundle). Première variante avec un fichier de propriétés qui contient l'ensemble des informations de formatage (avec les domaines de valeurs). # File: Messages.properties... Text_4 = {0, choice, 0#Aucun fichier \ 1#Un fichier \ 1<{0,number,integer} fichiers} Text_5 = {0, choice, 1.1#v 1.1 \ 2.2#{0,number,integer} \ 3.3<{0,number,percent} }... EIA-FR / Jacques Bapst IHM2_I18N 54

54 Utilisation de ChoiceFormat [2] ResourceBundle msg = ResourceBundle.getBundle("i18n.test.Messages"); MessageFormat fmt = new MessageFormat(msg.getString("Text_4")); Object[] param4 = new Integer[1]; // Seulement 1 paramètre for (int i=0; i<5; i++) { param4[0] = new Integer(i); System.out.println(fmt.format(param4)); } Aucun fichier Un fichier 2 fichiers 3 fichiers 4 fichiers EIA-FR / Jacques Bapst IHM2_I18N 55

55 Utilisation de ChoiceFormat [3] ResourceBundle msg = ResourceBundle.getBundle("i18n.test.Messages"); MessageFormat fmt = new MessageFormat(msg.getString("Text_5")); Object[] param5 = new Integer[1]; // Seulement 1 paramètre for (double d=0; d<5; d=d+0.5) { param5[0] = new Double(d); System.out.println(d + " : " + fmt.format(param5)); } 0.0 : v : v : v : v : v : : : 350% 4.0 : 400% 4.5 : 450% EIA-FR / Jacques Bapst IHM2_I18N 56

56 Utilisation de ChoiceFormat [4] On peut également traiter les domaines de valeurs (valeurs limites) dans le code en utilisant la classe ChoiceFormat ainsi que des tableaux pour représenter les valeurs limites associées aux différentes valeurs des variables. Dans cette deuxième variante, le fichier de propriétés ne contiendrait que les informations suivantes : # File: Messages.properties... Text_6 = Résulat de la recherche : {0} NoFile = Aucun fichier OneFile = Un fichier ManyFiles = {0, number} fichiers... EIA-FR / Jacques Bapst IHM2_I18N 57

57 Utilisation de ChoiceFormat [5] ResourceBundle msg = ResourceBundle.getBundle("i18n.test.Messages"); MessageFormat msgfmt = new MessageFormat(msg.getString("Text_6")); double[] nblimits = {0,1,2}; String[] vartext = {msg.getstring("nofile"), msg.getstring("onefile"), msg.getstring("manyfiles")}; ChoiceFormat choicefmt = new ChoiceFormat(nbLimits, vartext); msgfmt.setformatbyargumentindex(0, choicefmt); Object[] param6 = new Integer[1]; // Seulement 1 paramètre for (int i=0; i<5; i++) { param6[0] = new Integer(i); System.out.println(msgFmt.format(param6)); } Résulat de la recherche : Aucun fichier Résulat de la recherche : Un fichier Résulat de la recherche : 2 fichiers Résulat de la recherche : 3 fichiers Résulat de la recherche : 4 fichiers EIA-FR / Jacques Bapst IHM2_I18N 58

58 Comparaison des chaînes de caractères L'ordre lexical des chaînes de caractères (utilisé par exemple pour la recherche et le tri) dépend de la langue (String collation). ch et ll forment un seul caractère en espagnol La position des caractères accentués varie selon la langue En allemand les caractères ä, ö, ü sont traités comme ae, oe, ue etc. La classe abstraite Collator permet de régler l'ordre de chaînes de caractères en fonction de la langue (les règles varient selon l'objet Locale). Les règles de comparaison peuvent être personnalisées en utilisant la sous-classe concrète RuleBasedCollator. Des optimisations du temps de traitement (lors de comparaisons répétitives) peuvent être effectuées en utilisant la classe CollationKey. EIA-FR / Jacques Bapst IHM2_I18N 59

59 Classe Collator La méthode principale de la classe Collator est la méthode compare() qui permet de comparer deux chaînes de caractères en fonction des règles du lieu (Locale). La méthode setstrength() permet de définir différents niveaux de différences à considérer dans les comparaisons. PRIMARY : SECONDARY : TERTIARY : IDENTICAL : Seulement les différences essentielles sont prises en considération ("e" "k") Des différences moins importantes sont prises en considération ("e" "é") Des différences encore moins importantes sont prises en considération ("e" "E") Même des différences minimes sont prises en considération ("a\u0300" "à") La méthode setdecomposition() permet de définir le mode de décomposition des caractères combinés. EIA-FR / Jacques Bapst IHM2_I18N 60

60 Utilisation de Collator [1] public static void main(string[] args) { Locale frlocale = new Locale("fr", "CH"); Locale uslocale = new Locale("en", "US"); } dispcomp(frlocale, "Abc", "abc"); dispcomp(frlocale, "étés", "êtes"); dispcomp(uslocale, "a", "à"); dispcomp(uslocale, "étés", "êtes"); public static void dispcomp(locale loc, String word1, String word2) { Collator collat = Collator.getInstance(loc); collat.setstrength(collator.secondary); String lname = loc.getdisplayname(); int k = collat.compare(word1, word2); if (k<0) System.out.println(lName + ": " + word1 + "<" + word2); else if (k>0) System.out.println(lName + ": " + word1 + ">" + word2); else System.out.println(lName + ": " + word1 + "=" + word2); } français (Suisse): Abc=abc français (Suisse): étés>êtes anglais (Etats-Unis): a<à anglais (Etats-Unis): étés<êtes EIA-FR / Jacques Bapst IHM2_I18N 61

61 Découpage des textes Parmi les éléments que l'on doit parfois considérer lors de l'internationalisation d'une application il y a le découpage des textes en caractères, mots, phrases, retour à la ligne. En Java, la classe abstraite BreakIterator permet de créer des curseurs virtuels qui permettent de localiser certaines positions particulières dans un texte. Différentes méthodes statiques permettent de créer des instances d'itérateurs : getcharacterinstance() getwordinstance() getsentenceinstance() getlineinstance() : position des caractères "utilisateur" (composés parfois de plusieurs codes) : position des mots : position des phrases : position où il est possible d'insérer un retour à la ligne EIA-FR / Jacques Bapst IHM2_I18N 62

62 Et encore... Un autre aspect de l'internationalisation consiste à tenir compte de l'orientation des textes et des composants en fonction du sens de lecture local. Par exemple : arabe, hébreux : de droite à gauche et de haut en bas chinois, coréen : de haut en bas et de droite à gauche Dans la librairie AWT/Swing, cet aspect peut être pris en compte en gérant la propriété ComponentOrientation. Les composants visuels ainsi que les gestionnaires de disposition peuvent être paramétrés pour tenir compte de l'orientation du lieu. On pourrait par exemple imaginer le composant ci-contre (JTree) avec des libellés arabes. EIA-FR / Jacques Bapst IHM2_I18N 63

Chapitre 10. Les interfaces Comparable et Comparator 1

Chapitre 10. Les interfaces Comparable et Comparator 1 Chapitre 10: Les interfaces Comparable et Comparator 1/5 Chapitre 10 Les interfaces Comparable et Comparator 1 1 Ce chapitre a été extrait du document "Objets, Algorithmes, Patterns" de [René Lalement],

Plus en détail

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr)

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Programmer en JAVA par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Plan 1. Présentation de Java 2. Les bases du langage 3. Concepts avancés 4. Documentation 5. Index des mots-clés 6. Les erreurs fréquentes

Plus en détail

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

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile Dans ce TP, vous apprendrez à définir le type abstrait Pile, à le programmer en Java à l aide d une interface

Plus en détail

Informatique / Programmation

Informatique / Programmation Informatique / Programmation Programmation orientée objet avec Java 02 : Expressions et opérateurs Jacques Bapst jacques.bapst@hefr.ch Expressions [1] Les expressions sont des entités composées de littéraux,

Plus en détail

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

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère L'héritage et le polymorphisme en Java Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère En java, toutes les classes sont dérivée de la

Plus en détail

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

INTRODUCTION A JAVA. Fichier en langage machine Exécutable INTRODUCTION A JAVA JAVA est un langage orienté-objet pur. Il ressemble beaucoup à C++ au niveau de la syntaxe. En revanche, ces deux langages sont très différents dans leur structure (organisation du

Plus en détail

Tableaux (introduction) et types de base

Tableaux (introduction) et types de base Tableaux (introduction) et types de base A. Motivation..................................................... 4 B. Les tableaux.................................................... 5 C. Construction des tableaux.......................................

Plus en détail

Filière ITTI - Auxerre TC1 Modélisation des informations (partie 1)

Filière ITTI - Auxerre TC1 Modélisation des informations (partie 1) Filière ITTI - Auxerre TC1 Modélisation des informations (partie 1) Marie-Noëlle Terrasse Département IEM, Université de Bourgogne 12 novembre 2004 On appelle données simples les informations représentées

Plus en détail

Licence d'informatique 2004-2005 Examen Programmation orientée objet Juin 2005

Licence d'informatique 2004-2005 Examen Programmation orientée objet Juin 2005 Licence d'informatique 2004-2005 Examen Programmation orientée objet Juin 2005 Durée de l'épreuve : 2 heures TRÈS IMPORTANT : respectez l'ordre des questions. La lisibilité sera un critère important pour

Plus en détail

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

Généralités sur le Langage Java et éléments syntaxiques. Généralités sur le Langage Java et éléments syntaxiques. Généralités sur le Langage Java et éléments syntaxiques....1 Introduction...1 Genéralité sur le langage Java....1 Syntaxe de base du Langage...

Plus en détail

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

Généralités. javadoc. Format des commentaires. Format des commentaires. Caractères spéciaux. Insérer du code Généralités javadoc Université de Nice - Sophia Antipolis Richard Grin Version 1.4.1 8/2/11 javadoc produit de la documentation en partant de commentaires particuliers insérés dans le code source des classes

Plus en détail

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

Structure d un programme et Compilation Notions de classe et d objet Syntaxe Cours1 Structure d un programme et Compilation Notions de classe et d objet Syntaxe POO 1 Programmation Orientée Objet Un ensemble d objet qui communiquent Pourquoi POO Conception abstraction sur les types

Plus en détail

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf Introduction à Java Matthieu Herrb CNRS-LAAS http://homepages.laas.fr/matthieu/cours/java/java.pdf Mars 2014 Plan 1 Concepts 2 Éléments du langage 3 Classes et objets 4 Packages 2/28 Histoire et motivations

Plus en détail

ACTIVITÉ DE PROGRAMMATION

ACTIVITÉ DE PROGRAMMATION ACTIVITÉ DE PROGRAMMATION The purpose of the Implementation Process is to realize a specified system element. ISO/IEC 12207 Sébastien Adam Une introduction 2 Introduction Ø Contenu Utilité de l ordinateur,

Plus en détail

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

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java Info0101 Intro. à l'algorithmique et à la programmation Cours 3 Le langage Java Pierre Delisle, Cyril Rabat et Christophe Jaillet Université de Reims Champagne-Ardenne Département de Mathématiques et Informatique

Plus en détail

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

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets. Encapsulation L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets. La visibilité dépend des membres : certains membres peuvent être visibles et d'autres

Plus en détail

Une introduction à Java

Une introduction à Java 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é)

Plus en détail

Cours Bases de données 2ème année IUT

Cours Bases de données 2ème année IUT Cours Bases de données 2ème année IUT Cours 6 : JDBC : ou comment lier ORACLE avec Java 1ère partie Anne Vilnat http://www.limsi.fr/individu/anne/cours Plan 1 Introduction 2 les étapes de la connexion

Plus en détail

Théorie des Langages

Théorie des Langages Théorie des Langages AntLR - Générateur d analyseurs Claude Moulin Université de Technologie de Compiègne Printemps 2015 Sommaire 1 Introduction 2 AntLR ANTLR : ANother Tool for Language Recognition URL

Plus en détail

Langage Java. Classe de première SI

Langage Java. Classe de première SI Langage Java Table des matières 1. Premiers pas...2 1.1. Introduction...2 1.2. Mon premier programme...2 1.3. Les commentaires...2 2. Les variables et les opérateurs...2 3. La classe Scanner...3 4. Les

Plus en détail

CORBA avec OpenORB. Samir Torki et Patrice Torguet

CORBA avec OpenORB. Samir Torki et Patrice Torguet CORBA avec OpenORB Samir Torki et Patrice Torguet 1 Présentation de CORBA CORBA (Common Object Request Broker Architecture) est un standard décrivant une architecture pour la mise en place d objets distribués.

Plus en détail

Le langage Java - Syntaxe

Le langage Java - Syntaxe Le langage Java - Syntaxe LES BASES: litéraux, types, expressions, instructions LE LANGAGE JAVA - SYNTAXE LES COMMENTAIRES LES IDENTIFICATEURS LISTES DES MOTS RÉSERVÉS: LES LITÉRAUX BOOLÉENS LA DÉCLARATION

Plus en détail

Utilisation d objets : String et ArrayList

Utilisation d objets : String et ArrayList Chapitre 6 Utilisation d objets : String et ArrayList Dans ce chapitre, nous allons aborder l utilisation d objets de deux classes prédéfinies de Java d usage très courant. La première, nous l utilisons

Plus en détail

Programmation en Java IUT GEII (MC-II1) 1

Programmation en Java IUT GEII (MC-II1) 1 Programmation en Java IUT GEII (MC-II1) 1 Christophe BLANC - Paul CHECCHIN IUT Montluçon Université Blaise Pascal Novembre 2009 Christophe BLANC - Paul CHECCHIN Programmation en Java IUT GEII (MC-II1)

Plus en détail

Représentation de l information en binaire

Représentation de l information en binaire Représentation de l information en binaire Les ordinateurs sont capables d effectuer de nombreuses opérations sur de nombreux types de contenus (images, vidéos, textes, sons,...). Cependant, quel que soit

Plus en détail

Applet pour visualiser les variables «automate» notifiées

Applet pour visualiser les variables «automate» notifiées Applet pour visualiser les variables «automate» notifiées Sommaire 1. Introduction...2 2. Lecture de variables «automate» notifiées...2 2.1. IHM servant au test :...2 2.2. Codage de l'applet :...2 3. Codage

Plus en détail

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

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr www.cril.univ-artois.fr/~jabbour LMI 2 Programmation Orientée Objet POO - Cours 9 Said Jabbour jabbour@cril.univ-artois.fr www.cril.univ-artois.fr/~jabbour CRIL UMR CNRS 8188 Faculté des Sciences - Univ. Artois Février 2011 Les collections

Plus en détail

Les chaînes de caractères

Les chaînes de caractères Les chaînes de caractères Dans un programme informatique, les chaînes de caractères servent à stocker les informations non numériques comme par exemple une liste de nom de personne ou des adresses. Il

Plus en détail

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

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre 2009. Enrica.Duchi@liafa.jussieu.fr . Cours intensif Java 1er cours: de C à Java Septembre 2009 Enrica DUCHI LIAFA, Paris 7 Enrica.Duchi@liafa.jussieu.fr LANGAGES DE PROGRAMMATION Pour exécuter un algorithme sur un ordinateur il faut le

Plus en détail

Plan du cours. Historique du langage http://www.oracle.com/technetwork/java/index.html. Nouveautés de Java 7

Plan du cours. Historique du langage http://www.oracle.com/technetwork/java/index.html. Nouveautés de Java 7 Université Lumière Lyon 2 Faculté de Sciences Economiques et Gestion KHARKIV National University of Economic Introduction au Langage Java Master Informatique 1 ère année Julien Velcin http://mediamining.univ-lyon2.fr/velcin

Plus en détail

as Architecture des Systèmes d Information

as Architecture des Systèmes d Information Plan Plan Programmation - Introduction - Nicolas Malandain March 14, 2005 Introduction à Java 1 Introduction Présentation Caractéristiques Le langage Java 2 Types et Variables Types simples Types complexes

Plus en détail

RMI le langage Java XII-1 JMF

RMI le langage Java XII-1 JMF Remote Method Invocation (RMI) XII-1 Introduction RMI est un ensemble de classes permettant de manipuler des objets sur des machines distantes (objets distants) de manière similaire aux objets sur la machine

Plus en détail

Les entrées/sorties Java (sérialisation, accès aux chiers et connexion réseau)

Les entrées/sorties Java (sérialisation, accès aux chiers et connexion réseau) Année 2008-2009 Les entrées/sorties Java (sérialisation, accès aux chiers et connexion réseau) Nicolas Baudru mél : nicolas.baudru@esil.univmed.fr page web : nicolas.baudru.perso.esil.univmed.fr 1 Introduction

Plus en détail

Package Java.util Classe générique

Package Java.util Classe générique Package Java.util Classe générique 1 Classe Vector La taille est dynamique: dès qu un tableau vectoriel est plein, sa taille est doublée, triplée, etc. automatiquement Les cases sont de type Object add(object

Plus en détail

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

Héritage presque multiple en Java (1/2) Héritage presque multiple en Java (1/2) Utiliser deux classes ou plus dans la définition d'une nouvelle classe peut se faire par composition. class Etudiant{ int numero; Diplome d; float passeexamen(examen

Plus en détail

Java Licence Professionnelle CISII, 2009-2010. Cours 2 : Classes et Objets

Java Licence Professionnelle CISII, 2009-2010. Cours 2 : Classes et Objets Licence Professionnelle CISII, 2009-2010 Cours 2 : Classes et Objets 1 Classes et Objets Objectifs des LOO : - Manipuler des objets - Découper les programmes suivant les types des objets manipulés - Regrouper

Plus en détail

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux. UEO11 COURS/TD 1 Contenu du semestre Cours et TDs sont intégrés L objectif de ce cours équivalent a 6h de cours, 10h de TD et 8h de TP est le suivant : - initiation à l algorithmique - notions de bases

Plus en détail

Java Licence Professionnelle 2009-2010. Cours 7 : Classes et méthodes abstraites

Java Licence Professionnelle 2009-2010. Cours 7 : Classes et méthodes abstraites Java Licence Professionnelle 2009-2010 Cours 7 : Classes et méthodes abstraites 1 Java Classes et méthodes abstraites - Le mécanisme des classes abstraites permet de définir des comportements (méthodes)

Plus en détail

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

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java Langages objets Introduction M2 Pro CCI, Informatique Emmanuel Waller, LRI, Orsay présentation du module logistique 12 blocs de 4h + 1 bloc 2h = 50h 1h15 cours, 45mn exercices table, 2h TD machine page

Plus en détail

Initiation à la programmation en Python

Initiation à la programmation en Python I-Conventions Initiation à la programmation en Python Nom : Prénom : Une commande Python sera écrite en caractère gras. Exemples : print 'Bonjour' max=input("nombre maximum autorisé :") Le résultat de

Plus en détail

INITIATION AU LANGAGE JAVA

INITIATION AU LANGAGE JAVA INITIATION AU LANGAGE JAVA I. Présentation 1.1 Historique : Au début des années 90, Sun travaillait sur un projet visant à concevoir des logiciels simples et performants exécutés dans des PDA (Personnal

Plus en détail

Auto-évaluation Programmation en Java

Auto-évaluation Programmation en Java Auto-évaluation Programmation en Java Document: f0883test.fm 22/01/2013 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INTRODUCTION AUTO-ÉVALUATION PROGRAMMATION EN

Plus en détail

Cours 1: Java et les objets

Cours 1: Java et les objets Ressources Les interface homme-machine et le langage Java DUT première année Henri Garreta, Faculté des Sciences (Luminy) Cyril Pain-Barre & Sébastien Nedjar, IUT d Aix-Marseille (Aix) Cours 1: infodoc.iut.univ-aix.fr/~ihm/

Plus en détail

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

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ; CNAM NFP121 TP 10 19/11/2013 (Séance 5) Objectif Manipuler les exceptions ; 1 Entrées/sorties Exercice 1 : Lire un entier à partir du clavier Ajouter une méthode readint(string message) dans la classe

Plus en détail

TD/TP PAC - Programmation n 3

TD/TP PAC - Programmation n 3 Université Paris Sud Licence d informatique/iup-miage2 Année 2004-2005 Auteur : Frédéric Vernier Semaine : 11-16 octobre 2004 Conditions : sur machine avec les outils standards java web: http://vernier.frederic.free.fr/indexpac.html

Plus en détail

Cours de Programmation Orientée Objet

Cours de Programmation Orientée Objet Contrat et application à la librairie standard JAVA mailto:marc.champesme@lipn.univ-paris13.fr 6 février 2011 1 Qu est ce qu une classe? Un exemple en JAVA Résumé Expression du contrat Par des commentaires

Plus en détail

Apache STORM. Version 1.0. avec des fichiers

Apache STORM. Version 1.0. avec des fichiers Apache STORM avec des fichiers Version 1.0 Rédacteur : Philippe Lacomme (placomme@isima.fr) Date : 3 septembre 2015 Liste des modifications Date : 9/09/2015 Auteur : Philippe Lacomme Modifications : ajout

Plus en détail

Java Licence Professionnelle CISII, 2009-10

Java Licence Professionnelle CISII, 2009-10 Java Licence Professionnelle CISII, 2009-10 Cours 4 : Programmation structurée (c) http://www.loria.fr/~tabbone/cours.html 1 Principe - Les méthodes sont structurées en blocs par les structures de la programmation

Plus en détail

Cours Visual Basic URCA

Cours Visual Basic URCA Cours Visual Basic URCA Sommaire Introduction à la programmation VBA et VB Syntaxe de base, variables Opérateurs de base, boucles Introduction à la programmation Qu est-ce que la programmation? Séquences

Plus en détail

6.1 Une classe simple pour représenter des comptes bancaires

6.1 Une classe simple pour représenter des comptes bancaires Chapitre 6 Héritage Ce chapitre du cours traite de concepts relatifs à la programmation objet (hiérarchie de classe, héritage, extension, masquage) et sera illustré par un exemple de représentation de

Plus en détail

Listes de personnes et calculatrice polonaise inverse en Java

Listes de personnes et calculatrice polonaise inverse en Java Listes de personnes et calculatrice polonaise inverse en Java Université Paris Sud Motivation Le but de cet exercice est de manipuler les listes chaînées et les piles et de voir leur application en analyse

Plus en détail

Notes de cours. Introduction

Notes de cours. Introduction Notes de cours GEI 44 : STRUCTURES DE DONNÉES ET ALGORITHMES Chapitre 5 Application des piles Introduction Piles très utilisées dans les compilateurs Voici deux exemples de composants d un compilateur

Plus en détail

EXAMEN DE JAVA 2010-2011

EXAMEN DE JAVA 2010-2011 NOM : PRÉNOM : TP : G TP EXAMEN DE JAVA 2010-2011 Consignes : avec documents, mais sans téléphone, ordinateur ou autre moyen de communication. Durée : 2h Recommandations : Le code doit être écrit en JAVA

Plus en détail

Corrigé des exercices sur les références

Corrigé des exercices sur les références Corrigé des exercices sur les références Exercice 3.1.1 dessin Pour cet exercice, vous allez dessiner des structures de données au moyen de petits schémas analogues à ceux du cours, comportant la pile

Plus en détail

Programmation Objet Java Correction

Programmation Objet Java Correction INSA - 4 AE 2007 2008 Durée : 1H00 Contrôle Programmation Objet Java Correction Consignes Tous les documents sont autorisés, mais ils seront peu utiles. Indiquez vos nom et prénom sur chaque feuille. Le

Plus en détail

SHERLOCK 7. Version 1.2.0 du 01/09/09 JAVASCRIPT 1.5

SHERLOCK 7. Version 1.2.0 du 01/09/09 JAVASCRIPT 1.5 SHERLOCK 7 Version 1.2.0 du 01/09/09 JAVASCRIPT 1.5 Cette note montre comment intégrer un script Java dans une investigation Sherlock et les différents aspects de Java script. S T E M M E R I M A G I N

Plus en détail

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

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40 Déroulement du cours Introduction Concepts Java Remarques Langage et Concepts de Programmation Orientée-Objet Gauthier Picard École Nationale Supérieure des Mines de Saint-Étienne gauthier.picard@emse.fr

Plus en détail

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions Cours d introduction à l informatique Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions Qu est-ce qu un Une recette de cuisine algorithme? Protocole expérimental

Plus en détail

Premiers Pas en Programmation Objet : les Classes et les Objets

Premiers Pas en Programmation Objet : les Classes et les Objets Chapitre 2 Premiers Pas en Programmation Objet : les Classes et les Objets Dans la première partie de ce cours, nous avons appris à manipuler des objets de type simple : entiers, doubles, caractères, booléens.

Plus en détail

PROGRAMMATION PAR OBJETS

PROGRAMMATION PAR OBJETS PROGRAMMATION PAR OBJETS Java Environnement et constructions spécifiques Walter Rudametkin Maître de Conférences Bureau F011 Walter.Rudametkin@polytech-lille.fr B. Carré Polytech Lille 2 Java (Sun 1995)

Plus en détail

M2PLS - M2EID TP SPRING

M2PLS - M2EID TP SPRING M2PLS - M2EID TP SPRING Référence du document : Http://www-lipn.univ-paris13.fr/M2PLS/tp_spring.pdf Dernière modification : 25/11/11 Type de document : Travaux pratiques Rédacteur : Fortier Michael fortier@univ-paris13,fr

Plus en détail

Programmation en VBA

Programmation en VBA Programmation en VBA Présentation de Visual Basic Visual Basic : Basic : dérivé du langage Basic (Biginner s All purpose Symbolic Instruction Code) des années 60 Visual : dessin et aperçu de l interface

Plus en détail

TP1 : Initiation à Java et Eclipse

TP1 : Initiation à Java et Eclipse TP1 : Initiation à Java et Eclipse 1 TP1 : Initiation à Java et Eclipse Systèmes d Exploitation Avancés I. Objectifs du TP Ce TP est une introduction au langage Java. Il vous permettra de comprendre les

Plus en détail

Java DataBaseConnectivity

Java DataBaseConnectivity Java DataBaseConnectivity JDBC JDBC est une API Java (ensemble de classes et d interfaces défini par SUN et les acteurs du domaine des SGBD) permettant d accéder aux bases de données à l aide du langage

Plus en détail

Cours 14 Les fichiers

Cours 14 Les fichiers Cours 14 Les fichiers F. Gayral 1 Fichier : définition /media/travaux/documents/fgenseignement/java1/courstpsfgfc/14-fichiers/voirtypefichiers Fichier = ensemble d informations codées et stockées sur une

Plus en détail

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

Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T> Page 1 sur 5 TP3 Lectures préalables : l Java_II l tutorial Interfaces Thèmes du TP : l la classe Object l Vector l Stack Une pile d'objects Les éléments de la classe Pile sont maintenant des instances

Plus en détail

Université de Bourgogne - UFR Sciences et Technique - Programmation objet et Internet - LPSIL

Université de Bourgogne - UFR Sciences et Technique - Programmation objet et Internet - LPSIL Nom : Prénom : Contrôle continu Programmation objet Vous devez répondre dans les cadres aux questions posées. Documents de cours et notes personnelles autorisés. Téléphones portables, ordinateurs et calculatrices

Plus en détail

TD/TP PAC - Programmation n 3

TD/TP PAC - Programmation n 3 Université Paris Sud Licence d informatique/iup-miage2 - Année 2004-2005 auteur : Frédéric Vernier semaine : 11-16 octobre 2004 conditions : sur machine avec les outils standards java web: http://vernier.frederic.free.fr/indexpac.html

Plus en détail

INF2015 Développement de logiciels dans un environnement Agile. Examen intra 20 février 2014 17:30 à 20:30

INF2015 Développement de logiciels dans un environnement Agile. Examen intra 20 février 2014 17:30 à 20:30 Examen intra 20 février 2014 17:30 à 20:30 Nom, prénom : Code permanent : Répondez directement sur le questionnaire. Question #1 5% Quelle influence peut avoir le typage dynamique sur la maintenabilité

Plus en détail

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, 2000-2015, ISBN : 978-2-212-14154-2

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, 2000-2015, ISBN : 978-2-212-14154-2 Anne Tasso Java Le livre de premier langage 10 e édition Avec 109 exercices corrigés Groupe Eyrolles, 2000-2015, ISBN : 978-2-212-14154-2 Table des matières Avant-propos Organisation de l ouvrage..............................

Plus en détail

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object) Quelques patterns pour la persistance des objets avec DAO Ce cours présente des modèles de conception utilisés pour effectuer la persistance des objets Université de Nice Sophia-Antipolis Version 1.4 30/8/07

Plus en détail

Java. Java. Le livrede. Avec 80 exercices corrigés. Avec 80 exercices corrigés. Le livre. Anne Tasso. 5 e édition. Un best-seller qui a déjà conquis

Java. Java. Le livrede. Avec 80 exercices corrigés. Avec 80 exercices corrigés. Le livre. Anne Tasso. 5 e édition. Un best-seller qui a déjà conquis Anne Tasso Un best-seller qui a déjà conquis des milliers d'étudiants! Java Le livre Java Le livrede de premier premier langage langage Avec 80 exercices corrigés Avec 80 exercices corrigés 5 e édition

Plus en détail

Initiation à JAVA et à la programmation objet. raphael.bolze@ens-lyon.fr

Initiation à JAVA et à la programmation objet. raphael.bolze@ens-lyon.fr Initiation à JAVA et à la programmation objet raphael.bolze@ens-lyon.fr O b j e c t i f s Découvrir un langage de programmation objet. Découvrir l'environnement java Découvrir les concepts de la programmation

Plus en détail

Programmation par les Objets en Java

Programmation par les Objets en Java Programmation par les Objets en Java Najib TOUNSI Les classes en Java (TD 3) I. Notion de classe I.1 Classe, champs, méthodes, instanciation, this, private vs. public. Créer une classe Point (coordonnée

Plus en détail

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

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION) CLASSE RACINE Object ancêtre de toutes les classes RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION) définit donc des méthodes héritées par toutes

Plus en détail

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP COURS PROGRAMMATION INITIATION AU LANGAGE C SUR MICROCONTROLEUR PIC page 1 / 7 INITIATION AU LANGAGE C SUR PIC DE MICROSHIP I. Historique du langage C 1972 : naissance du C dans les laboratoires BELL par

Plus en détail

Projet EvaluationsEleves/Professeurs

Projet EvaluationsEleves/Professeurs Projet EvaluationsEleves/Professeurs Ce projet Java comporte les objectifs suivants: 1) Diagramme de classes 2) Développer de l'application en mode console avec un jeu de tests fourni 3) Lecture des notes/eleves/professeurs

Plus en détail

8. Java et les bases de données. Olivier Curé - UMLV [page 206 ]

8. Java et les bases de données. Olivier Curé - UMLV [page 206 ] 8. Java et les bases de données Olivier Curé - UMLV [page 206 ] Java et les BD Plusieurs manières d'écrire du code Java accédant à une BD: Statement Level Interface (SLI) Solutions : SQLJ (SQL92) Call

Plus en détail

Jeux de caracte res et encodage (par Michel Michaud 2014)

Jeux de caracte res et encodage (par Michel Michaud 2014) Jeux de caracte res et encodage (par Michel Michaud 2014) Les ordinateurs ne traitent que des données numériques. En fait, les codages électriques qu'ils conservent en mémoire centrale ne représentent

Plus en détail

1. Qu'est-ce que SQL?... 2. 2. La maintenance des bases de données... 2. 3. Les manipulations des bases de données... 5

1. Qu'est-ce que SQL?... 2. 2. La maintenance des bases de données... 2. 3. Les manipulations des bases de données... 5 1. Qu'est-ce que SQL?... 2 2. La maintenance des bases de données... 2 2.1 La commande CREATE TABLE... 3 2.2 La commande ALTER TABLE... 4 2.3 La commande CREATE INDEX... 4 3. Les manipulations des bases

Plus en détail

Programmation en VBA

Programmation en VBA Programmation en VBA Présentation de Visual Basic Visual Basic : Basic : dérivé du langage Basic (Biginner s All purpose Symbolic Instruction Code) des années 60 Visual : dessin et aperçu de l interface

Plus en détail

Programmation Réseau. Sécurité Java. Jean-Baptiste.Yunes@univ-paris-diderot.fr. UFR Informatique 2012-2013. jeudi 4 avril 13

Programmation Réseau. Sécurité Java. Jean-Baptiste.Yunes@univ-paris-diderot.fr. UFR Informatique 2012-2013. jeudi 4 avril 13 Programmation Réseau Sécurité Java Jean-Baptiste.Yunes@univ-paris-diderot.fr UFR Informatique 2012-2013 Java Sécurité? différentes sécurités disponibles et contrôlables intégrité contrôle d accès signature/authentification/cryptographie

Plus en détail

Jeux de caractères. Jean-Marc Bourguet

Jeux de caractères. Jean-Marc Bourguet Jeux de caractères Jean-Marc Bourguet 1 Introduction Ce document, pour le moment encore incomplet, a pour vocation de rassembler mes connaissances en ce qui concerne les jeux de caractères codés. 2 Définitions

Plus en détail

Chapitre 2. Classes et objets

Chapitre 2. Classes et objets Chapitre 2: Classes et Objets 1/10 Chapitre 2 Classes et objets Chapitre 2: Classes et Objets 2/10 Approche Orientée Objet Idée de base de A.O.O. repose sur l'observation de la façon dont nous procédons

Plus en détail

Programmation par RPC et Java-RMI :

Programmation par RPC et Java-RMI : 2A-SI 3 Prog. réseau et systèmes distribués 3.2 et JavaRMI Stéphane Vialle Stephane.Vialle@supelec.fr http://www.metz.supelec.fr/~vialle Support de cours élaboré avec l aide de l équipe pédagogique du

Plus en détail

Introduction à JDBC. Accès aux bases de données en Java

Introduction à JDBC. Accès aux bases de données en Java Introduction à JDBC Accès aux bases de données en Java Eric Cariou Université de Pau et des Pays de l'adour Département Informatique Eric.Cariou@univ-pau.fr 1 Introduction JDBC : Java Data Base Connectivity

Plus en détail

P r ob lé m a t iq u e d e la g é n é r icit é. Pr in cip e d e la g é n é r icit é e n Ja v a ( 1 /3 )

P r ob lé m a t iq u e d e la g é n é r icit é. Pr in cip e d e la g é n é r icit é e n Ja v a ( 1 /3 ) P r ob lé m a t iq u e d e la g é n é r icit é les versions de Java antérieures à 1.5 permettaient de créer des classes de structures contenant n'importe quels types d'objet : les collections (classes

Plus en détail

Java 7 Les fondamentaux du langage Java

Java 7 Les fondamentaux du langage Java 184 Java 7 Les fondamentaux du langage Java 1.1 Les bibliothèques graphiques Le langage Java propose deux bibliothèques dédiées à la conception d'interfaces graphiques. La bibliothèque AWT et la bibliothèque

Plus en détail

Exercices sur les interfaces

Exercices sur les interfaces Exercices sur les interfaces Fabrice Rossi 18 octobre 1999 1 Le type Object 1.1 Manipulations élémentaires Exercice 1.1 : Indiquer l affichage produit par le programme suivant : public class UpCast1 {

Plus en détail

Programmation Visual Basic sous Excel

Programmation Visual Basic sous Excel 1 Programmation Visual Basic sous Excel Version provisoire Septembre 06 1 Introduction Excel était avant tout un tableur. Au fil des versions, il a su évoluer et intégrer des fonctionnalités qui le rendent

Plus en détail

Le langage PHP. Walid Belkhir Université de Provence belkhir@cmi.univ-mrs.fr http://www.lif.univ-mrs.fr/ belkhir/

Le langage PHP. Walid Belkhir Université de Provence belkhir@cmi.univ-mrs.fr http://www.lif.univ-mrs.fr/ belkhir/ Le langage PHP Walid Belkhir Université de Provence belkhir@cmi.univ-mrs.fr http://www.lif.univ-mrs.fr/ belkhir/ 1 / 38 Plan 1 Introduction au langage PHP 2 2 / 38 Qu est ce que PHP? langage interprété

Plus en détail

Localisation des vos applications

Localisation des vos applications 1 Localisation des vos applications Localisation des vos applications Sommaire Localisation des vos applications... 1 1 Introduction... 2 2 Gestion de la globalisation... 3 2.1 Récupérer des informations...

Plus en détail

Cours: Administration d'une Base de Données

Cours: Administration d'une Base de Données Bases de Données Avancées Module A IUT Lumière, License CE-STAT 2006-2007 Pierre Parrend Cours: Administration d'une Base de Données Table of Contents Principes...1 Structure d'un Base de Données...1 Architecture...1

Plus en détail

Threads. Threads. USTL http://www.lifl.fr/ routier 1

Threads. Threads. USTL http://www.lifl.fr/ routier 1 Threads USTL http://www.lifl.fr/ routier 1 Rappels - Définitions un Process est un programme qui tourne et dispose de ses propres ressources mémoire. OS multi-tâche plusieurs process en concurrence un

Plus en détail

4. Groupement d objets

4. Groupement d objets Conception objet en Java avec BlueJ une approche interactive 4. Groupement d objets Collections et itérateurs David J. Barnes, Michael Kölling version française: Patrice Moreaux Rédigé avec 1.0 Principaux

Plus en détail

Chapitre 2 Devine mon nombre!

Chapitre 2 Devine mon nombre! Python 3 : objectif jeux Chapitre 2 Chapitre 2 Devine mon nombre! 2.1. Thèmes abordés dans ce chapitre commentaires modules externes, import variables boucle while condition : if... elif... else la fonction

Plus en détail

INF 321 : mémento de la syntaxe de Java

INF 321 : mémento de la syntaxe de Java INF 321 : mémento de la syntaxe de Java Table des matières 1 La structure générale d un programme 3 2 Les composants élémentaires de Java 3 2.1 Les identificateurs.................................. 3 2.2

Plus en détail

Programmation Orientée Objet Java

Programmation Orientée Objet Java Programmation Orientée Objet Java Bertrand Estellon Département Informatique et Interactions Aix-Marseille Université 12 novembre 2014 Bertrand Estellon (DII AMU) Programmation Orientée Objet Java 12 novembre

Plus en détail

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

Lambda! Rémi Forax Univ Paris-Est Marne-la-Vallée Lambda! Rémi Forax Univ Paris-Est Marne-la-Vallée forax at univ-mlv dot fr - ParisJUG Java.next() - Mars 2012 What Else? Lambda == Inner class? Java a des lambdas depuis la version 1.1 Exemple utilisant

Plus en détail

Java Licence professionnelle CISII, 2009-2010

Java Licence professionnelle CISII, 2009-2010 Java Licence professionnelle CISII, 2009-2010 Cours 6 : le paquetage (package) Cours inspiré des cours de Richard Grin, Antoine Tabbone et Hazel Everett 1 Définition - Les classes Java sont regroupées

Plus en détail