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

Informatique / Programmation

Informatique / Programmation Informatique / Programmation Programmation orientée objet avec Java 07 : Chaînes de caractères Jacques Bapst jacques.bapst@hefr.ch Chaînes de caractères (String) En Java les chaînes de caractères sont

Plus en détail

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

S. Laporte C# mode console DAIGL TS1

S. Laporte C# mode console DAIGL TS1 Bases du langage C# I. C# en mode console (mode texte) Avantages par rapport au mode graphique (Application Windows): - C'est un mode plus proche de l'approche algorithmique (pas de notions de composants,

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

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

Arité variable, énumérations. Arité variable. Arité des méthodes. Utilisation de la surcharge

Arité variable, énumérations. Arité variable. Arité des méthodes. Utilisation de la surcharge Arité variable, énumérations Théorie et pratique de la programmation Michel Schinz 2013-05-13 Arité variable 1 2 Arité des méthodes Utilisation de la surcharge Il est parfois utile d'offrir des méthodes

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

Informatique / Programmation

Informatique / Programmation Informatique / Programmation Programmation orientée objet avec Java 10 : Packages / Contrôle d'accès / Encapsulation Jacques Bapst jacques.bapst@hefr.ch Unités de compilation Un programme Java est généralement

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

Java Licence professionnelle CISI 2009-2010

Java Licence professionnelle CISI 2009-2010 Java Licence professionnelle CISI 2009-2010 Cours 10 : Type générique (c) http://manu.e3b.org/java/tutoriels/avance/generique.pdf 1 Introduction La programmation générique - nouveauté la plus significative

Plus en détail

PARADIGME ORIENTÉ-OBJET

PARADIGME ORIENTÉ-OBJET PARADIGME ORIENTÉ-OBJET A programming paradigm that uses objects to design systems. Sébastien Adam Une introduction des concepts de base 2 Principes fondamentaux Modularité : vise à répartir les opérations

Plus en détail

Types de données en Java, comparaison avec Caml

Types de données en Java, comparaison avec Caml Types de données en Java, comparaison avec Caml par Denis Monasse, Lycée Louis le Grand 9 mai 2001 1 Les types élémentaires En Java, on dispose bien entendu des types élémentaires habituels : entiers,

Plus en détail

Eléments de syntaxe du langage Java

Eléments de syntaxe du langage Java c jan. 2014, v3.0 Java Eléments de syntaxe du langage Java Sébastien Jean Le but de ce document est de présenter es éléments de syntaxe du langage Java : les types primitifs, les opérateurs arithmétiques

Plus en détail

Support de Cours Christophe Dony Université Montpellier-II

Support de Cours Christophe Dony Université Montpellier-II Cours de base d Ingéniérie des applications objet. Généralités sur le langage Java - Modèle d exécution - Syntaxe Support de Cours Christophe Dony Université Montpellier-II 1 Le langage Java 1.1 Langage

Plus en détail

Fonctionnement du serveur Z39.50

Fonctionnement du serveur Z39.50 Fonctionnement du serveur Z39.50 Table des matières 1 Configuration du serveur...2 1.1 Comportement du serveur...2 1.2 Configuration de la traduction z39.50 -> base de données...2 1.3 Configuration du

Plus en détail

Programmation - Java - Fiches du Langage. Marie Beurton-Aimar

Programmation - Java - Fiches du Langage. Marie Beurton-Aimar Programmation - Java - Fiches du Langage Marie Beurton-Aimar Fiche Numéro 1 1.1 Structure d un programme Java Toutes les instructions se terminent par un ; Le nom du fichier qui contient une classe doit

Plus en détail

1.Programmation en Java : notions de base, orienté objet et héritage

1.Programmation en Java : notions de base, orienté objet et héritage Travaux pratique de Méthodologie et Langage de Programmation,, TP1 1 1.Programmation en Java : notions de base, orienté objet et héritage Cette séance de TP a pour objectif d'introduire à la programmation

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

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

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

Algorithmique et initiation à la programmation java

Algorithmique et initiation à la programmation java L3 Monnaie - Finance Algorithmique et initiation à la programmation java Première partie O. Auzende 2012-2013 1 Modalités Cours en amphithéâtre : les lundis de 12 h à 13 h 30 (amphi 3) o Deux fascicules

Plus en détail

PPOOGL. Florent de Dinechin. Java pour les nuls

PPOOGL. Florent de Dinechin. Java pour les nuls PPOOGL Florent de Dinechin Java pour les nuls Java en 30 minutes Introduction Grands principes Pour en finir avec l organisation Types de base et objets Le reste est dans le manuel PPOOGL 1 Introduction

Plus en détail

Les fichiers de commande

Les fichiers de commande Les fichiers de commande Fichiers ".bat" ou ".cmd" Un fichier de commande est un fichier texte contenant des commandes en mode invite de commande qui seront lues par l'interpréteur de commande COMMAND.COM

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

Environnement algorithmique et conventions

Environnement algorithmique et conventions 1 Environnement algorithmique et conventions Un algorithme est un maillon de la chaîne de développement d une application. Il est le lien indispensable entre l analyse et le développement final. Ce chapitre

Plus en détail

Précis de vocabulaire Orienté Objet

Précis de vocabulaire Orienté Objet Dernière Mise à jour : Mars 2007 Précis de vocabulaire Orienté Objet 1 Questions Expliquer et donner un exemple pour chacun des concepts suivants 1. Qu'est-ce qu'un objet? 2. Qu'est-ce qu'une classe? 3.

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 +Cours 2 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

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

Java - Historique. Une introduction à Java. Premier exemple. Aperçu de Java. Processus d obtention d un exécutable. Compilation/interprétation

Java - Historique. Une introduction à Java. Premier exemple. Aperçu de Java. Processus d obtention d un exécutable. Compilation/interprétation Java - Historique Une introduction à Java IFT 287 (Semaine 1) UNIVERSITÉ DE SHERBROOKE 1 Développé par Sun Microsystems en 1994 Inventeur James Gosling (canadien!) Objectif langage sûr (fortement typé)

Plus en détail

POO LES EXCEPTIONS LES EXCEPTIONS

POO LES EXCEPTIONS LES EXCEPTIONS CHAPITRE 7 : LES EXCEPTIONS Objectifs spécifiques 1. Introduire la notion d exception, les règles d utilisation et de définition des exceptions. 2. Distinguer entre les exceptions prédéfinies et les exceptions

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

Erreurs d'exécution (1/3)

Erreurs d'exécution (1/3) Erreurs d'exécution (1/3) Dans tout programme, il peut y avoir des erreurs d'exécution non critiques Exemple : le programme est en train de lire un fichier et il y a un problème d'accès au disque dur.

Plus en détail

POO 1/3 - Introduction à la Programmation Orientée Objet. Pierre Parrend IUT Lumière Lyon II, 2005-2006 pierre.parrend@univ-lyon2.

POO 1/3 - Introduction à la Programmation Orientée Objet. Pierre Parrend IUT Lumière Lyon II, 2005-2006 pierre.parrend@univ-lyon2. POO 1/3 - Introduction à la Programmation Orientée Objet Pierre Parrend IUT Lumière Lyon II, 2005-2006 pierre.parrend@univ-lyon2.fr Sommaire Les Langages de Programmation Premier Programme Les Objets Objets

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

Plan du cours. Syntaxe abstraite. Actions sémantiques Exemple : Analyseur d expressions arithmétiques Arbres de syntaxe.

Plan du cours. Syntaxe abstraite. Actions sémantiques Exemple : Analyseur d expressions arithmétiques Arbres de syntaxe. Plan du cours Syntaxe abstraite Martin Odersky 21 et 22 novembre 2005 version 1.0 1 2 3 Syntaxe abstraite Martin Odersky 1 de 31 Syntaxe abstraite Martin Odersky 2 de 31 Un analyseur syntaxique fait généralement

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

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

Le Langage Java et le Monde des Objets

Le Langage Java et le Monde des Objets . p.1 Le Langage Java et le Monde des Objets Les principes de la modélisation Orientée Objet. Qu est-ce qu une classe?. Les types de base. Utiliser les classes. Les tentacules de Java. . p.2 Bibliographie

Plus en détail

Cours 1. Contenu du cours : " Premières applications. " Compilation, Exécution, Chemin. " Affichage et saisie. " Types de données. " Flux de contrôle

Cours 1. Contenu du cours :  Premières applications.  Compilation, Exécution, Chemin.  Affichage et saisie.  Types de données.  Flux de contrôle Cours 1 1 Contenu du cours : " Premières applications " Compilation, Exécution, Chemin " Affichage et saisie " Types de données " Flux de contrôle " Applets " Arrays " OO de base Edition Le fichier texte

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

Résumé Introduction Programmation Java

Résumé Introduction Programmation Java Résumé Introduction Programmation Java Concepts Un programme : séquence, test conditionnel, boucles. Objets : Les objets Java modélisent les objets d un problème donné Classe : Les objets sont crées à

Plus en détail

HMIN111M Programmation en Java. Un aperçu des classes

HMIN111M Programmation en Java. Un aperçu des classes HMIN111M Programmation en Java Un aperçu des classes 1. Limites des types primitifs Programme de gestion des comptes bancaires 2 comptes par exemple (on ne connait pas les tableaux) Une classe Banque qui

Plus en détail

La Gestion des Exceptions

La Gestion des Exceptions La Gestion des Exceptions Les exceptions Les exceptions représentent le mécanisme de gestion des erreurs intégré au langage Java. Il se compose d'objets représentant les erreurs et d'un ensemble de troismotsclésquipermettentdedétecteretdetraiterceserreurs(try,

Plus en détail

Université Mohammed Premier Année universitaire 2011-2012. Correction de l examen écrit de la session ordinaire 18 Février 2012

Université Mohammed Premier Année universitaire 2011-2012. Correction de l examen écrit de la session ordinaire 18 Février 2012 Université Mohammed Premier Année universitaire 2011-2012 Faculté des Sciences Filière SMI Département de Mathématiques Module : POO Java et d Informatique Semestre : S5 Correction de l examen écrit de

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

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

Cours 1 : Introduction Générale + Objet I

Cours 1 : Introduction Générale + Objet I Organisation du cours Équipe pédagogique DUT Informatique S3 - Programmation Java Jean-Claude MARTIN MARTIN@LIMSI.FR Cours 1 : Introduction Générale + Objet I Jean-Claude MARTIN (Responsable, Cours, TD

Plus en détail

LES FICHIERS. 1-169169 JAVA Christine BONNET

LES FICHIERS. 1-169169 JAVA Christine BONNET 12 LES FICHIERS 1-169169 JAVA Christine BONNET LES FLOTS Package java.io La gestion des E/S s'effectue à l'aide des flots. Un stream (flot) représente un canal de communication ( écran, fichier, pipe,

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

Les exceptions. Cours 12. vous les avez pratiquées sans le savoir... ArrayIndexOfBoundsException NullPointerException ClassNotFoundException...

Les exceptions. Cours 12. vous les avez pratiquées sans le savoir... ArrayIndexOfBoundsException NullPointerException ClassNotFoundException... Cours 12 Les exceptions vous les avez pratiquées sans le savoir... ArrayIndexOfBoundsException NullPointerException ClassNotFoundException... F.Gayral 1 Les exceptions, vous connaissez... public class

Plus en détail

Cours1 +Cours 2. Structure d un programme et Compilation Notions de classe et d objet Syntaxe POO 1

Cours1 +Cours 2. Structure d un programme et Compilation Notions de classe et d objet Syntaxe POO 1 Cours1 +Cours 2 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

Plus en détail

Design Pattern (1/3) Design Pattern (2/3)

Design Pattern (1/3) Design Pattern (2/3) Design Pattern (1/3) Un pattern (ou design pattern) décrit : une situation constituant un problème souvent rencontré dans le développement d'applications une (ou plusieurs) solution(s) type(s) à ce problème,

Plus en détail

Correction langage Java

Correction langage Java MINISTÈRE DE L ÉCOLOGIE, DU DÉVELOPPEMENT DURABLE, DES TRANSPORTS ET DU LOGEMENT EXAMEN PROFESSIONNEL DE VÉRIFICATION D APTIDUDE AUX FONCTIONS DE PROGRAMMEUR Session 2010 Correction langage Java Langage:

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

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

Objectif du cours. Bases de la programmation. Plan de cette partie

Objectif du cours. Bases de la programmation. Plan de cette partie Objectif du cours Bases de la programmation Université de Nice - Sophia Antipolis Richard Grin Version 1.2.5 24/9/11 http://deptinfo.unice.fr/~grin Introduction à la programmation orientée objet pour pouvoir

Plus en détail

TP Compilation Analyse lexicale

TP Compilation Analyse lexicale TP Compilation Analyse lexicale Eric Ramat ramat@lisic.univ-littoral.fr 9 mai 2014 Durée : 6 heures 1 Introduction Le but de cet TP est de vous donner les bases nécessaires afin de pouvoir écrire votre

Plus en détail

Syntaxe du langage JAVA. Philippe Roose (IUT Bayonne) Olivier Dedieu (INRIA)

Syntaxe du langage JAVA. Philippe Roose (IUT Bayonne) Olivier Dedieu (INRIA) Syntaxe du langage JAVA Philippe Roose (IUT Bayonne) Olivier Dedieu (INRIA) Structure du langage Les types primitifs boolean(true/false), byte (1 octet), char (2 octets), short (2 octets), int (4 octets),

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

Université Paris Diderot ISIFAR Année 2008-2009. Exceptions et Classes Abstraites

Université Paris Diderot ISIFAR Année 2008-2009. Exceptions et Classes Abstraites Université Paris Diderot JAVA ISIFAR Année 2008-2009 TP n 7 - Correction Exceptions et Classes Abstraites Exercice 1 [Utilisation des Exceptions] La méthode parseint est spécifiée ainsi : public static

Plus en détail

Programmation objet en Java.

Programmation objet en Java. Programmation objet en Java. Didier Rémy 2001-2002 http://cristal.inria.fr/ remy/mot/7/ http://www.enseignement.polytechnique.fr/profs/informatique/didier.remy/mot/7/ Cours Exercices Slide 1 1. Classes,

Plus en détail

Introduction au langage Java

Introduction au langage Java Introduction au langage Java Nicolas Dumoulin nicolas.dumoulin@cemagref.fr Cemagref Laboratoire d ingénierie pour les systèmes complexes 2010 Notes aux lecteurs Ce document est un support de cours qui

Plus en détail

Une classe est une sorte de type de données définie par le programmeur Variables peuvent être de type classe

Une classe est une sorte de type de données définie par le programmeur Variables peuvent être de type classe Classe, Objet Variables locales Niveaux de visibilité (Encapsulation) Attributs et Méthodes Statiques Surcharge des Méthodes Transmission des Paramètres Paquetage Classes pour les types de base POO 1 Une

Plus en détail

Chapitre 1. 1.1 types primitifs. 1.2 Casting

Chapitre 1. 1.1 types primitifs. 1.2 Casting Chapitre 1 Généralités 1.1 types primitifs byte (1 octet) peut contenir les entiers entre -128 et +127. short (2 octets) contient les entiers compris entre -32768 et +32767. int (4 octet) va de -2*10e9

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

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

MANGUE Impression de données

MANGUE Impression de données MANGUE Impression de données 0. Préambule 1. Principe de Fonctionnement 2. Description des fichiers XML générés 2.1 DescriptionImpression.XML 2.2 Fichier XML généré 2.3 Exemples complets de balise et résultat

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

Programmation orientée objet

Programmation orientée objet Module 211 Programmation orientée objet Chapitre 3 : Les classes Les classes Membres de classe et membres d'instance Déclaration de classe Signature de classe Les champs Méthode de classe et méthode d'instance

Plus en détail

Les références et la mémoire

Les références et la mémoire Chapitre 3 Les références et la mémoire 3.1 Introduction En Java, pour déclarer une variable, il faut donner son nom, précédé du type qu on souhaite lui attribuer. Ces types peuvent être des types primitifs

Plus en détail

Université Mohammed Premier Année universitaire 2011-2012. Complément d exercices avec correction

Université Mohammed Premier Année universitaire 2011-2012. Complément d exercices avec correction Université Mohammed Premier Année universitaire 2011-2012 Faculté des Sciences Filière SMI Département de Mathématiques et d Informatique Module : POO Java Semestre : S5 Complément d exercices avec correction

Plus en détail

Introduction à la Programmation 1

Introduction à la Programmation 1 Introduction à la Programmation 1 Séance de cours/td Université Paris-Diderot Objectifs: Découverte du type String. Comprendre qu il y a des types différents. Maîtriser les expressions booléennes dans

Plus en détail

Cours 13. Les classes abstraites Les méthodes abstraites Les interfaces. F. Gayral 1

Cours 13. Les classes abstraites Les méthodes abstraites Les interfaces. F. Gayral 1 Cours 13 Les classes abstraites Les méthodes abstraites Les interfaces F. Gayral 1 Un exemple pour mieux comprendre Pas d'instanciation d'un humain : un humain, c'est - soit un homme - soit une femme Humain

Plus en détail

1 Notions de base 1.1 Structure d'un programme

1 Notions de base 1.1 Structure d'un programme 1 Notions de base 1.1 Structure d'un programme Le langage C++ contient le langage C : tout programme écrit en C à la norme ANSI doit pouvoir être compilé par un compilateur C++. C++ fait la diérence entre

Plus en détail

Java. Java Modeling Language (JML) Qu est-ce que JML? Java (suite) Conception par Contrat. Invariants, Pré-/Postconditions

Java. Java Modeling Language (JML) Qu est-ce que JML? Java (suite) Conception par Contrat. Invariants, Pré-/Postconditions Java Java Modeling Language (JML) Arnaud LANOIX Université Nancy 2 Master1 GL Langage de Programmation Orientée Objet développé par Sun Projet OAK (1991), Java (1995),...Java 1.5 (2004) http://java.sun.com/

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

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

Plan. Environnement Client/Serveur. Cours 6 Rappels Java (suite) Appel de méthode à distance. Utilité. static

Plan. Environnement Client/Serveur. Cours 6 Rappels Java (suite) Appel de méthode à distance. Utilité. static Plan Environnement Client/Serveur Cours 6 Rappels Java (suite) Appel de méthode à distance kn@lri.fr http://www.lri.fr/~kn 1 Rappels sur les systèmes d'exploitations / Communication par mémoire partagée

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 : Introduction Générale + Objet

Cours 1 : Introduction Générale + Objet Organisation du cours Équipe pédagogique L2 S4 2009 : 2010 Programmation Objet Jean-Claude MARTIN MARTIN@LIMSI.FR Cours 1 : Introduction Générale + Objet 10 cours de 1h30 o Jean-Claude MARTIN (MARTIN@LIMSI.FR)

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

Projet. Coloration lexicale et indentation de code Java

Projet. Coloration lexicale et indentation de code Java Université Paris Diderot Programmation Orientée Objet L3 Année 2011-2012 Projet Coloration lexicale et indentation de code Java Le but de ce projet est de développer un programme qui prend en entrée un

Plus en détail

Programmation orientée objet en langage JAVA

Programmation orientée objet en langage JAVA Programmation orientée objet en langage JAVA Connexion à une base de données avec JDBC Claude Duvallet Université du Havre UFR Sciences et Techniques 25 rue Philippe Lebon - BP 540 76058 LE HAVRE CEDEX

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

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

Cours 3 SDA et conception de logiciel. 1. Exemple d'analyse algorithmique n'utilisant que des tableaux

Cours 3 SDA et conception de logiciel. 1. Exemple d'analyse algorithmique n'utilisant que des tableaux Cours 3 SDA et conception de logiciel Les SDA servent à pouvoir construire des logiciels performants en cherchant à combiner des "briques" dont on sait qu'on pourra les implémenter en utilisant des techniques

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

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

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

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

Remise à niveau en programmation JAVA

Remise à niveau en programmation JAVA Remise à niveau en programmation JAVA Lotfi Chaari lotfi.chaari@enseeiht.fr 2013-2014 1 Introduction - Java est un langage de programmation orientée objet (POO) - Un programme Java est une série de classes

Plus en détail

Java. Partie 1 : QCM. Consignes pour le bons déroulement du devoir

Java. Partie 1 : QCM. Consignes pour le bons déroulement du devoir Consignes pour le bons déroulement du devoir - Ce document comporte un QCM et une partie où il faut écrire du code en - Marquez vos réponses au QCM sur la feuille de réponses fournie (notez que certaines

Plus en détail

JAVA. Illustration d UML et Introduction à la programmation «objet» Juillet 2004 Thierry Leydier Virtualité Réelle thierry.leydier@gmail.

JAVA. Illustration d UML et Introduction à la programmation «objet» Juillet 2004 Thierry Leydier Virtualité Réelle thierry.leydier@gmail. JAVA Illustration d UML et Introduction à la programmation «objet» Juillet 2004 Thierry Leydier Virtualité Réelle thierry.leydier@gmail.com Historique JAVA est issu d'un projet de recherche chez SUN (fin

Plus en détail

Sérialisation sur le système de fichiers. Gestion des exceptions en Java.

Sérialisation sur le système de fichiers. Gestion des exceptions en Java. Sérialisation sur le système de fichiers. Gestion des exceptions en Java. Christophe Gravier, Frédérique Laforest, Julien Subercaze Télécom Saint-Étienne Université Jean Monnet {pnom.nom}@univ-st-etienne.fr

Plus en détail

420KEL Petite révision v. 1,65. Petite révision

420KEL Petite révision v. 1,65. Petite révision Petite révision Quelques petits exercices pour vous rafraîchir la mémoire et vous remettre en forme. Dans les exercices pour lesquels on vous demande de programmer, cherchez à produire un résultat à la

Plus en détail

Mise à niveau en Java

Mise à niveau en Java Mise à niveau en Java Cours 1 Stéphane Airiau Université Paris-Dauphine Stéphane Airiau (Université Paris-Dauphine) - Java Cours 1 1 Aujourd hui Eléments de base Variables, opérateurs, type d une expression

Plus en détail