"YaNn" a écrit dans le message de
news:br7rfc$vqt$
(snip)
Voila à quoi je pensais, mais peut être avec des classes est-ce plus
concept tout-objet ? j'avoue ne pas être un fan du tout-objet mais s'il
faut en passer par la :)
Visiblement, c'est de la méthode elt. finis. Pour ce genre de code de calcul
(qui va se ramener au final à l'inversion d'une grosse matrice, donc qqch de
fondamentalement orienté procédure), effectivement l'encapsulation est
souvent le seul concept "objet" dont on se sert. En gros, si quelqu'un doit
prendre la relève du code derrière toi et l'étendre en spécialisant certains
concepts de base rentrant en jeu dans la mef (mais je vois pas trop
lesquels), ça vaut le coup. Sinon, il vaut mieux faire comme tu le sens
toi...
D'un autre côté, je me dis que faire de la mécanique des vêtements doit être
assez différent de la méca du solide classique. Il doit y avoir une
implémentation particulière que l'on attend de toi. Sinon, pourquoi ne pas
utiliser un code mef standard...
Tiens par exemple, est-il envisageable de prendre en compte, en plus du
chargement mécanique, un chargement thermique, un mouillage des fibres (et
modification des paramètres physiques)? Et si oui, ne peut-ce pas se faire
par une spécialisation de mes concepts de base? Ma boîte est-elle adepte du
knowledge management :))? Voilà le genre de question qu'il faut que tu te
poses pour savoir si oui ou non tu dois faire de l'objet.
Mais c'est vrai que si tu t'en tiens à ton cahier des charges, pour un code
de calcul mécanique qui tient lieu de petit projet (donc pas une suite
logicielle interfaçable avec tout plein de trucs), c'est souvent surfait.
Fonzy
Le truc de fou :)
"YaNn" <yann.prosper@wanadoo.fr> a écrit dans le message de
news:br7rfc$vqt$1@news-reader3.wanadoo.fr...
(snip)
Voila à quoi je pensais, mais peut être avec des classes est-ce plus
concept tout-objet ? j'avoue ne pas être un fan du tout-objet mais s'il
faut en passer par la :)
Visiblement, c'est de la méthode elt. finis. Pour ce genre de code de calcul
(qui va se ramener au final à l'inversion d'une grosse matrice, donc qqch de
fondamentalement orienté procédure), effectivement l'encapsulation est
souvent le seul concept "objet" dont on se sert. En gros, si quelqu'un doit
prendre la relève du code derrière toi et l'étendre en spécialisant certains
concepts de base rentrant en jeu dans la mef (mais je vois pas trop
lesquels), ça vaut le coup. Sinon, il vaut mieux faire comme tu le sens
toi...
D'un autre côté, je me dis que faire de la mécanique des vêtements doit être
assez différent de la méca du solide classique. Il doit y avoir une
implémentation particulière que l'on attend de toi. Sinon, pourquoi ne pas
utiliser un code mef standard...
Tiens par exemple, est-il envisageable de prendre en compte, en plus du
chargement mécanique, un chargement thermique, un mouillage des fibres (et
modification des paramètres physiques)? Et si oui, ne peut-ce pas se faire
par une spécialisation de mes concepts de base? Ma boîte est-elle adepte du
knowledge management :))? Voilà le genre de question qu'il faut que tu te
poses pour savoir si oui ou non tu dois faire de l'objet.
Mais c'est vrai que si tu t'en tiens à ton cahier des charges, pour un code
de calcul mécanique qui tient lieu de petit projet (donc pas une suite
logicielle interfaçable avec tout plein de trucs), c'est souvent surfait.
Fonzy
Le truc de fou :)
"YaNn" a écrit dans le message de
news:br7rfc$vqt$
(snip)
Voila à quoi je pensais, mais peut être avec des classes est-ce plus
concept tout-objet ? j'avoue ne pas être un fan du tout-objet mais s'il
faut en passer par la :)
Visiblement, c'est de la méthode elt. finis. Pour ce genre de code de calcul
(qui va se ramener au final à l'inversion d'une grosse matrice, donc qqch de
fondamentalement orienté procédure), effectivement l'encapsulation est
souvent le seul concept "objet" dont on se sert. En gros, si quelqu'un doit
prendre la relève du code derrière toi et l'étendre en spécialisant certains
concepts de base rentrant en jeu dans la mef (mais je vois pas trop
lesquels), ça vaut le coup. Sinon, il vaut mieux faire comme tu le sens
toi...
D'un autre côté, je me dis que faire de la mécanique des vêtements doit être
assez différent de la méca du solide classique. Il doit y avoir une
implémentation particulière que l'on attend de toi. Sinon, pourquoi ne pas
utiliser un code mef standard...
Tiens par exemple, est-il envisageable de prendre en compte, en plus du
chargement mécanique, un chargement thermique, un mouillage des fibres (et
modification des paramètres physiques)? Et si oui, ne peut-ce pas se faire
par une spécialisation de mes concepts de base? Ma boîte est-elle adepte du
knowledge management :))? Voilà le genre de question qu'il faut que tu te
poses pour savoir si oui ou non tu dois faire de l'objet.
Mais c'est vrai que si tu t'en tiens à ton cahier des charges, pour un code
de calcul mécanique qui tient lieu de petit projet (donc pas une suite
logicielle interfaçable avec tout plein de trucs), c'est souvent surfait.
Fonzy
Le truc de fou :)
Fonzy wrote:
Sinon ce n'est qu'un projet personnel pour me permettre d'utiliser C++,
ce qui se fait de plus en plus rare dans les facs et écoles de ma région
(PACA).
Fonzy wrote:
Sinon ce n'est qu'un projet personnel pour me permettre d'utiliser C++,
ce qui se fait de plus en plus rare dans les facs et écoles de ma région
(PACA).
Fonzy wrote:
Sinon ce n'est qu'un projet personnel pour me permettre d'utiliser C++,
ce qui se fait de plus en plus rare dans les facs et écoles de ma région
(PACA).
"YaNn" a écrit dans le message de news:
br85qr$c87$Fonzy wrote:
Sinon ce n'est qu'un projet personnel pour me permettre d'utiliser C++,
ce qui se fait de plus en plus rare dans les facs et écoles de ma région
(PACA).
C'est quoi ton école, sans indiscrétion ?
"YaNn" <yann.prosper@wanadoo.fr> a écrit dans le message de news:
br85qr$c87$2@news-reader4.wanadoo.fr...
Fonzy wrote:
Sinon ce n'est qu'un projet personnel pour me permettre d'utiliser C++,
ce qui se fait de plus en plus rare dans les facs et écoles de ma région
(PACA).
C'est quoi ton école, sans indiscrétion ?
"YaNn" a écrit dans le message de news:
br85qr$c87$Fonzy wrote:
Sinon ce n'est qu'un projet personnel pour me permettre d'utiliser C++,
ce qui se fait de plus en plus rare dans les facs et écoles de ma région
(PACA).
C'est quoi ton école, sans indiscrétion ?
Fonzy
Le truc de fou :)
juste un détail pour moi, qu'est ce que tu entends par code mef ?
Sinon ce n'est qu'un projet personnel pour me permettre d'utiliser C++,
ce qui se fait de plus en plus rare dans les facs et écoles de ma région
(PACA).
Fonzy
Le truc de fou :)
juste un détail pour moi, qu'est ce que tu entends par code mef ?
Sinon ce n'est qu'un projet personnel pour me permettre d'utiliser C++,
ce qui se fait de plus en plus rare dans les facs et écoles de ma région
(PACA).
Fonzy
Le truc de fou :)
juste un détail pour moi, qu'est ce que tu entends par code mef ?
Sinon ce n'est qu'un projet personnel pour me permettre d'utiliser C++,
ce qui se fait de plus en plus rare dans les facs et écoles de ma région
(PACA).
Pierre Maurette wrote:Oui, ou alors peut-être :
* Conserver vos données private.
* Ecrire les getter/setter pour les accès non critiques.
* Centraliser les traitements critiques (devant être rapides) dans une
classe
ou une fonction déclarée friend dans la classe de vos données.
Cordialemnt,
Pierre
Pourriez vous me detailler cette approche s'il vous plait, j'avoue etre
intrigué :)
merci d'avance
Pierre Maurette wrote:
Oui, ou alors peut-être :
* Conserver vos données private.
* Ecrire les getter/setter pour les accès non critiques.
* Centraliser les traitements critiques (devant être rapides) dans une
classe
ou une fonction déclarée friend dans la classe de vos données.
Cordialemnt,
Pierre
Pourriez vous me detailler cette approche s'il vous plait, j'avoue etre
intrigué :)
merci d'avance
Pierre Maurette wrote:Oui, ou alors peut-être :
* Conserver vos données private.
* Ecrire les getter/setter pour les accès non critiques.
* Centraliser les traitements critiques (devant être rapides) dans une
classe
ou une fonction déclarée friend dans la classe de vos données.
Cordialemnt,
Pierre
Pourriez vous me detailler cette approche s'il vous plait, j'avoue etre
intrigué :)
merci d'avance
"YaNn" a écrit
[...]
Pourriez vous me detailler cette approche s'il vous plait, j'avoue etre
intrigué :)
Désolé, j'aurais du répondre plus tôt, mais ma connexion RTC est
"YaNn" <yann.prosper@wanadoo.fr> a écrit
[...]
Pourriez vous me detailler cette approche s'il vous plait, j'avoue etre
intrigué :)
Désolé, j'aurais du répondre plus tôt, mais ma connexion RTC est
"YaNn" a écrit
[...]
Pourriez vous me detailler cette approche s'il vous plait, j'avoue etre
intrigué :)
Désolé, j'aurais du répondre plus tôt, mais ma connexion RTC est
"YaNn" a écrit dans le message de
news:br85qr$c87$Fonzy
Le truc de fou :)
juste un détail pour moi, qu'est ce que tu entends par code mef ?
méthode des éléments finis.Sinon ce n'est qu'un projet personnel pour me permettre d'utiliser C++,
ce qui se fait de plus en plus rare dans les facs et écoles de ma région
(PACA).
Ils enseignent le java à la place ?
Fonzy
"YaNn" <yann.prosper@wanadoo.fr> a écrit dans le message de
news:br85qr$c87$2@news-reader4.wanadoo.fr...
Fonzy
Le truc de fou :)
juste un détail pour moi, qu'est ce que tu entends par code mef ?
méthode des éléments finis.
Sinon ce n'est qu'un projet personnel pour me permettre d'utiliser C++,
ce qui se fait de plus en plus rare dans les facs et écoles de ma région
(PACA).
Ils enseignent le java à la place ?
Fonzy
"YaNn" a écrit dans le message de
news:br85qr$c87$Fonzy
Le truc de fou :)
juste un détail pour moi, qu'est ce que tu entends par code mef ?
méthode des éléments finis.Sinon ce n'est qu'un projet personnel pour me permettre d'utiliser C++,
ce qui se fait de plus en plus rare dans les facs et écoles de ma région
(PACA).
Ils enseignent le java à la place ?
Fonzy
"Le Géant Vert" a écrit dans le message de
news: br9vau$n8o$"YaNn" a écrit
[...]Pourriez vous me detailler cette approche s'il vous plait, j'avoue etre
intrigué :)
Désolé, j'aurais du répondre plus tôt, mais ma connexion RTC est
pratiquement inexploitable. Merci qui ? merci Free, l'opérateur au service
des consommataeurs "honnêtes" de très gros débits 24/24. Pour télécharger de
la doc, j'imagine ...
Je rajouterais au code du Géant Vert, que je ne recopie pas, intéressé que
je suis aujourd'hui par les problèmes de bande passante ;-) :
* Getters/Setters sont facultatifs. Mais il vaut mieux AMHA les mettre
systématiquement. De toutes façons, inline et non utilisés, ils ne prendront
pas beaucoup de place ;-)
* Il est possible de déclarer friend une fonction aussi bien qu'une classe.
Par exemple :
void operationSuperCompliquee(int NombreDeNoeuds, MyClass* TabloDeNoeuds)
A priori à placer dans le module de la classe MyClass.
Attention, une fonction membre statique de MyClass ne conviendrait pas.
Il y a d'autres solutions pour gérer les MyClass (liste chainée, itérateur),
mais il me semble que le simple tableau sera le plius rapide à traiter.
D'un autre coté, si vous utilisez effectivement une MyClassB (MyClassList,
par exemple), elle pourra gérer l'ensemble des MyClass sur tous les plans,
et donc maintenir le tableau, sans conséquence pour la vitesse.
Je vais allègrement vers mes 48 printemps, mais tableaux de noeuds et champs
de bits continuent à me réjouir ...
Cordialement,
Pierre
"Le Géant Vert" <_NOSPAM_legeantvert@tiscali.fr> a écrit dans le message de
news: br9vau$n8o$1@news.tiscali.fr...
"YaNn" <yann.prosper@wanadoo.fr> a écrit
[...]
Pourriez vous me detailler cette approche s'il vous plait, j'avoue etre
intrigué :)
Désolé, j'aurais du répondre plus tôt, mais ma connexion RTC est
pratiquement inexploitable. Merci qui ? merci Free, l'opérateur au service
des consommataeurs "honnêtes" de très gros débits 24/24. Pour télécharger de
la doc, j'imagine ...
Je rajouterais au code du Géant Vert, que je ne recopie pas, intéressé que
je suis aujourd'hui par les problèmes de bande passante ;-) :
* Getters/Setters sont facultatifs. Mais il vaut mieux AMHA les mettre
systématiquement. De toutes façons, inline et non utilisés, ils ne prendront
pas beaucoup de place ;-)
* Il est possible de déclarer friend une fonction aussi bien qu'une classe.
Par exemple :
void operationSuperCompliquee(int NombreDeNoeuds, MyClass* TabloDeNoeuds)
A priori à placer dans le module de la classe MyClass.
Attention, une fonction membre statique de MyClass ne conviendrait pas.
Il y a d'autres solutions pour gérer les MyClass (liste chainée, itérateur),
mais il me semble que le simple tableau sera le plius rapide à traiter.
D'un autre coté, si vous utilisez effectivement une MyClassB (MyClassList,
par exemple), elle pourra gérer l'ensemble des MyClass sur tous les plans,
et donc maintenir le tableau, sans conséquence pour la vitesse.
Je vais allègrement vers mes 48 printemps, mais tableaux de noeuds et champs
de bits continuent à me réjouir ...
Cordialement,
Pierre
"Le Géant Vert" a écrit dans le message de
news: br9vau$n8o$"YaNn" a écrit
[...]Pourriez vous me detailler cette approche s'il vous plait, j'avoue etre
intrigué :)
Désolé, j'aurais du répondre plus tôt, mais ma connexion RTC est
pratiquement inexploitable. Merci qui ? merci Free, l'opérateur au service
des consommataeurs "honnêtes" de très gros débits 24/24. Pour télécharger de
la doc, j'imagine ...
Je rajouterais au code du Géant Vert, que je ne recopie pas, intéressé que
je suis aujourd'hui par les problèmes de bande passante ;-) :
* Getters/Setters sont facultatifs. Mais il vaut mieux AMHA les mettre
systématiquement. De toutes façons, inline et non utilisés, ils ne prendront
pas beaucoup de place ;-)
* Il est possible de déclarer friend une fonction aussi bien qu'une classe.
Par exemple :
void operationSuperCompliquee(int NombreDeNoeuds, MyClass* TabloDeNoeuds)
A priori à placer dans le module de la classe MyClass.
Attention, une fonction membre statique de MyClass ne conviendrait pas.
Il y a d'autres solutions pour gérer les MyClass (liste chainée, itérateur),
mais il me semble que le simple tableau sera le plius rapide à traiter.
D'un autre coté, si vous utilisez effectivement une MyClassB (MyClassList,
par exemple), elle pourra gérer l'ensemble des MyClass sur tous les plans,
et donc maintenir le tableau, sans conséquence pour la vitesse.
Je vais allègrement vers mes 48 printemps, mais tableaux de noeuds et champs
de bits continuent à me réjouir ...
Cordialement,
Pierre
"YaNn" a écrit dans le message de news:
br85q9$c87$Pierre Maurette wrote:Oui, ou alors peut-être :
* Conserver vos données private.
* Ecrire les getter/setter pour les accès non critiques.
* Centraliser les traitements critiques (devant être rapides) dans une
classe
ou une fonction déclarée friend dans la classe de vos données.
Cordialemnt,
Pierre
Pourriez vous me detailler cette approche s'il vous plait, j'avoue etre
intrigué :)
merci d'avance
l'idée est la suivante : (progressivement, ex. de code)
dans un premier temps, on conserve les données private :
class MyClass
{
// forme canonique
public:
Myclass();
MyClass(const MyClass &);
const MyClass &operator =(const MyClass &);
~MyClass();
//données
private:
int m_data;
};
ensuite, on fourni l'interface de manipulation : on rajoute les
getters/setters :
public:
// getters/setters
inline int getData() const; OU inline int data() const;
inline void setData(int); OU inline int &data();
(ces deux formes sont les plus utilisées il me semble)
donc, tous objets extérieurs à MyClass utilisent les get/set pour accéder à
m_data
"YaNn" <yann.prosper@wanadoo.fr> a écrit dans le message de news:
br85q9$c87$1@news-reader4.wanadoo.fr...
Pierre Maurette wrote:
Oui, ou alors peut-être :
* Conserver vos données private.
* Ecrire les getter/setter pour les accès non critiques.
* Centraliser les traitements critiques (devant être rapides) dans une
classe
ou une fonction déclarée friend dans la classe de vos données.
Cordialemnt,
Pierre
Pourriez vous me detailler cette approche s'il vous plait, j'avoue etre
intrigué :)
merci d'avance
l'idée est la suivante : (progressivement, ex. de code)
dans un premier temps, on conserve les données private :
class MyClass
{
// forme canonique
public:
Myclass();
MyClass(const MyClass &);
const MyClass &operator =(const MyClass &);
~MyClass();
//données
private:
int m_data;
};
ensuite, on fourni l'interface de manipulation : on rajoute les
getters/setters :
public:
// getters/setters
inline int getData() const; OU inline int data() const;
inline void setData(int); OU inline int &data();
(ces deux formes sont les plus utilisées il me semble)
donc, tous objets extérieurs à MyClass utilisent les get/set pour accéder à
m_data
"YaNn" a écrit dans le message de news:
br85q9$c87$Pierre Maurette wrote:Oui, ou alors peut-être :
* Conserver vos données private.
* Ecrire les getter/setter pour les accès non critiques.
* Centraliser les traitements critiques (devant être rapides) dans une
classe
ou une fonction déclarée friend dans la classe de vos données.
Cordialemnt,
Pierre
Pourriez vous me detailler cette approche s'il vous plait, j'avoue etre
intrigué :)
merci d'avance
l'idée est la suivante : (progressivement, ex. de code)
dans un premier temps, on conserve les données private :
class MyClass
{
// forme canonique
public:
Myclass();
MyClass(const MyClass &);
const MyClass &operator =(const MyClass &);
~MyClass();
//données
private:
int m_data;
};
ensuite, on fourni l'interface de manipulation : on rajoute les
getters/setters :
public:
// getters/setters
inline int getData() const; OU inline int data() const;
inline void setData(int); OU inline int &data();
(ces deux formes sont les plus utilisées il me semble)
donc, tous objets extérieurs à MyClass utilisent les get/set pour accéder à
m_data
Quel est l'intérêt de ces getters / setters si leur implémentation est
simplement (si je t'ai bien suivi)
int MyClass::getData() const
{
return m_data
}
void MyClass:setData(int data)
{
m_dataÚta;
}
Utiliser ces fonctions d'accès a un sens si tu fais un peu plus de choses
dedans que simplement positionner la variable. Si tu en profites pour
faire du log, de la vérification de valeur, ... alors là ok, mais si c'est
simplement positionner la variable, je ne vois pas l'intérêt.
Quel est l'intérêt de ces getters / setters si leur implémentation est
simplement (si je t'ai bien suivi)
int MyClass::getData() const
{
return m_data
}
void MyClass:setData(int data)
{
m_dataÚta;
}
Utiliser ces fonctions d'accès a un sens si tu fais un peu plus de choses
dedans que simplement positionner la variable. Si tu en profites pour
faire du log, de la vérification de valeur, ... alors là ok, mais si c'est
simplement positionner la variable, je ne vois pas l'intérêt.
Quel est l'intérêt de ces getters / setters si leur implémentation est
simplement (si je t'ai bien suivi)
int MyClass::getData() const
{
return m_data
}
void MyClass:setData(int data)
{
m_dataÚta;
}
Utiliser ces fonctions d'accès a un sens si tu fais un peu plus de choses
dedans que simplement positionner la variable. Si tu en profites pour
faire du log, de la vérification de valeur, ... alors là ok, mais si c'est
simplement positionner la variable, je ne vois pas l'intérêt.