Plan Introduction C++ouc’estpas++? LetoutC++:chausse´eglissante Surcharges,copied’objets:lesrisques Quelquesexemplesdeprogrammation:lestemplates Calcul Scientifique et C++ : chausses trappes et peaux de bananes. Ste´phaneLabbe´ Universite´JosephFourier,Grenoble,LaboratoireJeanKuntzmann. CoursANGD,le30septembre2008. Ste´phaneLabbe´ CoursANGD Plan Introduction C++ouc’estpas++? LetoutC++:chausse´eglissante Surcharges,copied’objets:lesrisques Quelquesexemplesdeprogrammation:lestemplates Plan 1 Introduction 2 C++ouc’estpas++? Diffe´rencesentreproce´duraletobjet Organisation,de´finitionsdetaˆches Lesoutilspourconcevoirdesprogrammes 3 LetoutC++:chausse´eglissante PourquelleutilisationleC++est-iladapte´? Nepasre´-inventercequiexistede´ja` Mais...lavien’estpasunlongfleuvetranquille... 4 Surcharges,copied’objets:lesrisques Surcharged’ope´rateuretsurchargedeme´moire Utilisationtropconfiantedestemplates 5 Quelquesexemplesdeprogrammation:lestemplates UtilisationdelaS.T.L. Unoutilbienutile:lesPatterns Gestiondeserreurs:exceptions Ste´phaneLabbe´ CoursANGD Plan Introduction C++ouc’estpas++? LetoutC++:chausse´eglissante Surcharges,copied’objets:lesrisques Quelquesexemplesdeprogrammation:lestemplates En quelques mots... QuiditC++ditbienentenduprogrammationoriente´eobjets. Pourlecalculscientifique,quelssontlesavantages? Grandesouplessedemaintenance, souplessedede´veloppement, gestionfineetmodulairedesexceptions. Quelensontlesde´savantages? Uneconceptionpluscomplexe, unerigueurdedocumentationplusforte, despie`gespouvantde´te´riorerlesperformancesdecalcul. Ainsi,lapremie`requestiona` seposerest:Ai-jebesoindefaireduC++? Ste´phaneLabbe´ CoursANGD Plan Introduction Diffe´rencesentreproce´duraletobjet C++ouc’estpas++? Organisation,de´finitionsdetaˆches LetoutC++:chausse´eglissante Lesoutilspourconcevoirdesprogrammes Surcharges,copied’objets:lesrisques Quelquesexemplesdeprogrammation:lestemplates Comparaison Caracte´risationdelaprogrammationproce´durale Nonprotectiondesdonne´es. Se´parationdesdonne´esetdesfonctions. Rigidite´ desfonctionsparrapportauxdonne´es. Re´pe´titiondesalgorithmessuivantletypededonne´es. Objectifsline´airesdeprogrammation. Principesdebasedelaprogrammationoriente´eobjets Pre´sencedeclasses:de´finitiondedonne´espouvantinteragiravec“l’exte´rieur”. Encapsulationdedonne´es:protectiondesdonne´es,autonomie. He´ritage:capacite´ desclassesd’objetsa` sespe´cialisera` partird’unmode`leplus ge´ne´ral. Polymorphisme:capacite´ desobjetsa` re´agirauxautresobjetsenfonctiondeleur classe. Ste´phaneLabbe´ CoursANGD Plan Introduction Diffe´rencesentreproce´duraletobjet C++ouc’estpas++? Organisation,de´finitionsdetaˆches LetoutC++:chausse´eglissante Lesoutilspourconcevoirdesprogrammes Surcharges,copied’objets:lesrisques Quelquesexemplesdeprogrammation:lestemplates Que choisir? Dansl’absolu,toutprogrammedevraiteˆtreconc¸uenpensantobjets. Bienentendu,cetypedeconceptionprenddutemps,avantdeselancerdans l’aventure,lesquestionssontdonclessuivantes: leprojetdoit-ileˆtreexploite´ parplusieurspersonnes? Est-ceunemaquettepouruneme´thodeouunprojetdede´veloppementa` longue e´che´ance? Quelgraindemodularite´ doit-onespe´rer? Ste´phaneLabbe´ CoursANGD Plan Introduction Diffe´rencesentreproce´duraletobjet C++ouc’estpas++? Organisation,de´finitionsdetaˆches LetoutC++:chausse´eglissante Lesoutilspourconcevoirdesprogrammes Surcharges,copied’objets:lesrisques Quelquesexemplesdeprogrammation:lestemplates Diagrammes U.M.L., un exemple L’outilpremierdeconceptionestlediagrammeU.M.L:UnifiedModelingLanguage. C’estunme´talangagequipeuteˆtreutilise´ efficacementpourlaprogrammation oriente´eobjets. Lesprincipauxatouts uneconceptiongraphiqueclairepermettantdese´changessimplesentre participantsa` unprojet, desoutilsdeprogrammationpouvantexploiterlesdiagrammes(ex.:Dia,ROSE, Umbrella...), uneinde´pendanceaulangagepermettantuneconceptionpe´renne. BibliographiesurU.M.L.etsonutilisation P-AMulleretN.Gaertner(2000)Mode´lisationobjetavecUML.Eyrolles. M.Lai(2000).UMLlanotationunifie´edemode´lisationobjet.DunodInformatiques. Unexempledecourssurleweb:http://uml.free.fr Lesiteofficiel:www.uml.org UMLetcalculscientifique:leprojetcsimoon,http://www-ljk.imag.fr/membres/Stephane.Labbe/Documents/csimoon.ps.gz Ste´phaneLabbe´ CoursANGD Plan Introduction Diffe´rencesentreproce´duraletobjet C++ouc’estpas++? Organisation,de´finitionsdetaˆches LetoutC++:chausse´eglissante Lesoutilspourconcevoirdesprogrammes Surcharges,copied’objets:lesrisques Quelquesexemplesdeprogrammation:lestemplates Diagrammes U.M.L. Probleme_Go -nom: chaîne -operateurs: liste<matrice> -/solutions: liste<vecteur> -etat: entier = 0 0..1 -stockages: liste<Stockage> Vecteur ++arsessoocuiderre_(oipne rparteecuirs(iionn :orpe:eMla)t:r iicnet): int 0..* -nom: chaîne +etat(): int 0..1 +affiche(): sortie +affiche(): sortie +associer_domaine(in nom_fichier:chaîne): int +initialisation_h(): int 0..1 Matrice -nom: chaîne 0..*-stockage_mat: Stockage* +valeur(u:V): V +affiche(): sortie 0..* 1 0..* Stockage -nom: chaîne +affiche(): sortie Ste´phaneLabbe´ CoursANGD Plan Introduction PourquelleutilisationleC++est-iladapte´? C++ouc’estpas++? Nepasre´-inventercequiexistede´ja` LetoutC++:chausse´eglissante Mais...lavien’estpasunlongfleuvetranquille... Surcharges,copied’objets:lesrisques Quelquesexemplesdeprogrammation:lestemplates A quoi est adapte´ le C++? Cre´ationd’unestructuremodulairedecode avoira` dispositionunestructurefacilementidentifiableetre´utilisable, pouvoirexploiterlessectionsdecodesexistantesetvalide´essanslesretoucher, mettresurpieddesproce´duresdetestdesfonctionsinde´pendantes. Gestionsimpledese´volutions ajouterdesfonctionnalite´ssansde´truirel’existant,voiresanslemodifier, pouvoirfacilementinte´grerdesmodulesde´veloppe´sa` l’exte´rieur,pard’autre personnes, rendreleslogicielsre´actifsa` leurenvironnement. BibliographiesurU.M.L.etsonutilisation B.Stroutrup,LelangageC++,PearsonEducation, N.M.Josuttis,Object-OrientedProgramminginC++,Willey. Ste´phaneLabbe´ CoursANGD Plan Introduction PourquelleutilisationleC++est-iladapte´? C++ouc’estpas++? Nepasre´-inventercequiexistede´ja` LetoutC++:chausse´eglissante Mais...lavien’estpasunlongfleuvetranquille... Surcharges,copied’objets:lesrisques Quelquesexemplesdeprogrammation:lestemplates A quoi n’est-il pas adapte´ ? Lesracinesducalcul LeC++,jusqu’a` nouvelordre,n’estpasre´ellementadapte´ aucalculsurdegrandes structuresline´aires. Apriori,unbinairedonne´ pourraiteˆtreobtenuavecn’importequellangage. Cen’estbienentenduqu’unevuedel’espritcarchaquecompilateurasesspe´cificite´s etplusuncompilateurestge´ne´raliste,moinsilrisqued’eˆtreefficacepouruneaction cible´e:parexemplelecalculvectorise´ surdestableauquiestl’atoutprincipaldes compilateursFORTRAN. Unesolution:l’interfacerleslangages. Ste´phaneLabbe´ CoursANGD Plan Introduction PourquelleutilisationleC++est-iladapte´? C++ouc’estpas++? Nepasre´-inventercequiexistede´ja` LetoutC++:chausse´eglissante Mais...lavien’estpasunlongfleuvetranquille... Surcharges,copied’objets:lesrisques Quelquesexemplesdeprogrammation:lestemplates Les bibliothe`ques InterfacerleFORTRANetleC++comportedenombreuxavantages: pouvoirbe´ne´ficierdebibliothe`quesFORTRANdecalculscientifique particulie`rementrichesetfiables, re´utiliservos”morceaux”decodesprogramme´senFORTRANtoutenbe´ne´ficiant delastructureC++degestiondesfluxetdesobjets, capterlemeilleurdesdeuxcompilateurs. Ste´phaneLabbe´ CoursANGD
Description: