2010-01-11 3 views
25

UML est le plus couramment utilisé pour le système de modélisation en utilisant C++. Dans mes projets, C est le langage de mise en œuvre. Je cherche des ressources sur les stratégies UML qui sont applicables pour C. Je veux utiliser UML pendant la conception et représenter les différents aspects du système.UML pour langage de programmation C

+1

Ma question ne porte pas sur la façon dont la POO peut être faite en C. Pour cela, nous avons beaucoup de méthodes comme www.state-machine.com/devzone/cplus_3.0_manual.pdf et www.planetpdf.com/codecuts/pdfs/ooc .pdf. Comme steven l'a mentionné, en C nous pouvons vouloir utiliser seulement le diagramme de séquence et le diagramme de composant. Je cherche des ressources qui décrivent ces stratégies. J'ai une idée comme, le fichier représente un module et il peut être utilisé à la place de l'objet dans le diagramme de séquence. Et je montre le flux entre différents modules en utilisant cette stratégie. – Andy

+0

Merci pour les liens, Andy. –

Répondre

29

Je ne connais aucune ressource existante qui traite de l'utilisation spécifique de UML pour C. Comme d'autres l'ont mentionné, UML est indépendant du langage. Gardez à l'esprit qu'avec UML, vous pouvez avoir un modèle pour le domaine du problème, et un autre pour l'implémentation. Essayez de ne pas modéliser le domaine du problème en termes de C, mais plutôt comme OO de haut niveau. Une fois que vous avez suffisamment bien compris le domaine du problème, vous pouvez commencer à modéliser une implémentation.

Pour modéliser les mises en œuvre de style procédural C, les schémas suivants pourraient être utiles:

  • Diagramme de classes:
    • Afficher les API du module C
    • des relations du module Afficher C (dépendances principalement pour non OO)
    • Montrer les structures et les énumérations (en utilisant < < stéréotype>>)
  • diagramme Package: Contenu Afficher (modules) des bibliothèques, et les relations de dépendance entre les bibliothèques
  • diagramme d'activité: schématisation algorithmes non triviaux
  • diagramme de séquence/collaboration: Montrer comment les événements/messages entre modules/entités/les entrées/sorties se produisent dans le temps
  • Diagramme d'états: Pour les machines d'état, bien sûr!

expansion sur les diagrammes de classes, vous pouvez « abus » les de la manière suivante pour le style procédural C:

  • Fonctions globales EXTERN -> Méthodes publiques
  • fonctions statiques locales -> Méthodes privées
  • Les variables globales externat -> les membres du public
  • variables statiques locales -> membres privés
  • Structs -> classe avec stereotyp "struct" e
  • #define constantes -> classe avec le stéréotype

d'essai "énumération", et vous trouverez vos propres conventions pour avoir abusé de UML.

6

Le problème avec C est qu'il s'agit davantage d'un langage de programmation procédural. Il est plus difficile d'obtenir la conception à grain fin avec une application C. Si vous travaillez avec C, vous pouvez vous en tenir aux diagrammes de séquences et aux diagrammes de composants, car ils décrivent et donnent un aperçu de ce qui se passe plutôt qu'un graphique de dépendances et d'interactions.

+0

C n'est pas un langage de programmation "fonctionnel". Je crois que le terme recherché est «procédural». – coobird

+0

Vous avez raison à ce sujet, je pensais ... fonctions mais pas classes = fonctionnel ... mais par la définition la plus stricte, il est fonctionnel ... cela fonctionne: P – monksy

+1

Je suis d'accord que UML n'est pas bien adapté pour C , étant donné que UML a été dérivé de l'école de pensée orientée objet. Mais vous pouvez * bidouiller ensemble une construction Object-like minimale, basée sur les relations et diluée dans C en utilisant des structures contenant des pointeurs de fonction ... bien que l'héritage et le polymorphisme ne soient pas aussi simples. De toute façon, UML n'est pas si utile dans C –

5

Une conception orientée objet est indépendante du langage et vous pouvez bien sûr concevoir votre système en utilisant UML. Certains outils comme Rhapsody permettent également la génération de code et le déclenchement indirect, nous utilisons pour certains projets spéciaux où C++ n'est pas une option. Si vous voulez écrire votre code à la main, utilisez une convention de nommage comme Subsystem_Module_Class_Method pour nommer vos fonctions de manière orientée objet et utilisez un fichier .c par classe. L'utilisation de C n'est pas un obstacle à la conception propre.

+0

Ce n'est pas un obstacle pour le design propre ... mais vous n'allez pas avoir le niveau d'abstraction, et la conception des composants comme vous le feriez avec un langage OOP. C'est la raison pour laquelle les POO ont été créées. – monksy

+0

OOP peut également être fait en C: GTK est un bon exemple pour cela. Cela fait un gros usage des macros, ok, mais syntaxiquement c'est assez propre. Je suis d'accord que d'autres langues l'intègrent mieux dans leur syntaxe et le code semble peut-être un peu plus propre mais avec C vous pouvez atteindre les mêmes objectifs. L'abstraction est dans le design, le code le reflète plus ou moins bien. – jdehaan

Questions connexes