畫圖可以幫助理解和分析問題。
物件導向設計乙個重要經驗:
誰擁有資料,誰就對外提供操作這些資料的方法
需要思考出事物本質
案例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...