Académique Documents
Professionnel Documents
Culture Documents
Gnralits sur le Langage Java et lments syntaxiques....................................................................1 Introduction......................................................................................................................................1 Genralit sur le langage Java..........................................................................................................1 Syntaxe de base du Langage.............................................................................................................2 Les mot clef private et public ...............................................................................................2 Entit de classe et Entit d'instance en Java.....................................................................................3 Interface et implmentation..............................................................................................................3 Exemple Hello World .................................................................................................................4 Types primitifs en Java.....................................................................................................................4 Interprtation des oprateurs =, ==...................................................................................................5 Les tableaux en Java. .......................................................................................................................6 Dtail syntaxique sur les tableaux,...................................................................................................7 Ce document nest pas un polycopi, cest seulement un rsum des principales notions abordes en cours, il vient en complment du cours damphi et ne contient pas toutes les notions et les illustrations qui ont t prsentes.
Introduction
Un programme doit satisfaire plusieurs critres de qualits comme : Lisibilit, Modularit, Efficacit, Robustesse, Extensibilit, Scurit. Cependant certains de ces critres sont antagonistes comme par exemple, extensibilit et scurit. De fait, la programmation s'apparente plus un art qu' une vritable science. Il n'existe pas un meilleur programme dans l'absolu, simplement il existe des programmes qui maximisent certains objectifs.
de concept prsent dans UML comme la notion d'interface. Hritage multiple de code est abandonn, ni un plus ni un moins par contre l'hritage priv n'est pas implment ce qui est dommage. Multi threaded Prsence d'un Ramasse Miettes (garbage collector). Environnement de programmation JDK Complet de l'image au son en passant par le rseau. AWT Son Mcanisme de rflexion (les objets, les types, les services sont considrs comme des objets de premire classe).
l'information. L'accs l'information en Java est contrl par l'utilisation de 4 mots clefs:
Public toute entit qui contient la classe peut accder (lecture/criture) l'information publique. Protected seules les classes dfinies dans le mme package ou qui hritent de la classe peuvent avoir accs cette information. Rien : dans ce cas seules les classes dfinies dans le mme package peuvent accder cette information. Private seules les entits dfinis l'intrieur de la paire d'accolades qui dfinit la classe peut avoir accs une information prive.
Pour l'instant nous ne pouvons aborder que les deux mots clefs private et public. Pour cela on peut les rapprocher des notions abordes en C.
public static , elles ressemblent d'une certaines faon aux entits dclares prsentent dans le fichier.h . Elles sont rapprocher des fonctions globales ou des variables globales dclares en C. private static , elles ressemblent d'une certaine faon aux entits dclares prsentent dans le fichier. C . Elles sont rapprocher des fonctions ou variables locales d'un modules Les variables ou services prcds pas private static peuvent tre rapproches des variables ou des fonctions locales un module C. Dans ce cas, elles sont prcdes du mot clef static et elles sont dclars dans le fichier.c du module. Entits dinstances : Ces entits ne sont pas prcdes du mot clefs static, elles correspondent aux champs dune structure C. On distinguera les champs qui ne sont pas des pointeurs de fonctions et qui reprsentent les champs structuraux, des champs qui sont des pointeurs de fonctions qui reprsentent des champs comportementaux. Ces entits sont assimilables aux structures qui sont prsentes dans le point C. Nous dvelopperons ces points dans les prochains cours.
Interface et implmentation.
Nous retrouvons en Java les mmes notions que pour un module C: Interface : L'ensemble des informations qui peuvent tre l'extrieur d'un module. En principe, les informations contenues dans l'interface ce rsume un ensemble de services, on parle dans ce cas, d'interface fonctionnelle public. La proprit importante lie cette notion est celle de compatibilit ascendante de l'interface. Cette proprit demande ce que les ensembles qui taient valables un instant T0 continue un instant T1 postrieur T0. 3
Cette proprit concerne aussi bien les services que les variables.
Implmentation : L'ensemble des informations (y compris le code) qui sont ncessaires l'implmentation des services prsents dans l'interface fonctionnelle public. L'implmentation n'est qu'un choix informatique temporaire qui doit voluer et qui est en partie li au degrs de maturit du module.
Comme l'implmentation d'une classe est amene voluer et que l'interface fonctionnelle public ne peut crotre qu'en respectant la compatibilit ascendante, il est ncessaire de sparer clairement l'interface fonctionnelle de l'implmentation d'un module. Car si une partie de l'implmentation est prsente l'intrieur de l'interface fonctionnelle, cette partie de l'implmentation est dfinitivement fixe car la proprit de compatibilit ascendante bloquera l'volution du module.
Le premier exemple de classe Java, le fameux Hello public class Hello { public static void main(String []argv) { String s = "Hello"; System.out.printl(s); } } Les diffrents lments syntaxiques du programme sont: 1. La classe Hello est une classe publique elle doit donc tre dfinie dans le fichier Hello.java . 2. Si on veut excuter cette application Java il faut excuter la suite de commande javac Hello.java java Hello En java, la notion de programme principal est diffrente de celle du langage C. Il peut y avoir plusieurs occurrences
Les types primitifs sont les suivant: byte(8 bits), short(16 bits), int (32 bits), long (64 bits), float (32 bits), double (64 bits), char (16 bits), boolean (1 bit). Pour les types primitifs les bits constituants la variable reprsente un codage de la valeur de ces types primitifs. Par exemple, la dclaration short i = 3; crit dans la variable i le codage 0x03 Type non primitifs en Java. Tous les types qui ne sont des types primitifs seront associs une classe ou une interface. Nous dirons alors que les types non primitifs servent rfrencer ou adresser des objets Contrairement aux types primitifs les variables associes ces types contiendront seulement une adresse qui rfrencera le vritable objet physique. Si en Java, il n'existe pas de pointeurs visibles, toutes les variables dclares avec un type non primitifs sont en ralits associes des pointeurs. Par exemple, la dclaration : String s = Une chaine s'interprte de la manire suivante, 1. cration d'un objet de type String en utilisant la constante littrale Une chane , A une adresse mmoire par exemple 0XAAFF. 2. La variable s est une variable qui rfrence un objet de type String (plus exactement de type compatible). La valeur de la variable s est celle de l'adresse de l'objet rfrenc c'est dire 0XAAFF. A lexception des types primitifs, les variables ne reprsentent que des rfrences des entits (objets), nous allons voir que dans la section suivante, laffectation sexprime comme un changement de rfrence et non un changement de contenu de lobjet. Il sagit sune simple raffectation de pointeur.
indirection pour accder l'information. Un exemple de code, pour illustrer une utilisation d'une matrice triangulaire infrieure. Exemple de Code : public class Vecteur1 { public static void main (String []argv) { int [][] tab; tab = new int[3][]; for(int i=0; i< tab.length; i++) { tab[i] = new int[i+1]; } for(int i=0; i< tab.length; i++) for(int j= 0; j < tab[i].length;j++) { tab[i] [j]= i+j+1; } for(int i=0; i< tab.length; i++) { System.out.println(" "); for(int j= 0; j < tab[i].length;j++) { System.out.print(" " + tab[i] [j]); } } } }
} }