UML + Langage C

Bonjour,
J’ai essayer de chercher des conventions UML vers C mais je n’ai rien réussi à trouver. Alors j’espère que quelqu’un pourra m’aider!
J’aimerai utiliser une conception en UML pour de l’embarqué pour du codage C. J’ai rencontré une fois une personne qui m’a expliqué par exemple que les interfaces devaient être implémenté en callback mais je n’ai pas vraiment saisie ce qu’elle voulait dire… Peut être que vous pourriez me rediriger vers un site ou me faire parvenir des cours (pour ceux qui ont suivit des études en informatique)
Merci d’avance

Bien.

En C, c’est du procédural, donc je sais pas si UML - méthode de conception dédiée à la POO je crois bien - est adaptée. Mais je vais essayer :

[cpp]interface F {
public void f(int x);
}[/cpp]

Tu fais ça en général quand tu veux faire une action spécifique sur un objet, sauf que C = tout sauf objet.

Donc pour faire ce que tu veux, tu fais appel à des callback, ou pointeur sur fonction.

Tu n’as plus d’interface, juste que tu écris le code comme ça :

void invoke(void(*)(int) callback, int value) {
  callback(value);
}

void f(int x) {
  fprintf("x = %d\n", x);
}

int main(void) {
  invoke(f, 41);
}

Oui mais là, tu n’as plus la notion objet. Du tout. Tu n’as plus rien pour te référer à l’objet implatant F.

Cela peut aussi se faire en injectant l’objet en paramètre :

void invoke(void(*)(void*, int) callback, void* obj, int value) {
  callback(obj, value);
}

void f(T* obj, int x) {
  fprintf("x = %d\n", x);
}

typedef struct {
  int x;
  int y;
} T;

int main(void) {
  T x = {9,4};  
  invoke(f, &x, 41);
}

L’idée est là. Je sais pas si c’est ce que tu veux.

Ca s’appelle “programmation générique”

Sinon programmation objet -> C =

pas de private, protected, public
foo.x(); => Foo_x(foo);

etc

Non pas trop :slight_smile:

(bon j’ai commencé par le C avant le Java donc bon je m’y connais je pense)