RELATEED CONSULTING
相关咨询
选择下列产品马上在线沟通
服务时间:8:30-17:00
你可能遇到了下面的问题
关闭右侧工具栏

新闻中心

这里有您想知道的互联网营销解决方案
如何绘制平台框架的设计图:使用UML工具-创新互联

前言:

创新互联服务项目包括吴桥网站建设、吴桥网站制作、吴桥网页制作以及吴桥网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,吴桥网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到吴桥省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

在软件开发上,写代码是<实>,画设计图是<虚>。程序员务实,设计员务虚。由于<干实事>被推崇,所以大多开发者都务实了,不画图做设计了。例如,数十本仿间的中文Android书籍里,除了我的书之外,几乎没有UML图,让年轻一代逐渐失去图形思考习惯,这将损害其创造能力。


高老师陪您成长...

  如何绘制平台框架的设计图:使用UML工具


EE                          EE

相關文章:

1. 如何设计平台框架的<未来性>

2. 平台框架(Framework)开发的雕龙之技6招

如何绘制平台框架的设计图:使用UML工具

1. 复习:开始使用UML建模工具(如JUDE)

   开启JUDE建模工具:

如何绘制平台框架的设计图:使用UML工具

点选,创建新建模项目:

如何绘制平台框架的设计图:使用UML工具

建立新的类图(Class Diagram):

如何绘制平台框架的设计图:使用UML工具

类图绘图区:

如何绘制平台框架的设计图:使用UML工具

拉出一个类的图像,并取名为 ”汽车”:

如何绘制平台框架的设计图:使用UML工具

2.  开始设计框架

框架设计练习口诀:目前先”不”做轮胎

     老子说:”无” 之以为用(有之以为利)

     孔子说:知之为知之,”不”知为不知

最伟大的雕刻师罗丹( Musée Rodin)说:把”不”必要的部分去掉。

如何绘制平台框架的设计图:使用UML工具

~~ 先不做轮胎 ~~

如何绘制平台框架的设计图:使用UML工具

相当于:

如何绘制平台框架的设计图:使用UML工具

[歡迎光臨 高煥堂 網頁: http://www.cnblogs.com/myEIT/ ]

3.  应用框架设计范例

如何绘制平台框架的设计图:使用UML工具

  这个Calculator类的范例代码:

// 引擎部份

class Calculator {

   public int run() {

  int n;

  n = getN();

  int sum = 0;

  for(int i=0; i<=n; i++) {

         sum += i;

  }

      return sum;

 }

 private int getN() {  return 10;   }

}

//------------------------------------------

public class JMain {

public static void main(String[] args) {

Calculator cal = new Calculator();

System.out.println(cal.run());

}

}

~~ 先不做轮胎(先不加糖) ~~

~~ 先做轮毂(先准备砂糖纸包) ~~

如何绘制平台框架的设计图:使用UML工具

范例代码:

// JMain.java

import Engine.Calculator;

public class JMain {

    public static void main(String[] args) {

Calculator cal = new Calculator();

System.out.println(cal.run());

}

}

// 引擎部份

package Engine;

import Framework.ICount;

public class Calculator {

     ICount ref;

public int run() {

int n;

  n = getN();

        int sum = 0;

        for(int i=0; i<=n; i++) {

    sum += i;

  }

  return sum;

 }

private int getN() {

     return ref.getCount();

  }

}

// 接口部分

package Framework;

public interface ICount {

       int getCount();

}

Java的Interface接口,就相当于纯粹抽象基类(Pure abstract class)。所以,也能将上述ICount接口定义为基类,如下:

abstract class Count {

  public abstract int getCount();

}

也可以定义为一般抽象基类,如下:

abstract class Count {

   public int getCount() {

       int cc = onCount();

       return cc;

}

    protected int onCount();

}

如何绘制平台框架的设计图:使用UML工具

  • 以上是做『分』的动作,将轮胎从汽车上”分” 离开来,或是将糖从三合一咖啡里分离开来。

  • 客人来了,主人询问客人:需要冰糖或砂糖?

  • 依据客人需求,主人开始做『合』的动作,将轮胎组”合”装配到汽车上,或是将糖加入二合一咖啡,调”合”成可口的咖啡。

4. 开始撰写AP子类别

~~ 配上实作类(Implementation Class):

如何绘制平台框架的设计图:使用UML工具

~~ 配上子类(Sub Class):

如何绘制平台框架的设计图:使用UML工具

~~创建子类的对象~~

如何绘制平台框架的设计图:使用UML工具

范例代码:

// JMain.java

import Engine.Calculator;

import Framework.Count;

public class JMain {

   public static void main(String[] args) {

Calculator cal = new Calculator();

Count co = new myCount();

cal.setRef(co);

System.out.println(cal.run());

}

}

// 引擎部份

package Engine;

import Framework.Count;

public class Calculator {

private Count ref;

public int run() {

  int n;

  n = getN();

  int sum = 0;

  for(int i=0; i<=n; i++) {   sum += i;   }

  return sum;

 }

 private int getN() {   return ref.getCount();   }

 public void setRef(Count co){  ref = co;  }

}

//框架部份

package Framework;

public abstract class Count {

   public int getCount() {

   int cc = onCount();

   return cc;

}

protected abstract int onCount();

}

// 子類部份

import Framework.Count;

public class myCount extends Count{

protected int onCount(){  return 10;  }

}

*** 這有一個矛盾的地方:

  • 代碼Count co = new myCount(); 意味著myCount類必須先於JMain類。

  • 但是JMain又屬於框架層,顯然應該先於myCount類。

*** 如果使用Android的myActivity子類來替代JMain類,就解決上述的困境了。

如何绘制平台框架的设计图:使用UML工具

*** 於是共含有兩層框架:Android大框架和DSF小框架,如下圖:

如何绘制平台框架的设计图:使用UML工具

總共含有4大模塊:

  • Android大框架

  • DSF小框架

  • DSE特殊領域引擎

  • AP

范例代码:

如何绘制平台框架的设计图:使用UML工具

// 引擎部份

package DS_Engine;

import DS_Framework.Count;

public class Calculator {

   private Count ref;

public int run() {

  int n;

  n = getN();

  int sum = 0;

  for(int i=0; i<=n; i++) {   sum += i;   }

  return sum;

 }

 private int getN() {

   return ref.getCount();

  }

 public void setRef(Count co){

  ref = co;

  }

}

// DSF小框架部份

package DS_Framework;

public abstract class Count {

public int getCount() {

   int cc = onCount();

   return cc;

}

    protected abstract int onCount();

}

// AP部分

// myCount.java

package com.misoo.ppxx;

import DS_Framework.Count;

public class myCount extends Count{

   protected int onCount(){  return 10;  }

}

// myActivity.java

package com.misoo.ppxx;

import DS_Engine.Calculator;

import DS_Framework.Count;

import android.app.Activity;

import android.os.Bundle;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.LinearLayout;

public class myActivity extends Activity implements OnClickListener {

     private Button btn, btn2;

  @Override public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);

    LinearLayout layout = new LinearLayout(this);

    layout.setOrientation(LinearLayout.VERTICAL);

    LinearLayout.LayoutParams param =

        new LinearLayout.LayoutParams(100, 55);

    param.leftMargin = 1;  param.topMargin = 3;

    btn = new Button(this);

    btn.setId(101);  btn.setText("Run");

    btn.setOnClickListener(this);  btn.setBackgroundResource(R.drawable.x_jude);

    layout.addView(btn, param);

    btn2 = new Button(this);  btn2.setId(102);

    btn2.setText("Exit");    btn2.setOnClickListener(this);

    btn2.setBackgroundResource(R.drawable.x_sky);

    layout.addView(btn2, param);

    setContentView(layout);

  }

  public void onClick(View v) {

     switch(v.getId()) {

       case 101:

        Calculator cal = new Calculator();

        Count co = new myCount();

        cal.setRef(co);

        int result = cal.run();

        setTitle(String.valueOf(result));

        break;

       case 102:  finish();  break;

   }}

 }

EE                                  EE

如何绘制平台框架的设计图:使用UML工具

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网页名称:如何绘制平台框架的设计图:使用UML工具-创新互联
标题链接:http://lswzjz.com/article/ceiied.html