亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

利用UML序列圖設計Java應用程序詳解

2019-11-18 12:20:06
字體:
來源:轉載
供稿:網友

  java應用程序由許多類所構成,是Java實現面向對象應用程序的核心。類圖主要描述Java應用程序中各種類之間的相互靜態關系,如類的繼續、抽象、接口以及各種關聯。要利用UML設計Java應用程序,僅僅使用類圖來描述這些靜態關系,利用可視化工具,要實現Java應用程序的代碼自動生成,是遠遠不夠的。我們還必須描述各種類相互之間的協作關系、動態關系,如時間序列上的交互行為。其中UML序列圖就是用來描述類與類之間的方法調用過程(或消息發送)是如何實現的。
  本文通過一個具體的應用程序的設計與實現過程,具體說明了利用UML序列圖設計Java應用程序,使得開發過程標準化、可視化,代碼編程簡單化。
  我們要設計的應用程序FlooringClient是用來計算在一定面積的表面上貼上規格化的地板磚或墻紙所需要的地板磚或墻紙材料的長度和價錢。該程序涉及到三個類:FlooringClient、Surface以及Floor。其各自的類圖以及程序代碼分別如下
  
 利用UML序列圖設計Java應用程序詳解(圖一)

  /*
  
  * FlooringClient.java
  
  *
  
  */
  
  class FlooringClient {
  
  public static void main(String[] args){
  
  Surface theSurface=new Surface("Margaret's Floor",5,6);
  
  Flooring theFlooring=new Flooring("Fitted carpet",24.50,5);
  
  double noOfMeters=theFlooring.getNoOfMeters(theSurface);
  
  double PRice=theFlooring.getTotalPrice(theSurface);
  
  System.out.println("You need "+noOfMeters+" meters,price$ "+price);
  
  }
  
  }
  
  
 利用UML序列圖設計Java應用程序詳解(圖二)

  /*
  * Surface.java
  *
  */
  class Surface {
  
  private String name; // for identification purposes
  
  private double length;
  
  private double width;
  
  public Surface(String initName, double initLength, double initWidth) {
  
  name = initName;
  
  length = initLength;
  
  width = initWidth;
  
  }
  
  public String getName() {
  
  return name;
  
  }
  
  public double getLength() {
  
  return length;
  
  }
  
  public double getWidth() {
  
  return width;
  
  }
  
  public double getArea() {
  
  return width * length;
  
  }
  
  public double getCircumference() {
  
  return 2 * (length + width);
  
  }
  
  }
  
  
 利用UML序列圖設計Java應用程序詳解(圖三)

  /*
  
  * Flooring.java
  
  *
  
  */
  
  class Flooring {
  
  private static final double limit = 0.02; // limit for one more width
  
  private String name; // for identification purposes
  
  private double price; // price per meter
  
  private double widthOfFlooring; // meter
  
  public Flooring(String initName, double initPrice, double initWidth) {
  
  name = initName;
  
  price = initPrice;
  
  widthOfFlooring = initWidth;
  
  }
  
  public String getName() {
  
  return name;
  
  }
  
  public double getPricePerM() {
  
  return price;
  
  }
  
  public double getWidth() {
  
  return widthOfFlooring;
  
  }
  
  /*
  
  * We are going to calculate the amount which is needed to cover one surface.
  
  * The flooring is always placed crosswise relative to the length of the surface.
  
  * If you want to find the amount the other way, you have to change
  
  * width and length in the surface argument.
  
  */
  
  public double getNoOfMeters(Surface aSurface) {
  
  double lengthSurface = aSurface.getLength();
  
  double widthSurface = aSurface.getWidth();
  
  int noOfWidths = (int)(lengthSurface / widthOfFlooring);
  
  double rest = lengthSurface % widthOfFlooring;
  
  if (rest >= limit) noOfWidths++;
  
  return noOfWidths * widthSurface;
  
  }
  
  public double getTotalPrice(Surface aSurface) {
  
  return getNoOfMeters(aSurface) * price;
  
  }
  
  }
  
 利用UML序列圖設計Java應用程序詳解(圖四)

  以上三個類之間的類圖關系可以表示為如下圖:
   利用UML序列圖設計Java應用程序詳解(圖一)
  以下我們來具體分析類FlooringClient是如何發送消息給其它類,而實現方法的調用過程。并如何用UML序列圖來描述這一序列過程。
  一、getNoOfMeters()方法
  讓我們來看看是如何發送消息getNoOfMeters()的。對象Flooring要計算出需要多少米的材料才能貼滿一定面積的表面,就需要對象Flooring與對象Surface之間相互作用。
  FlooringClient通過發送消息給getNoOfMeters()對象Flooring,在getNoOfMeters()方法的代碼中,Flooring又發送消息給Surface而得到length和width。
  以上過程用UML序列圖描述如下圖:
  
 利用UML序列圖設計Java應用程序詳解(圖五)

  UML序列圖描述了消息是如何在給對象間發送的。下面我們來具體解釋以上UML序列圖的含義,通過上述序列圖,我們得知有以下8個過程:
  1.   FlooringClient新建一個對象theSurface
  2.   FlooringClient新建一個對象theFlooring
  3.   FlooringClient發送一個消息給對象theFlooring,并以theSurface為變量
  4.   theFlooring發送一個消息getLength()給theSurface
  5.   theSurface發送一個回應給theFlooring
  6.   theFlooring發送一個消息getWidth ()給theSurface
  7.   theSurface發送一個回應給theFlooring
  8.   theFlooring發送一個回應給FlooringClient
  
  二、getTotalPrice()方法
  在FlooringClient程序中,我們有如下語句:
  double price=theFlooring.getTotalPrice(theSurface);
  
  getTotalPrice()方法為:
  
  public double getTotalPrice(Surface aSurface) {
  
  return getNoOfMeters(aSurface) * price;
  
  }
  該過程用UML序列圖描述如下圖
  
 利用UML序列圖設計Java應用程序詳解(圖六)

  三、同一個類的兩個對象之間的交互
  一個對象可以與同一個類的另一個對象交互從而完成程序所規定的任務。假如我們在Surface類中增加一個比較面積的方法。程序代碼為:
  public int compareAreas(Surface theOtherSurface){
  
  final double precision=0.00001;
  
  double area1=getArea();
  
  double area2=theOtherSurface.getArea();
  
  if (Math.abs(area2-area1)  
  else if(area1>area2) return –1;
  
  else return 1;
  
  }
  在主程序FlooringClient中,我們可以實現如下代碼
  Surface surface1=new Surface("A",5,4);
  
  Surface surface2=new Surface("B",4,4);
  
  Int result=surface1.compareAreas(surface2);
  
  If (result<0) System.out.println(surface1.getName()+"is the smaller one");
  
  else If (result>0) System.out.println(surface2.getName()+"is the smaller one");
  
  else System.out.println("The surface has the same area");
  從以上程序中可以看出,surface1與surface2發生交互從而得到結果result。首先它計算出自己的面積,然后計算出surface2的面積,最后再比較它們兩個之間的面積的大小。
  以上過程用UML序列圖可以描述為下圖:
  
利用UML序列圖設計Java應用程序詳解(圖七)

  以上具體說明了如何利用UML序列圖來描述各類之間的對象或同一類不同之間的對象相互之間的交互序列過程。是Java應用程序面向對象設計過程中的一個重要方面。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩中文字幕在线观看| 久久人人爽人人爽人人片亚洲| 欧美中文字幕在线播放| 日韩经典一区二区三区| 一本色道久久88综合亚洲精品ⅰ| 自拍偷拍亚洲一区| 欧美激情一区二区三区久久久| 欧美电影在线观看| 成人黄色在线免费| 狠狠久久亚洲欧美专区| 日本一区二区在线免费播放| 中文字幕精品www乱入免费视频| 7m精品福利视频导航| 欧美激情欧美激情| 国产精品成人一区二区三区吃奶| 久久精品视频播放| 亚洲第一精品夜夜躁人人爽| 国产精品久久久久999| 一区二区三区在线播放欧美| 国产中文字幕日韩| 国模精品视频一区二区三区| 2020久久国产精品| 浅井舞香一区二区| 亚洲欧美资源在线| 在线激情影院一区| 久久精品久久久久久国产 免费| 久久久久久久电影一区| 91高清视频免费| 久久免费精品日本久久中文字幕| 欧美大片在线看| 日韩精品丝袜在线| 亚洲视频999| 欧美在线视频网站| 日韩视频免费观看| 久久精彩免费视频| 91精品国产乱码久久久久久蜜臀| 欧美日韩成人黄色| 亚洲精品白浆高清久久久久久| 国产精品视频xxxx| 国产亚洲欧美视频| 亚洲免费高清视频| 国产精品久久久久久亚洲影视| 欧日韩在线观看| 欧美日韩国产一区二区| 青青草原成人在线视频| 日韩中文字幕网址| 久久噜噜噜精品国产亚洲综合| 97成人超碰免| 激情成人中文字幕| 国产精品爱啪在线线免费观看| 久久午夜a级毛片| 欧美电影免费在线观看| 久久久久久国产三级电影| 国产精品视频yy9099| 亚洲欧美国产另类| 亚洲高清免费观看高清完整版| 亚洲综合在线播放| 亚洲欧美制服中文字幕| 国产精品久久久久一区二区| 久久久久女教师免费一区| 激情成人在线视频| 日本高清不卡的在线| 久久久久久成人精品| 中文日韩电影网站| 成人激情视频在线| 亚洲精品网址在线观看| 色哟哟网站入口亚洲精品| 亚洲国产成人精品女人久久久| 国产在线观看一区二区三区| 亚洲精品xxxx| 亚洲自拍偷拍网址| 最近2019中文字幕在线高清| 亚洲久久久久久久久久| 国产精品久久综合av爱欲tv| 欧美午夜精品久久久久久久| 亚洲高清在线观看| 亚洲天堂第一页| 亚洲综合大片69999| 2019亚洲男人天堂| 亚洲精品91美女久久久久久久| 日韩有码在线播放| 国产一区二区黄| 成人黄色中文字幕| 亚洲成人久久电影| 最新69国产成人精品视频免费| 亚洲欧洲日产国码av系列天堂| 亚洲精品第一国产综合精品| 亚洲欧洲国产伦综合| xxx一区二区| 久久免费视频网站| 亚洲精品不卡在线| 伊人青青综合网站| 最近2019中文字幕一页二页| 亚洲影院在线看| 久久视频在线免费观看| 久久免费高清视频| 97香蕉超级碰碰久久免费的优势| 久久久久国产精品免费| 欧美精品久久一区二区| 国产精品午夜一区二区欲梦| 亚洲va欧美va国产综合久久| 亚洲午夜未满十八勿入免费观看全集| 国产在线精品成人一区二区三区| 国产脚交av在线一区二区| 国产精品成久久久久三级| 最近2019年好看中文字幕视频| 91九色国产视频| 成人网欧美在线视频| 欧美xxxx做受欧美| 欧美性色xo影院| 国产成人精品网站| 亚洲深夜福利网站| 按摩亚洲人久久| 国产不卡在线观看| 亚洲日本中文字幕免费在线不卡| 国产精品久久久久av| 欧美亚洲国产日韩2020| 91精品视频大全| 姬川优奈aav一区二区| 亚洲香蕉成视频在线观看| 欧美在线观看网站| 亚洲乱亚洲乱妇无码| 亚洲欧洲高清在线| 这里只有视频精品| 一本一道久久a久久精品逆3p| 欧美刺激性大交免费视频| 欧美大片网站在线观看| 欧美成人黑人xx视频免费观看| 97在线观看免费| 日本成人激情视频| 欧美日韩免费看| 亚洲二区在线播放视频| 国产va免费精品高清在线| 亚洲成人av资源网| 国产精品久久久久不卡| 久久久久久亚洲精品不卡| 91久久久亚洲精品| 日韩av综合网站| 欧美大尺度在线观看| 色视频www在线播放国产成人| 亚洲精品色婷婷福利天堂| 国产精品成人一区二区| 欧美日韩国产精品一区二区三区四区| 国产精品久久久久久久久久久新郎| 国产在线拍揄自揄视频不卡99| 51视频国产精品一区二区| 久久国产天堂福利天堂| 欧美性猛交xxxx乱大交极品| 国外视频精品毛片| 亚洲国产日韩精品在线| 欧美视频一区二区三区…| 日韩免费观看视频| 中文字幕免费精品一区高清| 911国产网站尤物在线观看| 久久综合久久88| 69国产精品成人在线播放| 亚洲精品国产精品国产自| 88国产精品欧美一区二区三区| 91精品国产综合久久久久久蜜臀| 亚洲欧美日韩一区二区三区在线| 日韩精品免费在线观看| 欧美午夜电影在线| 久久久久久香蕉网| 在线亚洲午夜片av大片|