cours-I4

icon

16

pages

icon

Français

icon

Documents

Le téléchargement nécessite un accès à la bibliothèque YouScribe Tout savoir sur nos offres

icon

16

pages

icon

Français

icon

Documents

Le téléchargement nécessite un accès à la bibliothèque YouScribe Tout savoir sur nos offres

012345678901234567890123Universite Paul Cezanne - Licence de math-info 2e anneeI4 : Programmation objet - Notes de coursCe module est axe sur la programmation objet. Chaque notion de programmation objet sera introduiteen la justi ant par des motifs relatifs au genie logiciel et sera illustree en Java. La programmation objetrepond a des principes de genie logiciel, qui traite des methodologies a adopter lorsqu’on elabore un logiciel.Le langage Java est etudie dans le seul but d’illustrer la programmation objet mais l’apprentissage completde ce langage ne constitue pas l’objectif du cours.1 Notion d’objetJusqu’ a present, vous avez programme de maniere imperative en utilisant des langages proceduraux (C,Pascal, etc). Cette maniere de programmer est celle qui repose sur ce qui se deroule concretement lors-qu’un programme est execute en langage machine par le processeur : une suite d’instructions est executee ensequence et modi e de proche en proche l’etat global de la memoire. La memoire est une liste d’octets et uneinstruction va modi er un octet (ou un petit nombre xe d’octets) de la memoire. Les langages imperatifsdits evolues s’abstraient quelque peu de ce schema en de nissant les notions de structure de donnees (quiregroupe des octets) et de procedure ou fonction (qui regroupe des instructions) mais gardent cette ideefondamentale de sequence d’instructions modi ant un etat global. Dans les langages imperatifs ...
Voir icon arrow

Publié par

Nombre de lectures

19

Langue

Français

012345678901234567890123 Universit´ePaulCe´zanne-Licencedemath-info2eann´ee
I4 : Programmation objet - Notes de cours
Cemoduleestaxe´surla programmation objet . Chaque notion de programmation objet sera introduite en la justifiant par des motifs relatifs au ge´nielogiciel etseraillustr´eeen Java . La programmation objet repond`adesprincipesdege´nielogiciel,quitraitedesme´thodologiesa`adopterlorsquone´laboreunlogiciel. ´ Le langage Java est´etudie´dansleseulbutdillustrerlaprogrammationobjetmaislapprentissagecomplet de ce langage ne constitue pas l’objectif du cours.
1 Notion d’objet Jusquapresent,vousavezprogramme´demani`ere imp´erative en utilisant des langages proc´eduraux (C, ` ´ Pascal,etc).Cettemanie`redeprogrammerestcellequireposesurcequised´erouleconcre´tementlors-quunprogrammeestexe´cuteenlangagemachineparleprocesseur:unesuitedinstructionsestex´ecute´een ´ sequenceetmodiedeprocheenprochel´etatglobaldelam´emoire.Lam´emoireestunelistedoctetsetune ´ instructionvamodierunoctet(ouunpetitnombrexedoctets)delame´moire.Leslangagesimpe´ratifs dits´evolu´essabstraientquelquepeudecesch´emaende´nissantlesnotionsde structurededonne´es (qui regroupe des octets) et de proc´edure ou fonction (quiregroupedesinstructions)maisgardentcetteid´ee fondamentaledes´equencedinstructionsmodiantun´etatglobal.Dansleslangagesimpe´ratifsquevous connaissez,lesd´eclarationsdesstructuresdedonn´eesetlesde´clarationsdefonctionsrestentformellement separ´eesdansleprogrammememequanddesstructuresdedonn´eessontassocie´esa`desgroupesdefonc-´ ˆ tionsquilesmodient.Ex:lesfonctionsdope´rationsurleslisteschaˆın´eesquivontservira`modierla variablequim´emoriseladressedupremierchaıˆnon.Or,plutˆotqueded´ecomposerunprogrammeendeux parties,uid´eclarelesstructuresdedonn´eesetunequide´nitlesfonctionsassoci´ees,laprogrammation une q objetd´ecomposeleprogrammeen classes regroupantchaquestructurededonne´esaveclesfonctionsqui lamodient.Lesinstancesdecesclassessontappele´sdes objets . Un programme sera alors vu comme un ensembledecomposantsautonomes(lesobjets)quiinteragissententreeuxpourfairee´merger unre´sultatglobal . Unobjetsede´nitpar: – ses attributs (=variables)quicaracte´risentsone´tatquivarieaucoursdutempspendantlexe´cution du programme, – ses m´ethodes (=fonctionsetproce´dures)quid´eterminentsoncomportement.Lesme´thodesdunobjet ne modifient directement que ses attributs. Les objets interagissent entre eux par l’ envoi de messages .Lemessagequenvoieunpremierobjet`aun deuxie`meobjetconsisteenlappelduneme´thodedudeuxi`emeobjet.Ledeuxi`emeobjetvaalorseectuer unecertainetaˆcheet,lecase´che´ant,retournerunre´sultataupremierobjet.Unmessagepermetdonca`un objet de modifier indirectement le´tatdunautreobjet.Uneme´thodepeutelle-meˆmeenvoyerdesmessages `adautresobjetsetlesr´esultatsquiluisontretourne´sluipermettentdechangerl´etatdelobjetauquelelle appartientetdeproduireelle-mˆemeunr´esultat. Lex´ecutiondunprogrammes´equentielproduitdoncunesuccessiondenvoisdemessagesquimodient deprocheenprochelese´tatsdesobjetstandisquedesr´esultatspartielsduprobl`emege´ne´ralsonttransmis enretourdobjetenobjet.Maislautonomiedesobjetspeutfacilementpermettreded´enirdesprogrammes distribu´eso`ulesobjetssex´ecutentetsenvoientdesmessagesenparalle`le.
1
Pourquoi des objets ? Lamod´elisationdunproble`mesouslaformedobjetseni¸epenter nteractionestunefaconnaturellederr´es denombreuxprobl`emescomplexes(organismes,organisationsdindividus,machinesre´alise´esparunassem-blagedecomposants,...).Exemplem´etaphorique:lesyst`emeimmunitairedunorganismevivant(objets: cellules, messages : hormones). Parailleurs,lautonomierelativedesobjetsestuneproprie´t´einte´ressantedupointdevueduge´nielogiciel. Lede´veloppementdapplicationslogiciellesconse´quentesre´unitungroupedepersonnesquidoiventtravailler enmˆemetemps.Ilfautdoncde´composerlestachesenmoduleslesplusinde´pendantspossiblelesunsdes autres.Unefoisquechaqueresponsabledemoduleconnaitlinterface(=lalistedesme´thodesquilmet`a dispositiondesautresetleurssp´ecications)desmodulesaveclesquelsilseraenrelation,ceresponsable pourra´ecriretoutseulsonpropremodulesanssepr´eoccuperdelafa¸condontlesautresmodulesseront e´crits.Parailleurs,lamodularit´epermetunegrandestabilite´ducode.Onpeuttesterunmoduleetchanger sesaspectsinternessanstoucherauxautresmodules.Sione´tendunprogrammeenrajoutantdesmodules, on ne modifiera que les anciens modules qui sont en relation avec les nouveaux modules. Cette organisation ducodeestd´ej`amiseenoeuvredanslaprogrammationimp´erativeparlede´coupageduneapplicationen multipleschiersetenbibliothe`quesdetypesetdefonctions.Leslangagesa`objetsocialisentcettefa¸con deconcevoiruneapplicationenlint´egrantformellementdanslelangage. Laconceptiondeprogrammesenprogrammationobjetdie`redecelledelaprogrammationproc´edurale. Enprogrammationproce´durale,onaaairea`uneimbricationdemodulesfonctionnellesquiacc`edentcol-lectivement`aunensemblededonne´es.Onpenseentermesded´ecompositiondetaˆchesensous-taˆches.En programmationobjet,onidentielesacteurs(=lesunite´scomportementales)duprobl`emepuisonde´termine lafacondontilsdoiventinteragirpourqueleproble`mesoitr´esolu. ¸ 2Aspectsimpe´ratifsdeJava Avant de voir comment Java permet de faire de la programmation objet, nous allons voir ses aspects impe´ratifs.Surcepoint,Javaesttr`esprochedulangageC.Pard´efaut,ilfautconsid´ererqueJavaetCsont identiques.Onnementionneraiciquelesdie´rencesessentiellesentrecesdeuxlangages. Voici une coquille de programme Java : public class Programme { public static void main(String args[]) { ... } }
Alaplacede...onplaceunesuitedinstructionsquicorrespond`acequonplacedanslafonction main() deC.Lenomduchiersourcedoiteˆtreidentique`aceluiquisuit public class dans le source mais avec l’extension .java . Ici, le nom de notre fichier source est donc Programme.java . Pour compiler le source, on utilise la commande javac quiproduituncodeobjetdontlenomduchierestlemeˆmequelesourcemais avec l’extension .class . Ici, la commande javac Programme.java produit le fichier Programme.class . Pourexe´cuterlecodeobjet,onutiliselacommande java en mentionnant le nom du fichier objet sans son extension. Ici, la commande java Programme ex´ecuteleprogramme. Les instructions if , switch , while , for ,etcexistent,se´criventetfonctionnentcommeenC.Idempour lesop´erateursarithme´tiques,logiques,etc. Certainstypesprimitifsdi`erent.Lestypesentiers(sign´es)sont byte (1 octet), short (2 octets), int (4 octets) et long (8 octets). Les types flottants sont float (4 octets) et double (8 octets). Les flottants permettentaussiderepre´senterlinnipositifoune´gatifetlavaleurnonrepre´sentable(parexemple,le resultatde0divise´par0).Letypecaracte`re char estcode´sur2octets.Parailleurs,ilexisteletype ´
2
Voir icon more
Alternate Text