Table Of ContentPlan
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:Calcul Scientifique et C++ : chausses trappes et peaux de bananes N. M. Josuttis, Object-Oriented Programming in C++, Willey. Stéphane Labbé.