1. Introduction au C++
sommaire chapitre 1
1.4. Différence entre procédural et objet
Dans son ouvrage Algorithmes et Structures de Données, Niklaus Wirth
stipule qu'on peut résumer l'activité de programmation par la formule suivante :
programme = algorithmes + structures de données
en fait, on devrait écrire :
(Procédural/Impératif) programme = algorithmes( structures de données, paramètres )
dès lors on peut reprendre la formule et l'adapter à la programmation objet :
(Objet) programme = structures de données.algorithmes( paramètres )
Les principaux avantages de la programmation objet sont les suivants :
- encapsulation des données : visibilité, protection (public, protected, private)
- héritage : réutilisation du code
- polymorphisme : synthèse (plusieurs fonctions différentes avec le même nom)
Si on ajoute à cela la généricité, on autorise l'abstraction et la conception de programme est alors plus proche des concepts humains.
Exemples
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// data structure
typedef struct _Person {
char name[25];
int age;
} Person;
/**
* create new structure of type Person
*/
Person *Person_create() {
Person
*p
= (Person
*) malloc(sizeof(Person
));
return p;
}
/**
* remove existing Person
*/
void Person_destroy(Person *p) {
}
/**
* initialize data structure
* @param p pointer to Person
* @param n name of the Person
* @param a age of the Person
*/
void Person_init(Person *p, char *n, int a) {
p->age = a;
}
/**
* set name of given Person
* @param p pointer to Person
* @param n name of the Person
*/
void Person_set_name(Person *p, char *n) {
}
/**
* display name of the Person
* @param p pointer to Person
*/
void Person_print(Person *p) {
printf("%s %d", p
->name
, p
->age
);
}
// main
int main() {
Person *p = Person_create();
Person_init(p, "toto", 10);
Person_print(p);
Person_destroy(p);
return 0;
}
#include <iostream>
#include <cstring>
using namespace std;
class Person {
protected:
char name[25];
int age;
public:
/**
* constructor
*
*/
Person(char *n, int a) {
strcpy(name, n);
age = a;
}
/**
* set name of given Person
* @param p pointer to Person
* @param n name of the Person
*/
void set_name(char *n) {
strcpy(name, n);
}
/**
* display name of the Person
* @param p pointer to Person
*/
void print() {
cout << name << " " << age;
}
};
// main
int main() {
Person *p = new Person("toto", 10);
p->print();
delete p;
return 0;
}