ロゴ
ホーム 提案事例 Obxetoについて 問い合わせ

UMLモデルからコード生成

共通モデルからJava言語とObjective-C言語の両方のソースコード生成させることは,同じアプリケーションをふたつの OSで開発する場合に開発工数を大幅に削減させる可能性があります。

図1:Carモデル
図1:コード生成

1.共通モデル

車のUMLモデルを定義し,独自に開発したモデルコンパイラでコード生成しました。下記の「図1:のCarモデル」が定義 されたUMLモデルです。今回は,Carクラスのみをコード生成し,生成されたコードを「2. 生成されたJavaコード」 と「3. 生成されたObjective-Cコード」に示しています。

図1:Carモデル
図1:Carモデル

2. 生成されたJavaコード

    public class Car {
        private   String maker = "";
        private   ArrayList  tires = null;
    
        public void changeTire() {  // ID=[OP141014]
        (タイヤ交換のロジックの記述)
        }  // ID=[OP141014]
        public final void setMaker(final String value) {
            this.maker = value;
        }
        public final String getMaker() {
            return this.maker;
        }
        public final void setTires(final ArrayList  value) {
            this.tires = value;
        }
        public final ArrayList  getTires() {
            return this.tires;
        }>
    }
      

3. 生成されたObjective-Cコード

    @interface Car :NSObject
{ @public; NSString * maker; NSArray * tires; } - (void)init; - (void) changeTire; - (void)maker:(NSString *)value; - (NSString *) getMaker; - (void)tires:(NSArray *)value; - (NSArray *) getTires; @end @implementation Car - (void)init { maker=@""; tires=[NSArray alloc]; } - (void) changeTire { // ID=[OP141014] (タイヤ交換のロジックの記述) } // ID=[OP141014] - (void)maker:(NSString *)value { maker = value; } - (NSString *) getMaker { return maker; } - (void)tires:(NSArray *)value { tires = value; } - (NSArray *) getTires { return tires; } @end

3.今後の予定

現在、Javaコードでロジックを記述して、そのコードからObjective-Cへの変換を行う処理を開発しています。