UML es el más comúnmente utilizado para modelar el sistema mediante el uso de C++. En mis proyectos C es el lenguaje de implementación. Estoy buscando recursos sobre estrategias UML que sean aplicables para C. Quiero usar UML durante el diseño y representar los diferentes aspectos del sistema.UML para el lenguaje de programación C
Respuesta
No conozco ningún recurso existente que discuta el uso de UML específicamente para C. Como otros han mencionado, UML es independiente del lenguaje.
Tenga en cuenta que con UML, puede tener un modelo para el dominio del problema y otro para la implementación. Intente no modelar el dominio del problema en términos de C, sino más bien como OO de alto nivel. Una vez que comprenda el dominio del problema adecuadamente, puede comenzar a modelar una implementación.
Para modelar las implementaciones de tipo procedimental C, los siguientes diagramas pueden ser útiles:
- Diagrama de clases:
- Mostrar C API módulo
- show c relaciones de módulos (dependencias sobre todo para no OO)
- Mostrar estructuras y enumeraciones (usando < < estereotipo>>)
- paquete diagrama: Mostrar el contenido (módulos) de las bibliotecas, y las relaciones de dependencia entre las bibliotecas diagrama de
- Actividad: Diagramas de Flujo algoritmos no triviales
- Secuencia diagrama/colaboración: mostrar cómo eventos/mensajes entre los módulos/entidades/las entradas/salidas ocurren en el tiempo
- Diagrama de estado: ¡Para máquinas de estado, por supuesto!
Ampliando los diagramas de clases, puede "abuso" en el siguiente paso a al estilo de procedimiento C:
- funciones globales extern -> métodos públicos
- funciones estáticas locales -> métodos privados
- las variables extern Global -> miembros públicos
- variables estáticas locales -> miembros privados
- Structs -> clase con stereotyp "estructura" e
#define
constantes -> clase con estereotipo "enumeración"
Experimento, y encontrará sus propias convenciones para abusar de UML.
El problema con C es que se trata más de un lenguaje de programación de procedimientos. Es más difícil obtener el diseño de grano fino con una aplicación C. Si está trabajando con C, puede seguir los diagramas de secuencia y los diagramas de componentes, ya que describen y resumen de lo que está sucediendo, en lugar de un gráfico de dependencias e interacción.
C no es un lenguaje de programación "funcional". Creo que el término que se buscó es "procesal". – coobird
Tiene razón al respecto, estaba pensando ... funciones pero no clases = funcional ... pero por la definición más estricta es funcional ... funciona: P – monksy
Estoy de acuerdo en que UML no es muy adecuado para C , dado que UML se derivó de la escuela de pensamiento orientada a objetos. Pero usted * puede * hackear juntos una construcción mínima similar a un Objeto, en forma de relación, en C que utiliza estructuras que contienen punteros a funciones ... aunque la herencia y el polimorfismo no son tan simples. De cualquier manera, UML no es tan útil en C –
Un diseño orientado a objetos es independiente del idioma y, por supuesto, puede diseñar su sistema utilizando UML. Algunas herramientas como Rhapsody también permitirán la generación de código y el disparo circular, que usamos para algunos proyectos especiales donde C++ no es una opción. Si desea escribir su código a mano, utilice una convención de nombres como Subsystem_Module_Class_Method para nombrar sus funciones de forma orientada a objetos y utilice un archivo .c por clase. Usar C no es un obstáculo para tener un diseño limpio.
No es un obstáculo para el diseño limpio ... pero no va a tener el nivel de abstracción y diseño de componentes como lo haría con un lenguaje OOP. Esa es la razón por la cual se crearon OOP. – monksy
OOP también se puede hacer en C: GTK es un buen ejemplo para ello. Hace un uso intensivo de macros, está bien, pero sintácticamente está bastante limpio. Estoy de acuerdo en que otros idiomas lo integran mejor en su sintaxis y el código parece ser un poco más limpio, pero con C puede alcanzar los mismos objetivos. La abstracción está en el diseño, el código simplemente lo refleja más o menos bien. – jdehaan
- 1. ¿Hay alguna herramienta de diseño para el lenguaje de programación C?
- 2. Lenguaje de programación para crear DLL: C++ o C#
- 3. ¿Qué lenguaje de programación para cloud computing?
- 4. .NET lenguaje para programación simultánea
- 5. Mejor lenguaje de programación para el procesamiento de imágenes médicas
- 6. lenguaje de programación universal para Windows
- 7. Cómo estudiar programación con lenguaje C
- 8. Marca de tiempo en el lenguaje de programación C
- 9. extendiendo el lenguaje de programación c con gcc
- 10. ¿Está el lenguaje de programación C orientado a objetos?
- 11. Siri lenguaje de programación
- 12. Lenguaje de programación y compilador
- 13. Windows: ¿Qué lenguaje de programación?
- 14. El controlador PostgreSQL para el lenguaje de programación Go
- 15. ¿cuál es el mejor lenguaje de programación para el selenio?
- 16. Lenguaje de programación más nuevo que Prolog para programación lógica
- 17. ¿Inicia la inicialización del lenguaje de programación C/C++?
- 18. Aplicaciones para el lenguaje de programación de iglesias
- 19. biblioteca de álgebra lineal para el lenguaje de programación D
- 20. ¿El mejor lenguaje de programación para la enseñanza de econometría?
- 21. EBNF o BNF para el lenguaje de programación LOGO
- 22. ¿Lenguaje de programación para navegar automáticamente en el sitio web?
- 23. ¿Piensas utilizar el lenguaje de programación Factor?
- 24. CMS en el lenguaje de programación funcional
- 25. Lenguaje de programación de gráficos por computadora
- 26. Análisis léxico del lenguaje de programación Python
- 27. GBA ROM Lenguaje de programación
- 28. ¿Lenguaje de reemplazo para C++?
- 29. crear mi propio lenguaje de programación
- 30. ¿Hay personas que utilizan el lenguaje de programación Scheme?
Mi pregunta no es acerca de cómo OOP se puede hacer en C. Para esto tenemos muchos métodos como www.state-machine.com/devzone/cplus_3.0_manual.pdf y www.planetpdf.com/codecuts/pdfs/ooc .pdf. Como steven mencionó, en C podemos querer usar solo un diagrama de secuencia y un diagrama de componentes. Estoy buscando algunos recursos que describen estas estrategias. Tengo una idea similar, el archivo representa un módulo y se puede usar en lugar del objeto en el diagrama de secuencia. Y muestro el flujo entre diferentes módulos usando esta estrategia. – Andy
Gracias por los enlaces, Andy. –