S’initier à la programmation
VIII
successives et décrit succinctement les possibilités de modification des droits d’accès lors de
la définition d’une classe dérivée.
Le chapitre 13 expose les notions de base du polymorphisme, à savoir la compatibilité par
affectation et la ligature dynamique. Il en examine les conséquences dans plusieurs situations
et montre quelles sont les limites de ce polymorphisme, ce qui conduit, au passsage, à parler
de valeurs de retour covariantes présentes dans certains langages.
Le chapitre 14 traite enfin de concepts moins fondamentaux que l’héritage ou le polymorphisme, parfois absents de certains langages, mais qui peuvent faciliter la conception des
logiciels. Il s’agit des notions de classes abstraites (ou retardées), d’interface et d’héritage
multiple.
Justifications de certains choix
Voici quelques éléments justifiant les choix que nous avons opéré dans la conception de cet
ouvrage.
• Nous présentons la programmation procédurale avant d’introduire la programmation objet,
pour différentes raisons :
– la plupart des langages objet actuels offrent des possibilités de programmation
procédurale ;
– la programmation orientée objet s’appuie sur les concepts de la programmation
procédurale ; la seule exception concerne la notion de fonction indépendante qui peut
être absente de certains langages objet mais qui se retrouve quand même sous une
forme très proche dans la notion de méthode ;
– sur un plan pédagogique, il est difficile d’introduire directement des méthodes dans
une classe si l’on n’a pas encore étudié l’algorithmique procédurale.
• Dans le choix des concepts fondamentaux, nous avons évité de nous limiter à un sousensemble commun à tous les langages car cela aurait été trop réducteur à notre sens. Nous
avons choisi les concepts qu’il nous a paru important de maîtriser pour pouvoir ensuite
aborder la programmation dans n’importe quel langage.
Ces choix font ainsi du pseudo-code, non pas la « matrice » de tous les langages, mais plutôt
un langage à part entière, simple, mais renfermant la plupart des concepts fondamentaux de
la programmation – certains pouvant ne pas exister dans tel ou tel langage. C’est
précisément le rôle de la partie « Côté langages » que de monter en quoi les langages réels
peuvent différer les uns des autres et ce au-delà de leur syntaxe (les cinq langages choisis
possèdent la même syntaxe de base et jouissent pourtant de propriétés différentes). Ainsi, le
lecteur est non seulement amené à programmer en pseudo-code mais, en même temps, il est
préparé à affronter un vrai langage. Voici par exemple quelques points sur lesquels les
langages peuvent se différencier les uns des autres :
VIII
successives et décrit succinctement les possibilités de modification des droits d’accès lors de
la définition d’une classe dérivée.
Le chapitre 13 expose les notions de base du polymorphisme, à savoir la compatibilité par
affectation et la ligature dynamique. Il en examine les conséquences dans plusieurs situations
et montre quelles sont les limites de ce polymorphisme, ce qui conduit, au passsage, à parler
de valeurs de retour covariantes présentes dans certains langages.
Le chapitre 14 traite enfin de concepts moins fondamentaux que l’héritage ou le polymorphisme, parfois absents de certains langages, mais qui peuvent faciliter la conception des
logiciels. Il s’agit des notions de classes abstraites (ou retardées), d’interface et d’héritage
multiple.
Justifications de certains choix
Voici quelques éléments justifiant les choix que nous avons opéré dans la conception de cet
ouvrage.
• Nous présentons la programmation procédurale avant d’introduire la programmation objet,
pour différentes raisons :
– la plupart des langages objet actuels offrent des possibilités de programmation
procédurale ;
– la programmation orientée objet s’appuie sur les concepts de la programmation
procédurale ; la seule exception concerne la notion de fonction indépendante qui peut
être absente de certains langages objet mais qui se retrouve quand même sous une
forme très proche dans la notion de méthode ;
– sur un plan pédagogique, il est difficile d’introduire directement des méthodes dans
une classe si l’on n’a pas encore étudié l’algorithmique procédurale.
• Dans le choix des concepts fondamentaux, nous avons évité de nous limiter à un sousensemble commun à tous les langages car cela aurait été trop réducteur à notre sens. Nous
avons choisi les concepts qu’il nous a paru important de maîtriser pour pouvoir ensuite
aborder la programmation dans n’importe quel langage.
Ces choix font ainsi du pseudo-code, non pas la « matrice » de tous les langages, mais plutôt
un langage à part entière, simple, mais renfermant la plupart des concepts fondamentaux de
la programmation – certains pouvant ne pas exister dans tel ou tel langage. C’est
précisément le rôle de la partie « Côté langages » que de monter en quoi les langages réels
peuvent différer les uns des autres et ce au-delà de leur syntaxe (les cinq langages choisis
possèdent la même syntaxe de base et jouissent pourtant de propriétés différentes). Ainsi, le
lecteur est non seulement amené à programmer en pseudo-code mais, en même temps, il est
préparé à affronter un vrai langage. Voici par exemple quelques points sur lesquels les
langages peuvent se différencier les uns des autres :
