物件導向的分析與設計
「兩塊石頭磨成一把石刀,石刀可以砍樹,砍成木材,木材做成椅子」,
「球從一根繩子的一段移動到了另一端」,
用物件導向的方法分析設計這兩種過程。 1.
用到的類:
stone
、stonesword
、tree
、wood
、chair
、stonefactory
、woodfactory。
stonefactroy
stonesword createsword(stone stone1, stone stone2);
wood cuttree(tree tree);
woodfactory
createchair(wood wood);
2.用到的類:
ball
、rope
、point。
ball
move();
rope
rope(point start, point end);
point nextpoint(point currentpoint);
設計準則:合適的方法寫在合適的類裡邊,即哪個類裡有方法要操作的屬性,這個方法就寫在哪個類裡邊。
交通燈系統的設計: 1.
確定業務的邏輯: a)
共有12
個方向的車。四條路,每條路上的車有三個轉向方向(不轉向、左轉、右轉)。四個交通燈,分別位於東西南北。兩兩對應,即相對的交通燈的紅綠燈顯示是一致的。 b)
簡單模擬,認為只有紅燈和綠燈。那麼就有兩方面需要考慮,東西方向是紅燈的時候,南北方向是綠燈,反之亦然。先從乙個方向的乙個路口開始,比如:由南向北的車,有三個轉向的方向,當南北方向的燈為紅燈時,此車可轉向東西兩個方向,當南北方向的燈為綠燈時,此車可轉向東、北和西三個防向。其他方向的車同理。
這就是基本的業務邏輯。 c)
涉及到的類: i.
road
類代表路線,共有十二條路線。車屬於路的屬性,用多執行緒生成多輛車,並儲存在向量中,當車穿過路口時,將生成的車移除。
ii.lamp
類使用列舉型別,共有
12個方向,用12個
lamp
表示12
盞燈。由於有
8個拐彎的方向不需看燈,所以只有
4個方向的
lamp
是其作用的。能夠知道每個方向的燈是否亮,能夠控制燈的亮滅。
iii.
lampcontroller
類用執行緒控制
lamp
的開和關。
iv.mainclass
類用於啟動整個系統,建立
12條路和開啟交通燈。 2.
編寫**: a)
遇到的問題:思路不連貫,總斷。不能熟練使用物件導向的方式編寫**。會把**邏輯和業務邏輯相混淆。我還得多練啊。 3.
總結:
a)物件導向的方式分析問題很容易,**不再是**,像是現實世界的一草一木,是有生命的。小技巧啊,小知識點啊,都是次要的。業務的邏輯確定了,剩下的就是把用語言表達的東西**化了吧。有了想要實現的,其他的知識自然會找到,不用死記硬背。嗯,我是這樣認為的。
交通燈管理系統
銀行業務排程系統模擬銀行排程系統邏輯。需求 銀行內有6個業務視窗,1 4為普通視窗,5為快速視窗,6為vip視窗。有三種型別客戶 vip客戶,快速客戶 交水電費類業務 普通客戶。一部隨機生成各種型別的客戶,概率比例為 vip客戶 快速客戶 普通客戶 1 3 6。客戶辦理用時設定最少時間。各型別客戶在...
交通燈管理系統
需求 模擬實現十字路口的交通燈管理系統邏輯,具體需求如下 1.非同步隨機生成按照各個路線行駛的車輛。例如 由南向而來去往北向的車輛 直行車輛 由西向而來去往南向的車輛 右轉車輛 由東向而來去往南向的車輛 左轉車輛 2.訊號燈忽略黃燈,只考慮紅燈和綠燈。3.應考慮左轉車輛控制訊號燈,右轉車輛不受訊號燈...
交通燈管理系統
1 非同步隨機生成按照各個路線行駛的車輛。例如 由南向而來去往北向的車輛 直行車輛 由西向而來去往南向的車輛 右轉車輛 由東向而來去往南向的車輛 左轉車輛 2 訊號燈忽略黃燈,只考慮綠燈和紅燈。3 應考慮左轉車輛控制訊號燈,右轉車輛不受訊號燈控制 4 具體訊號燈控制邏輯與現實生活中普通交通燈控制邏輯...