POO : Conseils choix d'objet
Fermé
Utilisateur anonyme
-
Modifié par kyser soze le 20/03/2013 à 12:05
Utilisateur anonyme - 20 mars 2013 à 14:16
Utilisateur anonyme - 20 mars 2013 à 14:16
A voir également:
- POO : Conseils choix d'objet
- Happy poo - Télécharger - Arcade
4 réponses
Bionik
Messages postés
4232
Date d'inscription
jeudi 19 août 2010
Statut
Modérateur
Dernière intervention
3 août 2016
184
20 mars 2013 à 11:56
20 mars 2013 à 11:56
Salut,
Je vais tenter de répondre à ta première question.
Déjà ne confonds-tu pas classe et objets? Si ton système est géré par plusieurs utilisateurs de nivaux différents (différents droits), tu peux créer une classe générique qui sera Abstraite et qui s'appellera Utilisateur par exemple. Dans cette classe tu mettras aussi des méthodes génériques comme se loguer (enfin, ça dépend de ton système aussi).
Il faut savoir qu'une classe abstraite ne peut pas être instanciée, elle a pour rôle d'être héritée, comme ça toutes les classes filles pourront redéfinir les méthodes de la super classe (la classe mère) et/ou en ajouter.
Tu stockes aussi beaucoup de données tu dis, je te conseilles de faire toutes les vérifications nécessaires pour conserver l'intégrité de tes variables. Ça, ça se fait avec les mutateurs ou setters et tu récupères les valeurs avec les accesseurs ou getters. C'est le principe même de l'encapsulation.
Rappelles-toi de ceci: une classe, une entité. Tu dois d'abord repérer toutes tes entités et ensuite créer leur classe puis faire toutes les manipulations nécessaires.
Bonne chance.
Je vais tenter de répondre à ta première question.
Déjà ne confonds-tu pas classe et objets? Si ton système est géré par plusieurs utilisateurs de nivaux différents (différents droits), tu peux créer une classe générique qui sera Abstraite et qui s'appellera Utilisateur par exemple. Dans cette classe tu mettras aussi des méthodes génériques comme se loguer (enfin, ça dépend de ton système aussi).
Il faut savoir qu'une classe abstraite ne peut pas être instanciée, elle a pour rôle d'être héritée, comme ça toutes les classes filles pourront redéfinir les méthodes de la super classe (la classe mère) et/ou en ajouter.
Tu stockes aussi beaucoup de données tu dis, je te conseilles de faire toutes les vérifications nécessaires pour conserver l'intégrité de tes variables. Ça, ça se fait avec les mutateurs ou setters et tu récupères les valeurs avec les accesseurs ou getters. C'est le principe même de l'encapsulation.
Rappelles-toi de ceci: une classe, une entité. Tu dois d'abord repérer toutes tes entités et ensuite créer leur classe puis faire toutes les manipulations nécessaires.
Bonne chance.
Bionik
Messages postés
4232
Date d'inscription
jeudi 19 août 2010
Statut
Modérateur
Dernière intervention
3 août 2016
184
20 mars 2013 à 12:40
20 mars 2013 à 12:40
La seule différence entre une interface et une classe abstraite c'est que cette dernière en plus des méthodes peut avoir des attributs comme toute classe normale, par exemple tu pourrais avoir login et motDePasse comme attributs dans la classe Utilisateur, donc lorsque les autres classes hériteront de la classe Utilisateur ils auront d'office comme propriétés ce que t'avais défini dans la classe mère (Utilisateur).
Ça va t'éviter de créer une interface à implémenter dans des classes et que ces dernières se retrouvent toujours avec les propriétés qu'ils auront toujours en commun (login et motDePasse).
Une classe, une entité. Avec ta classe Installation, tu vas vite te perdre! Or le but même de la POO c'est plus de clarté dans le code, la ré-utilisabilité, l'extensibilité, la facilité de mise-à-jour etc... Es-tu sûr que ton application va répondre à toutes ces questions?
Ça va t'éviter de créer une interface à implémenter dans des classes et que ces dernières se retrouvent toujours avec les propriétés qu'ils auront toujours en commun (login et motDePasse).
Une classe, une entité. Avec ta classe Installation, tu vas vite te perdre! Or le but même de la POO c'est plus de clarté dans le code, la ré-utilisabilité, l'extensibilité, la facilité de mise-à-jour etc... Es-tu sûr que ton application va répondre à toutes ces questions?
Utilisateur anonyme
20 mars 2013 à 12:16
20 mars 2013 à 12:16
Merci de la réponse,
Tu as raison j'ai complétement mélangé les termes classe et objet dans mon texte, ça va pas ce matin :s ! J'ai modifier je crois que ça devrait être plus compréhensible maintenant.
C'est vrai que j'ai du mal à identifier clairement les entités!!
Tu m'amènes une nouvelle question, pourquoi utiliser plutôt une classe abstraite et pas une interface?
En fait j'ai vu plusieurs manières de faire mais je ne comprend pas vraiment les différences concrètes de tel ou tel cas.
J'ai l'impression que je tend à me retrouver avec une unique classe Installation qui sera gigantesque, et ça me plait pas vraiment!
Bon ap'
Tu as raison j'ai complétement mélangé les termes classe et objet dans mon texte, ça va pas ce matin :s ! J'ai modifier je crois que ça devrait être plus compréhensible maintenant.
C'est vrai que j'ai du mal à identifier clairement les entités!!
Tu m'amènes une nouvelle question, pourquoi utiliser plutôt une classe abstraite et pas une interface?
En fait j'ai vu plusieurs manières de faire mais je ne comprend pas vraiment les différences concrètes de tel ou tel cas.
J'ai l'impression que je tend à me retrouver avec une unique classe Installation qui sera gigantesque, et ça me plait pas vraiment!
Bon ap'
Utilisateur anonyme
20 mars 2013 à 14:16
20 mars 2013 à 14:16
Ok merci pour toutes ces précisions, c'est super!!
Ben pour l'instant mon appli répond pas à grand chose, je me rends compte que cette classe toute seule n'est pas une bonne idée, je n'ai pas encore eu l'illumination mais j'y travail.
Ben pour l'instant mon appli répond pas à grand chose, je me rends compte que cette classe toute seule n'est pas une bonne idée, je n'ai pas encore eu l'illumination mais j'y travail.