Java : Programmation Impérative

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

ACTIVITÉ DE PROGRAMMATION

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

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

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

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

Programmer en JAVA. par Tama

Langage Java. Classe de première SI

Java Licence Professionnelle CISII,

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

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

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

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

Premiers Pas en Programmation Objet : les Classes et les Objets

ALGORITHMIQUE ET PROGRAMMATION ORIENTEE OBJET

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

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

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

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

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

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

INITIATION AU LANGAGE JAVA

Chapitre VI- La validation de la composition.

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Corrigés des premiers exercices sur les classes

as Architecture des Systèmes d Information

Chapitre 2. Classes et objets

4. Groupement d objets

Programme Compte bancaire (code)

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

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

Cours 1: Java et les objets

Programmation en Java IUT GEII (MC-II1) 1

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

TP, première séquence d exercices.


Traduction des Langages : Le Compilateur Micro Java

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Un ordonnanceur stupide

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

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

Chapitre I Notions de base et outils de travail

Java Licence Professionnelle CISII,

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

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

Une introduction à Java

Programmation Objet Java Correction

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

Programmation C++ (débutant)/instructions for, while et do...while

Initiation à JAVA et à la programmation objet.

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Introduction au langage C

Analyse de sécurité de logiciels système par typage statique

Cours d Algorithmique et de Langage C v 3.0

Évaluation et implémentation des langages

Gestion distribuée (par sockets) de banque en Java

Programmation avec des objets : Cours 7. Menu du jour

Programmation par les Objets en Java

Classe Interne, Anonyme & Enumération

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

Prendre le marteau, le tableau, le mètre, le crayon, la ficelle, le clou, la pointe ;

1 Définition et Appel d une fonction. V. Phan Luong. Cours 4 : Fonctions

Apprendre Java en 154 minutes

Le Langage C Version 1.2 c 2002 Florence HENRY Observatoire de Paris Université de Versailles florence.henry@obspm.fr

Chapitre 10. Les interfaces Comparable et Comparator 1

Machines Virtuelles. et bazard autour. Rémi Forax

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

Cours de Java. Sciences-U Lyon. Java - Introduction Java - Fondamentaux Java Avancé.

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

TP1 : Initiation à Java et Eclipse

TD/TP PAC - Programmation n 3

Claude Delannoy. 3 e édition C++

Java 1.5 : principales nouveautés

Package Java.util Classe générique

Bases de programmation. Cours 5. Structurer les données

Notions fondamentales du langage C# Version 1.0

Threads. Threads. USTL routier 1

Auto-évaluation Programmation en Java

TD/TP PAC - Programmation n 3

P r ob lé m a t iq u e d e la g é n é r icit é. Pr in cip e d e la g é n é r icit é e n Ja v a ( 1 /3 )

Solutions du chapitre 4

Bases Java - Eclipse / Netbeans

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

Info0604 Programmation multi-threadée. Cours 5. Programmation multi-threadée en Java

Logiciel Libre Cours 3 Fondements: Génie Logiciel

Corrigé des exercices sur les références

Java c est quoi? Java pourquoi?

Anne Tasso. Java. Le livre de. premier langage. 6 e édition. Groupe Eyrolles, 2000, 2002, 2005, 2006, 2008, 2010, ISBN :

Eclipse atelier Java

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

OpenPaaS Le réseau social d'entreprise

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

Utilisation d objets : String et ArrayList

Derrière toi Une machine virtuelle!

2. Comprendre les définitions de classes

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

Machines virtuelles Cours 1 : Introduction

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

Transcription:

1 Java : Programmation Impérative Résumé du cours précédent (I11) Paradigme impératif Algorithmique simple Découpage fonctionnel Qu est-ce qu un programme informatique? / un langage de programmation? / un paradigme de programmation? Le paradigme impératif instructions, séquence, états, variables d état, affectation Algorithmique simple (Java noyau C) o o o o instructions de contrôle: tests (if,?:, switch), boucles (for, while, do / break, continue, return), bloc d instructions (simples, imbriqués) Types primitifs: noms, codage, opérateurs + librairie Math, typage fort, déclaration de variables, initialisation, constantes de type (2f, 0xA2, ) Tableaux de types simples: déclaration (types), initialisation (notation accolades), manipulation (notation crochets: itération, affectation, lecture) Chaînes de caractères (Java): String avec construction, déclaration et manipulations simples Découpage fonctionnel o o Fonctions: méthodes statiques, signature, paramètres formels, application, paramètres effectifs (passage par valeurs) Raffinement fonctionnel: granularité générale (modules, fonction, instruction, ), raffinement

2 Qu est-ce qu un programme informatique? Qu est-ce qu un programme informatique? o Déf.1: un programme informatique est une séquence d'instructions sous forme compréhensible par l'ordinateur (dite binaire), décrivant une tâche à accomplir par celui-ci. [http://www.linux-france.org/article/kafkafr/node59.html] o Déf.2: un programme informatique est une liste d'instructions, rédigée par un programmeur, sans laquelle un ordinateur ne saurait rien faire d'autre que rouiller. [http://rad2000.free.fr/glosntci.htm] o Déf.3: un programme informatique est un ensemble d instructions, rédigées pour qu un ordinateur puisse, à l aide de ses informations mémorisées, résoudre un problème donné. [Petit Robert] Mais, pour en donner une vision quelque peu concrète et usuelle, on peut voir un programme comme ce qui doit être exécuté par un ordinateur pour : soit transformer des données d un état initial vers un état final, soit faire transiter des données d un endroit à un autre, soit les deux à la fois.

3 Exemple de programme informatique Exemple de programme qui des données d un état initial vers un état final : un traitement de texte

4 Qu est-ce qu un paradigme de programmation? Qu est-ce qu un paradigme de programmation? o Déf.: Un paradigme de programmation est un style fondamental de programmation informatique qui traite de la manière dont les solutions aux problèmes doivent être formulées dans un langage de programmation (à comparer à la méthodologie, qui est une manière de résoudre des problèmes spécifiques de génie logiciel). [http://fr.wikipedia.org/wiki/paradigme_%28programmation%29]. Un paradigme de programmation conditionne la vision que le développeur se fera de l exécution de son programme. Il en existe de nombreux. Par exemple, les paradigmes : -, -, -, -, -, -,

5 Qu est-ce qu un paradigme de programmation? - en, un programme est vu comme une suite ordonnée de transformations d états, - en, un programme est vu comme une suite d'évaluations de fonctions sans états, - en, les développeurs doivent considérer le programme comme une collection d objets en interaction, - en, un programme est un ensemble de déclarations de faits et de règles qui concourent à représenter des connaissances et à les unifier pour répondre à des buts, - la permet aux développeurs de voir les applications comme des ensembles de processus agissant sur des états localement partagées. [wikipedia]

6 Qu est-ce que le paradigme impératif? Qu est-ce que le paradigme impératif? o Déf.: Le paradigme impératif est un paradigme de programmation qui repose sur trois notions principales que sont : celle de séquence d instructions, de variables mutables, et d affectation. - : «fais ceci» impérativement! - : «fais ceci ; puis fais cela ; etc.» - Dans les langages impératifs, les variables portent des états (valeurs) et une opération spéciale permet d y écrire : l affectation. Pour la lecture, une simple référence à la variable par son nom est équivalente à sa valeur (son état). Lorsqu une variable ne peut être affectée qu une seule fois, elle est dite «immutable» (constante), alors que lorsqu elle peut être réaffectée autant de fois que nécessaire, elle devient «mutable».

7 Algorithmique simple Qu est-ce que l algorithmique o Déf.: L algorithmique est l ensemble des instructions permettant de réaliser un traitement recherché sur des données. En paradigme impératif, c est une séquence d instructions. Pour exprimer un algorithme, on utilise des de traitement de données : - de tests : if /?: / switch...case - de boucles : for / while / do Ces seules instructions de contrôle permettent de résoudre tous les problèmes calculables (numériques comme symboliques). Les ensembles suivants d instructions sont équivalents : boucles (for / while / do) ou récursivité (appels récursifs)

8 Qu est-ce que le découpage fonctionnel? Qu est-ce que le découpage fonctionnel? o Déf.: Le découpage fonctionnel consiste à morceler un traitement en plusieurs parties fonctionnelles (ou méthodes en O-O). On peut vouloir découper un traitement pour deux raisons : - : quand un traitement est trop long (une page de code), on préfère le découper en traitements plus petits, qui seront alors invoqués séquentiellement. - : (c est le cas le plus intéressant et le plus courant) il consiste à prévoir à l avance et à extraire d un traitement quelconque toutes les parties susceptibles d être utilisées en d autres endroits du programme (cela nécessite une certaine analyse). Des deux types de découpage seul le second corresponde à ce qui est également appelé le.

9 Objectifs de ce cours (I21) Ce cours (I21) s et objets simples sans méthode Aspects dynamiques : le «garbage collector» Méthodes d instance simples Connaissance de base de classes de l API Java Méthodes d instance spéciales Propriétés de classes : attributs et méthodes de classes Les tableaux d objets versus les types ensemblistes ArrayList<E> et TreeMap<K,V> de Java Premiers éléments de conception logicielle La notion de package Prolongement : les classes comme types abstraits

10 s et objets simples : exemple Comment réaliser le clavier de cette calculatrice? Il faudrait disposer de boutons tels que : chaque bouton soit différent des autres par : sa légende, sa couleur, sa position et sa taille... mais que tous possèdent : une légende, une couleur, des coordonnées, une largeur et une hauteur... On peut donc dire que tous les boutons ont des : mais que chacun a. Il en va de même pour tout ce qu on a envie de nommer des au sens large du terme.

11 BOUTON PION s et objets simples : exemples (1) Tout ce qu on a envie de nommer au sens où cela possède des caractéristiques, peut être décrit par une entité générale que l on nommera, en O-O,. Inversement, tout ce qui peut être décrit à l aide d une entité générale, ici, peut permettre de générer autant d, tous distincts par les valeurs de leurs attributs. DOMINO POISSON BILLET LOTO LIVRE ACROBATIE MAISON

12 s et objets simples : exemples (2) Objets BOUTON BOUTON Objets DOMINO DOMINO Objets PION Objets LOTO Objets BILLET 1 couleur 1 forme n trous LOTO n lignes m colonnes n*m valeurs n*m positions BILLET 1 pays 1 valeur 1 nom de monnaie s Descripteurs des attributs des objets & Objets LIVRE PION 2 marques 1 couleur 1 forme 1 valeur Instances particulières valuées 1 objet = 1 instance de classe Objets LIVRE 1 titre 1 auteur n pages Un objet ACROBATIE Objets POISSON POISSON 1 couleur 1 espèce 1 nourriture ACROBATIE 1 nom de figure n acrobates

13 s et objets simples : code de classe (1) Descripteurs des attributs des objets 1 objet = 1 instance de classe s & Objets Instances particulières valuées /** représentant un domino * avec ses 2 marques. */ class Domino { // Attributs communs // à tous les objets // (données propres) int m1; // marque 1 int m2; // marque 2 un domino (2,5) m1 = 2 m2 = 5 un domino (2,5) un domino (3,4) m1 = 3 m2 = 4 un domino (6,6) //...à suivre... } m1 = 2 m2 = 5 m1 = 6 m2 = 6 Déclarations non statique

14 Constructeur d objets (détail 1) Pour disposer d un objet, il faut le construire. Un constructeur porte le et est généralement déclaré. Il attend des qui permettront de construire un objet. /** représentant un domino avec ses 2 marques. */ class Domino { // Attributs int m1; // marque 1 int m2; // marque 2 /** Le constructeur de domino */ public Domino (int vm1, int vm2){ // Instructions de construction // qui doivent affecter les marques // du // avec les valeurs des paramètres } } Déclaration «public» seulement et non plus «public static»! La signature des constructeurs est particulière : elle n admet pas de type de retour!

15 Constructeur d objets (détail 2) Dès l entrée dans le constructeur, le futur objet a déjà un emplacement mémoire qui lui est réservé. Pour valuer l objet, le constructeur doit donc référencer cet espace mémoire MAIS il ne le connaît pas directement! Pour cela, Java lui fournit la variable spéciale «this» (dite d auto-référencement). /** représentant un domino avec ses 2 marques. */ class Domino { // Attributs int m1; // marque 1 int m2; // marque 2 /** Le constructeur de domino */ public Domino (int vm1, int vm2){ // Instructions d initialisation // du m1 = vm1; // marque 1 m2 = vm2; // marque 2 } } Notation pointée habituelle Moyennant l usage de «this», le constructeur peut accéder aux de.

16 MAIS on peut aussi vouloir construire des dominos selon d autres schémas. Par exemples : o un domino double o un domino par défaut. Constructeur d objets (détail 3) ICI, on dira qu il y a de constructeurs. /** représentant un domino avec ses 2 marques. */ class Domino { // Attributs int m1; // marque 1 int m2; // marque 2 /** Constructeur avec 2 marques */ public Domino (int vm1, int vm2){ m1 = vm1; m2 = vm2; } /** Constructeur de domino double */ public Domino (int vm){ m1 = m2 = vm; } /** Constructeur de domino par défaut */ public Domino (){ m1 = 0; m2 = 0; } }

17 Construction d objet : new La classe étant maintenant finalisée, il ne reste qu à construire des dominos! Toute construction d objet en Java doit être faite à l aide de l opérateur d instanciation : qui retourne l objet valide nouvellement construit. class MainDominos { /** Construction de dominos */ public static void main(string[] args) { Domino d1 = new Domino(2,5); Domino d2 = new Domino(3,4); Domino d3 = new Domino(6); Domino d4 = new Domino(2,5); // Faire quelque chose des dominos... if ( d4.m1!=d4.m2 ) d4.m1 = d4.m2; } } d1 et d4 sont des objets différents! domino d4 m1 = 2 m2 = 5 domino d1 domino d2 domino d3 m1 = 6 m2 = 6 m1 = 3 m2 = 4 m1 = 2 m2 = 5

18 + = public $ = static Accès aux attributs des objets : OID versus this classe MainDominos +$ Main(String[]) Domino d4 = new Domino(2,5); if ( m1!= m2 ) m1 = m2; Vision externe La méthode main voit le domino au travers de sa référence ou OID. classe Domino Ici,. m1 : int m2 : int +Domino(int,int) +Domino(int) +Domino() Vision interne m1 = vm1; m2 = vm2; d4: Domino this:domino m1 = 2 m2 = 5 Elle ne peut faire autrement que de l utiliser. De plus, this n a pas de sens dans main. Cours JAVA (I21) -Licence 1 Semestre 2 / Y.Laborde