Avant-propos

L'informatique Industrielle évolue très rapidement et de manière significative: intégration croissante des composants, utilisation de méthodes logicielles pour spécifier puis réaliser du matériel, usage intensif des interfaces graphiques. Ceci pose des problèmes de stratégie d'enseignement puisque le temps alloué à cette discipline varie très peu.

Pour les systèmes numériques, il est essentiel de connaître les fonctions de base de type combinatoire (e.g. codage, multiplexage, arithmétiques, etc.) et de type séquentiel (e.g. bascules, compteurs, séquenceur, machines à états finis, etc.), les systèmes programmables à microprocesseurs, à microcontrôleurs, les systèmes multi-tâches et plus récemment les réseaux et les systèmes embarqués.

Ces caractéristiques imposent l'acquisition de techniques de programmation et de langages associés. Citons le langage VHDL pour les composants programmables (e.g. PLA, PLD, CPLD, etc.), le langage C pour l'informatique de base.

Or l'intérêt, voire la nécessité, d'introduire la « programmation orientée objet » dans le cursus de tout étudiant concerné par la conception et la réalisation des systèmes numériques, se confirme de jour en jour.

Une réflexion sur tous ces points nous a conduit à expérimenter une méthode basée sur une approche objet et le langage Java, elle fait l'objet de ce livre. Les objectifs de cette approche sont les suivants :

Enseigner l'informatique à des débutants

Ce livre s'adresse à des étudiants de première année d'IUT (départements GEII, GTR, Informatique), de BTS informatique, d'université (cycle EEA) ou d'écoles d'ingénieurs orientées vers l'électronique et les architectures de machines, qui souhaitent acquérir les mécanismes et les outils de base pour concevoir une application informatique de type industriel. Aucune formation préalable à l'informatique n'est supposée. Conçu comme une introduction précise et méthodique, pour réaliser une application informatique par une approche objet, ce livre ne prétend pas à être exhaustif. De nombreux exemples illustrent l'exposé, des exercices sont proposés. La pratique des exemples, la résolution des exercices, font partie intégrante du cours. Ils permettent un approfondissement personnel indispensable pour maîtriser la démarche et les notions introduites.

Enseigner à partir de projets

Un projet, défini par son cahier des charges, est analysé, modélisé puis codé en langage Java. Les projets sont choisis dans le domaine des systèmes numériques plutôt qu'en génie logiciel ou en algorithmique classique. Nous avons volontairement évité de multiplier les projets, afin de ne pas disperser l'attention du lecteur ; un projet, essentiel pour la progression pédagogique, est la conception d'une montre numérique depuis l'opération de base qui consiste à incrémenter un compteur jusqu'à son affichage avec des vues différentes. Il introduit pour sa réalisation des sous-projets, dont l'étude est intéressante pour elle-même.

Utiliser l'approche objet, modéliser avec UML et coder en Java

L'analyse du projet se fait par une approche objet et dégage des idées qui sont représentées par des diagrammes UML, puis codées en langage Java. Des éléments d'UML sont introduits lorsque le besoin de l'expression des idées se fait sentir, ce n'est pas un cours sur UML.

De même des constructions du langage Java, leurs syntaxes sont introduites au fur et à mesure des besoins. Tout le langage n'est pas couvert mais, comme le montre l'examen de la table des matières, l'essentiel est abordé pour un débutant. Nous faisons appel à son initiative pour consulter d'autres ouvrages afin d'acquérir une connaissance exhaustive du langage.

Séparer la vue du modèle sur la base du modèle MVC (modèle-vue-contrôle)

Toute application informatique utilise une interface graphique qu'il ne faut pas confondre avec les services de base qui correspondent à la résolution du problème, c'est-à-dire le modèle. Ce modèle introduit clarté et visibilité dans la recherche d'une solution. Notre démarche illustre l'importance de séparer la conception du modèle de la conception de l'interface graphique. Une implémentation du procédé est proposée ensuite.

Introduire des notions de classe et d'objet dès le premier chapitre avec BlueJ.

Le débutant est confronté très tôt aux notions de classe et d'objet. Dans un premier temps, il utilise les classes existantes, dans un deuxième temps, il conçoit ses propres classes.

Cette pédagogie est facilitée par l'utilisation d'un environnement de programmation très adapté, nommé BlueJ, environnement conçu à l'université australienne de Monash, par Michaël Kölling.

Listons les caractéristiques essentielles retenues par les concepteurs de BlueJ et qui ont déterminé notre choix:

Disposer des sources des projets

Ceci facilite l'exécution d'exemples autres que le classique "hello, world !", l'expérimentation des premières notions sans écriture de code, l'introduction d'exercices qui ne demandent que des modifications locales de ces sources.

Les corrigés des exercices, les sources des projets sont sur le site http://www.gesi.asso.fr/.