Programmation Orientée Objet en Python
  • Back to Main Website
  • Home
  • Introduction: Histoire et Concepts
    • Introduction: Histoire et Concepts
    • Histoire de la programmation
    • Première Structuration des données
    • Naissance de la POO
    • Python: tout n’est qu’objet
    • Python : Simplicité des objets et performance sous-jacente
    • Classes en Python : Concepts fondamentaux

    • Travaux Pratiques
    • Construire sa propre Liste
    • Construire son propre DataFrame
  • Encapsulation, Héritage, Composition et Dunder
    • Encapsulation, Heritage, Composition et Dunder
    • Encapsulation en Python
    • Héritage en Python : Concept et intérêt
    • Héritage vs Composition
    • Méthodes Dunder en Python
    • Python call Method: A Fun Exploration

    • Travaux Pratiques
    • TP: Heritage avec le pricing d’option
    • TP : Ajouter des méthodes dunder à DataFrameSimple
    • TP : Étendre la classe Liste avec des méthodes dunder
    • TP: Dunder Method with Tensor for Automatic Differentiation
  • Polymorphisme et Surcharge
    • Polymorphisme et Surcharge
    • Polymorphism in Object-Oriented Programming
    • Polymorphism in Python: Function Overloading and Type Checking
    • Class Creation: Standard vs type()
    • Type Hinting, Typing Module, and Linters in Python
    • Abstract Classes
    • Protocol Classes

    • Travaux Pratiques
    • TP
  • Decorators
    • Design Patterns
    • The decorator pattern
    • Decorator Practically
    • Built-in Decorators and Standard Library Decorators in Python
    • Practical Decorators in Python Libraries

    • Travaux Pratiques
    • TP: Monte Carlo Option Pricing with Decorators
    • TP: Optimizing Heston Model Monte Carlo Simulation
  • Project Management and Packaging
    • Project and Package
    • Organizing Python Projects
    • Understanding imports
    • Python Package Management and Virtual Environments
    • Unit Testing in Python

    • Travaux Pratiques
    • TP: Creating a Linear Regression Package
  • Design Patterns
    • OOP Design Patterns
    • Python-Specific Design Patterns
    • Creation Design Patterns
    • Structural Design Patterns
    • Behavioral Design Pattern

    • Travaux Pratiques
    • TP
  • Sujets de Projets possibles
    • Projets
    • Projets POO - 2024-2025
  • Code source
  1. Naissance de la POO
  • Introduction: Histoire et Concepts
  • Histoire de la programmation
  • Première Structuration des données
  • Naissance de la POO
  • Python: tout n’est qu’objet
  • Python : Simplicité des objets et performance sous-jacente
  • Classes en Python : Concepts fondamentaux
  • Travaux Pratiques
    • Construire sa propre Liste
    • Construire son propre DataFrame

On this page

  • Adoption de la POO dans les langages modernes
    • 1. Introduction
    • 2. C++ : L’évolution du C vers la POO
      • 2.1 Caractéristiques clés de C++
      • 2.2 Exemple de POO en C++
      • 2.3 Particularités de la POO en C++
    • 3. Python : La POO simplifiée et dynamique
      • 3.1 Caractéristiques clés de Python
      • 3.2 Exemple de POO en Python
      • 3.3 Particularités de la POO en Python
    • 4. Comparaison C++ vs Python en POO
      • 4.1 Syntaxe et lisibilité
      • 4.2 Performance
      • 4.3 Gestion de la mémoire
      • 4.4 Flexibilité
    • 5. Impact sur le développement logiciel
    • Conclusion

Naissance de la POO

Cours
Introduction
L’adoption de la POO dans les langages modernes comme C++ et Python a révolutionné la programmation. Découvrez comment ces langages ont intégré les concepts de la POO et leurs implications.
Author

Remi Genet

Published

2024-10-21

Adoption de la POO dans les langages modernes


1. Introduction

Après l’émergence des concepts de la POO avec Simula et Smalltalk, de nombreux langages de programmation ont adopté et adapté ces principes. Nous allons nous concentrer sur deux langages majeurs : C++ et Python.

2. C++ : L’évolution du C vers la POO

C++, développé par Bjarne Stroustrup dans les années 1980, a été conçu comme une extension du langage C intégrant les concepts de la POO.

2.1 Caractéristiques clés de C++

  • Compatibilité avec C : Permet une transition en douceur pour les programmeurs C
  • Support de la POO : Classes, héritage, polymorphisme
  • Généricité : Templates pour une programmation générique
  • Gestion manuelle de la mémoire : Offre un contrôle précis mais exige plus de responsabilité du programmeur

2.2 Exemple de POO en C++

#include <iostream>
#include <string>

class Vehicule {
protected:
    std::string marque;
    std::string modele;

public:
    Vehicule(std::string m, std::string mod) : marque(m), modele(mod) {}
    
    virtual void afficher() const {
        std::cout << "Vehicule: " << marque << " " << modele << std::endl;
    }
};

class Voiture : public Vehicule {
private:
    int nombrePortes;

public:
    Voiture(std::string m, std::string mod, int portes) 
        : Vehicule(m, mod), nombrePortes(portes) {}
    
    void afficher() const override {
        std::cout << "Voiture: " << marque << " " << modele 
                  << " (" << nombrePortes << " portes)" << std::endl;
    }
};

int main() {
    Vehicule* v1 = new Vehicule("Générique", "Modèle X");
    Vehicule* v2 = new Voiture("Renault", "Clio", 5);
    
    v1->afficher();  // Affiche: Vehicule: Générique Modèle X
    v2->afficher();  // Affiche: Voiture: Renault Clio (5 portes)
    
    delete v1;
    delete v2;
    return 0;
}

2.3 Particularités de la POO en C++

  • Héritage multiple : Permet à une classe d’hériter de plusieurs classes
  • Polymorphisme par pointeurs et références : Utilisation de pointeurs pour le polymorphisme
  • Surcharge d’opérateurs : Permet de définir le comportement des opérateurs pour les classes personnalisées

3. Python : La POO simplifiée et dynamique

Python, créé par Guido van Rossum à la fin des années 1980, a adopté la POO d’une manière plus souple et accessible.

3.1 Caractéristiques clés de Python

  • Syntaxe simple et lisible : Facilite l’apprentissage et la lecture du code
  • Typage dynamique : Les types sont déterminés à l’exécution
  • “Tout est objet” : Même les fonctions sont des objets de première classe
  • Gestion automatique de la mémoire : Garbage collection intégré

3.2 Exemple de POO en Python

3.3 Particularités de la POO en Python

  • Duck Typing : “Si ça marche comme un canard et ça caquète comme un canard, alors c’est un canard”
  • Méthodes spéciales : Permettent de définir le comportement des objets (ex: __str__, __len__)
  • Propriétés : Permettent de contrôler l’accès aux attributs de manière élégante
  • Héritage multiple : Supporté, mais avec une résolution de méthode (MRO) spécifique

4. Comparaison C++ vs Python en POO

4.1 Syntaxe et lisibilité

  • C++ : Syntaxe plus verbeuse, types explicites
  • Python : Syntaxe concise, types inférés

4.2 Performance

  • C++ : Généralement plus rapide, contrôle précis de la mémoire
  • Python : Plus lent, mais développement plus rapide

4.3 Gestion de la mémoire

  • C++ : Manuelle (new/delete), risque de fuites mémoire
  • Python : Automatique (garbage collection)

4.4 Flexibilité

  • C++ : Statiquement typé, compilation nécessaire
  • Python : Dynamiquement typé, interprété

5. Impact sur le développement logiciel

L’adoption de la POO dans ces langages modernes a eu plusieurs effets :

  1. Standardisation des pratiques : Concepts POO communs entre les langages
  2. Amélioration de la réutilisabilité : Bibliothèques et frameworks basés sur la POO
  3. Facilitation du développement à grande échelle : Meilleure organisation du code pour les grands projets
  4. Adaptation à différents domaines : Du développement système (C++) au scripting et à l’analyse de données (Python)

Conclusion

L’intégration de la POO dans des langages comme C++ et Python a démocratisé son utilisation et a fourni aux développeurs des outils puissants pour créer des logiciels complexes et maintenables. Chaque langage a adapté les principes de la POO à sa philosophie, offrant ainsi une diversité d’approches pour résoudre les problèmes de programmation.

Back to top
Première Structuration des données
Python: tout n’est qu’objet

Programmation Orienté Object en Python, Rémi Genet.
Licence
Code source disponible sur Github

 

Site construit avec et Quarto
Inspiration pour la mise en forme du site ici
Code source disponible sur GitHub