POO et Base de données ...

Fermé
[BB]nox Messages postés 4 Date d'inscription mardi 3 mai 2005 Statut Membre Dernière intervention 16 mai 2005 - 16 mai 2005 à 11:29
[BB]nox Messages postés 4 Date d'inscription mardi 3 mai 2005 Statut Membre Dernière intervention 16 mai 2005 - 16 mai 2005 à 12:50
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...

2 réponses

tafiscobar Messages postés 1277 Date d'inscription jeudi 7 décembre 2000 Statut Contributeur Dernière intervention 26 février 2009 177
16 mai 2005 à 11:53
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.
0
[BB]nox Messages postés 4 Date d'inscription mardi 3 mai 2005 Statut Membre Dernière intervention 16 mai 2005
16 mai 2005 à 12:05
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 ???
0
tafiscobar Messages postés 1277 Date d'inscription jeudi 7 décembre 2000 Statut Contributeur Dernière intervention 26 février 2009 177
16 mai 2005 à 12:41
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!!!
0
[BB]nox Messages postés 4 Date d'inscription mardi 3 mai 2005 Statut Membre Dernière intervention 16 mai 2005
16 mai 2005 à 12:50
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.
0