Java 交通燈的物件導向的分析和設計(一)

2021-05-25 04:43:38 字數 1912 閱讀 9831

畫圖可以幫助理解和分析問題。

物件導向設計乙個重要經驗:

誰擁有資料,誰就對外提供操作這些資料的方法

需要思考出事物本質

案例1:

人在黑板上畫圓。三個物件人,黑板,圓。畫圓的動作屬於哪個物件上的方法?

畫圓需要圓心和半徑,資料屬於圓。所以方法需要寫在圓物件裡

案例2:

列車司機剎車。剎車的動作屬於誰的方法?

列車司機是方法的請求者,剎車的具體操作屬於列車內部的行為。所以剎車方法屬於列車

案例3:

售貨員統計票據金額。統計在售貨員上,還是在票據上?

金額屬於票據,所以方法在票據上。

案例4:

人關門.關門的動作屬於人還是門?

鎖閂的閉合是門提供的。人是動作的發起者,而門是動作的實施者所以是門。

總結:誰是動作的具體實施者,並且該資料屬於該物件的屬性。方法就屬於誰。

物件中有資料,內部應該有其提供處理的方法。

交通燈系統分析

初步系統物件:

紅綠燈,紅綠燈控制系統,汽車,路線。

當汽車看到自己所在路線的燈變綠時,是否可以穿過?

不是,要確認前方無車時才行穿過。

判斷是否有車,該問哪個物件?

問路,路中存著車的集合。

該路有增加和減少車輛的方法

再分析需求

不是體現車輛移動的過程,是捕捉車輛穿過路口的過程,

即捕捉路上減少一輛車的過程。

因此車不需要單獨設計成乙個物件,用字串表示就可以。

路,路上有集合,集合裡裝著車,路看自己的紅綠燈,如果綠了就把第一輛車取走。路有個隨機方法,在自己的末尾加車。

燈,要變綠變紅需要乙個控制系統運作。

去掉汽車,最終需要三個物件。

加深物件導向的認識

案例學習:

小球從繩子的一端移到另一端

小繩子的本質:為球的滾動指定方向。

需要有個方法獲得下乙個點,兩點成一線。

class rope{

private point start;

private point end;

public rope(point start,point end){

this.start=start;

this.end=end;

public point nextpoint(point currentpoint ){

/*通過兩點一線的數學公式可以計算出當前點的下乙個點,

這個細節不屬於設計階段要考慮的問題,

如果當前是終止點,則返回null,如果不是線上的點,則丟擲異常

class ball{

private rope rope;

private point currentpoint;

public ball(rope rope,startpoint){

this.rope=rope;

this.currentpoint=startpoint;

public void move(){

currentpoint=rope.nextpoint(currentpoint);

system.out.println("小球移動到了"+currentpoint);

情景2:

兩塊石頭磨成石刀,石刀可以砍樹,砍成木材,木材做成椅子。

stoneknife=knifefactory.createknife(stone one,stone two);

material=stoneknife.cut(tree);

chair=chai***ctory.makechair(material);

張老師交通燈分析

在做乙個系統之前,首先必須明確這個系統對社會的需求,其次分析專案的要求。要求 非同步隨機生成按照各個路線行駛的車輛。例如 由南向而來去往北向的車輛 直行車輛 由西向而來去往南向的車輛 右轉車輛 由東向而來去往南向的車輛 左轉車輛 訊號燈忽略黃燈,只考慮紅燈和綠燈。應考慮左轉車輛控制訊號燈,右轉車輛不...

ewb交通燈報告和檔案 基於EWB的交通燈設計

本文著眼於目前普遍應用在城市道路上的交通燈控制系統,從課程設計的題目要求出發,設計了乙個十字路口主次街道的交通燈控制電路。首先進行交通燈狀態變換的分析和交通燈總體框架的設計,接著提出了2種電路設計方案,通過優劣比較後選定了方案2。電源電路由555定時器產生1hz的脈衝訊號 根據交通燈的四種執行狀態依...

java執行緒簡單模擬交通燈

color brown b size medium 最近溫習多執行緒通訊,所以用多執行緒簡單模擬了交通燈,感覺自己對執行緒方面的東西又有了進一步的理解。size b color b 通過這個模擬明白了notify 與wait 又一些特點。下面將 貼上 b b 交通燈類 b package com.x...