Vous êtes sur la page 1sur 22

19/02/2024 22:40 Apprendre la programmation orientée objet par la pratique [Tutoriel]

Data Transition Numérique

Apprendre la programmation orientée objet par la


pratique

Vous souhaitez apprendre à développer des applications informatiques ? Vous souhaitez développer des applications de données ? Alors
vous devez impérativement apprendre la programmation orientée objet.

Pour développer applications de traitement de données performantes (que ce soit des applications de base de données, des middleware,
des applications de reporting, etc…), vous avez besoin d’une boîte à outils plus fournie que celle offerte par la programmation informatique
classique ou la programmation fonctionnelle, car lorsqu’on veut développer des applications qui combinent les exigences d’un processus
métier particulier aux contraintes technologiques du traitement de données, on a besoin de concepts, d’outils et de méthodologies qui
n’existent que dans le paradigme orienté objet.

Dans cet article, vous allez apprendre la programmation orientée objet, notamment vous apprendrez à utiliser ses concepts, ses méthodes et
sa boîte à outils dans vos propres applications. Considérez cette article comme un guide complet sur la programmation orientée objet.

Sommaire
1. 1 – Définition et origine du paradigme orienté objet
2. 2 – Les langages orientés objet
3. 3 – Les concepts fondamentaux de la programmation orientée objet
3.1. Le concept de Classe
3.2. Le concept d’objet
3.3. Le concept d’encapsulation
3.4. Le concept d’héritage
3.5. Le concept de polymorphisme
3.6. Le concept de classe abstraite
3.7. Le concept d’interface
3.8. Les autres concepts du paradigme orienté objet : les mixins

1 – Définition et origine du paradigme orienté objet


La programmation orientée objet (POO) est un modèle de programmation informatique qui met en œuvre une conception basée sur les
objets. Elle se différencie de la programmation procédurale, qui est basée sur l’utilisation de procédures, et de la programmation
fonctionnelle, qui elle, repose entièrement sur le concept de fonction.

Ce site utilise des cookies pour améliorer votre expérience. Cliquez pour gérer vos

préférences. Paramètres ACCEPTER

https://www.data-transitionnumerique.com/apprendre-programmation-objet/ 1/22
19/02/2024 22:40 Apprendre la programmation orientée objet par la pratique [Tutoriel]

Data Transition Numérique

Les premiers concepts de la programmation orientée objet remontent aux années 1970 avec les les langages Simula et Smalltalk.

Au cours des années 1980, commence l’effervescence des langages à objets : Eiffel, C++, ou encore Objective C (une extension objet du C
utilisé par l’iOS d’Apple). Cette effervescence atteint son apogée dans les années 1990 avec l’extension de la programmation par objets
dans les différents secteurs du développement logiciel et la création du langage Java par la société Sun Microsystems (racheté depuis par
Oracle).

Le succès de Java, plus simple à utiliser que ses prédécesseurs, est tel que Microsoft décide au début des années 2000 de sortir son propre
framework, le .NET et son propre langage full orienté objet, C#, pour éviter de voir le marché de l’OS PC l’échapper au profit de l’écosystème
open source, porté désormais par Java.

La Programmation orientée objet devient alors un paradigme incontournable à tout informaticien et à tout développeur d’application qui se
respecte.

De nos jours, de très nombreux langages permettent d’utiliser les principes de la POO dans des domaines variés : Java et C# bien sûr, mais
aussi PHP (à partir de la version 5), Python, etc… La Programmation orientée objet a entraînée un changement profond dans la manière de
concevoir l’architecture des applications informatiques. Au cours de la modélisation d’une application on réfléchit désormais en termes
d’objets : c’est la modélisation orientée objet (MOO), dont le principal support est le langage de modélisation UML.

Dans cette chronique nous verrons ensemble les concepts clés de la programmation orienté objet, et dans la suite, nous essayerons de
montrer avec des exemples précis l’implémentation de ces concepts en JAVA.

2 – Les langages orientés objet


Comme nous l’avons mentionné plus haut, l’effervescence des langages objet commence en 1980 et atteint son paroxysme dans les années
1990. Avant d’entrer dans les caractéristiques de ces langages, il est bon de rappeler les principaux avantages du paradigme orienté objet :

La modularité : les objets forment des modules compacts regroupant des données et un ensemble d’opérations.
L’abstraction : les objets de la POO sont proches de celles du monde réel. Les concepts utilisés sont donc proches des
abstractions familières que nous exploitons.
Productivité et ré-utilisabilité : plus l’application est complexe et plus l’approche POO est intéressante. Le niveau de ré-utilisabilité
est supérieur à la programmation procédurale.
Sûreté : l’encapsulation et le typage des classes offrent une certaine robustesse aux applications.

Revenons maintenant sur les langages objet proprement dit. Simula (1967) est généralement reconnu comme étant le premier langage
orienté objet. Il a été créé pour réaliser des programmes de simulation. Smalltalk (1972 à 1980) est un autre exemple précoce, et celui avec
lequel une grande partie de la théorie de la POO a été développée.

Ce sitecatégories
On distingue plusieurs utilise des cookies
de langage pour
orienté améliorer
objet, tout dépendvotre expérience.
du degré Cliquez
d’utilisation des pour
objets et du gérer
niveau vos du
d’intégration
langage au paradigme orienté objet :
préférences. Paramètres ACCEPTER

https://www.data-transitionnumerique.com/apprendre-programmation-objet/ 2/22
19/02/2024 22:40 Apprendre la programmation orientée objet par la pratique [Tutoriel]
Les langages dits de POO « purs », où tout est traité comme un objet, depuis les primitives telles que les caractères et la
ponctuation, jusqu’aux classes, prototypes, blocs, modules. Ils ont été conçus spécifiquement pour faciliter, voire imposer, les
Data méthodes
Transition Numérique
orientés objet. Ex: Ruby, Scala, Smalltalk, Eiffel, Emerald, JADE, Self, Raku.

Les langages conçus principalement pour la programmation OO, mais avec quelques éléments procéduraux. Ex : Java,
Python, C++, C#, Delphi/Object Pascal, VB.NET.

Les langages qui sont historiquement des langages procéduraux, mais qui ont été étendus avec certaines caractéristiques
orientées objets. Ex : PHP, Perl, Visual Basic (dérivé de BASIC), MATLAB, C++, C#, COBOL 2002, Fortran 2003, ABAP, Ada 95,
Pascal.

Les langages possédant la plupart des caractéristiques des objets (classes, méthodes, héritage), mais sous une forme
nettement originale. Ex: Oberon (Oberon-1 ou Oberon-2).

Les langages avec support de types de données abstraits qui peuvent être utilisés pour ressembler à la programmation
OO, mais sans toutes les caractéristiques de l’orienté objet Ex : JavaScript, Lua, Modula-2, CLU.

Ces dernières années, la programmation orientée objet est devenue particulièrement populaire dans les langages de programmation
dynamiques. Python, PowerShell, Ruby et Groovy sont des langages dynamiques construits sur les principes de la POO, tandis que Perl et
PHP ont ajouté des fonctionnalités orientées objet depuis Perl 5 et PHP 4, et ColdFusion depuis la version 6.

Quoique aujourd’hui, il foisonne des langages orientés objet dans le marché, celui-ci est principalement dominé par le langage Java. Ainsi,
lorsqu’on parle orienté objet à ce jour, on pense à Java. Nous développerons la programmation Java dans une autre chronique.

3 – Les concepts fondamentaux de la programmation


orientée objet
La programmation orientée objet repose sur 5 concepts fondamentaux à savoir :

La classe
L’objet
L’encapsulation
L’héritage
Le polymorphisme

Nous allons voir distinctement chacun de ces concepts.

Le concept de Classe
Le premier concept fondamental de l’orienté objet est la classe. Une classe est une structure abstraite qui décrit des objets du monde réel
sous deux angles : ses propriétés (ses caractéristiques) et ses méthodes (les actions qu’elle peut effectuer ou son comportement).

Par exemple, la Classe Vehicule représente un véhicule, couleur est l’une de ses propriétés et accélérer/freiner sont deux de ses méthodes.
Un autre exemple : on peut représenter en programmation orientée-objet les employés sous forme de classe ; auquel cas, la classe
Employés représente tous les employés qui peuvent avoir pour propriétés un nom, un prénom, une adresse et une date de naissance ; les
opérations qui peuvent être effectuées sur les employés peuvent être le changement de salaire, la prise de congé, la prise de retraite, etc.

La classe est finalement une sorte de moule, de modèle. Toutes les instances de classe s’appellent des objets. Les objets sont construits à
Ce par
partir de la classe, siteunutilise des
processus cookies
appelé pour améliorer
instanciation. votre
De ce fait, tout objetexpérience.
est une instanceCliquez
de classe.pour gérer vos

préférences. Paramètres ACCEPTER

https://www.data-transitionnumerique.com/apprendre-programmation-objet/ 3/22
19/02/2024 22:40 Apprendre la programmation orientée objet par la pratique [Tutoriel]

Data Transition Numérique

Figure : exemple de classe Voiture. La classe est une structure abstraite qui décrit un objet du monde réel sous 2 angles – ses propriétés et
ses méthodes.

Dans notre exemple ci-dessus couleur, poids et prix sont les attributs de classe Voiture et demarrer(), accelerer() sont ses méthodes.

L’instanciation d’une classe fait appel à 3 méthodes spéciales dont la compréhension est très importante :

Le constructeur : on distingue trois types de constructeurs

1. Le constructeur par défaut appelé par défaut lors de la création d’un objet (offert par défaut lors de la compilation s’il n’y a pas de
constructeur déclaré),
2. Le constructeur par recopie (ou constructeur de copie) a un unique argument du même type que l’objet à créer (généralement
sous forme de référence constante) et il recopie les attributs depuis l’objet passé en argument sur l’objet à créer.
3. Le constructeur paramétrique appelé si la signature correspond à celle du constructeur.

Les accesseurs (get) et les mutateurs (set) : ces méthodes spéciales permettent d’appeler les propriétés et modifier les propriétés
d’une classe depuis l’extérieur, un peu comme une API. C’est grâce à elles que l’extérieur peut « appeler » les fonctionnalités de la
classe. Les accesseurs permettent de récupérer la valeur des propriétés d’une instance de classe depuis l’extérieur sans y accéder
directement. Ce faisant, ils sécurisent l’attribut en restreignant sa modification. Les mutateurs quant à eux permettent de modifier la
valeur des propriétés tout en vérifiant que la valeur que l’on veut donner à l’attribut respecte les contraintes sémantiques qui ont été
imposées à la classe.
Le destructeur : est une méthode qui met fin à la vie d’une instance de classe. Il peut être appelé à la suppression de l’objet,
explicitement ou implicitement.

Pour rendre toutes ces explications sur le concept de classe concrètes, prenons l’exemple précédent de la voiture et implémentons-le dans
le langage Java. La classe se définit suivant cette syntaxe :

public class NomDeLaClasse {...}

Implémentons complètement la classe Voiture en Java. Voici ce que cela donne :

Ce site utilise des cookies pour améliorer votre expérience. Cliquez pour gérer vos
public class Voiture{
préférences. Paramètres ACCEPTER
//Déclaration des attributs

https://www.data-transitionnumerique.com/apprendre-programmation-objet/ 4/22
19/02/2024 22:40 Apprendre la programmation orientée objet par la pratique [Tutoriel]
private String couleur;
private double poids;
Data Transition Numérique
private int prix;

//Déclaration des méthodes


void demarrer(){...}
void accelerer(){...}

// accesseur sur couleur


public String getCouleur(){
return this.couleur;
}

//mutateur sur couleur


public void setCouleur(String uneCouleur){
this.couleur = uneCouleur;
}

L’ identifiant d’une méthode est défini par sa signature. On appelle signature d’une méthode l’ensemble formé par son nom et la liste des
types de ses arguments. Deux méthodes peuvent avoir le même nom si elles se distinguent par leurs signatures : c’est la surcharge des
méthodes. Nous y reviendrons plus bas…

Le concept d’objet
Le second concept le plus important en programmation objet c’est justement, l’objet. Comme nous vous l’avons dit tout à l’heure, un objet est
une instance de classe. Pour faire le parallèle avec le monde réel, l’objet c’est un peu comme une maison bâtit sur la base d’un plan
particulier. Tant que les architectes se réfèrent à ce plan, ils produiront toujours les mêmes maisons.

Techniquement, un objet est caractérisé par 3 choses :

une identité : l’identité doit permettre d’identifier sans ambiguïté l’objet (adresse/ référence ou nom)
des états : chaque objet a une valeur par défaut (lorsqu’elle est indiqué à l’instanciation) pour chacune de ses propriétés. On appelle
ces valeurs, des états de l’objet.
des méthodes : chaque objet est capable d’exécuter les actions ou le comportement défini dans la classe. Ces actions sont
traduites en POO concrètement sous forme de méthodes. Les actions possibles sur un objet sont déclenchées par des appels de
ces méthodes ou par des messages envoyées par d’autres objets.

La figure suivante illustre parfaitement le concept d’objet

Ce site utilise des cookies pour améliorer votre expérience. Cliquez pour gérer vos

préférences. Paramètres ACCEPTER

https://www.data-transitionnumerique.com/apprendre-programmation-objet/ 5/22
19/02/2024 22:40 Apprendre la programmation orientée objet par la pratique [Tutoriel]

Data Transition Numérique

Figure : un objet est une instance de classe. L’objet, à la différence de la classe qui est abstraite, est concret. Chaque objet a des états
(valeur pour chaque propriété) et des méthodes (les actions de la classe)

Les objets ne sont pas des éléments statiques et leur durée de vie ne correspond pas forcément à la durée d’exécution du programme. La
durée de vie d’un objet passe par trois étapes :

1. la déclaration de l’objet et son instanciation


2. l’utilisation de l’objet en appelant ses méthodes
3. la suppression de l’objet, en appelant son destructeur ou en arrêtant la machine virtuelle qui exécute le programme, ou en arrêtant
simplement le programme.

On instancie un objet en JAVA de la façon suivante:

Voiture maVoiture = new Voiture (...) ;

FORMATION PRATIQUE - SCALA POUR LE BIG DATA

Vous souhaitez monter en compétence sur la programmation Scala ? Nous vous offrons cette vidéo-tutoriel d'une heure à
l'intérieur de laquelle vous apprendrez:

1 à manipuler les collections (mutables et immutables) de scala, ainsi que ses structures de

données pour développer des applications data (listes, tableaux, tuples)

2 à utiliser les structures conditionnelles de scala (For, ForEach, While) pour développer

des applications efficaces

3 à utiliser Scala pour résoudre les problèmes rencontrés lors de la programmation des

tâches Big Data

Cette formation va faire de vous un bon développeur en scala. Téléchargez-là simplement en


cliquant sur le bouton ci-après.

Ce site utilise des cookies pour améliorer votre expérience. Cliquez pour gérer vos
Télécharger la formation
préférences. Paramètres ACCEPTER

https://www.data-transitionnumerique.com/apprendre-programmation-objet/ 6/22
19/02/2024 22:40 Apprendre la programmation orientée objet par la pratique [Tutoriel]

Le concept d’encapsulation
Data Transition Numérique
Le troisième concept de la programmation orientée objet c’est l’encapsulation.

les propriétés des objets ne peuvent être accédées que par ses méthodes. Ainsi, la classe encapsule à la fois les attributs et les méthodes
qui permettent de manipuler les objets indépendamment de leurs états.

L’encapsulation permet de restreindre l’accès direct aux états et empêche la modification de l’objet hors de ses méthodes. Par exemple, si
vous avez une classe Voiture et que vous voulez définir la valeur de sa propriété couleur à bleu, il vous faut passer par une méthode par
exemple definirCouleur, implémentée par le développeur de la classe. Cette méthode peut restreindre les différentes valeurs de couleur.

Ainsi, l’encapsulation est un mécanisme qui empêche donc de modifier ou d’accéder aux objets par un autre moyen que les méthodes
proposées, et de ce fait, permet de garantir l’intégrité des objets.

L’utilisateur d’une classe n’a pas forcément à savoir de quelle façon sont structurées les méthodes dans l’objet, ni le processus par lequel
l’objet obtient tel ou tel état. En interdisant l’utilisateur de modifier directement les attributs, et en l’obligeant à utiliser les fonctions définies
pour les modifier, on est capable de s’assurer de l’intégrité des objets. On pourra donc effectuer des contrôles sémantiques sur les données
entrées par l’utilisateur.

Figure : l’encapsulation est comme un mécanisme de boîte noire qui empêche l’utilisateur d’utiliser un objet au delà des méthodes qui lui
sont proposées.

Dans le schéma précédent, la boîte noire masque les détails d’implémentation des attributs et des actions de la classe. Elle cache les
attributs couleur, poids, prix. Le grand avantage de ce procédé est qu’en tant qu’utilisateur, on n’a plus à se préoccuper de comment est fait
l’intérieur de l’objet de classe Voiture. On n’a plus besoin de se préoccuper sur le nombre d’attributs dans la classe Voiture. On se contente
de connaître comment manipuler une voiture à l’aide des services offerts par la classe.

L’encapsulation permet de définir des niveaux de visibilité des éléments de la classe. Ces niveaux de visibilité définissent ce qu’on appelle la
portée (ou encore le périmètre) de la l’attribut/méthode. La portée est ainsi définie par méthode et par attribut et indique les droits à leur
accès. Il existe trois niveaux de visibilité :

Publique (+): les attributs publics sont accessibles à tous


Protégée (#): les attributs protégés sont accessibles seulement dans la classe elle-même et aux classes dérivées.
Privée (-): les attributs privés sont accessibles seulement par la classe elle-même.

Regardons le code suivant :

Ce site utilise des cookies pour améliorer votre expérience. Cliquez pour gérer vos

préférences. Paramètres ACCEPTER

https://www.data-transitionnumerique.com/apprendre-programmation-objet/ 7/22
19/02/2024 22:40 Apprendre la programmation orientée objet par la pratique [Tutoriel]

Data Transition Numérique


public class Voiture{

//Déclaration des attributs


private String couleur;
private double poids;
private int prix;

//Déclaration des méthodes


void demarrer(){...}
void accelerer(){...}
public String getCouleur(){ // accesseur sur couleur
return this.couleur;
}

//mutateur sur couleur


public void setCouleur(String uneCouleur){
this.couleur = uneCouleur;
}
}

public class Main{


public static void main(String args[]){
Voiture uneVoiture = new Voiture ();
uneVoiture.poids = 1000; // Erreur de compilation

}
}

Le script précédent renvoie une erreur lors de son exécution parce que, bien que la classe Voiture possède un attribut « poids », un
accesseur n’a pas été défini pour permettre la modification de son état. Du coup, vous voyez que même si l’attribut existe, elle n’est pas
accessible à l’extérieur de la classe. C’est ce que permet l’encapsulation.

Le concept d’héritage
L’héritage est le quatrième concept clé de la programmation objet. C’est un concept en POO qui désigne le fait qu’une classe peut hériter
des caractéristiques (attributs et méthodes) d’une autre classe.

Les objets de classes peuvent hériter des propriétés d’une classe parent. Par exemple on peut définir une classe Employé et une classe
Manager qui est une classe spécialisée de Employé, qui hérite de ses propriétés.

Soient deux classes A et B

Relation d’héritage : Classe B « étend la » Classe A


A est la super-classe ou classe mère/parent de B
B est la sous-classe ou classe fille de A

Ce site utilise des cookies pour améliorer votre expérience. Cliquez pour gérer vos

préférences. Paramètres ACCEPTER

https://www.data-transitionnumerique.com/apprendre-programmation-objet/ 8/22
19/02/2024 22:40 Apprendre la programmation orientée objet par la pratique [Tutoriel]

Data Transition Numérique

Figure : l’héritage permet de créer des classes spécialisées.

Dans l’exemple ci-dessus la classe Voiture et Avion sont des classes filles de la classe Véhicule. On peut les concevoir comme étant des
classes spécialisées de la classe Véhicule. Ainsi tout objet de la classe Voiture ou Avion possédera les attributs et méthodes de la Classe
Vehicule en plus de ses propres caractéristiques.

En java l’héritage est défini par le mot clé extends.

public class Voiture extends Vehicule {...}


public class Avion extends Vehicule {...}

Une méthode dans une classe mère peut être redéfinie dans une classe fille : on parle de redéfinition. La nouvelle définition remplace celle
héritée pour les objets de la classe dérivée. Le remplacement est effectif même quand l’objet de la classe fille est référencé par une variable
typée par la super-classe (polymorphisme). Nous allons y revenir.

Implémentons toutes les notions vues ci-dessus par rapport à l’héritage en JAVA.

public class Point{

protected int x, y;
private void affiche(){
System.out.println("x = "+ this.x + " y = " + this.y);
}

Point (int x, int y){this.x = x; this.y = y;}


}

public class PointColore extends Point{


private String couleur;
PointColore(int x, int y, String couleur){
super(x, y); // appel du constructeur de la classe mère
this.couleur = couleur;
}

public void affiche() //redéfinition de affiche()


{
Ce site utilise des cookies pour améliorer
super.affiche();
votre expérience. Cliquez pour gérer vos
//appel à affiche() de la classe mère
System.out.println(" couleur
préférences. = " + this.couleur);
Paramètres ACCEPTER
}

https://www.data-transitionnumerique.com/apprendre-programmation-objet/ 9/22
19/02/2024 22:40 Apprendre la programmation orientée objet par la pratique [Tutoriel]

}
Data Transition Numérique
public class Main{

public static void main(String args[]){


Point p = new Point (5, 2);
PointColore pc = new PointColore(7, 4, "verte");
p.affiche(); //x = 5 et y = 2;
pc.affiche(); // x = 7 et y = 4 couleur = verte
}
}

L’héritage présente 2 avantages principaux en POO :

la spécialisation : une nouvelle classe réutilise les attributs et les méthodes d’une classe en y ajoutant des opérations particulières
à la nouvelle classe.
la réutilisation : pour chaque classe spécialisé, on n’a pas besoin de recréer à chaque fois la même classe.

Le concept de polymorphisme
Le dernier concept clé de la programmation orientée objet c’est le polymorphisme. Un langage orienté objet est dit polymorphique, s’il offre
la possibilité de percevoir un objet en tant qu’instance de différentes classes selon la situation. Java par exemple, est un langage
polymorphique. Nous allons expliquer ce concept avec des exemples concrets. Supposez le code Java suivant :

public class A {

public void f();


}

public class B extends A {

public void k();


}

public class Main{

public static void main (String [] args){


A a1 = new B (...);//upcasting
}

En examinant le code attentivement, vous remarquerez qu’à une référence de type A, on affecte une référence vers un objet de la classe B
: on parle de surclassement ou upcasting.

A la compilation a1 est considéré comme un objet de classe A. Ses services sont alors réduits à celles proposées par la classe A.
Ce site utilise des cookies pour améliorer votre expérience. Cliquez pour gérer vos

préférences. Paramètres ACCEPTER

https://www.data-transitionnumerique.com/apprendre-programmation-objet/ 10/22
19/02/2024 22:40 Apprendre la programmation orientée objet par la pratique [Tutoriel]

Data Transition
public Numérique
class Main{

public static void main (String [] args){


A a1 = new B(...);
a1.f(); //ok
a1.k(); // erreur de compilation
}

Prenons un autre exemple.

public class Main{


public static void main (String [] args){
A a1 = new B(...);
B b1 = (B) a1; // downcasting
}

Dans le code ci-dessus nous remarquons qu’à une référence de type B on affecte une référence vers un objet de type A après une
conversion : on parle de downcasting.

Le concept de classe abstraite


Le concept de classe abstraite ne fait pas partie des concepts clés de la POO, puisque c’est un type de classe. Par contre, vu son utilité des
les cas d’usage du Big Data, nous avons jugé indispensable d’en parler.

En programmation orientée objet, une classe abstraite est une classe dont l’implémentation n’est pas complète et n’est pas instanciable.
C’est une classe qui sert de base à d’autres classes dérivées (héritées).

Une classe abstraite est définie de la façon suivante en Java :

public abstract class NomClasse {


...
}

L’intérêt d’une classe abstraite est que l’on peut y placer toutes les fonctionnalités dont on souhaite disposer pour ses classes dérivées :

soit sous forme d’une implémentation complète de méthodes et de champs dont héritera toute classe dérivée
soit alors sous forme d’interface de méthodes abstraites dont on est alors sûr qu’elles existeront dans toute classe dérivée
instanciable.

Une méthode abstraite est une méthode dont on ne fournit que la signature. Elle doit obligatoirement être public. On déclare une méthode
abstraite de la façon suivante:
Ce site utilise des cookies pour améliorer votre expérience. Cliquez pour gérer vos

préférences. Paramètres ACCEPTER

https://www.data-transitionnumerique.com/apprendre-programmation-objet/ 11/22
19/02/2024 22:40 Apprendre la programmation orientée objet par la pratique [Tutoriel]

Data Transition
public Numérique
abstract void uneMethode (...);

Règles d’utilisation des classes abstraites :

Une classe est automatiquement abstraite si une de ses méthodes est abstraite
Une classe abstraite n’est pas instaciable (on ne peut pas utiliser les constructeurs d’une classe abstraite et donc on ne peut pas
créer d’objet ou d’instance de cette classe).
Une classe qui hérite d’une classe abstraite ne devient concrète que si elle implémente toutes les méthodes abstraites de la classe
dont elle hérite.
Une méthode abstraite n’est pas implémentée, mais doit être implémentée dans les sous-classes non abstraites.
Une classe abstraite peut contenir des méthodes non abstraites et des déclarations d’attributs ordinaires.

Figure : une classe abstraite est une classe qui sert de base à la construction d’autres classes. A la différence de l’héritage classique, les
classes abstraites qui servent de base à l’héritage ne peuvent pas être instanciées.

L’implémentation en Java des classes de cette figure donne ceci :

public abstract class Forme{

protected String couleur;


public abstract double surface();
public abstract void affiche();
}

public class Cercle extends Forme{

private double rayon;


public Cercle (String couleur, double rayon){
Ce site utilise des cookies pour améliorer votre expérience. Cliquez pour gérer vos
super();
this.couleurpréférences.
= couleur; Paramètres ACCEPTER
this.rayon = rayon;

https://www.data-transitionnumerique.com/apprendre-programmation-objet/ 12/22
19/02/2024 22:40 Apprendre la programmation orientée objet par la pratique [Tutoriel]
}

Data Transition Numérique


@Override
public double surface() {
return Math.PI * this.rayon * this.rayon;
}

@Override
public void affiche() {
System.out.println("[couleur = " + this.couleur + ", rayon = " + this.rayon + "
]") ;
}
}

public class Rectangle extends Forme{

private double longueur;


private double largeur;

public Rectangle(String couleur, double longueur, double largeur){


this.couleur = couleur;
this.longueur = longueur;
this.largeur = largeur;
}

@Override
public double surface() {
return longueur * largeur;
}

@Override
public void affiche() {
System.out.println("[couleur = " + this.couleur + ", longueur = " + this.long
ueur + ", largeur = "+ this.largeur + " ]") ;

}
}

public static void main(String[] args) {

Cercle c1 = new Cercle("vert", 2);


Rectangle r1 = new Rectangle("bleu", 4, 5);

c1.affiche(); // ok [couleur = vert, rayon = 2.0 ]


r1.affiche(); //ok [couleur = bleu, longueur = 4.0, largeur = 5.0 ]

Forme f1 = new Forme(); //erreur de compilation

Ce site utilise des cookies pour améliorer votre expérience. Cliquez pour gérer vos
Le concept d’interface
préférences. Paramètres ACCEPTER

https://www.data-transitionnumerique.com/apprendre-programmation-objet/ 13/22
19/02/2024 22:40 Apprendre la programmation orientée objet par la pratique [Tutoriel]
L’interface, même s’il n’est pas un concept fondamental de l’orienté objet, reste tout de même très important. C’est pourquoi, tout comme les
classes abstraites, nous estimons qu’il est indispensable que vous vous familiarisez avec le concept.
Data Transition Numérique
Une interface est un ensemble de signatures de méthodes, qui sont par essence abstraites et publiques/constantes. Une interface est
déclarée avec le mot clé interface.

Une classe peut implémenter une ou plusieurs interfaces à l’aide du mot clé implements, c’est à dire implémenter toutes les méthodes
abstraites de l’interface. C’est l’héritage multiple en Java.

Les constantes d’une interface sont accessibles à toutes les classes implémentant l’interface.

public interface I1{

static final int MIN = 25;


void fonction1();

public interface I2{

void fonction2();
}

public class A implements I1, I2{

//Les méthodes fonction1 fonction2 des interfaces I1 et //I2 doivent être défini
es dans la classe A

//dans toutes les méthodes de la classe A on a accès à // la constante MIN

Une interface ne permet pas d’instancier des objets, mais on peut définir des variables de type interface, qui peuvent référencer des objets
d’une classe implémentant une interface.

Les autres concepts du paradigme orienté objet : les mixins


Dans les langages de programmation orientés objet, un mixin est une classe qui contient des méthodes pouvant être utilisées par d’autres
classes sans avoir à être la classe parente de ces autres classes.

La manière dont ces autres classes accèdent aux méthodes du mixin dépend du langage. Les mixins sont parfois décrites comme étant
« incluses » plutôt qu »héritées ».

Les mixins encouragent la réutilisation du code et peuvent être utilisés pour éviter l’ambiguïté que peut causer l’héritage multiple (le
« problème du diamant »), ou pour contourner le problème du manque d’héritage multiple dans un langage.

Un mixin peut également être considéré comme une interface avec les méthodes implémentées. Ce pattern est un exemple d’application du
principe d’inversion des dépendances.

Nous sommes arrivés au terme de cette chronique complète sur la programmation orientée objet. L’objectif était de vous familiariser avec ses
concepts principaux, car aujourd’hui, vous ne développerez pas des applications efficaces (surtout dan le Big Data) sans y avoir recours.
Nous espéronsCe
quesite utilise vous
la chronique desacookies
plu et vouspour améliorer
a donné votre
envie d’aller expérience.
plus loin. Cliquez pour gérer vos

préférences.
En guise de conclusion, nous dirons que Paramètres
la programmation orientée ACCEPTER
objet est aujourd’hui l’approche la plus adaptée pour le développement
applicatif. Les langages de POO vous permettent de décomposer votre logiciel en petits problèmes que vous pouvez ensuite résoudre, un

https://www.data-transitionnumerique.com/apprendre-programmation-objet/ 14/22
19/02/2024 22:40 Apprendre la programmation orientée objet par la pratique [Tutoriel]
objet à la fois. Cela ne veut pas dire que la POO est la seule méthode. Vous pouvez combiner vos applications d’objets et de composants
d’autres paradigmes de programmation (comme le paradigme de programmation fonctionnel). D’ailleurs, dans la pratique, c’est ce que vous
Data Transition Numérique
serez emmené à faire le plus souvent. Ne voyez donc pas la POO comme un paradigme différent et complètement séparé des autres.
Voyez-le plutôt comme un paradigme complémentaire qui s’ajoute à la boîte à outils dont vous disposez déjà pour développer toutes sortes
d’applications de traitement de données. Si vous souhaitez aller plus loin dans l’apprentissage de la programmation, et commencer dès
maintenant à mettre en pratique ce que vous avez appris dans cette chronique, alors téléchargez cette vidéo de cours de 60 min sur Scala.

FORMATION PRATIQUE - SCALA POUR LE BIG DATA

Vous souhaitez monter en compétence sur la programmation Scala ? Nous vous offrons cette vidéo-tutoriel d'une heure à
l'intérieur de laquelle vous apprendrez:

1 à manipuler les collections (mutables et immutables) de scala, ainsi que ses structures de

données pour développer des applications data (listes, tableaux, tuples)

2 à utiliser les structures conditionnelles de scala (For, ForEach, While) pour développer

des applications efficaces

3 à utiliser Scala pour résoudre les problèmes rencontrés lors de la programmation des

tâches Big Data

Cette formation va faire de vous un bon développeur en scala. Téléchargez-là simplement en


cliquant sur le bouton ci-après.

Télécharger la formation

Categories: PROGRAMMATION INFORMATIQUE

Juvénal JVC

Juvénal est spécialisé depuis 2011 dans la valorisation à large échelle des données. Son but est d'aider les
professionnels de la data à développer les compétences indispensables pour réussir dans le Big Data. Il
travaille actuellement comme Lead Data Engineer auprès des grands comptes. Lorsqu'il n'est pas en voyage,
Juvénal rédige des livres ou est en train de préparer la sortie d'un de ses livres. Vous pouvez télécharger un
extrait de Ce
sonsite
dernier livredes
utilise en cookies
date ici : pour
https://www.data-transitionnumerique.com/extrait-ecosystme-hadoop/
améliorer votre expérience. Cliquez pour gérer vos

préférences. Paramètres ACCEPTER

https://www.data-transitionnumerique.com/apprendre-programmation-objet/ 15/22
19/02/2024 22:40 Apprendre la programmation orientée objet par la pratique [Tutoriel]

2 comments
Data Transition Numérique
Top rated comments first

Enter your comment...

Comment as a guest:

Nom

Email (not displayed publicly)

Site web

Submit comment

or

Login on website

AYOUB QUAMAR

Ce site utilise des cookies pour améliorer votre expérience. Cliquez pour gérer vos
erreur dans polymorphisme !
préférences. Paramètres ACCEPTER
priere de le corriger .
https://www.data-transitionnumerique.com/apprendre-programmation-objet/ 16/22
19/02/2024 22:40 Apprendre la programmation orientée objet par la pratique [Tutoriel]

public static void main (String [] args){


Data Transition Numérique
A a1 = new B(…);
a1.f(); //ok
a1.k(); // erreur de compilation
}

Vote:

0 0
Reply to AYOUB QUAMAR

Juvénal JVC

Merci pour votre retour Ayoub.


Nous allons regarder cela.

Cordialement,
Juvénal

Vote:

0 0
Reply to Juvénal JVC

Rechercher sur le site

Rechercher…

Ce site utilise des cookies pour améliorer votre expérience. Cliquez pour gérer vos

FORMATION
préférences. SPARK GRATUITE
Paramètres ACCEPTER

https://www.data-transitionnumerique.com/apprendre-programmation-objet/ 17/22
19/02/2024 22:40 Apprendre la programmation orientée objet par la pratique [Tutoriel]

Data Transition Numérique

Vous souhaitez travailler dans le Big Data ? Vous souhaitez vous orienter vers un parcours
de Data Engineer ?

Si c’est le cas, alors vous savez déjà probablement que la maîtrise de Spark est obligatoire dans
quasiment toutes les missions Big Data, spécialement pour les postes de Data Engineer !

Nous vous offrons gratuitement une formation de 2h15 de session de cours vidéo et
un livre numérique pratique de 35 pages pour vous aider à démarrer votre montée en
compétences sur Spark avec Scala.

Remplissez votre email personnelle ci-bas pour vous inscrire à la formation

votre adresse mail personnelle

M'inscrire à la formation

Catégories d’articles

Actualité & News (12)

Base de données (15)

Ce site
Big Data utilise des
Streaming (4) cookies pour améliorer votre expérience. Cliquez pour gérer vos
préférences. Paramètres ACCEPTER
Carrière dans le Big Data (25)

https://www.data-transitionnumerique.com/apprendre-programmation-objet/ 18/22
19/02/2024 22:40 Apprendre la programmation orientée objet par la pratique [Tutoriel]

Data Science (5)


Data Transition Numérique
DataOps/DevOps (17)

Programmation informatique (26)

Projet Big Data (38)

Tutoriels Big Data (19)

Les articles les plus consultés


Base de données
Maîtrisez la manipulation des dates en SQL
Il est essentiel de connaître la date et l’heure surtout quand vous traitez...

Programmation informatique
For-each/forEach() en Java : comment utiliser les boucles
améliorées ?
Dans toutes applications, surtout en Big Data, on sera toujours amené à eff...

Programmation informatique
Switch/Case : gérer les expressions conditionnelles en
Java
En programmation informatique, les structures conditionnelles sont fondamen...

Programmation informatique

Java.util.Map : Maîtrisez les collections et structures de


données de Java
Java est à ce jour, le langage le plus utilisé de la planète. Grâce à sa va...

Ce site utilise des cookies pour améliorer votre expérience. Cliquez pour gérer vos

préférences. Paramètres ACCEPTER

https://www.data-transitionnumerique.com/apprendre-programmation-objet/ 19/22
19/02/2024 22:40 Apprendre la programmation orientée objet par la pratique [Tutoriel]
Programmation informatique
Savoir utiliser l’outil Scanner Java
Data Transition Numérique
L’utilisation du langage Java dans le Big Data est indiscutable puisqu’il e...

Related Posts

PROGRAMMATION INFORMATIQUE

Programmation en Spring Java : le guide complet


Le monde du Big Data et la programmation informatique sont quasi indissociables. En effet, le
traitement des données volumineux requiert un minimum de compétences en programmation. De ce
fait, il est important de connaître et Read more…

Ce site utilise des cookies pour améliorer votre expérience. Cliquez pour gérer vos

préférences. Paramètres ACCEPTER

https://www.data-transitionnumerique.com/apprendre-programmation-objet/ 20/22
19/02/2024 22:40 Apprendre la programmation orientée objet par la pratique [Tutoriel]

Data Transition Numérique

PROGRAMMATION INFORMATIQUE

Switch/Case : gérer les expressions conditionnelles en Java


En programmation informatique, les structures conditionnelles sont fondamentales pour implémenter
la logique métier dans vos applications. Ces instructions vous permettent d’indiquer des conditions
ou des embranchements d’exécution dans vos programmes informatiques. La plus connue d’entre
Read more…

Ce site utilise des cookies pour améliorer votre expérience. Cliquez pour gérer vos

préférences. Paramètres ACCEPTER

https://www.data-transitionnumerique.com/apprendre-programmation-objet/ 21/22
19/02/2024 22:40 Apprendre la programmation orientée objet par la pratique [Tutoriel]

Data Transition Numérique

PROGRAMMATION INFORMATIQUE

Java.util.Map : Maîtrisez les collections et structures de données de Java


Java est à ce jour, le langage le plus utilisé de la planète. Grâce à sa vaste bibliothèque d’API, Il
trouve des applications dans de nombreux domaines, tels que le développement mobile, les
applications web, Read more…

REGLEMENT CONCOURS MENTIONS LÉGALES CGU CGV A PROPOS CONTACT

LEXIQUE

Ce site utilise des cookies pour améliorer votre expérience. Cliquez pour gérer vos

préférences. Paramètres ACCEPTER

https://www.data-transitionnumerique.com/apprendre-programmation-objet/ 22/22

Vous aimerez peut-être aussi