Rechercher : dans
Par :

POO et Base de données ...

Dernière réponse le 16 mai 2005 à 12:50:51 [BB]nox, le 16 mai 2005 à 11:29:38 
 Signaler ce message aux modérateurs

Bonjour,

je développe un logiciel de gestion sous windev et j'aurais aimé savoir s'il était possible de le faire en objet. J'ai déja réalisé l'analyse ( MLD ) et divers problèmes m'ont amené à penser que la POO pourait me simplifier la tache. Cependant je n'ai que peu de pratique dans ce domaine... Existe-t-il des sites traitant de problèmes similaires ??? (POO et base de données)

Toute remarque ou suggestion sera la bienvenue,
merci d'avance...

Meilleures réponses pour « POO et Base de données ... » dans :
Afficher le nom des base de données Oracle VoirPour afficher le nom des bases de données Oracle ainsi que les données s'y référant, il suffit de lancer la commande : SELECT * FROM V$DATABASE;
Bases de données - Introduction VoirQu'est-ce qu'une base de données ? Une base de données (son abréviation est BD, en anglais DB, database) est une entité dans laquelle il est possible de stocker des données de façon structurée et avec le moins de redondance possible. Ces données...
PHP - Bases de données VoirPhp permet un interfaçage très simple avec un grand nombre de bases de données. Lorsqu'une base de données n'est pas directement supportée par Php, il est possible d'utiliser un driver ODBC, pilote standard pour communiquer avec les bases de...
Importer et exporter des données sous MySQL VoirImportation et exportation Les Système de Gestion de Bases de Données tels que MySQL permettent de manipuler facilement et avec beaucoup de souplesse un très important volume de données. Toutefois, aussi robuste soit MySQL, il peut être intéressant...

1

tafiscobar, le 16 mai 2005 à 11:53:12

Salut, la POO est une maniére de programmer. Elle permet de faire des progs + structurés, extensibles, + lisibles, ... Donc le fait de programmer en objet n'a rien a voir avec l'accés aux bases de données. Mais effectivement POO et BD font un bon couple, car cela te permet de mieu séparer les données de l'interface. Si t'as jamais eu de cours d'objet, ce sera difficle de te l'expliqer ici, néanmoins, bertrand Meyer (le gars qui a fait Eiffel) a écrit bcoup de choses sur l'objet et un bon livre sur la POO, mais j'ai oublié le titre. La BD n'est qu'un autre moyen de stocker des données, donc devrait etre abstrait ds l'interface de ton logiciel. J'espere que je t'ai guidé un peu. tafiscobar "lou waye def bopame"
la nullite n'existe pas, l'ignorance oui, ah je suppose!!!

Répondre à tafiscobar

2

[BB]nox, le 16 mai 2005 à 12:05:56

En fait, je connais quand meme un peu l'objet, je suis en iut informatique...
Mon probleme c'est que j'ai des classes qui représentent les tables de mon MLD, c'est un peu tordu mais j'ai lu que ça pouvait se faire...
J'instancie ma classe en créant un enregistrement dans un fichier hyperfile. Mon objet ayant donc pour seul attribut l'ID de l'enregistrement...
Mais tout ça me semble bizzare, car d'habitude un objet n'existe que dynamiquement alors que dans ce cas de figure, l'objet reste dans la base. Donc quand je veux réutiliser un objet je dois le réinstancier... Est-il possible de surcharger un constructeur de maniere à traiter différemment l'instanciation d'un objet qui "existe" déja dans ma base ???

Répondre à [BB]nox

3

tafiscobar, le 16 mai 2005 à 12:41:16

Ah non, je ne sais pas qui t'a dit qu'un objet n'existe que dynamiquement, c'est un meurtre ça. Un objet n'est qu'une instance d'une classe, coe lorsq tu instancies un entier, la classe ici devient un type. Par conséquent il peut etre static, dynamiq, etc.. suivant les possibilités du langage (par exemple en ocaml tout est static, Java est essentiellement static, ...).

C'est coua une entrée ds une BD? c'est un ensemble de propriétés spécifiques à un objet. C'est coua un Objet en POO? un ensemble de propriétés/comportements que partagent un ensemble "d'elements" et que l'on regroupe pour dire que si un elt est de ce type, il doit avoir tel, telle propriété et pouvoir avoir tel comportement. Donc c'est normal que pour récupérer un enregistrement ds la base, on crée une instance d'un objet. Ainsi on évite certaines erreurs. Par exemple, on est sur que l'utilisateur de la classe ne pourra modifier telle propriété car c'est privé et si jamais c'est modifié cela peut fausser la base, ...

Bien sur tu peu surcharger le constructeur d'une classe. Qd tu instancies un objet a partir de la base, pour le modifier t'as plus besoin de recourir a la base, tu modifies l'objet d'abord et ensuite seulement tu peu ou non modifier la base suivant ce que tu veux. Par exemple l'objet peu faciliter les transactions lorsq la base ne le permet pas.
Je te donne un exemple, ce sera peut etre plus clair:

class Journal {
   long code;
   char *description;
public:
  Journal (long id); // récupéres ds la base le journal avec code=id
  long getId();
  char *getDescription() const;
  void setDescription (char *desc);
  int commit (); // enregistre ds la base les modifications
};

/* ds ton coe tu feras quelque chose du genre */
Journal unJournal (1);
// tu fais des modifs de l'objet si nécessaire
//si tu veux enregistrer, en récupérant l'erreur pour voir si cela s'est bien passé.
int error = unJournal.commit (); 


Attention, ce n'est qu'un exemple, il n'est pas forcément adapté a ce que tu fais et en plus ne répond pas a la question de l'abstraction de la source de données
tafiscobar "lou waye def bopame"
la nullite n'existe pas, l'ignorance oui, ah je suppose!!!

Répondre à tafiscobar

4

 [BB]nox, le 16 mai 2005 à 12:50:51

Ben merci pour ces éclaircissements, je vais voir ce que j'arrive à faire et je te tiens o courant... Parce que le problème c'est que windev à tendance à me sortir par les yeux ! Je vais déja voir s'il accepte la surcharge du constructeur... Encore merci, bonne journée.

Répondre à [BB]nox