...

Résumé

De la programmation objet en Java au développement d’applications web

Dans cet ouvrage, Claude Delannoy applique au langage Java la démarche pédagogique qui a fait le succès de ses livres sur le C et le C++. Il insiste tout particulièrement sur la bonne compréhension des concepts objet et sur l’acquisition de méthodes de programmation rigoureuses.

L’apprentissage du langage se fait en quatre étapes : apprentissage de la syntaxe de base, maîtrise de la programmation objet en Java, initiation à la programmation graphique et événementielle avec la bibliothèque Swing, introduction au développement web avec les servlets Java et les JSP.

L’ouvrage met l’accent sur les apports des versions 5 à 9 de Java Standard Edition, qui ont fait évoluer la manière de programmer en Java : programmation générique, types énumérés, annotations, streams et expressions lambda, outil JShell, Java Platform Module System (ex-projet Jigsaw), etc. Un chapitre est dédié aux Design Patterns en Java et cette 11e édition présente les nouveautés des versions 10 à 14 de Java SE : déclaration var, variante de l’instruction switch et expression switch, écriture simplifiée des blocs de texte (Text Blocks), etc.

Chaque notion nouvelle et chaque fonction du langage sont illustrées de programmes complets dont le code source est disponible en téléchargement sur le site www.editions-eyrolles.com.

À qui s’adresse ce livre ?

• Aux étudiants de licence et de master, ainsi qu’aux élèves d’écoles d’ingénieurs.

...

Claude Delannoy

...

Du même auteur

C. DELANNOY. – Programmer en C++ moderne – De C++ à C+++ 20.
(10e édition de l’ouvrage édité précédemment sous le titre Programmer en langage C++)
N°67895, 2019, 884 pages.

C. DELANNOY. – Exercices en langage C++ – 178 exercices corrigés.
N°67663, 4e édition, 2018, 396 pages.

C. DELANNOY. – Exercices en Java – 175 exercices corrigés (couvre Java 8).
N°67385, 4e édition, 2017, 346 pages.

C. DELANNOY...

Avant-propos

À qui s’adresse ce livre

Cet ouvrage est destiné à tous ceux qui souhaitent maîtriser la programmation en Java. Il s’adresse à la fois aux étudiants, aux développeurs et aux enseignants en informatique.

Il suppose que le lecteur possède déjà une expérience de la programmation dans un autre langage (C, C++, PHP, Python, C#...). En revanche, la connaissance de la programmation orientée objet n’est nullement nécessaire, pas plus que celle de la programmation d’interfaces graphiques ou d’applications web.

...

1

Présentation de Java

Après un très bref historique du langage Java montrant dans quel esprit il a été créé, nous en présenterons les principales caractéristiques. Nous verrons tout d’abord que Java est un langage objet et nous exposerons les concepts majeurs de la programmation orientée objet. Puis nous ferons la distinction entre les programmes utilisant une interface console et les programmes utilisant une interface graphique, ce qui nous amènera à parler des possibilités de programmation événementielle qui sont offertes par Java sous la forme de classes standards Enfin, nous montrerons que Java est le premier langage à offrir une portabilité aussi avancée.

1Petit historique du langage

On peut faire remonter la naissance de Java à 1991. À cette époque, des...

2

Généralités

Ce chapitre constitue une première approche d’un programme Java, fondée sur quelques exemples commentés. Vous y verrez, de manière informelle pour l’instant, comment s’expriment les instructions de base (déclaration, affectation, écriture...), ainsi que deux structures fondamentales (boucle avec compteur et choix). Cela nous permettra par la suite d’illustrer certaines notions par des programmes complets, compréhensibles avant même que nous n’ayons effectué une étude détaillée des instructions correspondantes.

Nous dégagerons ensuite quelques règles générales concernant l’écriture d’un programme. Enfin, nous montrerons comment mettre en œuvre un programme Java, de sa saisie à son exécution, ce qui vous permettra de vous familiariser avec votre propre environnement de développement.

Notez que nous exploiterons ici les possibilités de simplification présentées au chapitre précédent. D’une part, nous nous limiterons à des programmes utilisant une interface de type console ; d’autre part, nous ne ferons pas intervenir d’objets. Autrement dit, ce chapitre se bornera à vous montrer comment s’expriment en Java des concepts que vous avez déjà rencontrés dans d’autres langages (C, C++, Visual Basic, C#, PHP...).

1Premier exemple de programme Java

Voici un exemple très simple de programme qui se contente d’afficher dans la fenêtre console le texte : "Mon premier programme Java".

public class PremProg

{ public static void main (String args[])

  ​{ System.out.println ("Mon premier programme Java") ;

...

3

Les types primitifs de Java

Dans les chapitres précédents, nous avons rencontré les types int et double. Java dispose d’un certain nombre de types de base dits primitifs, permettant de manipuler des entiers, des flottants, des caractères et des booléens. Ce sont les seuls types du langage qui ne sont pas des classes. Mais ils seront utilisés pour définir les champs de données de toutes les classes que vous serez amenés à créer.

Avant de les étudier en détail, nous effectuerons un bref rappel concernant la manière dont l’information est représentée dans un ordinateur et la notion de type qui en découle.

1La notion de type

La mémoire centrale est un ensemble de « positions binaires » nommées bits. Les bits sont regroupés en octets (8 bits), et chaque octet est repéré par ce qu’on nomme son adresse.

Compte...

4

Les opérateurs et les expressions

Java est l’un des langages les plus fournis en opérateurs. Il dispose en effet des opérateurs classiques (arithmétiques, relationnels, logiques) ou moins classiques (manipulations de bits), mais aussi d’un important éventail d’opérateurs originaux d’affectation et d’incrémentation. Nous verrons en effet que ces actions sont réalisées par des opérateurs.

Ce chapitre étudie tous les opérateurs de Java, ainsi que les règles de priorité et de conversion de type qui interviennent dans les évaluations des expressions.

1Originalité des notions d’opérateur et d’expression

Dans la plupart des langages, on trouve, comme en Java :

•des expressions formées (entre autres) à l’aide d’opérateurs,

•des instructions pouvant éventuellement faire intervenir des expressions, comme l’instruction d’affectation :

y = a * x + b ;

Mais généralement, dans les langages autres que Java (ou C++), l’expression possède une valeur mais ne réalise aucune action, en particulier aucune affectation d’une valeur à une variable. Au contraire, l’affectation y réalise une affectation d’une valeur à une variable mais ne possède pas de valeur. Les notions de valeur et d’action sont parfaitement disjointes. En Java, il en va différemment puisque :

•les (nouveaux) opérateurs d’incrémentation pourront non seulement intervenir au sein d’une expression (laquelle, au bout du compte, possédera une valeur), mais aussi agir sur le contenu de variables. Ainsi, l’expression (comme nous le verrons, il s’agit bien d’une expression en Java) :

++i

réalisera une action, à savoir augmenter la valeur de i de 1 ; en même temps, elle aura une valeur, celle de i après incrémentation.

•une affectation apparemment classique telle que :

i = 5

pourra, à son tour, être considérée comme une expression (ici, de valeur 5). D’ailleurs, en Java, l’affectation (=) est un opérateur. Par exemple...

5

Les instructions de contrôle de Java

A priori, dans un programme, les instructions sont exécutées séquentiellement, c’est-à-dire dans l’ordre où elles apparaissent. Or la puissance et le comportement intelligent d’un programme proviennent essentiellement de la possibilité de s’affranchir de cet ordre pour effectuer des choix et des boucles (répétitions). Tous les langages disposent d’instructions, nommées instructions de contrôle, permettant de les réaliser. Elles peuvent être :

•fondées essentiellement sur la notion de branchement (conditionnel ou inconditionnel) ; c’était le cas, par exemple, des premiers Basic ;

•ou, au contraire, traduire fidèlement les structures fondamentales de la programmation structurée ; c’est le cas, par exemple, du langage Pascal bien que, en toute rigueur, ce dernier dispose d’une instruction de branchement inconditionnel GOTO.

Java (comme C) est assez proche du Pascal sur ce point puisqu’il dispose d’instructions structurées permettant de réaliser :

•des choix : instructions if...else et switch,

•des boucles (répétitions) : instructions do... while, while et for.

Toutefois, la notion de branchement n’est pas totalement absente de Java puisque, comme nous le verrons :

•il dispose d’instructions de branchement inconditionnel...

7

Les tableaux

En programmation, on parle de tableau pour désigner un ensemble d’éléments de même type désignés par un nom unique, chaque élément étant repéré par un indice précisant sa position au sein de l’ensemble.

Comme tous les langages, Java permet de manipuler des tableaux mais nous verrons qu’il fait preuve d’originalité sur ce point. En particulier, les tableaux sont considérés comme des objets et les tableaux à plusieurs indices s’obtiennent par composition de tableaux.

Nous commencerons par voir comment déclarer puis créer des tableaux, éventuellement les initialiser. Nous étudierons ensuite la manière de les utiliser, soit au niveau de chaque élément, soit à un niveau global. Nous examinerons alors la transmission de tableaux en argument ou en valeur de retour d’une méthode. Puis, nous aborderons la création et l’utilisation des tableaux à plusieurs indices. Enfin, nous parlerons de l’ellipse, facilité introduite par le JDK 5.0 qui permet à une méthode de disposer d’un nombre variable d’arguments.

1Déclaration et création de tableaux

1.1Introduction

Considérons cette déclaration :

...

9

Les chaînes de caractères et les types énumérés

Java dispose d’une classe standard nommée String, permettant de manipuler des chaînes de caractères, c’est-à-dire des suites de caractères. Les constantes chaînes telles que "bonjour" ne sont en fait que des objets de type String construits automatiquement par le compilateur.

Nous allons étudier les fonctionnalités de cette classe String, qui correspondent à ce que l’on attend pour des chaînes : longueur, accès aux caractères d’une chaîne par leur position, concaténation, recherche d’occurrences de caractères ou de sous-chaînes, conversions entre types primitifs et type String.

Nous verrons que Java fait preuve d’une certaine originalité en prévoyant que les objets de type String ne soient pas modifiables. Ils restent cependant utilisables pour créer un nouvel objet ; c’est ce qui permettra de réaliser des opérations de remplacement ou de passage en majuscules ou en minuscules.

Lorsque le programmeur aura besoin de manipuler intensivement des chaînes, il pourra, s’il souhaite privilégier l’efficacité de son programme, recourir à une autre classe StringBuffer. Contrairement à String, celle-ci autorise la modification directe de son contenu. En revanche, nous verrons que les méthodes utilisées sont, pour la plupart, différentes de celles de la classe String.

Enfin, nous étudierons les types énumérés introduits par le JDK 5.0. Il s’agit de types dans lesquels on choisit explicitement les valeurs.

1Fonctionnalités de base de la classe String

1.1Introduction

Comme toute déclaration d’une variable objet, l’instruction :

String ch ;

déclare que ch est destinée à contenir une référence à un objet de type String...

19

Les applets

Nous l’avons vu au Chapitre 1, Java permet de développer deux sortes de programmes : les applications (autonomes) et les applets. La vocation d’une applet est d’être téléchargée sur une machine donnée à partir d’une machine distante qui en fournit le code. Ce chargement est toujours provoqué par l’analyse d’un fichier contenant des commandes HTML (HyperText Markup Language).

Tout ce qui a été dit jusqu’ici pourra être employé dans la réalisation des applets. Il faudra simplement tenir compte de quelques particularités inhérentes à la manière dont une applet est lancée, ainsi que d’éventuelles restrictions d’accès.

Nous commencerons par vous présenter l’applet la plus simple qu’on puisse créer et le fichier HTML minimal nécessaire à son exécution. Puis, nous parlerons de la méthode init qui est à l’applet ce que main est à l’application. Nous verrons qu’il existe également d’autres méthodes propres à une applet (start, stop et destroy), liées aux...

...

Pour suivre toutes les nouveautés numériques du Groupe Eyrolles, retrouvez-nous sur Twitter et Facebook

...