RECHERCHER :
COMMUNAUTE MP
Identifiez vous ...
Devenir Membre
J'ai oublié mon MDP
DOMAINE MP
Bavardages
Langages Généraux
Langages Web
Langages DotNet
Autres langages
Dev. Jeux Video
Sécurité
Sys. Exploitation
Graphismes
Logiciels
Réseaux
Bases de données
Méthodologies
Emplois High-tech
Aide juridique
Articles juridiques
FORUM
Index des forums
Ajouter un sujet
Rechercher sujet
Contact Responsable
Devenir modérateur
CHAT MP IRC
Votre pseudo ...
Serv: irc.irc-land.org
Chan: #MoteurProg
PARTICIPER
Plus de 3500 emplois.
Rechercher un job
Déposez votre CV
Emplois High-tech

Visiteur MP

 Le langage C est-il obsolète ?

Forum : C & C++
Sous Catégorie : Aucune
Type du sujet : Débat
FAQ : FAQ C & C++

SUIVI DES SUJETS PAR MAIL

SUIVI PAR MAIL INACTIF

RESOLUTION DU SUJET SUJET NON RESOLU
BLOQUAGE DU SUJET SUJET ACTIF
APPARTENANCE A LA FAQ N'APPARTIENT PAS A LA FAQ


PAGES : [1] [2] [3] [4] [5] [6] [7] [8]

POSTER UN NOUVEAU SUJET REPONDRE A CE SUJET

FORUM C & C++

PREMIERE PAGE

PAGE PRECEDENTE

Page précedente

Page suivante

PAGE SUIVANTE

DERNIERE PAGE
screetch
Nouveau membre
Inscrit : 13/08/2007
Messages : 17
Message
#140784
Posté le 14/08/07 à 10:55
Oui, les methodes statiques existent en C++, elles sont comme les methodes Delphi je crois (c'est a dire des fonctions libres mais dans un namespace)

il y a deux ecoles differentes dans la STL, la premiere est dans le fichier <algorithm> en général : par exemple, trier un container se fait par une methode externe (std::sort(begin(), end(), comparateur) et n'est pas membre d'un container en particulier.

La deuxieme est dans <string> ou les methodes
insert
append
remove
replace
find/rfind (<=== surtout celle la)
compare

sont des membres non statique de la classe std::string

c'est considéré comme une mauvaise idée de polluer l'interface de string avec des choses qui peuvent etre exterieures, un peu comme de mettre des choses publiques dans une classe au lieu de protected ou private, ou de faire de l'heritage public systematiquement.

find() peut etre ecrite de la meme maniere en sortant la methode de la classe et en la laissant travailler avec l'interface publique.


C'est un anti-pattern connu sous le nom de God object ou Blob (http://en.wikipedia.org/wiki/God_object)

pour plus d'info sur les anti pattern, voir http://en.wikipedia.org/wiki/Anti-pattern (en anglais desole)

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

Publicité
Inscrit : X
Messages : X
Message
#Aucun

HAUT DE PAGE

  

pac
Co-Administrateur
Superviseur :
- Méthodologie.
Modérateur :
- Delphi
Chef de projet(s) :
- Jeu Awalé
- EcoSystem
- MySudoku

Avatar de pac
Inscrit : 08/04/2004
Messages : 6571
Message
#140789
Posté le 14/08/07 à 11:48
screetch dit :
(c'est a dire des fonctions libres mais dans un namespace)

Pas vraiment, elles ne sont pas dans un namespace mais déclarées dans la déclaration de la classe. Elles ne travaillent pas sur l'objet en lui-même mais sur la classe de l'objet. Mais si on n'utilise pas les propriétés de la classe dans l'implémentation de la méthode statique, cela revient au même qu'une fonction libre dans un namespace.

screetch dit :
sont des membres non statique de la classe std::string

Ne sont-ce pas des méthodes et non des membres ? Tu veux dire qu'ils ont définit ces méthodes comme étant des méthodes non statiques travaillant directement sur l'objet ?

Veux-tu dire que ce qu'ils avaient fait, c'est mettre trop de fonctions dans le namespace et qu'ils ont préféré les mettre dans un autre namespace ? Si c'est ça, je ne comprends pas.
Ou bien, veux-tu dire qu'ils ont changé les méthodes de la classe en fonctions inclues dans le namespace ? Et dans ce cas, je trouve ça normal.

Au sujet du God object, je pense que l'important n'est pas de compter le nombre de champs et de méthodes de l'objet mais bien de voir la conhérence des données et des méthodes. Ils n'ont pas vraiment insisté sur ce point.
On ne peut pas couper en 2 une classe juste parce qu'elle est trop grosse alors que les données doivent être ensemble.
Mais il est vrai, à l'inversement, que des gens font un super objet qui gère toute l'application alors qu'ils devraient donner le travail et les responsabilités aux classes suivant leurs rôles.
__________________________
Lisez la charte, pensez à regarder la FAQ, les tutoriaux, l'annuaire et faites une recherche dans les forums.
N'oubliez pas le Tag [Résolu]Image.

Initiez-vous à Delphi avec Turbo Delphi Explorer, au C ou au C++ avec Code::Blocks et C# avec Visual C# 2005 Express.

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE ALLER VOIR SON SITE

screetch
Nouveau membre
Inscrit : 13/08/2007
Messages : 17
Message
#140791
Posté le 14/08/07 à 12:18
je voulais dire par la que les fonctions append, remove, replace, find et toute leurs petites oeurs sont des methodes de la classe string, alors que l'interface (sans ces methodes) de la classe string permet d'effectuer ces operations. Donc ces methodes auraient pu etre des fonctions libre, comme std::sort()

par "membres" je voulais dire "fonction membre" au contraire de "fonction libre" :)

en gros au lieu de faire

std::string hopla ("hopla");
hopla.find("la");

beaucoup pensent qu'il faudrait faire
std::string hopla ("hopla");
std::find(hopla, "la");

de meme pour beaucoup de methodes de string qui devraient etre des fonctions libres (ou statique de string)

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

Alp
Superviseur :
- Système d'ex.
- Méthodologie.
- C & C++
Modérateur :
- Bavardages
Chef de projet(s) :
- My SDL Lib

Avatar de Alp
Inscrit : 24/06/2004
Messages : 2547
Message
#144412
Posté le 24/10/07 à 08:50
Je pense qu'il faut être raisonnable.

Pour des classes comme std::string (enfin std::basic_string), il faudrait alléger l'interface, car c'est un objet à sémantique de valeur, on doit le manipuler "comme un type fondamental"...

Cependant, pour un widget d'interfaces graphiques, je me vois mal faire 100 lignes de ce genre :

Show(boutonOk); Show(boutonAnnuler); Show(conteneur); // ...


Donc il faut être modéré selon le cas.
__________________________
Be C++
Mon Blog (C++, Intelligence Artificielle, Prolog)

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 
POSTER UN NOUVEAU SUJET REPONDRE A CE SUJET

PREMIERE PAGE

PAGE PRECEDENTE Page précédente

Page suivante

PAGE SUIVANTE DERNIERE PAGE

FORUM C & C++



    PAGES : [1] [2] [3] [4] [5] [6] [7] [8]



.: Site Web développé par Julien Pichot et l'équipe MPWG avec www.evolvia-web.com :.