Cours 1: Java et les objets



Documents pareils
Programmation par les Objets en Java

Programmer en JAVA. par Tama

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

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

Java c est quoi? Java pourquoi?

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

as Architecture des Systèmes d Information

TP1 : Initiation à Java et Eclipse

Plan du cours. Historique du langage Nouveautés de Java 7

Java Licence Professionnelle CISII,

Une introduction à Java

JAVA TD0. Prise en main du langage Environnement de base JAVA 1

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

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

Tp 1 correction. Structures de données (IF2)

Polycopié Cours Programmation Orientée Objet sous Java Programme : Filière SMI S5

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

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Programmation en Java IUT GEII (MC-II1) 1

Package Java.util Classe générique

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Java Licence Professionnelle CISII,

PROGRAMMATION PAR OBJETS

Auto-évaluation Programmation en Java

Initiation à JAVA et à la programmation objet.

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

TP, première séquence d exercices.

Bases Java - Eclipse / Netbeans

Langage Java. Classe de première SI

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

Java c est quoi? Java. Java. Java : Principe de fonctionnement 31/01/ Vue générale 2 - Mon premier programme 3 - Types de Programme Java

Premiers Pas en Programmation Objet : les Classes et les Objets

Programmation Orientée Objet

TD3: tableaux avancées, première classe et chaînes

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

Utilisation d objets : String et ArrayList

Programmation Orientée Objet application au langage Java Version Novembre 2007

Objets et Programmation. origine des langages orientés-objet

INITIATION AU LANGAGE JAVA

1 Définition d une classe en Java

Chapitre I Notions de base et outils de travail

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

Environnements de développement (intégrés)

Programmation Orientée Objet

Annexe : La Programmation Informatique

Aide mémoire UML & Java 1ère partie : Introduction. marc.lemaire@u-cergy.fr

La carte à puce. Jean-Philippe Babau

ALGORITHMIQUE ET PROGRAMMATION ORIENTEE OBJET

JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.

TP1 : Initiation à Java et Eclipse

Programmation Objet Java Correction

Remote Method Invocation (RMI)

Corrigé des exercices sur les références

RN2-Programmation Orientée Objet - JAVA CH 1 Introduction à la POO et Java

Traitement de données

Programmation Orientée Objet Java

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

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

Java - la plateforme

Apprendre Java en 154 minutes

Polymorphisme, la classe Object, les package et la visibilité en Java... 1

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

Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2

Jacques Lonchamp. Conception. d applications en Java/JEE. Principes, patterns et architectures

Eclipse atelier Java

COMPARAISONDESLANGAGESC, C++, JAVA ET

Programmation avec des objets : Cours 7. Menu du jour

Programmation MacOSX / ios

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

TP1. Outils Java Eléments de correction

JAVA. Introduction à la programmation objet avec java 1/4. Nadir BOUSSOUKAIA

Chapitre 10. Les interfaces Comparable et Comparator 1

Chapitre 2. Classes et objets

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

TD/TP PAC - Programmation n 3

Programmation Orientée Objets Le Langage JAVA

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

La technologie Java Card TM

Applet pour visualiser les variables «automate» notifiées

Apprendre la Programmation Orientée Objet avec le langage Java (avec exercices pratiques et corrigés)

C++ Programmer. en langage. 8 e édition. Avec une intro aux design patterns et une annexe sur la norme C++11. Claude Delannoy

Facultés Universitaires Notre-Dame de la Paix. Conception et Programmation Orientées- Object

Utiliser Java sans BlueJ

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

Introduction au langage Java

UE Programmation Impérative Licence 2ème Année

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

IFT287 Exploitation de base de données relationnelles et orientées objet. Laboratoire Mon premier programme Java en Eclipse

ACTIVITÉ DE PROGRAMMATION

INF 321 : mémento de la syntaxe de Java

RMI le langage Java XII-1 JMF

Étude de l interopérabilité de deux langages de programmation basée sur la machine virtuelle de Java

Classe Interne, Anonyme & Enumération

Cours d initiation à la programmation en C++ Johann Cuenin

Flux de données Lecture/Ecriture Fichiers

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

Projet de Veille Technologique

Présentation. Au programme. Fonctionnement. A l issue de ce module vous devriez...

Derrière toi Une machine virtuelle!

Transcription:

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/ : sujets des TP, pointeurs utiles, polys, ces transparents, etc. java.sun.com (en réalité www.oracle.com/technetwork/java) : logiciel et documentation, dont JRE (Java Runtime Environment) : machine java + bibliothèques, ce qu il faut pour exécuter les programmes java JDK (Java Development Kit) : compilateur et outils pour développer les programmes contient un JRE la doc en ligne de l API (docs.oracle.com/javase/7/docs/api) avec le JDK n importe quel éditeur de textes, mais JDK + eclipse (ou JDK + NetBeans) pour plus d efficience henri.garreta.perso.luminy.univmed.fr : diverses ressources, dont : «Le langage Java» (poly très complet) c H. Garreta, 2014 IHM et Java 1 / 21 c H. Garreta, 2014 IHM et Java 2 / 21 POO, esprit de la chose POO, esprit de la chose (suite) un programme est un ensemble d objets un objet est déterminé par un état et un comportement état : donné par les valeurs d un ensemble de données membres, champs ou variables d instance comportement : implémenté par un ensemble de fonctions membres ou méthodes d instance une classe est la description d une sorte d objets de même type, les instances de la classe il y a aussi des données et des fonction non attachées aux objets : les données membres static ou variables de classe les fonctions membres static ou méthodes de classe les objets interagissent en s envoyant des messages un message a toujours un destinataire un message dit quoi faire, mais non comment : il incombe au destinataire du message de savoir les détails que prend chez lui l exécution du message indice : si p et q représentent des points r = distance(p, q) s écrit plutôt r = p.distance(q) l ensemble des messages qu un objet accepte constitue son interface l interface est la partie publique de l objet ; elle doit être simple, robuste, documentée c H. Garreta, 2014 IHM et Java 3 / 21 c H. Garreta, 2014 IHM et Java 4 / 21

Structure générale d un fichier source package En Java, il n y a pas des directives pour le préprocesseur (lignes commençant par #) notamment, il n y a pas besoin de #include des fichiers de spécification («.h») et des fichiers d implémentation («.cpp») séparés des variables globales des fonctions autonomes Fichier Liste.java package mesoutils.meslistes; import java.outil.vector; import java.awt.*; class Maillon { déclaration des membres (variables et fonctions) de la classe Maillon public class Liste { déclaration des membres (variables et fonctions) de la classe Liste recommandation : une seule classe par fichier obligation : une seule classe «public» par fichier c H. Garreta, 2014 IHM et Java 5 / 21 subdivision de l espace des noms, à la manière des namespace Fichier Liste.java package mesoutils.meslistes; class Maillon { public class Liste { le nom complet de la classe Liste est : l instruction package doit être la première du fichier mesoutils.meslistes.liste si absente, la classe est dans le «paquet sans nom» (unnamed package) une classe publique (qualifiée public) est accessible partout une classe non publique l est uniquement dans les autres classes du même package pour une classe publique, le package et le nom imposent le chemin du fichier source : la classe mesoutils.meslistes.liste doit se trouver dans le fichier./mesoutils/meslistes/liste.java c H. Garreta, 2014 IHM et Java 6 / 21 import Compiler et exécuter une classe définition d une certaine classe : package mesoutils.meslistes; public class Liste { utilisation de cette classe dans le même package : Liste L = new Liste(); utilisation de cette classe dans un autre package : mesoutils.meslistes.liste L = new mesoutils.meslistes.liste(); dans ce cas, import permet d utiliser le nom court : import mesoutils.meslistes.liste; Liste L = new Liste(); forme «collective» : import mesoutils.meslistes.*; cela désigne toutes les classes du paquet mesoutils.meslistes import n est pas «#include» c H. Garreta, 2014 IHM et Java 7 / 21 Les exécutables Java sont de plusieurs sortes : les applications s exécutent sur une machine virtuelle Java qui, elle-même, s exécute sur un couple (processeur, système), les applets s exécutent dans les navigateurs web, les servlets s exécutent dans les serveurs d applications. les applications Java sont compilées et interprétées : le compilateur produit un bytecode que la machine java interprète l application la plus simple (en rouge, les éléments invariables) Fichier Bonjour.java public class Bonjour { public static void main(string[] args) { System.out.println("Bonsoir!"); compilation : javac Bonjour.java exécution : java Bonjour Bonsoir! c H. Garreta, 2014 IHM et Java 8 / 21

Java, le langage Notion de référence en Java Sauf indication contraire, Java = C : même syntaxe, mêmes concepts de base avec la surcharge des noms des fonctions, comme en C++ Types primitifs (simples) : byte (1 octet) short (2 octets) int (4 octets) long (8 octets) float (4 octets) double (8 octets) char boolean Tous les entiers sont «avec signe». De plus Les types primitifs obéissent à la sémantique de l accès par valeur Types objets : Exemple : x == y signifie «x et y ont même valeur» tableaux chaînes de caractères (String, une classe avec privilèges) toutes les autres classes Les objets obéissent à la sémantique de l accès par référence Exemple : x == y signifie «x et y ont même adresse» référence = pointeur géré discrètement par Java. Exemple (on suppose avoir défini une classe Point) : Point p; p contiendra une référence sur un objet Point. Pour l instant, p contient null ou «non initialisé» instantiation (création) d un objet : p = new Point(25, 50); on peut aussi associer déclaration et instantiation : Point q = new Point(100, 200); Maintenant p pointe un morceau de mémoire contenant (au moins) les coordonnées (25,50). désignation des membres (sous réserve que x et distance soient membres de la classe Point et qu on ait le droit de les mentionner) p.x p.distance(q) ( en C++ cela s écrirait Point *p; puis p->x et p->distance(q) ) les références sont modifiables. Par la suite, on pourra écrire : p = new Point(300, 0); la précédente valeur de p est «oubliée» c H. Garreta, 2014 IHM et Java 9 / 21 c H. Garreta, 2014 IHM et Java 10 / 21 Tableaux Chaînes de caractères Déclaration : UnType tab[]; ou UnType[] tab; (ici tab vaut null) Création du tableau : tab = new UnType[nombre d éléments]; Accès au i eme élément : tab[i] Nombre d éléments du tableau : tab.length Un exemple : public class Echo { public static void main(string args[]) { for (int i = 0; i < args.length; i++) System.out.println(i + " : " + args[i]); javac Echo.java java Echo poids 200+30 au revoir 0 : poids 1 : 200+30 2 : au revoir c H. Garreta, 2014 IHM et Java 11 / 21 Les objets String représentent des chaînes de caractères immuables. Notation : String s = "Bonjour"; Concaténation : s + " à tous" "Bonjour à tous" Propriété remarquable : si seul exp 1 est de type String exp 1 + exp 2 exp 1 + conversionenstring(exp 2) exemple : System.out.println("x = " + x); Comment ça marche? Deux cas : a) si exp 2 est d un type primitif exp 1 + exp 2 exp 1 + String.valueOf(exp 1) b) si exp 2 est un objet exp 1 + exp 2 exp 1 + exp 2.toString() (tous les objets possèdent une telle méthode tostring()) c H. Garreta, 2014 IHM et Java 12 / 21

Classes, variables, méthodes Une classe simple En Java il n y a pas : des variables ou des méthodes définies en dehors de toute classe des méthodes qualifiées inline le compilateur se charge de détecter certaines méthodes qui le méritent des classes ou méthodes amies (friend) mais être du même paquet est une forme d amitié d opérateur :: pour la résolution de portée ; au lieu de UneClasse::unMembre on écrit UneClasse.unMembre c H. Garreta, 2014 IHM et Java 13 / 21 void placer(int a, int b) { x = a; y = b; double distance(point q) { int dx = x - q.x; int dy = y - q.y; return Math.sqrt(dx * dx + dy * dy); public String tostring() { return "(" + x + "," + y + ")"; exemple d emploi : Point p; p = new Point(); p.placer(10, 20); System.out.println("p : " + p); p : (10,20) c H. Garreta, 2014 IHM et Java 14 / 21 Le pointeur this Constructeurs void placer(int x, int y) { double distance(point q) { int dx = this.x - q.x; int dy = this.y - q.y; return Math.sqrt(dx * dx + dy * dy); public String tostring() { return "(" + this.x + "," + this.y + ")"; exemple d emploi : Point p; p = new Point(); p.placer(10, 20); System.out.println("p : " + p); p : (10,20) c H. Garreta, 2014 IHM et Java 15 / 21 Point(int x, int y) { Point(int x) { test de la validité de x et 0 this.y = 0; Point() { this.x = this.y = 0; emploi : Point p = new Point(10, 20); Point q = new Point(30); Point r = new Point(); c H. Garreta, 2014 IHM et Java 16 / 21

Collaboration entre constructeurs Construction par défaut, destruction des objets Point(int x, int y) { Point(int x) { this(x, 0); Point() { this(0, 0); emploi : Point p = new Point(10, 20); Point q = new Point(30); Point r = new Point(); Constructeur par défaut : si le programmeur n a écrit aucun constructeur, alors le compilateur fournit le constructeur sans argument qui consiste à initialiser tous les champs avec 0 (ou 0.0, ou null). L écriture d un constructeur quelconque suspend ce mécanisme. Destruction des objets : il n y a rien à faire, la machine Java s en occupe. Autrement dit : quand un objet n est plus utile il suffit de l «oublier» Point p = new Point(x1, x1); p = new Point(x2, x2); mécanisme du garbage collector, ou nettoyeur de mémoire déclenchement lorsque la mémoire manque ou la machine est oisive 1 ) marquage des cellules occupées par des objets accessibles 2 ) récupération des cellules non marquées : chaînage, parfois regroupement c H. Garreta, 2014 IHM et Java 17 / 21 c H. Garreta, 2014 IHM et Java 18 / 21 Droits d accès Droits d accès, exemple Quatre niveaux de visibilité : public class UneClasse { le membre est accessible dans private int x; les méthodes de sa classe exclusivement int y; les méthodes de sa classe et celles des autres classes du même paquet protected int z; les méthodes de sa classe, des classes du même paquet et des sous-classes public int t; les méthodes de n importe quelle classe private public Point(int x, int y) { test de la validité de x et y public int getx() { return x; public int gety() { return y; public void setx(int x) { test de la validité de x public void sety(int y) { test de la validité de y this.y = y; accesseurs (getters) mutateurs (setters) c H. Garreta, 2014 IHM et Java 19 / 21 c H. Garreta, 2014 IHM et Java 20 / 21

Membres static et final, exemple Fichier Truc.java public class Truc { int valeur; final int rang; static int nombredetrucs; Variable d instance : chaque instance en a son propre exemplaire. Constante d instance : chaque instance en a une, dont on ne peut pas modifier la valeur. Variable de classe : il en existe un seul exemplaire, accessible par toutes les instances. static final int VAL_MAX = 100; Constante de classe : un seul exemplaire, immuable (analogue à #define VAL_MAX 100 de C++) public Truc(int valeur) { assert valeur < VAL_MAX; this.valeur = valeur; rang = nombredetrucs; nombredetrucs++; c H. Garreta, 2014 IHM et Java 21 / 21