Please note : This help page is not for the latest version of Enterprise Architect. The latest help can be found here.
Object Oriented Programming In C
In Enterprise Architect, you apply a number of conventions for Object-Oriented programming in C.
To configure the system to support Object-Oriented programming using C, you must set the 'Object Oriented Support' option to True on the 'C Specifications' page of the 'Options' dialog.
Stereotypes
Stereotype |
Applies To |
See also |
---|---|---|
enumeration |
Class
Corresponds To: An enumerated type. |
|
struct |
Class
Corresponds To: A 'struct' type. |
|
Attribute |
A keyword struct in variable definition. |
|
typedef |
Class
Corresponds To: A 'typedef' statement, where the parent is the original type name. |
|
union |
Class
Corresponds To: A union type. |
|
Attribute |
A keyword union in variable definition. |
Tagged Values
Tag |
Applies To |
See also |
---|---|---|
anonymous |
Class with stereotype of 'enumeration', 'struct' or 'union' Corresponds To: The name of this Class being defined only by the typedef statement. |
|
bodyLocation |
Operation Corresponds To: The location the method body is generated to; expected values are 'header', 'classDec' or 'classBody'. |
|
define |
Attribute Corresponds To: '#define' statement. |
|
typedef |
Class with stereotype of 'enumeration', 'struct' or 'union' Corresponds To: This Class being defined in a 'typedef' statement. |
Object-Oriented C Code Generation for UML Model
The basic idea of implementing a UML Class in C code is to group the data variable (UML attributes) into a structure type; this structure is defined in a .h file so that it can be shared by other Classes and by the client that referred to it.
An operation in a UML Class is implemented in C code as a function; the name of the function must be a fully qualified name that consists of the operation name, as well as the Class name to indicate that the operation is for that Class.
A delimiter (specified in the 'Namespace Delimiter' option on the 'C Specifications' page) is used to join the Class name and function (operation) name.
The function in C code must also have a reference parameter to the Class object - you can modify the 'Reference as Operation Parameter', 'Reference Parameter Style' and 'Reference Parameter Name' options on the 'C Specifications' page to support this reference parameter.
Limitations of Object-Oriented Programming in C
- No scope mapping for an attribute: an attribute in a UML Class is mapped to a structure variable in C code, and its scope (private, protected or public) is ignored
- Currently an inner Class is ignored: if a UML Class is the inner Class of another UML Class, it is ignored when generating C code
- Initial value is ignored: the initial value of an attribute in a UML Class is ignored in generated C code
Learn more