Hình 4-19 Tiến trình dịch chương trình
Trong thư mục NewTempBoadcast chứa các tệp mã nguồn và header của TempBoadcast đã được thay đổi. Nhưng tệp này có mã C++ mà ta có thể xem, sửa hay thay đổi các giá trị ngay trên mô hình bằng cách nhấn đúp chuột vào từng lớp để sửa
Hệ thống được
tái kỹ nghệ Hệ thống được tái kỹ nghệ Hệ thống tái kỹ nghệ (HEX)
Xác định sự khác nhau của mã nguồn Thiết kế bộ chuyển đổi các lệnh Dịch mã tự động (Keil) Dịch mã thủ công
mã nguồn. Sau đó sử dụng Keil để dịch dự án này sang tệp HEX rồi thực hiện qua trình nạp lại (Ép flash rom) cho bộ nhớ của CC1010 của từng nút mạng một.
Mô hình UML ánh xạ thành phần tới mã C++
Bảng liệt kê các thành phần cơ bản của UML được chuyển sang các thành phần mã nguồn cơ bản.
UML C++
Package Folder
Class Class (tệp .h and .cpp) Generalization relationship Class inheritance Association relationship Class attribute
Property Class attribute Enumeration Enum (tệp .h)
Operation Operation
Parameter Operation argument
"Usage" relationship Inclusion
Template parameter Parameter for parameterized class "Binding" relationship Instantiated class (.h tệp)
Bảng 4-1 Các thành phần cơ bản của UML chuyển sang mã nguồn
Tùy biến trong việc sinh mã
Chúng ta có thể sinh mã tùy biến bằng dùng các dạng stereotypes của C++ Transformation prototype. Ví dụ, để thao tác UML như là chuyến tuyến tính:
Apply the C++ Transformation prototype to the model. Apply the cpp_operation stereotype to the operation.
In Properties view, on the Advanced page, set isInline to True. Run the UML to C++ transformation.
Hồ sơ của C++ trong mã chuyển từ mô hình
Sự chuyển đổi này dùng "C++ Transformation" không thực sự có ở UML nhưng bao gồm các ký hiện của C++ gọi là stereotypes:
Stereotype Applicable to Attributes Type cpp_type Parameter, Property isMutable, qualifier (String), InitializerKind (Enumeration)
Boolean with default value of false
cpp_generalization Generalization GeneralizationKind Enumeration
cpp_struct Class Boolean with default value of false
cpp_union Class isAnonymousUnion Boolean with default value of false
cpp_typedef Class ImplementationType String
cpp_dependency Dependency isInclusionInHeader Boolean with default value of false
cpp_friend Dependency Boolean with default value of false
cpp_namespace Package, Model
NamespaceName String
cpp_operation Operation isInline, isVirtual, isFriend
Boolean with default value of false
cpp_constructor Operation isExplicit, isInline Boolean with default value of false
cpp_copy_construc tor
Operation isExplicit, isInline Boolean with default value of false
cpp_destructor Operation isVirtual, isInline Boolean with default value of false
cpp_assignment Operation isInline Boolean with default value of false
Bảng 4-2 Các stereotypes
Chúng ta không nên áp đặt quá nhiều C++ transformation stereotype vào đối tượng UML mà nên phân thành các nhóm:
− UML class (cpp_struct, cpp_union, cpp_typedef): sẽ chuyển thành đối tượng, như vậy, khi sinh mã cấu trúc sang C++ nó sẽ không sinh các toán từ chuẩn. Do vậy, phải sửa mã nguồn trên dự án chính xác, chi tiết rồi mới dịch.
− UML dependency (cpp_dependency, cpp_friend): Nếu áp dụng các mẫu stereotypes thì tiến trình chuyển quan hệ độc lập hàm bạn và mẫu stereotypes.
− UML operation (cpp_operation, cpp_constructor, cpp_copy_constructor,
cpp_destructor, cpp_assignment): tạo ra các đối tượng áp dụng cho các phép toán. Thứ tự ưu tiên stereotypes từ cao xuống thấp: cpp_constructor, cpp_copy_constructor, cpp_destructor, cpp_assignment, cpp_operation.