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. Première Structuration des données
  • 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

  • Structuration des données : Évolution et concepts clés
    • 1. Le besoin de structurer les données
    • 2. Les tableaux : première forme de structuration
      • Définition
      • Exemple en C++
      • Avantages et limites
    • 3. Les structures en C++
      • Définition et exemple
      • Avantages
    • 4. Les records en Pascal
      • Définition et exemple en Pascal
      • Particularités des records en Pascal
    • 5. Les modules en Modula-2
      • Définition
      • Exemple simplifié en Modula-2
      • Importance des modules
    • 6. Impact sur la programmation
    • 7. Vers la programmation orientée objet
    • Conclusion

Première Structuration des données

Cours
Introduction
Découvrez comment les tableaux, les structures et les records ont permis de structurer les données dans les premiers langages de programmation.
Author

Remi Genet

Published

2024-10-21

Structuration des données : Évolution et concepts clés


1. Le besoin de structurer les données

Au début de la programmation, les données étaient stockées de manière simple, souvent sous forme de variables individuelles. Avec la complexification des problèmes, le besoin de regrouper et d’organiser les données est devenu évident.

Exemple simple en C++ :

string nom = "Dubois";
string prenom = "Marie";
int age = 20;
float moyenne = 15.5;

Cette approche devient vite difficile à gérer pour de nombreux étudiants ou plus d’informations.

2. Les tableaux : première forme de structuration

Définition

Un tableau est une collection d’éléments de même type, accessibles par un index.

Exemple en C++

int notes[5] = {12, 15, 18, 10, 14};
cout << "La troisième note est : " << notes[2] << endl;  // Affiche 18

Avantages et limites

  • Stockage efficace de multiples éléments de même type
  • Accès rapide aux éléments par leur position
  • Tous les éléments doivent être du même type
  • Taille souvent fixe à la compilation en C++

3. Les structures en C++

Les structures permettent de regrouper des données de types différents qui sont logiquement liées.

Définition et exemple

struct Etudiant {
    string nom;
    string prenom;
    int age;
    float moyenne;
};

Etudiant marie = {"Dubois", "Marie", 20, 15.5};
cout << marie.prenom << " " << marie.nom << " a " << marie.age << " ans" << endl;

Avantages

  • Représentation d’entités complexes de manière plus naturelle
  • Regroupement logique des données liées
  • Amélioration de la lisibilité et de l’organisation du code

4. Les records en Pascal

Pascal a introduit le concept de “record”, similaire aux structures en C++, mais avec quelques différences syntaxiques et conceptuelles.

Définition et exemple en Pascal

type
  Etudiant = record
    nom: string[50];
    prenom: string[50];
    age: integer;
    moyenne: real;
  end;

var
  marie: Etudiant;

begin
  marie.nom := 'Dubois';
  marie.prenom := 'Marie';
  marie.age := 20;
  marie.moyenne := 15.5;
  
  writeln(marie.prenom, ' ', marie.nom, ' a ', marie.age, ' ans');
end.

Particularités des records en Pascal

  • Typage fort : Pascal est connu pour son système de typage strict
  • Déclaration explicite des types : Améliore la clarté et la sécurité du code
  • Utilisé dans un langage conçu pour l’enseignement : Syntax claire et lisible

5. Les modules en Modula-2

Modula-2, successeur de Pascal, a introduit le concept de modules, une étape importante vers l’encapsulation.

Définition

Un module en Modula-2 est une unité de programme qui regroupe des définitions de types, des variables et des procédures liées.

Exemple simplifié en Modula-2

MODULE GestionEtudiants;

EXPORT Etudiant, CreerEtudiant, AfficherEtudiant;

TYPE
  Etudiant = RECORD
    nom: ARRAY[0..49] OF CHAR;
    prenom: ARRAY[0..49] OF CHAR;
    age: INTEGER;
    moyenne: REAL;
  END;

PROCEDURE CreerEtudiant(VAR e: Etudiant; n, p: ARRAY OF CHAR; a: INTEGER; m: REAL);
BEGIN
  (* Code pour initialiser un étudiant *)
END CreerEtudiant;

PROCEDURE AfficherEtudiant(e: Etudiant);
BEGIN
  (* Code pour afficher les informations d'un étudiant *)
END AfficherEtudiant;

END GestionEtudiants.

Importance des modules

  • Encapsulation : Regroupement des données et des opérations liées
  • Séparation interface/implémentation : Distinction entre ce qui est public et privé
  • Réutilisabilité : Facilite la réutilisation du code dans différents programmes

6. Impact sur la programmation

Ces évolutions dans la structuration des données ont eu plusieurs effets positifs :

  1. Modélisation plus fidèle du monde réel
  2. Amélioration de la lisibilité et de la maintenabilité du code
  3. Introduction de l’abstraction des données
  4. Prémices de l’encapsulation (particulièrement avec les modules)

7. Vers la programmation orientée objet

Malgré ces avancées, certaines limitations persistaient : - Manque de mécanismes pour l’extension et la spécialisation des structures - Absence de polymorphisme

Ces limitations ont ouvert la voie à la programmation orientée objet, qui intégrera ces concepts de manière plus complète et flexible.

Conclusion

La structuration des données, à travers les tableaux, les structures, les records et les modules, a posé les bases conceptuelles nécessaires à l’émergence de la programmation orientée objet. Cette évolution a permis de mieux organiser et représenter l’information, préparant le terrain pour des paradigmes plus avancés.

Back to top
Histoire de la programmation
Naissance de la POO

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