http://atnd.org/events/21756
今回モデリングするのは以下のWeb記事です。
テーマ: 崖っぷちの欧州、ローマの炎上を許すな
モデリングは記事の問題領域であるドメインモデルを作成を目標にします。
- 問題領域の構造を、エンジニアでない人が理解できるで構築している。
- プログラムに落し込むことができる。
モデリングは各自のお好きなモデリング手法で行います。
一時間に一度程度、作成途中のモデルを見ながら議論します。
初学者の方は、MindmapModelingをお勧めします。
package com.demo;
import android.content.Context;
import android.os.Bundle;
import java.math.*;
import java.util.*;
import org.goldenport.android.*;
import org.goldenport.android.traits.ListViewTrait;
public class CustomerRestViewActivity extends GActivity<DemoController> {
// @LayoutView(R.id.header)
// TextView mHeader;
// @ResourceString(R.string.header)
// String mHeaderLabel;
// @ResourceColor(R.color.header)
// Color mHeaderColor;
// @IntentExtra("message")
// String mMessage;
public CustomerRestViewActivity() {
addTrait(new ListViewTrait());
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
protected int get_Layout_id() {
return R.layout.customer_rest_view;
}
@Override
protected void onStart() {
super.onStart();
// if (mMessage != null) {
// mHeader.setText(mMessage);
// } else {
// mHeader.setText(mHeaderLabel);
// }
set_list_adapter(gcontroller.getCustomerRestFeedAdapter());
}
}
// @LayoutView(R.id.header)
// TextView mHeader;
// @ResourceString(R.string.header)
// String mHeaderLabel;
// @ResourceColor(R.color.header)
// Color mHeaderColor;
// @IntentExtra("message")
// String mMessage;
@Override
protected void onStart() {
super.onStart();
set_list_adapter(gcontroller.getCustomerRestFeedAdapter());
}
「super.onStart()」はお約束。public CustomerRestViewActivity() {
addTrait(new ListViewTrait());
}
#actor,parts,attrs customer,,phone #resource goods,,note #event buy,customer;goodsそのうちの一つ、DEACustomer.javaのソースコードは以下のものです。DEEBuy.javaとDERGoods.javaもだいたい同じコードになります。
package com.demo
import org.simplemodeling.dsl._
import org.simplemodeling.dsl.datatype._
import org.simplemodeling.dsl.domain._
import org.simplemodeling.dsl.domain.values._
case class DEACustomer extends DomainActor {
term = "customer"
caption = "customer"
brief = <t></t>
description = <text></text>
id("customerId", DVICustomerId())
attribute("name", DVNCustomerName())
attribute("summary", XString)
attribute("phone", XString)
}
case class DVICustomerId extends DomainValueId {
term = "customerId"
caption = "customerId"
brief = <t></t>
description = <text></text>
attribute("value", XString)
}
case class DVNCustomerName extends DomainValueName {
term = "customerName"
caption = "customerName"
brief = <t></t>
description = <text></text>
attribute("value", XString)
}
デモでは、このモデルからg4上で動作するJavaソースコードを生成し、Androidアプリケーションとして動作させました。Javaソースコードの生成は、一部デモに間に合わなかったものもあったので、その後、少し改良しました。その改良版では、以下のソースコード(33ファイル、4.7Kステップ)を生成します。