Rémi Watrigant remi.watrigant@inria.fr (basé sur le cours ...€¦ · Mise en œuvre de tests...

Post on 16-Oct-2020

1 views 0 download

Transcript of Rémi Watrigant remi.watrigant@inria.fr (basé sur le cours ...€¦ · Mise en œuvre de tests...

RémiWatrigantremi.watrigant@inria.fr

(basésurlecoursdeChristelleCaillouet)

Organisa(ondumodule� Répartitionhoraire:

�  10hCM�  30hTD/TP

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

M213-POOC.Caillouet 2

Objec(fdumodule(PPN2013)

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

� EnlienaveclemoduleA214BasesdelaCOO.

C.Caillouet M213-POO 3

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

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

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

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

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

ModuleconnexeM214COO� Modélisationobjetpourl’analyseetconceptiondétailléeenUML

� Productiondetestsunitaires,problématiquedelanonrégression

� Gestiondesversionsdansledéveloppement� Documentationducode�  Sensibilisationauxbonnespratiquesdelaconceptionetdudéveloppement

C.Caillouet M213-POO 9

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

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

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

C.Caillouet M213-POO 14

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

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

C.Caillouet M213-POO 16

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

C.Caillouet M213-POO 17

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

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

�  Lesdonnéesd’unobjetsontappeléssesattributs

C.Caillouet M213-POO 18

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

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)

Conceptsabordés� Niveauconception/programmation

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

C.Caillouet M213-POO 21

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

� 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

LelangageJava

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

C.Caillouet M213-POO 25

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

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

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

Portabilitéentredifférentsenvironnements

C.Caillouet M213-POO 29

VM VM VM

Windows Linux MacOS

bytecode

javac

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

DiagrammeconceptuelJava

C.Caillouet M213-POO 31

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