Programmation Impérative 2

Documents pareils
Programme Compte bancaire (code)

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

Java Licence Professionnelle CISII,

Corrigé des exercices sur les références

Corrigés des premiers exercices sur les classes

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

Programmation par les Objets en Java

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

TD Objets distribués n 3 : Windows XP et Visual Studio.NET. Introduction à.net Remoting

ACTIVITÉ DE PROGRAMMATION

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

Synchro et Threads Java TM

Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T>

Premiers Pas en Programmation Objet : les Classes et les Objets

IFT287 Exploitation de base de données relationnelles et orientées objet. Laboratoire Mon premier programme Java en Eclipse

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

Package Java.util Classe générique

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

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

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Programmation Réseau. Sécurité Java. UFR Informatique jeudi 4 avril 13

RMI le langage Java XII-1 JMF

Utiliser Java sans BlueJ

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

Java DataBaseConnectivity

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)

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

TP, première séquence d exercices.

7 Développement d une application de MapReduce

Chapitre 10. Les interfaces Comparable et Comparator 1

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

OpenPaaS Le réseau social d'entreprise

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

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

Serveur d'archivage 2007 Installation et utilisation de la BD exist

TP1 : Initiation à Java et Eclipse

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

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

Design patterns. Design patterns - définition. Design patterns - avantages

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

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

TD/TP PAC - Programmation n 3

TD2 Programmation concurrentielle

Programmation avec des objets : Cours 7. Menu du jour

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 )

INF 321 : mémento de la syntaxe de Java

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

Programmer en JAVA. par Tama

as Architecture des Systèmes d Information

Cours 1: Java et les objets

JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.

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

Remote Method Invocation Les classes implémentant Serializable

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

Java Licence professionnelle CISII,

Auto-évaluation Programmation en Java

Machines Virtuelles. et bazard autour. Rémi Forax

La base de données XML exist. A. Belaïd

Projet de programmation (IK3) : TP n 1 Correction

API04 Contribution. Apache Hadoop: Présentation et application dans le domaine des Data Warehouses. Introduction. Architecture

Flux de données Lecture/Ecriture Fichiers

Chapitre VI- La validation de la composition.

Convers3 Documentation version Par Eric DAVID : vtopo@free.fr

Derrière toi Une machine virtuelle!

Un ordonnanceur stupide

INITIATION AU LANGAGE JAVA

Java Licence Professionnelle CISII,

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

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

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1

Notes de cours Practical BigData

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

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

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

J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation

Programmation Orientée Objet

Projet gestion d'objets dupliqués

Programmation Objet Java Correction

Une introduction à Java

Programmation Orientée Objets Le Langage JAVA

Langage Java. Classe de première SI

Utilisation d objets : String et ArrayList

Threads. Threads. USTL routier 1

Classe Interne, Anonyme & Enumération

Généralités sur le Langage Java et éléments syntaxiques.

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

Création d objet imbriqué sous PowerShell.

TP Programmation Java / JDBC / Oracle

LOG4430 : Architecture logicielle et conception avancée

Calcul Parallèle. Cours 5 - JAVA RMI

Java 7 Les fondamentaux du langage Java

Applet pour visualiser les variables «automate» notifiées

TP3. Mail. Attention aux fausses manoeuvres lors de ce TP vous pouvez endommager votre mail sur ouindose.

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

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants.

SYNC FRAMEWORK AVEC SQLITE POUR APPLICATIONS WINDOWS STORE (WINRT) ET WINDOWS PHONE 8

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

Interfaces graphiques avec l API Swing

Transcription:

Programmation Impérative 2 Responsable: Nguyen Kim Thang thang@ibisc.fr (merci Tarek!) http://www.ibisc.fr/~thang/teaching/progimp2/progimp.html

Organisation Jeudis, cours de 8h00-9h30, TD de 9h45-11h15 Sites du cours: transparents + TD http://www.ibisc.fr/~thang/teaching/progimp2/progimp.html Conseils: compréhension, pratique

Résumé du cours précédent Instructions de contrôles: if/then switch... case Boucles/Récursivité while/for Découpage fonctionelle factoriser des parties

Résumé du cours Classes et objets simples Découpage structurelle et fonctionelle Modularité fonctionelle, robustess et maintenance

Example 1: Calculatrice Disposer de boutons tels que Ils possèdent une légende, une couleur, des coordonnées... Ils sont différents: leur légende, leur couleur,...

Example 1: Calculatrice Disposer de boutons tels que Ils possèdent une légende, une couleur, des coordonnées... Ils sont différents: leur légende, leur couleur,... Boutons: caractéristiques communes; chacun a ses propre valeur

Example 1: Calculatrice Disposer de boutons tels que Ils possèdent une légende, une couleur, des coordonnées... Ils sont différents: leur légende, leur couleur,... Boutons: caractéristiques communes; chacun a ses propre valeur Il en va de même pour tout ce qu on a envie de nommer des objets au sens large

Example 2: Enfants String boolean double nom estgarçon poids Primitif (int; double;...) Objets (String;...)

Example 2: Enfants String boolean double nom estgarçon poids Primitif (int; double;...) Objets (String;...) Pourquoi pas juste primitifs? String Alex String David double 20 kg double 25 kg

Example 2: Enfants String boolean double nom estgarçon poids Primitif (int; double;...) Objets (String;...) Pourquoi pas juste primitifs? String Alex String David String David double 20 kg double 25 kg double 19 kg

Example 2: Enfants String boolean double nom estgarçon poids Primitif (int; double;...) Objets (String;...) Pourquoi pas juste primitifs? String Alex String David String David double 20 kg double 25 kg double 19 kg David2

Example 2: Enfants String boolean double nom estgarçon poids Primitif (int; double;...) Objets (String;...) Pourquoi pas juste primitifs? String Alex String David String David double 20 kg double 25 kg double 19 kg Avec 5000 enfants?! David2

Example 3: Ecoles Enfant 1 Enfant 2 Enfant 3 Maïtresse 1 Ecole

Example 3: Ecoles Enfant 1 Enfant 2 Enfant 3 Maïtresse 1 Ecole caractéristiques communes; propre valeur

Classes & Objets Descripteur des attributs des objets Instances particulières valuées Un objet = une instance de classe

Classes & Objets Descripteur des attributs des objets Instances particulières valuées Un objet = une instance de classe Bouton Enfant Maïtresse Ecole 1; 2; 3;... (David, 20kg); (Antoine, 19kg);... Claire; Marie;... Evry; Palaiseau;...

Classes & Objets class X { attributs (variables d instance) constructeurs } La manière que les objets doivent être conçus

Dominos Descripteurs des attributs des objets Instances particulières valuées

Dominos Descripteurs des attributs des objets Instances particulières valuées /** Classe 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 } //...à suivre... un domino (2,5) m1 = 2 m2 = 5 un domino (2,5) m1 = 2 m2 = 5 un domino (3,4) m1 = 3 m2 = 4 un domino (6,6) m1 = 6 m2 = 6

Dominos Descripteurs des attributs des objets Instances particulières valuées /** Classe 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 } //...à suivre... un domino (2,5) m1 = 2 m2 = 5 un domino (2,5) m1 = 2 m2 = 5 un domino (3,4) m1 = 3 m2 = 4 un domino (6,6) m1 = 6 m2 = 6 Déclarations non statique

Classes & Objets class X { attributs (variables d instance) constructeurs } La manière que les objets doivent être conçus

Constructeur d objet Constructeur: même nom que la classe

Constructeur d objet Constructeur: même nom que la classe La signature des constructeurs est particulière : elle n admet pas de type de retour!

Constructeur d objet Constructeur: même nom que la classe La signature des constructeurs est particulière : elle n admet pas de type de retour! Déclaration «public» seulement et non plus «public static»!

Constructeur d objet this: référencer à l objet en cours de construction

Constructeur d objet this: référencer à l objet en cours de construction

Constructeur d objet this: référencer à l objet en cours de construction Notation pointée habituelle

Constructeur d objet différents schémas Un domino double Un domino par défaut

Constructeur d objet différents schémas Un domino double Un domino par défaut

Construction d objet new <Constructeur> (Paramètres) 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; } }

Construction d objet new <Constructeur> (Paramètres) 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; } } domino d1 m1 = 2 m2 = 5

Construction d objet new <Constructeur> (Paramètres) 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; } } domino d2 m1 = 3 m2 = 4 domino d1 m1 = 2 m2 = 5

Construction d objet new <Constructeur> (Paramètres) 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; } } domino d2 m1 = 3 m2 = 4 domino d3 m1 = 6 m2 = 6 domino d1 m1 = 2 m2 = 5

Construction d objet new <Constructeur> (Paramètres) 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; } } domino d4 m1 = 2 m2 = 5 domino d2 m1 = 3 m2 = 4 domino d3 m1 = 6 m2 = 6 domino d1 m1 = 2 m2 = 5

Construction d objet new <Constructeur> (Paramètres) 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 d2 m1 = 3 m2 = 4 domino d3 m1 = 6 m2 = 6 domino d1 m1 = 2 m2 = 5

Vision interne Quand le code en cours d exécution se trouve m1 : int m2 : int classe Domino Dans la class d un objet On accède aux propriétés de l objet en cours d exécution à l aide de la variable autoréférencement this Vision interne Dominos déjà construits m1 = 3 m2 = 4

Vision externe Quand le code en cours d exécution se trouve classe MainDominos En dehors de la class d un objet Le code en cours d exécution accède à l objet à l aide d une référence externe (OID) à l objet d4 Vision externe Un domino d2 Un domino m1 = 2 m2 = 5 m1 = 3 m2 = 4

Référence externe (OID) versus this classe MainDomino main(int,int) classe Domino Domino(int,int) En dehors d l objet, on utilise objet Dans l objet, on est objet d4: Domino this:domino m1 = 2 m2 = 5

TD1 Dominos Classes & Objets Attributs + Contructeurs Bon codeur vs excéllent codeur Questions