真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

java代碼繪制時序圖,java時序圖工具

什么是時序圖

什么是時序圖

成都創(chuàng)新互聯(lián)公司專注于網(wǎng)站建設(shè)|網(wǎng)站建設(shè)維護(hù)|優(yōu)化|托管以及網(wǎng)絡(luò)推廣,積累了大量的網(wǎng)站設(shè)計與制作經(jīng)驗,為許多企業(yè)提供了網(wǎng)站定制設(shè)計服務(wù),案例作品覆蓋人造霧等行業(yè)。能根據(jù)企業(yè)所處的行業(yè)與銷售的產(chǎn)品,結(jié)合品牌形象的塑造,量身開發(fā)品質(zhì)網(wǎng)站。

時序圖(Sequence Diagram),又名序列圖、循序圖,是一種UML交互圖。它通過描述對象之間發(fā)送消息的時間順序顯示多個對象之間的動態(tài)協(xié)作。它可以表示用例的行為順序,當(dāng)執(zhí)行一個用例行為時,其中的每條消息對應(yīng)一個類操作或狀態(tài)機中引起轉(zhuǎn)換的觸發(fā)事件。

時序圖描述對象是如何交互的,并且將重點放在消息序列上。也就是說,描述消息是如何在對象間發(fā)送和接收的。時序圖有兩個坐標(biāo)軸:縱坐標(biāo)軸顯示時間,橫坐標(biāo)軸顯示對象。每一個對象的表示方法是:矩形框中寫有對象和 / 或類名,且名字下面有下劃線;同時有一條縱向的虛線表示對象在序列中的執(zhí)行情況 ( 即發(fā)送和接收的消息對象的活動 ) , 這條虛線稱為對象的生命線。對象間的通信用對象的生命線之間的水平的消息線來表示,消息線的箭頭說明消息的類型,如同步,異步或簡單 。 瀏覽時序圖的方法是,從上到下查看對象間交換的消息,分析那些隨著時間的流逝而發(fā)生的消息交換。

時序圖中的消息可以是信號、操作調(diào)用或類似于 C++ 中的 RPC ( Remote Procedure Call,遠(yuǎn)程過程調(diào)用)或 Java 中的 RMI ( Remote Method Invocation , 遠(yuǎn)程方法調(diào)用)。當(dāng)對象接收到一個消息時,該對象中的一項活動就會啟動,我們把這一過程稱做激活 ( Activation )。 激活會顯示控制焦點,表明對象在某一個時間點開始執(zhí)行。一個被激活的對象或者是執(zhí)行它自身的代碼,或者是等待另一個對象的返回(該被激活的對象已經(jīng)向另一個對象發(fā)送了消息)。在圖形上,激活被繪制為對象生命線上的一個瘦高矩形。

消息可以用消息名及參數(shù)來標(biāo)識。消息還可帶有條件表達(dá)式,表示分支或決定是否發(fā)送消息。如果用于表示分支,則每個分支是相互排斥的,即在某一時刻僅可發(fā)送分支中的一個消息。消息也可以有順序號,但是在時序圖中,消息的順序號很少使用,因為時序圖已經(jīng)將消息的順序顯式地表示出來了。

一個對象可以通過發(fā)送消息來創(chuàng)建另一個對象,當(dāng)一個對象被刪除或自我刪除時,該對象用 "X"標(biāo)識。

創(chuàng)建步驟

1、確定交互過程的上下文;

2、識別參與過程的交互對象;

3、為每個對象設(shè)置生命線;

4、從初始消息開始,依次畫出隨后消息;

5、考慮消息的嵌套,標(biāo)示消息發(fā)生時的時間點,則采用FOC(focus of control);

6、說明時間約束的地點。

如何建立java時序圖

我以前用EA畫過時序圖,網(wǎng)上下載一個EA軟件安裝后就可以用了···圖如下所示,

可以在里面寫方法及其寫程序的時候的一些大概的思路表現(xiàn)在上面···

如何在JSP網(wǎng)頁中生成動態(tài)圖表

JSP頁面中嵌入動態(tài)圖表的兩種方法 :在JSP頁面中插入Applet小程序 ;通過JavaBean動態(tài)生成圖像。

JSP是一種廣泛應(yīng)用的網(wǎng)頁設(shè)計技術(shù) ,它是一種HTML和Java腳本混合的編程技術(shù) ,它結(jié)合了HTML的靜態(tài)特性和Java語言的動態(tài)能力 ,因此用它進(jìn)行動態(tài)網(wǎng)頁設(shè)計非常方便。在進(jìn)行圖像處理時 ,一般處理靜態(tài)圖片非常容易 ,但是 ,在實際應(yīng)用中常常需要動態(tài)地在網(wǎng)頁中生成二維的圖形.

基于JFreeChart開發(fā)的一個時序圖的繪制。代碼如下:

實例中createDataset()方法用于創(chuàng)建數(shù)據(jù)集合對象。時序圖的數(shù)據(jù)集合與其他數(shù)據(jù)集合不同,它需要添加一個時間段內(nèi)的所有數(shù)據(jù),通常采用TimeSeries類進(jìn)行添加。該實例中通過Math類的random()方法進(jìn)行隨機生成。

import java.awt.*;

import java.awt.event.ActionEvent;

import

java.awt.event.ActionListener;

import java.io.BufferedInputStream;

import

java.io.DataInputStream;

import java.io.FileOutputStream;

import

java.io.IOException;

import java.net.URL;

import

java.net.URLConnection;

import java.text.DateFormat;

import

java.text.ParseException;

import java.text.SimpleDateFormat;

import

java.util.Calendar;

import java.util.Date;

import java.util.Random;

import javax.swing.JApplet;

import javax.swing.Timer;

import org.jfree.chart.*;

import

org.jfree.chart.annotations.CategoryTextAnnotation;

import

org.jfree.chart.axis.CategoryAnchor;

import

org.jfree.chart.axis.CategoryAxis;

import

org.jfree.chart.axis.CategoryLabelPositions;

import

org.jfree.chart.axis.DateAxis;

import

org.jfree.chart.axis.DateTickUnit;

import

org.jfree.chart.axis.DateTickUnitType;

import

org.jfree.chart.axis.ValueAxis;

import

org.jfree.chart.labels.StandardCategoryItemLabelGenerator;

import

org.jfree.chart.plot.CategoryPlot;

import

org.jfree.chart.plot.PlotOrientation;

import

org.jfree.chart.plot.XYPlot;

import

org.jfree.chart.renderer.category.BarRenderer;

import

org.jfree.chart.title.TextTitle;

import

org.jfree.data.category.CategoryDataset;

import

org.jfree.data.category.IntervalCategoryDataset;

import org.jfree.chart.axis.NumberAxis;

import

org.jfree.data.category.DefaultCategoryDataset;

import

org.jfree.data.gantt.Task;

import org.jfree.data.gantt.TaskSeries;

import

org.jfree.data.gantt.TaskSeriesCollection;

import

org.jfree.data.time.Day;

import org.jfree.data.time.Second;

import

org.jfree.data.time.TimeSeries;

import

org.jfree.data.time.TimeSeriesCollection;

import

org.jfree.data.xy.XYDataset;

public class shixutu extends JApplet {

//PLOT_FONT是一靜態(tài)的字體常量對象,使用此對象可以避免反復(fù)用到的字體對象被多次創(chuàng)建

private static final Font PLOT_FONT = new Font("黑體", Font.ITALIC ,

18);

JFreeChart chart;

//創(chuàng)建數(shù)據(jù)動態(tài)更新的監(jiān)聽

class DataGenerator extends Timer

implements ActionListener {

private static final long serialVersionUID =

3977867288743720504L;

String

equID;????????????????????????????????

//設(shè)備ID號

int

totalTask;???????????????????????????????

//任務(wù)數(shù)

String[][]

strTask;??????????????????????????

//任務(wù)情況

public void

actionPerformed(ActionEvent actionevent) {????????????

addTotalObservation();

}???????? DataGenerator()

{

super(1000,

null);

addActionListener(this);

System.out.println("super");

}

}

//將更新的數(shù)據(jù)添加到chart中

private void addTotalObservation()

{

System.out.println("addTotalObservation");

//設(shè)置新的數(shù)據(jù)集

chart.getXYPlot().setDataset(createDataset());

//通知Jfreechart

數(shù)據(jù)發(fā)生了改變,重新繪制柱狀圖

if

(chart != null)

{

chart.fireChartChanged();

}

}

private static void

processChart(JFreeChart chart)

{?

//設(shè)置標(biāo)題字體?

chart.getTitle().setFont(new Font("隸書", Font.BOLD,

26));?

//設(shè)置背景色?

chart.setBackgroundPaint(new

Color(252,175,134));?

XYPlot plot = chart.getXYPlot();???????

//獲取圖表的繪制屬性?

plot.setDomainGridlinesVisible(false);?

//設(shè)置網(wǎng)格不顯示?

//獲取時間軸對象?

DateAxis dateAxis = (DateAxis)

plot.getDomainAxis();?

dateAxis.setLabelFont(PLOT_FONT);??

//設(shè)置時間軸字體?

//設(shè)置時間軸標(biāo)尺值字體?

dateAxis.setTickLabelFont(new

Font("宋體",Font.PLAIN,12));?

dateAxis.setLowerMargin(0.0);??????

//設(shè)置時間軸上顯示的最小值?

//獲取數(shù)據(jù)軸對象?

ValueAxis valueAxis =

plot.getRangeAxis();?

valueAxis.setLabelFont(PLOT_FONT);?????????????????????

//設(shè)置數(shù)據(jù)字體?

DateFormat format = new SimpleDateFormat("mm分ss秒");??

//創(chuàng)建日期格式對象?

//創(chuàng)建DateTickUnit對象?

DateTickUnit dtu = new

DateTickUnit(DateTickUnitType.SECOND,30,format);?

dateAxis.setTickUnit(dtu);?????????

//設(shè)置日期軸的日期標(biāo)簽?????????? }????????? //將結(jié)果輸出在文件中

private static

void writeChartAsImage(JFreeChart chart)

{?

FileOutputStream fos_jpg =

null;?

try

{?

fos_jpg = new

FileOutputStream("D:\\test\\shixutu.jpg");?

ChartUtilities.writeChartAsJPEG(fos_jpg, 1, chart, 400, 300,

null);?

} catch (Exception e)

{?

e.printStackTrace();?

} finally

{?

try

{?

fos_jpg.close();?

} catch (Exception e)

{?

}?

}?

}?

//創(chuàng)建數(shù)據(jù)集合對象

public static XYDataset createDataset()

{?

//實例化TimeSeries對象?

TimeSeries timeseries = new

TimeSeries("Data");?

Second second = new Second();?

//實例化Day

double d =

50D;?

//添加一年365天的數(shù)據(jù)?

for (int i = 0; i 500; i++)

{??

d = d + (Math.random() - 0.5) * 10;

//創(chuàng)建隨機數(shù)據(jù)?

timeseries.second(day, d);

//向數(shù)據(jù)集合中添加數(shù)據(jù)?

second = (Second)

second.next();??

}??????????????????

TimeSeriesCollection timeSeriesCollection =?????????????????????????

new

TimeSeriesCollection(timeseries);?

//返回數(shù)據(jù)集合對象?

return timeSeriesCollection;?????????? }?//Applet程序初始化

public void init()

{

// 1.

得到數(shù)據(jù)??

XYDataset? dataset =

createDataset();?

// 2.

構(gòu)造chart??

chart =

ChartFactory.createTimeSeriesChart(?

"時序圖示范", //

圖表標(biāo)題??

"時間", //

目錄軸的顯示標(biāo)簽--橫軸??

"數(shù)值", //

數(shù)值軸的顯示標(biāo)簽--縱軸??

dataset, //

數(shù)據(jù)集??

false,

false, //

是否生成工具??

false //

是否生成URL鏈接??

);?

// 3.

處理chart中文顯示問題??

processChart(chart);?

// 4.

chart輸出圖片??

//writeChartAsImage(chart);?

// 5. chart

以swing形式輸出???

//6.使用applet輸出

ChartPanel chartPanel = new

ChartPanel(chart);

chartPanel.setPreferredSize(new

java.awt.Dimension(800,500));???????

getContentPane().add(chartPanel);????????? (new

DataGenerator()).start();

}

public void

paint(Graphics g)

{

if

(chart != null)

{

chart.draw((Graphics2D) g,

getBounds());

}

}

public void destroy() {

}

}

時序圖的結(jié)構(gòu)

時序圖描述對象是如何交互的,并且將重點放在消息序列上。也就是說,描述消息是如何在對象間發(fā)送和接收的。時序圖有兩個坐標(biāo)軸:縱坐標(biāo)軸顯示時間,橫坐標(biāo)軸顯示對象。每一個對象的表示方法是:矩形框中寫有對象和 / 或類名,且名字下面有下劃線;同時有一條縱向的虛線表示對象在序列中的執(zhí)行情況 ( 即發(fā)送和接收的消息對象的活動 ) , 這條虛線稱為對象的生命線。對象間的通信用對象的生命線之間的水平的消息線來表示,消息線的箭頭說明消息的類型,如同步,異步或簡單 。 瀏覽時序圖的方法是,從上到下查看對象間交換的消息,分析那些隨著時間的流逝而發(fā)生的消息交換。

時序圖中的消息可以是信號、操作調(diào)用或類似于 C++ 中的 RPC ( Remote Procedure Call,遠(yuǎn)程過程調(diào)用)或 Java 中的 RMI ( Remote Method Invocation , 遠(yuǎn)程方法調(diào)用)。當(dāng)對象接收到一個消息時,該對象中的一項活動就會啟動,我們把這一過程稱做激活 ( Activation )。 激活會顯示控制焦點,表明對象在某一個時間點開始執(zhí)行。一個被激活的對象或者是執(zhí)行它自身的代碼,或者是等待另一個對象的返回(該被激活的對象已經(jīng)向另一個對象發(fā)送了消息)。在圖形上,激活被繪制為對象生命線上的一個瘦高矩形。

消息可以用消息名及參數(shù)來標(biāo)識。消息還可帶有條件表達(dá)式,表示分支或決定是否發(fā)送消息。如果用于表示分支,則每個分支是相互排斥的,即在某一時刻僅可發(fā)送分支中的一個消息。消息也可以有順序號,但是在時序圖中,消息的順序號很少使用,因為時序圖已經(jīng)將消息的順序顯式地表示出來了。

一個對象可以通過發(fā)送消息來創(chuàng)建另一個對象,當(dāng)一個對象被刪除或自我刪除時,該對象用 X標(biāo)識。


網(wǎng)站欄目:java代碼繪制時序圖,java時序圖工具
文章分享:http://www.weahome.cn/article/hopiec.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部