IFT 6800 Atelier en Technologies d’information

Slides:



Advertisements
Présentations similaires
Premier programme en C :
Advertisements

Introduction au Langage C,C++
A RECUPERER EN ENTRANT Le polycopié de Caml Partie 1
Rappels C.
Langage C# et Plate-forme .NET
SI3 MAM3 Hydro Nathan Cohen Igor Litovsky Christophe Papazian
Introduction à la Programmation Orientée Objet Retour sur les principaux concepts SI3 MAM3 Hydro Nathan Cohen
La classe String Attention ce n’est pas un type de base. Il s'agit d'une classe défini dans l’API Java (Dans le package java.lang) String s="aaa"; // s.
Approfondissement du langage
(Classes prédéfinies – API Java)
L’ interruption de boucle
Cours n°2M2. IST-IE (S. Sidhom) UE 303 Promo. M2 IST-IE 2005/06 Conception dun système d'information multimédia Architecture trois-tiers : PHP/MySQL &
C.
Programmer en JAVA par Tama
JAV - TD 6 Structures de données JAVA
Stéphane Frénot - - Dpt Télécommunications IJA20 JAVA Le cœur du langage.
TD 1 IJA Introduction Objet, méthode, attribut Classe, instance
IJA - TD 2 Bases du langage
Algorithme et programmation
Chapitre III Héritage (début)
Introduction à la programmation (420-PK2-SL) cours 12 Gestion des applications Technologie de linformation (LEA.BW)
Récursivité.
44 Contrôle du déroulement du programme. 4-2 Objectifs A la fin de ce cours, vous serez capables de : Utiliser les constructions de prise de décision.
Les méthodes en java Une méthode est un regroupement d’instructions ayant pour but de faire un traitement bien précis. Une méthode pour être utilisée.
RESUMES Module II1 SOMMAIRE CYCLE 1 : Saisir – Afficher – Données
33 Types de données et opérateurs. 3-2 Objectifs A la fin de ce cours, vous serez capables de : Décrire les types de données primitives Déclarer et initialiser.
Question Comment le compilateur fait-il pour évaluer une expression telle que : A + B lorsque A et B sont des données de types arithmétiques différents.
Introduction à la programmation (Java)
Langage Oriente Objet Cours 2.
Base de programmation Script unity en c#.
Les pointeurs Modes d’adressage de variables. Définition d’un pointeur. Opérateurs de base. Opérations élémentaires. Pointeurs et tableaux. Pointeurs et.
Structures de données IFT Abder Alikacem La classe string Département dinformatique et de génie logiciel Édition Septembre 2009 Département dinformatique.
Révision des notions OO et Java Semaine 1 Jian-Yun Nie.
Introduction à la Programmation Orientée Objet Retour sur les principaux concepts SI3 MAM3 Hydro Nathan Cohen
Principes de programmation
Contrôle de types Les types en programmation Expressions de types Un contrôleur de types Equivalence de types Conversions de types Généricité.
1 Les paquetages («packages»). 2 L'objectif avec les paquetages («packages») est de rendre accessibles aux utilisateurs des classes définies par d'autres.
1 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 3 : Classes et Objects.
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
COURS DE PROGRAMMATION ORIENTEE OBJET :
COURS DE PROGRAMMATION ORIENTEE OBJET :
CSI 1502 Principes fondamentaux de conception de logiciels
C++ : variables Déclaration de variables
Les Opérateurs Ils régissent toutes les opérations ou transformations sur les valeurs des variables. Opérateur d'affectation Opérateurs arithmétiques Opérateurs.
L’essentiel du langage C
2.1 - Historique Chapitre 2 : Introduction au langage C++
Cours 1 1 Java. Cours 1 2 Plan général 1.Introduction 2.Les types primitifs, évaluation d’expressions 3.Instructions for, if…. 4.Introduction de l’objet,
Ecrire des expressions arithmétiques et logiques
ALGORITHMIQUE ET PROGRAMMATION C
Un survol du language C.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Les erreurs communes en Java.
Tutorat en bio-informatique
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 3 – Classes et objets en Java Master 1 SIGLIS1 Java Lecteur - Chapitre 3 Classes et objets en Java.
Strings et Tableaux en Java
Les classes et les objets Les données finales class A { … private final int n = 20 ; // la valeur de n est définie dans sa déclaration … } class A { public.
Cours LCS N°4 Présenté par Mr: LALLALI
IUT du Limousin L.U.P Michel Vergnaud Programmation Objet - Java.
Introduction au langage JAVA
Cours 4 (14 octobre) Héritage. Chapitre III Héritage.
1 Programmation Avant-propos. 2 Programmation / Avant-propos  Programmation Ensemble des activités permettant l'écriture de programmes informatiques.
Les bases de l’algorithmique
Meriem BENHADDI FSTG Marrakech
PRO-1027 Programmation Scientifique en C
Présentation Sur Java Serhani Mohamed Adel Septembre 2001.
pour les programmeurs en C++ Java 2 Part 1 3 Histoire de Java Projet de connexion des machines: 1991 Le nom Java a été introduit dans un café Développé.
Philippe Gandy - 8 septembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Philippe Gandy - 22 septembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Philippe Gandy – 10 novembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
BlueJ_III 1 Java, les objets : tout de suite ! Interaction entre objets Notes de cours associées au chapitre 3 tutorial BlueJ
C++ BY AURÉLIEN MODULO MARION. PLAN DES TROIS PRÉSENTATIONS C++ avancé C++ orienté objet Bases de C++
Transcription de la présentation:

IFT 6800 Atelier en Technologies d’information Le langage de programmation Java chapitre 2 : Structure du langage Java

Premier programme: "Factorielle.java" /* Mon premier programme Java */ public class Factorielle { public static double factorielle(int x) { if (x < 0) return 0.0; double fact = 1.0; while (x > 1) { fact = fact * x; x = x - 1; } return fact; public static void main(String[] args) { int entree = Integer.parseInt(args[0]); double resultat = factorielle(entree); System.out.println(resultat);

Un premier programme (2) Pour compiler le programme précédent, il faut taper: phobos% javac Factorielle.java La compilation d'un fichier ".java" produit un fichier ".class" dans le même répertoire. Pour exécuter le programme précédent, il faut taper: phobos% java Factorielle 4 24.0

Structure d'un fichier Java Chaque fichier Java doit contenir la définition d'une classe, portant le même nom que celui du fichier (attention aux minuscules/majuscules). C'est pourquoi on ne distinguera pas la classe du fichier qui contient sa définition. Pour pouvoir être exécutée de cette façon, une classe doit contenir une méthode statique appelée "main".

Type de données Java offre les types élémentaires suivants: boolean true/false char Caractère Unicode (sur 16 bits) byte Octet signé short Entier 16-bits signé int Entier 32-bits signé long Entier 64-bits signé float Nombre à point flottant (sur 32-bits) double Nombre à point flottant (sur 64 bits) De plus, Java offre le type String pour manipuler les chaînes de caractères. Donc, ne pas utiliser un tableau de caractères...

Type de données (2) Tableaux d'éléments de même type byte[] tableauByte; int[] fibonacci = { 1, 1, 2, 3, 5, 8, 13, 21 }; String[] listeAdresses = new String[4]; La taille d'un tableau se définit soit par le nombre d'éléments qui l'initialisent, soit à l'allocation. L'accès aux éléments d'un tableau se fait comme en C. x = x + fibonacci[3]; listeAdresses[i] = "1, place du Café, JavaTown" Le nombre d'éléments d'un tableau s'obtient par l'attribut length (en lecture seulement). for (i = 0; i < tableauByte.length; i++)

Opérateurs La plupart ressemblent à ceux qu'on retrouve en C: Arithmétiques: * / % + - ++ -- Logiques: ! || && Bits: ~ | & ^ << >> Relationnels: < <= == =! >= > Conditionnels: ?: Assignation: = *= /= %= += -= <<= >>= &= ^= |= Quelques nouveaux venus: Concaténation de chaînes: + Décalage de bits vers la droite, sans extension de signe: >>> ...et son correspondant avec assignation: >>>= Les opérateurs & et | peuvent aussi s'appliquer sur des booléens. Dans ce cas, les 2 opérandes seront toujours évaluées.

Énoncés Les énoncés Java ressemblent aussi beaucoup à ceux qu'on retrouve en C: Expression Étiquette Déclaration de variables Conditions: if, select/case Boucles: while, do, for Altérations de l'exécution: break, continue, return Quelques particularités Les déclarations peuvent se faire n'importe où dans une méthode. Les énoncés break et continue peuvent accepter une étiquette comme paramètre, précisant la boucle qu'ils affectent.

1. Structure du langage

Structure du langage Les types primitifs Boolean (true/false), byte (1 octet), char (2 octets), short (2 octets), int (4 octets), long (8 octets), float (4 octets), double (8 octets). Les variables peuvent être déclarées n'importe où dans un bloc. Les affectations non implicites doivent être castées (sinon erreur à la compilation). int i = 258; long l = i; // ok byte b = i; // error: Explicit cast needed to convert int to byte byte b = 258; // error: Explicit cast needed to convert int to byte byte b = (byte)i; // ok mais b = 2

Structure du langage Les structures de contrôle et expressions Essentiellement les mêmes qu'en C if, switch, for, while, do while ++, +=, &&, &, <<, ?: Plus les blocs labelisés UN: while(...) { DEUX: for(...) { TROIS: while(...) { f (...) continue UN; // Reprend sur la première boucle while if (...) break DEUX; // Quitte la boucle for continue; // Reprend sur la deuxieme boucle while }

Structure du langage Les tableaux Déclaration int[] array_of_int; // équivalent à : int array_of_int[]; Color rgb_cube[][][]; Création et initialisation array_of_int = new int[42]; rgb_cube = new Color[256][256][256]; int[] primes = {1, 2, 3, 5, 7, 7+4}; array_of_int[0] = 3 Utilisation int l = array_of_int.length; // l = 42 int e = array_of_int[50]; // Lève une ArrayIndexOutOfBoundsException

Exceptions(1) Lorsqu'une méthode Java rencontre une situation qu'elle ne peut traiter, elle lance une exception grâce à l'énoncé throw. if (index < 0) throw new ArrayOutOfBoundsException(); Une exception est un objet, une instance d'une sous-classe de java.lang.Exception. Une méthode en amont peut attraper l'exception, permettant une gestion des erreurs plus souple qu'en C, grâce aux énoncés try et catch.

Exceptions(2) Exemple: try { ...code susceptible de générer une exception } catch (ArrayOutOfBoundsException e) { ...actions à faire pour cette exception catch (IOException e) ...regroupe toutes les exceptions d'entrée/sortie catch (Exception e) ...toutes les autres exceptions

Structure du langage Les exceptions (3) Elles permettent de séparer un bloc d'instructions de la gestion des erreurs pouvant survenir dans ce bloc. try { // Code pouvant lever des IOException ou des SecurityException } catch (IOException e) { // Gestion des IOException et des sous-classes de IOException catch (Exception e){ // Gestion de toutes les autres exceptions

Structure du langage Les exceptions (4) Ce sont des instances de classes dérivant de java.lang.Exception La levée d'une exception provoque une remontée dans l'appel des méthodes jusqu'à ce qu'un bloc catch acceptant cette exception soit trouvé. Si aucun bloc catch n'est trouvé, l'exception est capturée par l'interpréteur et le programme s'arrête. L'appel à une méthode pouvant lever une exception doit : soit être contenu dans un bloc try/catch soit être situé dans une méthode propageant (throws) cette classe d'exception Un bloc (optionnel) finally peut-être posé à la suite des catch. Son contenu est exécuté après un catch ou après un break, un continue ou un return dans le bloc try

Structure du langage Les unités de compilation Le code source d'une classe est appelé unité de compilation. Il est recommandé (mais pas imposé) de ne mettre qu'une classe par unité de compilation. L'unité de compilation (le fichier) doit avoir le même nom que la classe qu'elle contient.

Structure du langage Les packages (1) Un package regroupe un ensemble de classes sous un même espace de 'nomage'. Les noms des packages suivent le schéma : name.subname ... Une classe Watch appartenant au package time.clock doit se trouver dans le fichier time/clock/Watch.class Les packages permettent au compilateur et à la JVM de localiser les fichier contenant les classes à charger. L'instruction package indique à quel package appartient la ou les classe(s) de l'unité de compilation (le fichier).

Structure du langage Les packages (2) Les répertoires contenant les packages doivent être présents dans la variable d'environnement CLASSPATH En dehors du package, les noms des classes sont : packageName.className L'instruction import packageName permet d'utiliser des classes sans les préfixer par leur nom de package. Les API sont organisées en package (java.lang, java.io, ...)

Structure du langage Les packages (3) CLASSPATH = $JAVA_HOME/lib/classes.zip;$HOME/classes ~dedieu/classes/graph/2D/Circle.java package graph.2D; public class Circle() { ... } ~dedieu/classes/graph/3D/Sphere.java package graph.3D; public class Sphere() { ... } ~dedieu/classes/paintShop/MainClass.java__________________________________ package paintShop; import graph.2D.*; public class MainClass() { public static void main(String[] args) { graph.2D.Circle c1 = new graph.2D.Circle(50) Circle c2 = new Circle(70); graph.3D.Sphere s1 = new graph.3D.Sphere(100); Sphere s2 = new Sphere(40); // error: class paintShop.Sphere not found }

API standard Les classes de l'API standard se regroupent en "packages". Parmi les plus utilisés, on retrouve: java.applet Création et communication avec une applet java.awt.* Interface graphique java.io Entrée/sortie java.lang.* Éléments du langage java.math Arithmétique sur grands entiers java.net Télécommunications via socket java.security.* Gestion de clés et de certificat java.text Formats de message java.util.* Utilitaires javax.swing.* Nouvelle interface graphique

API standard (2) Pour utiliser une classe de l'API à l'intérieur d'une de nos classes, on a 3 possibilités: On peut utiliser le nom complet de la classe. java.io.FileInputStream fis; On peut importer la classe. Tous les symboles exportés par la classe deviennent accessibles sans avoir à les préfixer par le nom du "package". import java.net.Socket; On peut importer d'un seul coup toutes les classes d'un "package". import java.math.*; Le "package" java.lang est importé par défaut. Si 2 classes de 2 "packages" différents portent le même nom, il faudra quand même utiliser leur nom complet pour les différencier.

Références Thinking in JavaB. Eckel. http://www.EckelObject.com/Eckel http://www.javasoft.com : Site officiel Java (JDK et doc.) http://www.javaworld.com : Info sur Java http//www.gamelan.com : applications, applets, packages, ... http://www.jars.com : idem http://www.blackdown.com : Java pour linux