Rémi Watrigant [email protected] (basé sur le cours ...€¦ · Mise en œuvre de tests...
Transcript of Rémi Watrigant [email protected] (basé sur le cours ...€¦ · Mise en œuvre de tests...
(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