Rémi Watrigant [email protected] (basé sur le cours ...€¦ · Mise en œuvre de tests...

31
Rémi Watrigant [email protected] (basé sur le cours de Christelle Caillouet)

Transcript of Rémi Watrigant [email protected] (basé sur le cours ...€¦ · Mise en œuvre de tests...

Page 1: Rémi Watrigant remi.watrigant@inria.fr (basé sur le cours ...€¦ · Mise en œuvre de tests unitaires ... La syntaxe change mais les concepts sont les mêmes! C. Caillouet M213

[email protected]

(basésurlecoursdeChristelleCaillouet)

Page 2: Rémi Watrigant remi.watrigant@inria.fr (basé sur le cours ...€¦ · Mise en œuvre de tests unitaires ... La syntaxe change mais les concepts sont les mêmes! C. Caillouet M213

Organisa(ondumodule� Répartitionhoraire:

�  10hCM�  30hTD/TP

� Evaluation…?:�  unouplusieursTPnoté(s)�  évaluationàmi-parcours� DSfinal

M213-POOC.Caillouet 2

Page 3: Rémi Watrigant remi.watrigant@inria.fr (basé sur le cours ...€¦ · Mise en œuvre de tests unitaires ... La syntaxe change mais les concepts sont les mêmes! C. Caillouet M213

Objec(fdumodule(PPN2013)

èDévelopperunprogrammedansunlangagedePOOàpartird'uneconceptiondétaillée.

� EnlienaveclemoduleA214BasesdelaCOO.

C.Caillouet M213-POO 3

Page 4: Rémi Watrigant remi.watrigant@inria.fr (basé sur le cours ...€¦ · Mise en œuvre de tests unitaires ... La syntaxe change mais les concepts sont les mêmes! C. Caillouet M213

ContenuduPPN� Conceptsfondamentauxdelaprogrammationorientéeobjet(encapsulation,composition,polymorphisme,héritage,cycledeviedesobjets)

�  Lectured'uneconceptionorientéeobjetdétaillée� Miseenœuvredetestsunitaires� Utilisationdebriqueslogicielles,d’interfacesdeprogrammation(API:ApplicationProgrammingInterface),debibliothèques

�  Sensibilisationauxbonnespratiquesdelaprogrammation(versions,documentationducode)

C.Caillouet M213-POO 4

Page 5: Rémi Watrigant remi.watrigant@inria.fr (basé sur le cours ...€¦ · Mise en œuvre de tests unitaires ... La syntaxe change mais les concepts sont les mêmes! C. Caillouet M213

Choixpourlemodule� Choixd’uneméthodologied’analyseetdeconception(UnifiedModelingLanguage-UML)

� Choixd’unenvironnementdeconception(VisualParadigm)

� Choixd’unlangagedeprogrammationorientéobjets(Java)

� Choixd’unenvironnementdedéveloppementIDE(Eclipse)

� Choixd’unframeworkdetestsunitaires(JUnit)

C.Caillouet M213-POO 5

Page 6: Rémi Watrigant remi.watrigant@inria.fr (basé sur le cours ...€¦ · Mise en œuvre de tests unitaires ... La syntaxe change mais les concepts sont les mêmes! C. Caillouet M213

Autreslangagesorientéobjet�  C++:trèsutilisé�  C#:langagedeMicrosoft(appartientà.NET)�  ObjectiveC:langageutiliséparApple�  PHP:langagetrèsutilisésurleWeb�  Python�  Ruby�  Eiffel�  Ada�  Smalltalk�  ...

�  Lasyntaxechangemaislesconceptssontlesmêmes!

C.Caillouet M213-POO 6

Page 7: Rémi Watrigant remi.watrigant@inria.fr (basé sur le cours ...€¦ · Mise en œuvre de tests unitaires ... La syntaxe change mais les concepts sont les mêmes! C. Caillouet M213

programmer objets java M213

M214

M112

M224

outil Visual Paradigm diagrammes UML + ou - détaillés concevoir

développer

contraintes - budget, temps, planning

Bases -  Variables, types, itérations, conditions,… Structurer -  TAD Tester -  Tests unitaires -  Intégration

typedef struct +

Traitements (proc, fonc)

copains + API

Ré-utiliser

Compléments : algo (M313), prog (M315, M412, M415)

cycle de vie

V

M113

Page 8: Rémi Watrigant remi.watrigant@inria.fr (basé sur le cours ...€¦ · Mise en œuvre de tests unitaires ... La syntaxe change mais les concepts sont les mêmes! C. Caillouet M213

Pré-requis� ModulesM112&M113:

�  Structuresalgorithmiquesfondamentales:choix,répétitions

� Notiondesous-programmes(nommagedesvariables,assertions,documentation,etc.)

� Notiondetypesetdedonnées�  Apprendreàréutiliserlesfonctions,procéduresouméthodesexistantesdulangage

�  Gestiondeserreurs�  Programmationmodulaire�  ConceptsetmiseenœuvredesTAD

C.Caillouet M213-POO 8

Page 9: Rémi Watrigant remi.watrigant@inria.fr (basé sur le cours ...€¦ · Mise en œuvre de tests unitaires ... La syntaxe change mais les concepts sont les mêmes! C. Caillouet M213

ModuleconnexeM214COO� Modélisationobjetpourl’analyseetconceptiondétailléeenUML

� Productiondetestsunitaires,problématiquedelanonrégression

� Gestiondesversionsdansledéveloppement� Documentationducode�  Sensibilisationauxbonnespratiquesdelaconceptionetdudéveloppement

C.Caillouet M213-POO 9

Page 10: Rémi Watrigant remi.watrigant@inria.fr (basé sur le cours ...€¦ · Mise en œuvre de tests unitaires ... La syntaxe change mais les concepts sont les mêmes! C. Caillouet M213

ModuleconnexeM224Ges(ondeprojet�  Ladémarcheprojet�  Lesacteurs:lemaîtred’ouvrage,lemaîtred’œuvre,lessous-traitants,lecomitédepilotage

�  L’équipeprojet:répartitiondesrôles�  Lecahierdescharges:analyseetcompréhensiondesbesoinsduclient

�  Ladéfinitiondestâches,planificationetenchaînement,attributiondesressources

�  Lesoutilsd’ordonnancement:graphePert,diagrammedeGantt

�  Ladocumentation

C.Caillouet M213-POO 10

Page 11: Rémi Watrigant remi.watrigant@inria.fr (basé sur le cours ...€¦ · Mise en œuvre de tests unitaires ... La syntaxe change mais les concepts sont les mêmes! C. Caillouet M213

ModulescomplémentairesenDUT2� M313:Algorithmiqueavancée(java)Savoirmettreenœuvredesstructuresdedonnéesavancées(ycomprisrécursives)etlesalgorithmesquilesmanipulent

� M315:ConceptionetprogrammationavancéesProduireuneconceptiondétailléeenappliquantdesmodèlesdeconception,lamettreenœuvreenutilisantdesbonnespratiquesdeprogrammationorientéeobjet

� M412:Programmationrépartie(java)Savoirprogrammeruneapplicationrépartie(multiprocessus–multithreads–distribuéesurunréseau)

C.Caillouet M213-POO 11

Page 12: Rémi Watrigant remi.watrigant@inria.fr (basé sur le cours ...€¦ · Mise en œuvre de tests unitaires ... La syntaxe change mais les concepts sont les mêmes! C. Caillouet M213

Bibliographie�  Sitederéférence:http://www.oracle.com/fr/java/index.html� Documentationenligne(développement):http://docs.oracle.com/javase/8/docs/api/�  Livres:

�  Laprogrammationorientéeobjet,H.Bersini,Eyrolles�  Programmerenjava,9èmeédition,C.Delannoy,Eyrolles�  Enligne:Penserenjava,B.Eckelhttp://bruce-eckel.developpez.com/livres/java/traduction/tij2/

C.Caillouet M213-POO 12

Page 13: Rémi Watrigant remi.watrigant@inria.fr (basé sur le cours ...€¦ · Mise en œuvre de tests unitaires ... La syntaxe change mais les concepts sont les mêmes! C. Caillouet M213
Page 14: Rémi Watrigant remi.watrigant@inria.fr (basé sur le cours ...€¦ · Mise en œuvre de tests unitaires ... La syntaxe change mais les concepts sont les mêmes! C. Caillouet M213

C.Caillouet M213-POO 14

Page 15: Rémi Watrigant remi.watrigant@inria.fr (basé sur le cours ...€¦ · Mise en œuvre de tests unitaires ... La syntaxe change mais les concepts sont les mêmes! C. Caillouet M213

Différentsparadigmesdeprogramma(on

C.Caillouet M213-POO 15

IMPERATIF FONCTIONNEL OBJET DESCRIPTIF

DEMARCHE

ProcéduraleSéried’instructions,sautsconditionnels

FlotsdedonnéesDiagrammedestructure

Objets,classes,composition,réseaudemessages

Besoin,expressif,léger

CONCEPTS

Itération,structuresdecontrôlesExécutiond’instructionsquimodifientl’étatdelamémoire

Evaluationd’expressionsquinedépendentquedelavaleurdesarguments,etnondel’étatdelamémoire

Objet,classes,méthodes,encapsulation,héritage,relationsdecomposition,d’utilisation,…

Descriptiondesbutsàatteindreàl’aided’unesyntaxelégère

LANGAGESFortran,C,Pascal Lisp,Scheme,

CamlSmallTalk,C++,Java,Python

HTML,XML,LaTeX

Page 16: Rémi Watrigant remi.watrigant@inria.fr (basé sur le cours ...€¦ · Mise en œuvre de tests unitaires ... La syntaxe change mais les concepts sont les mêmes! C. Caillouet M213

L’approcheorientéeobjet�  Approcheprocédurale:«Quedoitfairemonprogramme?»�  Approcheobjet:«Dequoidoitêtrecomposémonprogramme?»�  Conséquenced’unchoixdemodélisationfaitpendantlaconception.

C.Caillouet M213-POO 16

Page 17: Rémi Watrigant remi.watrigant@inria.fr (basé sur le cours ...€¦ · Mise en œuvre de tests unitaires ... La syntaxe change mais les concepts sont les mêmes! C. Caillouet M213

L’orientéobjet�  Méthodologiecentréesurlesdonnées(objets)�  Chaqueobjetestuncomposantautonome�  Trio<objet,attributs,valeurs>

C.Caillouet M213-POO 17

Page 18: Rémi Watrigant remi.watrigant@inria.fr (basé sur le cours ...€¦ · Mise en œuvre de tests unitaires ... La syntaxe change mais les concepts sont les mêmes! C. Caillouet M213

Lestyleobjet�  Lesobjetsreprésententdesdonnéesmodéliséespardesclassesquidéfinissentdestypes� Unpeucommetypedef structenC

�  Lesclassesdéfinissentlesactionsquelesobjetspeuventprendreenchargeetlamanièredontlesactionsaffectentleurétat.�  Cestraitementssontdesméthodes

�  Lesdonnéesd’unobjetsontappeléssesattributs

C.Caillouet M213-POO 18

Page 19: Rémi Watrigant remi.watrigant@inria.fr (basé sur le cours ...€¦ · Mise en œuvre de tests unitaires ... La syntaxe change mais les concepts sont les mêmes! C. Caillouet M213

Laprogramma(onorientéeobjet

�  Lesobjectifs:�  Faciliterledéveloppement,lamaintenance,etl’évolutiondesapplications;

�  Permettreletravailenéquipe;�  Augmenterlaqualitédeslogiciels(moinsdebugs).

�  Solutionsproposées:�  Découpler(séparer)lespartiesdesprojets;�  Limiter(etlocaliser)lesmodificationslorsdesévolutions;�  Réutiliserfacilementducode.

C.Caillouet M213-POO 19

Page 20: Rémi Watrigant remi.watrigant@inria.fr (basé sur le cours ...€¦ · Mise en œuvre de tests unitaires ... La syntaxe change mais les concepts sont les mêmes! C. Caillouet M213

Modèlepourledéveloppementlogiciel

Analyse

Conception

Implémentation

Test

Maintenance

�  Unifiedmodelinglanguage(UML)�  Standardpourl’analyseetla

conceptionorientéeobjet�  Premièreversionstandarden1997�  Actuellementversion2.5

C.Caillouet M213-POO 20

�  Java�  Pasunstandardmaistrèslargement

utilisé�  Premièreversionstandarden1995�  Dernièreversionstable:JDK1.8(Java8)

Page 21: Rémi Watrigant remi.watrigant@inria.fr (basé sur le cours ...€¦ · Mise en œuvre de tests unitaires ... La syntaxe change mais les concepts sont les mêmes! C. Caillouet M213

Conceptsabordés� Niveauconception/programmation

�  Instanciationd’objetsàpartirdeclasses�  Encapsulation�  Composition� Héritage�  Polymorphisme�  Généricité�  Persistance�  Testsunitaires

C.Caillouet M213-POO 21

Page 22: Rémi Watrigant remi.watrigant@inria.fr (basé sur le cours ...€¦ · Mise en œuvre de tests unitaires ... La syntaxe change mais les concepts sont les mêmes! C. Caillouet M213
Page 23: Rémi Watrigant remi.watrigant@inria.fr (basé sur le cours ...€¦ · Mise en œuvre de tests unitaires ... La syntaxe change mais les concepts sont les mêmes! C. Caillouet M213

Historique�  Crééen1995parSunMicrosystems�  OraclerachèteSunen2009etdétientdésormaisJava

�  EssordulangagegrâceàInternet(navigateurswebetapplet):�  JavaJDK1.01et1.02en1996,1.1en1998�  Java2(Playground)J2SE1.2en1999,(Kestrel)J2SE1.3en2000,(Merlin)J2SE1.4en2004

�  Java5(Tiger)J2SE5.0en2004�  Java6(Mustang)JSE6.0en2006�  Java7(Dolphin)JSE7.0en2011�  Java8JSE8.0en2014

C.Caillouet M213-POO 23

Page 24: Rémi Watrigant remi.watrigant@inria.fr (basé sur le cours ...€¦ · Mise en œuvre de tests unitaires ... La syntaxe change mais les concepts sont les mêmes! C. Caillouet M213

� Chaquelangageadesavantagesetdesinconvénients.

�  Javaest:� Modulaire:onpeutécriredesportionsdecode«génériques»

�  Rigoureux:erreursdétectéesplutôtàlacompilationqu’àl’exécution

�  Portable:leprogrammecompilépeuts’exécutersurplusieursplateformes

C.Caillouet M213-POO 24

Page 25: Rémi Watrigant remi.watrigant@inria.fr (basé sur le cours ...€¦ · Mise en œuvre de tests unitaires ... La syntaxe change mais les concepts sont les mêmes! C. Caillouet M213

LelangageJava

� Enquelquesmots:� OrientéObjet�  Simple,Robuste,DynamiqueetSécurisé�  IndépendantdelaPlateforme(VM)�  SemiCompilé/SemiInterprété�  Fortementtypé�  BibliothèqueImportante(JDKAPI)

C.Caillouet M213-POO 25

Page 26: Rémi Watrigant remi.watrigant@inria.fr (basé sur le cours ...€¦ · Mise en œuvre de tests unitaires ... La syntaxe change mais les concepts sont les mêmes! C. Caillouet M213

LangagecompiléetinterprétéCodesource

Compilateur

Bytecode

Interpréteur

Langagemachine

Systèmed’exploitationC.Caillouet M213-POO 26

MonProgramme.java

javacMonProgramme.java

MonProgramme.class

javaMonProgramme

Virtualisation(JVM)

Systèmed’exploitation

Page 27: Rémi Watrigant remi.watrigant@inria.fr (basé sur le cours ...€¦ · Mise en œuvre de tests unitaires ... La syntaxe change mais les concepts sont les mêmes! C. Caillouet M213

Lebytecode�  LelangagesourceJavaestdéfiniparlaJLS(JavaLanguageSpecification)éditéeparSun-Oracle�  Syntaxe+sémantique

�  Lecodesourced’uneclassecontenuedansunfichierestcompiléaveclacommandejavac�  celaproduituncodeintermédiaire,appelébytecode

�  Lebytecoded’uneclasseestdestinéàêtrechargéparunemachinevirtuellequidoitl’exécuteraveclacommandejava,parinterprétation.�  L’argumentestlenomd’uneclasse(sansextension.class)

C.Caillouet M213-POO 27

Page 28: Rémi Watrigant remi.watrigant@inria.fr (basé sur le cours ...€¦ · Mise en œuvre de tests unitaires ... La syntaxe change mais les concepts sont les mêmes! C. Caillouet M213

Lamachinevirtuelle(JVM)�  Rôle:Abstrairelecomportementd’unemachine�  But:Rendreindépendantdelaplateforme

�  LaJVM:�  Garantitlemêmeenvironnementd’exécutionsurlesdifférentesplateformesd’accueil(Windows,Linux,MacOS)

�  Optimise(commeunOS)l’exécutiondesapplicationsenfonctiondelamachine

èUneJVMtraduitlebytecodedanslelangagemachinedelaplateformed’accueil.

C.Caillouet M213-POO 28

Page 29: Rémi Watrigant remi.watrigant@inria.fr (basé sur le cours ...€¦ · Mise en œuvre de tests unitaires ... La syntaxe change mais les concepts sont les mêmes! C. Caillouet M213

Portabilitéentredifférentsenvironnements

C.Caillouet M213-POO 29

VM VM VM

Windows Linux MacOS

bytecode

javac

Page 30: Rémi Watrigant remi.watrigant@inria.fr (basé sur le cours ...€¦ · Mise en œuvre de tests unitaires ... La syntaxe change mais les concepts sont les mêmes! C. Caillouet M213

Java:unlangageetuneplateforme�  DanslatechnologieJava,onabesoin:

�  Dulangagedeprogrammationetducompilateur�  DelaJVMetdesAPIs(ApplicationProgrammingInterfaces)regroupéesdansuneplateforme:�  JavaSE(JavaPlatform,StandardEdition):JavaSE8pour

applicationsclassiques,desktop�  JavaEE(JavaPlatform,EnterpriseEdition):JavaEE8pour

développeretdéployerdesapplicationsserveur,Webservicesetc.�  JavaME(JavaPlatform,MicroEdition):J2MEpourlesapplications

embarquées,PDA,smartphones,etc.

�  Sil’onveutjusteexécuter,ilsuffitduJRE(JavaRuntimeExecution)paroppositionauJDK(JavaDevelopmentKit)

C.Caillouet M213-POO 30

Page 31: Rémi Watrigant remi.watrigant@inria.fr (basé sur le cours ...€¦ · Mise en œuvre de tests unitaires ... La syntaxe change mais les concepts sont les mêmes! C. Caillouet M213

DiagrammeconceptuelJava

C.Caillouet M213-POO 31

http://docs.oracle.com/javase/8/docs