中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何繪制平臺框架的設計圖:使用UML工具

發布時間:2020-07-09 18:59:24 來源:網絡 閱讀:922 作者:myeit 欄目:移動開發

前言:

在軟件開發上,寫代碼是<實>,畫設計圖是<虛>。程序員務實,設計員務虛。由于<干實事>被推崇,所以大多開發者都務實了,不畫圖做設計了。例如,數十本仿間的中文Android書籍里,除了我的書之外,幾乎沒有UML圖,讓年輕一代逐漸失去圖形思考習慣,這將損害其創造能力。


高老師陪您成長...

  如何繪制平臺框架的設計圖:使用UML工具 


EE                                                  EE

相關文章:

1. 如何設計平臺框架的<未來性>

2. 平臺框架(Framework)開發的雕龍之技6招


如何繪制平臺框架的設計圖:使用UML工具


1. 復習:開始使用UML建模工具(JUDE)

      開啟JUDE建模工具:

如何繪制平臺框架的設計圖:使用UML工具

點選<File/New>,創建新建模項目:

如何繪制平臺框架的設計圖:使用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工具


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

县级市| 陈巴尔虎旗| 翁源县| 马关县| 南开区| 新宁县| 抚顺市| 九龙城区| 黑水县| 玉环县| 改则县| 芜湖市| 凌云县| 洪洞县| 调兵山市| 旺苍县| 富宁县| 获嘉县| 德兴市| 汤阴县| 鲁甸县| 独山县| 东方市| 十堰市| 灵璧县| 松原市| 江都市| 大兴区| 南和县| 团风县| 满洲里市| 吴忠市| 萍乡市| 灵石县| 达孜县| 德安县| 通河县| 友谊县| 绵阳市| 崇礼县| 乐清市|