Click here to load reader

Introduction à la Programmation Objet C++.pdf · PDF fileInformatique II Programmation Orientée Objet (en C++) – 2 – Encapsulation (1) Dans les programmes tels qu’on les a

  • View
    216

  • Download
    1

Embed Size (px)

Text of Introduction à la Programmation Objet C++.pdf · PDF fileInformatique II...

  • Informatique II Programmation Oriente Objet (en C++) 1

    Introduction la Programmation Objet

    Jusqu prsent, vous avez appris criredes programmes de plus en plus complexes.

    Il faut donc maintenant des outilspour organiser ces programmes de faon plus efficace.

    Cest lun des objectifs principaux de la notion dobjet.

    Les objets permettent de mettre en uvredans les programme les notions:

    dencapsulation et dabstraction;

    dhritage et de polymorphisme.

  • Informatique II Programmation Oriente Objet (en C++) 2

    Encapsulation (1)

    Dans les programmes tels quon les a crits (et dcrits) jusqu prsent,les notions de type de donnes et de fonctions sont spares:

    O les dataTypei sont des types de donnes (int, char, mais aussi ceux dfinispar typedef), et les fonctionsj sont des fonctions utilisant ces types, par exemple:

    dataType2 fonction2(const dataType1 x, dataType3 y)

    types de donnes fonctions

    aspect statique aspect dynamique

    dataType1

    dataType2

    ...

    dataTypeN

    fonction1

    fonction2

    ...

    fonctionN

  • Informatique II Programmation Oriente Objet (en C++) 3

    Encapsulation (2)

    Le principe dencapsulation consiste regrouper,dans un mme lment informatique, les aspects statique et dynamique

    (i.e. les donnes et les fonctions) spcifiques une entit.

    Cet lment informatique est appel: objet

    les [structures de] donnes dfinies dans un objet sontappeles les attributs de lobjet;

    les fonctions [de manipulations] dfinies dans un objetsont appeles les mthodes de lobjet.

    On a donc la relation fondamentale:

    data1

    data2

    data3

    fonction1

    fonction3

    O B J E T = a t t r i bu t s + m t h o d e s

  • Informatique II Programmation Oriente Objet (en C++) 4

    Encapsulation (3)

    En plus du regroupement des lments statique et dynamique [dune entit],lencapsulation permet de dfinir deux niveaux de perception:

    le niveau externe: perception de lobjet depuis lextrieur

    le niveau interne: perception de lobjet depuis lintrieur

    Le niveau externe, correspond la partie visible de lobjet;il est constitu des spcifications des lements [de lobjet] visiblesde lextrieur (appels lments publics1), savoir les prototypeset les dclarations de ses mthodes et attributs publics.Ce niveau reprsente donc linterface de lobjet avec lextrieur.

    Le niveau interne correspond limplmentation de lobjet;il est constitu des lments [de lobjet] visibles uniquement del intrieur de cet objet (appels lments privs); outre leprototypage et la dclaration des mthodes et attributs privs, leniveau interne regroupe galement les dfinitions de lensemble desmthodes de lobjet.Ce niveau reprsente donc le corps de lobjet.

    1. Les concepts relatifs la visibilit des lments (publiques, privs, etc) seront traits en dtails plus tard dans le cours.

    Interface

    prototypesdes mthodes (publiques)

    dclarationdes attributs (publics)

    proto et decl. deslments privs

    dfinition des mthodes

    Corps

  • Informatique II Programmation Oriente Objet (en C++) 5

    Abstraction (1)

    Pour tre vritablement intressante,la notion dobjet doit permettre un certain degr dabstraction.

    Si lon considre par exemple les figures gomtriques,la notion dobjet rectangle ne sera intressante que si lon peut

    lui associer des proprits gnrales, vraies pour lensemble des rectangles,et non pas uniquement pour un rectangle particulier.

    Par exemple, les notions de largeur et hauteursont des proprits communes lensemble des rectangles,

    cest dire au concept abstrait rectangle, et il en va de mme pour la relationqui existe entre la surface dun rectangle et ses dimensions (surface = largeur x hauteur)

    Le processus dabstraction consistera donc identifier,pour un ensemble donn dlments:

    1) des caractrisations valides pour la totalit de ces lments;2) des mcanismes communs la totalit de ces lments.

    Ces caractrisations et mcanismes constituent donc unedescription gnrique des lments de lensemble considr.

  • Informatique II Programmation Oriente Objet (en C++) 6

    Abstraction (2)

    En programmation objet,nous appelerons classe le rsultat du

    processus dabstraction prcdemment dcrit.

    Une classe factorise donc les caractrisations communesdes lments quelle permet de dcrire, et de ce fait peut aussitre vue comme un moule (patron) pour la cration des objets

    (que lon appelle alors des instances de la classe).

    Une classe correspond un type2

    et la cration dune instance pour une classe donnese fait par le biais de la dclaration dune variable

    du type reprsent par la classe.

    Cette dclaration est aussi appele instanciationet linstance produite est donc est une ralisation particulire

    de la classe.

    2. Un type complexe, car composite (plusieurs attributs) et pour lequel on dfinit de plus un ensemble de fonctions, les mthodes.

    hauteur :

    largeur :

    surface = ...

    classe(description gnrique abstraite)

    instanciation

    instances(ralisations spcifiques

    concrtes)

  • Informatique II Programmation Oriente Objet (en C++) 7

    Abstraction (3)

    hauteur : 30

    largeur : 12

    surface = 324

    hauteur : 15

    largeur : 26

    surface = 390

    hauteur : 30

    largeur : 30

    surface = 900

    hauteur :

    largeur :

    surface = hauteur x largeur

    abstraction

    spcifique

    gnrique

  • Informatique II Programmation Oriente Objet (en C++) 8

    Exemples dobjets

    Quelques exemples de reprsentation dobjets:

    le livre Conception et programmation orientes objet de la bibliothque du DI; le velo de votre petit frre; le stylo que vous tenez dans la main; ... la chane de caractres qui reprsente votre nom; la fentre dans laquelle netscape saffiche; ...

    Et leur abstraction en terme de classes:

    lensemble des livres; lensemble des vlos; lensemble des personnes; lensemble des stylos; ... le type chanes de caractres (string); les fentres dune interface graphique (CDE); ...

  • Informatique II Programmation Oriente Objet (en C++) 9

    Classes v.s. instances (1)

    Il est important de bien saisir la diffrenceentre les notions de classe et dinstance:

    classe = attributs + mthodes + mcanisme dinstanciationOn dsigne souvent les attributs et mthodes dune classe comme ses proprits.Linstanciation est, comme dit prcdemment, le mcanisme qui permet de crer desinstances dont les traits sont ceux dcrits par la classe; lensemble des instances duneclasse constitue lextension de la classe.

    instance = valeurs dattributs + accs aux mthodes

    Dans le jargon de la programmation objet, les termes instance et objet sont pratiquementsynonymes3, do la reformulation de lquation fondamentale de dpart:

    3. La seule diffrence que lon peut relever est quune instance dsigne toujours une ralisation dun type classe, tandis que le terme objet est parfoisutilis dans son sens commun (Toute chose ayant unit et indpendance et qui affecte les sens; Ce qui est donn par lexprience, et existeindpendamment de lesprit) et dsigne alors des ralisations de type quelconques.

    OBJET = [valeurs d]attributs + [accs aux] mthodes

  • Informatique II Programmation Oriente Objet (en C++) 10

    Classes v.s. instances (2)

    12

    nom:

    attributs: mthodes:

    Rectangle

    hauteur: entier naturellargeur: entier naturel surface():entier naturel

    dessine()

    homothtie(ratio: rel positif)

    Classe(type abstrait compexe)

    30

    2615

    3030

    Instance 1(objet de type Rectangle)

    Instance 2(objet de type Rectangle)

    Instance 3(objet de type Rectangle)

    existence conceptuelle,(criture & compilation du programme)

    existence concrte(excution du programme)

  • Informatique II Programmation Oriente Objet (en C++) 11

    Intrt de lencapsulation

    Lintrt de la sparation entre niveau interne et externeest de donner un cadre plus rigoureux lutilisation des objets:

    de ce fait, les ventuelles modifications apportes leur structure internerestent invisibles lextrieur.4

    Cette manire de procder peut se traduire par les deuxrecommandations suivantes:5

    4. Cette volont de sparer la caractrisation des fonctionalits disponibles de leur dfinition effective est rcurrente en informatique, et nous lavonsdailleurs rencontre plusieurs occasions: flots de donnes, schma logique v.s. interne dune BD, description des fonctions, etc.

    5. Sans quoi, ils peuvent tre apparents (utiliss comme) des variables globales.

    Les objets ne peuvent tre utilissquau travers de leur interface (niveau externe)

    structures de

    corps des

    interface

    donnes (attributs)

    mthodes

    les variables globales (existant hors de tout objet)sont, dans la mesure du possible, proscrire

    les attributs des objets ne devraient en gnral pas tredirectement accessibles depuis lextrieur, mais uniquementau travers de mthodes (et donc, dfinis hors de linterface)5

  • Informatique II Programmation Oriente Objet (en C++) 12

    Syntaxe: les classes en C++

    En C++ il existe formellement 3 moyenspour dfinir des classes:

    au moyen dune clause dfinie par le mot-clef class;

    au moyen dune clause dfinie par le mot-clef struct;

    au moyen dune clause dfinie par le mot-clef union;

    Les diffrences entre ces 3 possibilits se situentau niveau de la visibilit par dfaut (public/priv) des responsabilits,

    et de la manire dont sont stocks les diffrents attributs.

    Dans le cadre de ce cours,nous nous limiterons aux classes

    dfinies par la clause class.

  • Informatique II Programm

Search related