Java 2

Présentation

Ce cours revient sur les concepts fondamentaux de la programmation objet : l'encapsulation, la composition et l'héritage. En complément, ce cours aborde les concepts de classe enfouie, de classe abstraite, d'interface, d'introspection, de clonage, d'exception, de généricité et de lambda-expression. Le langage Java sert de support à l'apprentissage de ces concepts. Le cours aborde également les éléments indispensables de l'API pour le développement d'applications en Java comme les collections, les flots de données ou les fils d’exécution. Enfin, le cours présente les principaux outils de développement associés à Java : outils de tests unitaires et de non-régression, générateurs de documentation, outils de contrôle de la qualité du code, et outils de travail collaboratif.

L'UE est organisée en 10 leçons comportant chacune un cours, une à deux séances de travaux dirigés et une à deux séances de travaux pratiques :

  1. Rappels de Java : fondements impératifs, fondements Objet (encapsulation, composition, héritage)
  2. Classes enfouies, classes abstraites, interfaces
  3. Introspection, clonage, égalité, représentation littérale
  4. Exceptions : principes généraux et mise en oeuvre en Java
  5. Généricité : polymorphisme et types génériques
  6. Objets fonctionnels : lambda-expressions
  7. Collections : API standard, collections simples et tableaux associatifs
  8. Flots de données : flots d'octets et de caractères, gestion de fichiers et analyse lexicale
  9. Fils d'exécution : principes élémentaires de programmation concurrente
  10. Outillage pour le développement d'applications : JUnit, Javadoc, Doxygen, Checkstyle, SVN, Git

Pré-requis nécessaires

Pour aborder ce cours, il est nécessaire d'avoir déjà programmé en Java ou dans un langage de programmation Objet similaire, et d'avoir un minimum de connaissances sur :

  • les aspects procéduraux de Java (types, variables, opérateurs, appels, boucles, conditionnelles) et l'algorithmique élémentaire (tri, recherche de max, calcul, etc.)
  • les fondements de la programmation Objet (encapsulation, composition, héritage)
  • les principes élémentaires de conception Objet (identification des classes, assignation de responsabilités, structure, composition et comportement des objets)

L'UE Java 1 de L2 et l'UE Introduction à l’objet et aux systèmes d’exploitation et microprocesseur en L3 fournissent ces pré-requis.

Objectifs

L'objectif est quadruple :

  • savoir tirer parti de la programmation objet pour la conception et la maintenance de programmes modulaires, réutilisables, évolutifs et sûrs
  • compléter les éléments méthodologiques d'analyse, de conception et de programmation orientées objet
  • renforcer la maîtrise du langage Java, de ses constructions élémentaires, et de son API standard
  • découvrir l'outillage essentiel au développement d'une application d'envergure
  • maîtriser le langage Java : sa syntaxe et ses fondements sémantiques
  • connaître les différentes phases de la compilation d'un programme Java
  • connaître le mécanisme d'exécution d'un programme Java et le fonctionnement de la machine virtuelle
  • maîtriser les rudiments de la programmation objet
  • connaître quelques bonnes pratiques de conception objet

D'autre part, concernant l'outillage pour la conduite des projets, les étudiants sont amenés à expérimenter et à comprendre l'intérêt et les principes des outils :

  • de validation par tests unitaires
  • de documentation logicielle
  • de contrôle de la qualité du code
  • de gestion de versions et travail collaboratif

Compétences visées

Traduire la spécification d'un programme en système d'objets en assignant des responsabilités.

Concevoir un programme à la fois ouvert à l'extension et fermé à la modification.

Mobiliser à bon escient les constructions du langage Java et de son API.

Savoir utiliser les outils de tests unitaires, les générateurs de documentation, les outils de contrôle de la qualité du code, et les outils de travail collaboratif.

Bibliographie

  • Mickaël Kerboeuf : Fondements de la programmation orientée objet avec Java 8. Références Sciences, Ellipses, décembre 2016, ISBN 9782340014824.
  • Mickaël Kerboeuf : Algorithmique et programmation objet. Références Sciences, Ellipses, mai 2020, ISBN 9782340037984.
  • James Gosling, Bill Joy, Guy Steele et Gilad Bracha : The Java(TM) Language Specification (3rd Edition). Addison-Wesley Professional, 2005, ISBN 0321246780.
  • Erich Gamma, Richard Helm, Ralph Johnson et John Vlissides : Design Patterns, Elements of Reusable Object-oriented Software. Addison-Wesley Longman Publishing Co., 1995, ISBN 0-201-63361-2.