Chapitre 2: Objets et Types de base Présentation pour Java Software Solutions Foundations of Program Design Deuxième Edition par John Lewis et William.

Slides:



Advertisements
Présentations similaires
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.
Advertisements

GEF 243B Programmation informatique appliquée Expressions et opérateurs §
GEF 243B Programmation informatique appliquée Expressions et opérateurs.
Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Types, variables et constantes.
GEF 243B Programmation informatique appliquée Expressions de type mixte et blocs §
Approfondissement du langage
(Classes prédéfinies – API Java)
C.
Les attributions de valeur (le signe =). Dans cette présentation, nous allons tenter de représenter ce qui se passe dans la mémoire de lordinateur quand.
ESIEE Paris © Denis BUREAU I N Initiation à la programmation avec le langage Java.
Principes de programmation (suite)
Introduction à la programmation (420-PK2-SL) cours 12 Gestion des applications Technologie de linformation (LEA.BW)
Partie 1 Etude de l'existant
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.
Expressions et assignations
RESUMES Module II1 SOMMAIRE CYCLE 1 : Saisir – Afficher – Données
IFT1025, Programmation 2 Jian-Yun Nie
Introduction au paradigme objet Concepts importants surcharge (overload) redéfinition (override) Définition d’une classe Définition des attributs.
© 2007 P. Van Roy. All rights reserved. FSAB1402: Informatique 2 Le Langage Java et les Exceptions Peter Van Roy Département dIngénierie Informatique,
77 Utilisation des classes (suite). 7-2 Objectifs A la fin de ce cours, vous serez capables de : Définir des méthodes surchargées dans une classe Fournir.
Programmation multimédia 3
Introduction à la programmation (Java)
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-2000
Structures de données IFT Abder Alikacem La classe string Département dinformatique et de génie logiciel Édition Septembre 2009 Département dinformatique.
Points importants de la semaine Le préprocesseur. La conversion de types. Les fonctions.
Principes de programmation
IFT 6800 Atelier en Technologies d’information
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.
Expressions et affectations
COURS DE PROGRAMMATION ORIENTEE OBJET :
COURS DE PROGRAMMATION ORIENTEE OBJET :
CSI3525: Concepts des Langages de Programmation Notes # 6: Langages de Programmation Fonctionelle II: Introduction au ML.
CSI 1502 Principes fondamentaux de conception de logiciels
Types de données fondamentaux
Animateur : Med HAIJOUBI
Variables et accès en Java. Déclaration des variables final transient static private Printer hp; transient => ne doivent pas être sérialisées volatile.
Créer des packages.
Un survol du language C.
CSI3525: Concepts des Langages de Programmation Notes # 13: Introduction au SmallTalk.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Les erreurs communes en Java.
REPRESENTATION DE L’INFORMATION
 Syntaxe du langage PHP
Tutorat en bio-informatique Le 14 novembre Au programme… Les objets –Propriétés (attributs) –Constructeurs –Méthodes.
Le langage Racket (Lisp)
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.
1 INFOR 101 Chapitre 4 Marianne Morris. 2 Révision de chapitre 3 Algorithmes Sequential Search Selection Sort Binary Search Ordre de magnitude  (n) Mesurer.
B.Shishedjiev - Affectation1 Expressions et affectation Comment produire des nouvelles valeurs.
Cours 4 (14 octobre) Héritage. Chapitre III Héritage.
Module 133 Développer des applications Web Introduction à PHP.
8PRO107 Éléments de programmation Les adresses et les pointeurs.
Chapitre 4 La représentation des nombres.
22 Concepts de base du langage Java. 2-2 Objectifs A la fin de ce cours, vous serez capables de : Identifier les éléments essentiels de Java Identifier.
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é.
Chapitre 9 Les caractères.
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.
Objets et Actions Élémentaires.
Philippe Gandy - 15 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.
Master 1 SIGLIS Jave Lecteur Stéphane Tallard Chapitre 5 – Correction TD.
Chapitre 4: Classes Présentation pour Java Software Solutions Foundations of Program Design Deuxième Edition par John Lewis et William Loftus Java Software.
Introduction au langage C
Chapitre 7: Héritage Présentation pour Java Software Solutions Foundations of Program Design Second Edition by John Lewis and William Loftus Java Software.
BlueJ_III 1 Java, les objets : tout de suite ! Interaction entre objets Notes de cours associées au chapitre 3 tutorial BlueJ
LES CLASSES ET LES OBJETS
Chapitre 6: Tableaux et Vecteurs Présentation pour Java Software Solutions Foundations of Program Design Second Edition by John Lewis et William Loftus.
1 Tableur Excel. 2 Introduction Un tableur est un logiciel permettant de manipuler des données numériques et d'effectuer automatiquement des calculs sur.
Transcription de la présentation:

Chapitre 2: Objets et Types de base Présentation pour Java Software Solutions Foundations of Program Design Deuxième Edition par John Lewis et William Loftus Java Software Solutions publié par by Addison-Wesley Presentation slides are copyright 2000 by John Lewis and William Loftus. All rights reserved. Instructors using the textbook may use and modify these slides for pedagogical purposes.

2 Objets et types de base b On peut maintenant explorer quelques concepts fondamentaux en programmation b Chapitre 2 se concentre sur : Objets prédéfinisObjets prédéfinis Types de données de donnéesTypes de données de données La déclaration et l’utilisation de variablesLa déclaration et l’utilisation de variables Les expressions et la précédence des opérateursLes expressions et la précédence des opérateurs Les librairies de classesLes librairies de classes Les applets JavaLes applets Java Le dessin de formesLe dessin de formes

3 Introduction aux objets b A ce stade-ci, on peut penser qu’un objet est une collection de services qu’on peut lui demander d’effectuer b Les services sont définis par des méthodes dans une classe qui définit l’objet  Dans le programme Lincoln, nous appelons la méthode println de l’objet System.out : System.out.println ("Whatever you are, be a good one."); objet méthode Information fournie à la méthode (paramètres)

4 Les méthodes println et print  L’objet System.out fournit d’autres services  La méthode print est similaire à la méthode println, sauf qu’elle n’avance pas à la prochaine ligne  Ainsi tout ce qui est imprimé après l’énoncé print apparaîtra sur la même ligne b Voir Countdown.java (page 53) Countdown.java

5 Abstraction b Une abstraction cache (ou ignore) les détails au bon moment b Un objet est abstrait en ce qu’on n’a pas à penser à tous les détails internes pour pouvoir l’utiliser  On n’a pas à savoir comment la méthode println fonctionne pour l’appeler b Un humain peut seulement traiter sept (plus ou moins deux) informations à un moment donné b Si on regroupe l’information en morceaux (tels les objets), on peut traiter plusieurs morceaux compliqués en même temps b Ainsi, on peut écrire un software complexe en l’organisant en classes et en objets adéquats

6 La classe String  Chaque chaîne de caractères est un objet en Java, défini par la classe String  Chaque chaîne littérale, délimitée par des guillemets, représente un objet String b L’opérateur de concaténation de chaînes de caractères (+) est utilisé pour joindre une chaîne de caractères à la fin d’une autre b Il peut aussi être utilisé pour ajouter un nombre à une chaîne de caractères b Une chaîne littérale ne peut pas être brisée sur deux lignes dans un programme b Voir Facts.java (page 56) Facts.java

7 Concaténation de chaînes de caractères b L’opérateur plus (+) est aussi utilisé pour l’addition arithmétique b La fonction effectuée par l’opérateur + dépend du type de l’information sur lequel il est appliqué b Si les deux opérandes sont des chaînes de caractères, ou si un est une chaîne de caractères et l’autre est un nombre, il effectue une concaténation de chaînes de caractères b Si les deux opérandes sont des nombres, il les additionne b L’opérateur + est évalué de gauche à droite b Des parenthèses peuvent être utilisées pour forcer un ordre dans les opérations b Voir Addition.java (page 58) Addition.java

8 Escape Sequences b Comment imprimer le caractère guillemet (“) b La ligne suivante rendrait le compilateur confus parce qu’il pourrait interpréter le deuxième guillemet comme la fin de la chaîne de caractères System.out.println ("I said "Hello" to you."); b Une escape sequence est une série de caractères qui représente un caractère spécial  Une escape sequence commence par le caractère backslash ( \ ), qui indique que le(s) caractère(s) qui suit doit être traité d’une façon spéciale System.out.println ("I said \"Hello\" to you.");

9 Escape Sequences b Quelques escape sequences en Java : b Voir Roses.java (page 59) Roses.java Escape Sequence \b \t \n \r \" \' \\ Signification backspace tab nouvelle ligne retour de chariot guillemet apostrophe backslash

10 Variables b Une variable est un nom pour un emplacement en mémoire b Une variable doit être déclarée, spécifiant le nom et le type d’information qui sera contenu dans cet emplacement int total; int count, temp, result; Plusieurs variables peuvent être créées dans une même déclaration type de donnée nom de variable

Variables b On peut donner une valeur initiale à une variable dans sa déclaration b Lorsqu’une variable est référencée dans un programme, sa valeur courante est utilisée b Voir PianoKeys.java (page 60) PianoKeys.java int sum = 0; int base = 32, max = 149;

12 Assignation b Un énoncé d’assignation change la valeur d’une variable  L’opérateur d’assignation est le signe = total = 55; b On ne peut assigner une valeur à une variable que si elle est consistante avec le type déclaré de cette variable b L’expression de droite est évaluée et le résultat est stocké dans la variable à gauche  La valeur qui était dans la variable total est écrasée b Voir Geometry.java (page 62) Geometry.java

Constantes b Une constante est un identificateur semblable à une variable, excepté qu’elle ne contient qu’une seule valeur durant toute son existance b Le compilateur donnera une erreur si on essaie de modifier une constante  En Java, le modificateur final déclare une constante final int MIN_HEIGHT = 69; b Constante : Fournit un nom à des valeurs qui pourraient être ambiguëFournit un nom à des valeurs qui pourraient être ambiguë Facilite les modifications au codeFacilite les modifications au code Réduit des erreurs par mégardeRéduit des erreurs par mégarde

Types de base b Il y a exactement huit types de base pour les données en Java b Quatre types représentent des entiers : byte, short, int, longbyte, short, int, long b Deux types représentent des nombres en point flottant : float, doublefloat, double b Un type représente des caractères : charchar b Un type représente des valeurs booléennes : booleanboolean

Types numériques de base b La différence entre les différents types numériques de base est leur taille, et ainsi les valeurs qu’ils peuvent stocker : Type byte short int long float double Stockage 8 bits 16 bits 32 bits 64 bits 32 bits 64 bits Valeur Min ,768 -2,147,483,648 < -9 x /- 3.4 x avec 7 chiffres significatifs +/- 1.7 x avec 15 chiffres significatifs Valeur Max ,767 2,147,483,647 > 9 x 10 18

16 Caractères  Une variable de type char stocke un seul caractère de l’ensemble de caractères Unicode b Un ensemble de caractères est une liste ordonnée de caractères, et chaque caractère correspond à un nombre unique b L’ensemble de caractères Unicode utilise 16 bits par caractère, permettant 65,536 caractères uniques b C’est un ensemble de caractères international, contenant des symboles et des caractères de plusieurs langues du monde b Les caractères littéraux sont délimités par un apostrophe : 'a' 'X' '7' '$' ',' '\n'

17 Caractères b L’ensemble de caractères ASCII est plus ancient et plus petit que celui Unicode, mais il est encore très populaire b Les caractères ASCII forment un sous-ensemble de l’ensemble de caractères Unicode, incluant : Lettres majuscules Lettres minuscules Ponctuation Chiffres Symboles spéciaux Caractères de contrôle A, B, C, … a, b, c, … point, point-virgule, … 0, 1, 2, … &, |, \, … retour de chariot, tab,...

18 Booléen  Une valeur boolean représente une condition vraie ou fausse b Un booléen peut aussi être utilisé pour représenter les paires d’états, tel que l’ampoule est allumée ou éteinte  Les mots réservés true et false sont les deux seules valeurs valides pour un type booléen boolean done = false;

Expressions arithmétiques b Une expression est une combinaison d’opérateurs et d’opérandes b Les expressions arithmétiques calculent des résultats numériques et utilisent les opérateurs arithmétiques : Addition+ Soustraction- Multiplication* Division/ Reste% b Si un seul ou les deux opérandes d’un opérateur arithmétique sont en point flottant, le résultat est en point flottant

Division et Reste  Si les deux opérandes d’un opérateur division ( / ) sont des entiers, le résultat est un entier (la partie fractionnaire est éliminée) b L’opérateur reste (%) retourne le reste après une division entière ( premier opérande – ( premier opérande / second opérande) * second opérande ) 14 / 3 égale? 8 / 12 égale? % 3 égale? 8 % 12 égale? 2 8

Précédence des opérateurs b Les opérateurs peuvent être combinés en des expression complexes result = total + count / max - offset; b Les opérateurs ont une précédence bien définie qui détermine l’ordre dans lequel ils sont évalués b Multiplication, division, et reste sont évalués avant addition, soustraction, et concaténation de chaînes de caractères b Les opérateurs arithmétiques avec la même précédence sont évalués de gauche à droite b Les parenthèses peuvent être utilisées pour forcer un ordre d’évaluation

Précédence des opérateurs b Quel est l’ordre d’évaluation des expressions suivantes ? a + b + c + d + e 1432 a + b * c - d / e 3241 a / (b + c) - d % e 2341 a / (b * (c + (d - e))) 4123

L’assignation b L’opérateur d’assignation a une précédence plus basse que les opérateurs arithmétiques En premier l’expression à la droite du = est évaluée Ensuite le résultat est stocké dans la variable à gauche du = answer = sum / 4 + MAX * lowest; 1432

L’assignation b La droite et la gauche de l’assignation peuvent contenir la même variable En premier, 1 est ajouté à la valeur originale de la variable count Ensuite le résultat est stocké dans la variable count (effaçant la valeur originale) count = count + 1;

Conversions de données b Il est parfois utile de convertir les données d’un type à un autre type b Par exemple, on peut vouloir traiter un entier en point flottant durant le calcul b Les conversions doivent être traitées avec soin pour ne pas perdre d’information  Les conversions d’élargissement transfèrent dans un type plus grand, elles sont plus sécuritaires (telles short vers int )  Les conversions qui rappetissent le type peuvent perdre de l’information (telles int vers short )

Conversions de données b En Java, les conversions de données peuvent se produire de trois façons : Conversion d’assignationConversion d’assignation Promotion arithmétiquePromotion arithmétique CastingCasting b La conversion d’assignation se produit quand une valeur d’un type est assignée à une variable d’un autre type b Seulement des conversions d’élargissement peuvent se produire par assignation b Une promotion arithmétique se produit automatiquement lorsque les opérateurs convertissent leurs opérandes

Conversions de données b Casting est la plus puissante, et aussi la plus dangeureuse, technique pour convertir b Des conversion d’élargissement et de rappetissement peuvent être accomplies avec un casting explicite d’une valeur b Pour effectuer un cast, le type est inséré entre parenthèses devant la valeur à convertir  Par exemple, si total et count sont des entiers, mais on veut un résultat en point flottant lors de leur division, on peut faire un cast devant total : result = (float) total / count;

Créer des objets b Une variable contient soit un type de base, ou elle contient une référence à un objet b Un nom de classe peut être utilisé comme un type pour déclarer une variable de référence à un objet String title; b Aucun objet n’est créé lors de cette déclaration b Une variable de référence à un objet contient l’adresse d’un objet b L’objet lui-même doit être créé séparément

Créer des objets  On utilise l’opérateur new pour créer un objet title = new String ("Java Software Solutions"); Ceci appelle le constructeur de String, qui est une méthode spéciale qui initialise l’objet b Créer un objet est appelé instantiation b Un objet est une instance d’une classe particulière

Créer des objets  Parce que les chaînes de caractères sont si communes, on n’a pas besoin d’utiliser l’opérateur new pour créer un objet String title = "Java Software Solutions"; b Il s’agit d’une syntaxe spéciale qui ne fonctionne que pour les chaînes de caractères b Une fois qu’un objet a été instantié, on peut utiliser l’opérateur ‘.’ pour accéder à ses méthodes title.length()

Méthodes de String  La classe String a plusieurs méthodes qui sont utiles pour traiter des chaînes de caractères  Plusieurs de ces méthodes retournent une valeur, telle un entier ou un nouvel objet de type String  Voir la liste de méthodes de String à la page 75 et à l’appendice M b Voir StringMutation.java (page 77) StringMutation.java

Librairies de classes b Une librairie de classes est une collection de classes qu’on peut utiliser en développant des programmes b Il existe une librairie standard de classes en Java qui fait partie de tout environnement de développement en Java b Ces classes ne font pas partie du langage Java à proprement parler, mais on se fie beaucoup sur elles  La classe System et la classe String font partie de la librairie standard de classes en Java b D’autres librairies de classes peuvent être acquises, ou on peut les créer soi-même

Packages b Les classes de la librairie standard de classes en Java sont organisées en packages b Quelques-uns des packages dans la librairie standard de classes en Java sont : Package java.lang java.applet java.awt javax.swing java.net java.util But Support général Création d’applets pour le web Graphique et interfaces usager graphiques Méthodes et composantes graphiques additionnelles Communication réseau Utilitaires

La déclaration import b Quand on veut utiliser une classe d’un package, on peut utiliser son nom au complet java.util.Random b Ou on peut faire un import de la classe, et alors utiliser simplement le nom de la classe import java.util.Random; b Pour faire un import de toutes les classes dans un package particulier, on peut utiliser le caractère * import java.util.*;

La déclaration import  Toutes les classes du package java.lang sont automatiquement importées dans tous les programmes  Ceci explique pourquoi on ne doit pas explicitement importer les classes System ou String dans les programmes précédents  La classe Random fait partie du package java.util b Elle fournit des méthodes qui génèrent des nombres pseudo-aléatoires b On utilise souvent un scale et un shift d’un nombre pour le rendre dans un intervalle approprié b Voir RandomNumbers.java (page 82) RandomNumbers.java

Méthodes statiques b Certaines méthodes peuvent être appelées avec le nom de la classe, plutôt qu’avec le nom d’un objet de la classe b Ces méthodes sont appelées méthodes de classe ou méthodes statiques  La classe Math contient plusieurs méthodes statiques, fournissant diverses fonctions mathématiques, telles une valeur absolue, les fonctions trigonométriques, la racine carrée, etc. temp = Math.cos(90) + Math.sqrt(delta);

La classe Keyboard  La classe Keyboard ne fait pas partie de la librairie standard de classes en Java b Elle est fournie par les auteurs du livre pour rendre plus facile la lecture des entrées par le clavier  Les détails de la classe Keyboard sont expliqués au Chapitre 8 b Pour l’instant, on ne fera que l’utiliser sans l’expliquer…  La classe Keyboard fait partie du package appelé cs1, et elle contient plusieurs méthodes statiques pour lire des types spécifiques de données b Voir Echo.java (page 86) Echo.java b Voir Quadratic.java (page 87) Quadratic.java

Format de sortie  La classe NumberFormat a une méthode statique qui retourne un objet pour formatter getCurrencyInstance() getPercentInstance()  Chaque objet pour formatter a une méthode appelée format qui retourne une chaîne de caractères avec l’information spécifiée dans le format approprié b Voir Price.java (page 89) Price.java

Format de sortie  La classe DecimalFormat peut être utilisée pour formatter une valeur en point flottant de façon générique b Par exemple, on peut spécifier que le nombre soit imprimé avec trois positions après le point  Le constructeur de la classe DecimalFormat a en paramètre une chaîne de caractères qui représente un format b Voir CircleStats.java (page 91) CircleStats.java

Applets  Une application Java est un programme autonome avec une méthode main (comme celles vues jusqu’à présent) b Un applet est un programme Java dont l’intention est d’être transporté sur le web et exécuté sur un web browser  Un applet peut aussi être exécuté avec un outil appletviewer du Java Software Development Kit  Un applet n’a pas de méthode main b A la place, il a plusieurs méthodes spéciales qui répondent à des buts spécifiques  La méthode paint, par exemple, est automatiquement exécutée et est utilisée pour dessiner le contenu d’un applet

Applets  La méthode paint prend un paramètre qui est un objet de la classe Graphics  Un objet Graphics définit un contexte graphique sur lequel on peut dessiner des formes et du texte  La classe Graphics a plusieurs méthodes pour dessiner des formes  La classe qui définit l’applet étend la classe Applet b Elle utilise l’héritage, un concept orienté-objet couvert plus en détail au Chapitre 7 b Voir Einstein.java (page 93) Einstein.java

Applets  Un applet est inséré dans un fichier HTML en utilisant un tag qui fait référence au fichier bytecode de la classe applet b C’est la version bytecode du programme qui est transportée sur le web b L’applet est exécuté par un interpréteur Java qui fait partie du browser

Dessiner des formes  Regardons quelques méthodes de la classe Graphics qui dessinent des formes b Une forme peut être remplie ou non, dépendant de la méthode appelée b Les paramètres de la méthode spécifie les coordonnées et les tailles b L’origine du système de coordonnées se trouve dans le coin supérieur gauche (Chapitre 1) b Plusieurs formes courbes, comme un oval, sont dessinées en spécifiant son rectangle englobant b Un arc peut être pensé comme une section d’un oval

Dessiner une ligne X Y page.drawLine (10, 20, 150, 45); page.drawLine (150, 45, 10, 20); ou

Dessiner un rectangle X Y page.drawRect (50, 20, 100, 40);

Dessiner un oval X Y page.drawOval (175, 20, 50, 80); rectangleenglobant

La classe Color  Une couleur est définie dans un programme Java en utilisant un objet créé par la classe Color  La classe Color contient aussi plusieurs couleurs statiques prédéfinies b Chaque contexte graphique a une couleur courante avant- plan (foreground) b Chaque surface à dessiner a une couleur arrière-plan (background) b Voir Snowman.java (page ) Snowman.java