作者jimmycool (北七)
看板b96902HW
標題Re: [ I S] 供大家參考 多多指教<(_ _)>
時間Tue Jun 17 10:19:36 2008
看到很多人都post自己整理的筆記出來,就來湊個熱鬧
本來是只想post在個版上,不過東抄西抄了很多同學的大作
所以就還是回饋一下。
也因為是post在個版上,所以很多碎碎唸的文字,排版也亂七八糟,請不要在意。XD
=============================拷貝分隔線==================================
主要還是給我自己看的,所以沒注意排版
看不懂又想看的人就請發問吧XD
裡面提出來的問題也請高人指教m(_ _)m
8:Class Diagram:
Foward Engineering / Reverse Engineering:
given a java code, write its class diagram.
example: textbook p.112 Figure 8-4 (不知道老師會不會出這個,不過有看有保佑)
public abstract class EventHandler {
EventHandler successor;
private Integer currentEventID;
private String source;
public void handleRequest() {}
}
圖(純示意,完整圖請看課本): ┌-----------------
successor ﹀ |
<<JavaTarget>> |我是實線
<<JavaTarget>> EventHandler(需為斜體) |
------> -currentEventID :Integer ---
Client(需為斜體) -source: String
handleRequest() :void
△我是實線
|
<<JavaTarget>>
GUIEventHandler
9:Advanced Classes:
Figure: "An Example: Advanced Classes"
Textbook page 118 Figure 9-1: Advanced Classes
圖(我畫得很難懂,請參照課本):
Frame -> (如果是abstract class要變斜體,
話說可以問一下斜體怎麼寫嗎XD)
header: FrameHeader -> 後面是type
uniqueID : Long -> 畫底線代表是static attribute
¯¯¯¯¯¯¯¯
+ addMessage(m : Message) : Status -> signature
# setCheckSum()
- encrypt()
+ public # protected - private ~ package
Three Levels of Visibility
Java都學過囉~雖然投影片只有提到三種,但是根據課本UML應該是四種都支援的
public: 所有人都可以用
protected: 只有子孫們可以用
private: 只有自己可以用
package: 只有住同一個封包裡的人可以用
notation上面有了。
Scope
這裡的scope似乎單純就是指instance/static的差別
instance就是每個instance都有一個
static就是for all instances of the class
Abstract Class
請參照我的期中考整理(爆)
反正就是指有abstract method的class囉
應該不會考太深
Multiplicity & Singleton Class
翻了一下一些人整理的筆記,好像都沒有提到Singleton Class XD
其實這出自課本p.124&p.125,投影片沒有應該是因為投影片只節錄
p.125的圖吧:3
Multiplicity就是指定這個class能有幾個instances的符號,
notation就是在右上角寫你希望這個class能有幾個instantces,
如果在attribute裡面就用[]框住寫在後面就好了。
而如果只能有一個instance的class就叫做Singleton Class囉~
詳情請見課本p.124 p.125,尤其是p.125 Figure 9-6。
Operation v.s. Method
說實話看沒有很懂所以附上原文
An operation specifies a service that can be requested from any
object of the class to affect behavior.
A method is an implementation of an operation.
我流的解釋是說operation是一個動作的抽象概念,而一個operation
可能可以有很多種實現方式(by overload/override/polymorphism...etc)
而其中一種實現方式就叫做method。
這樣對嗎?
Template Classes: An Example
Textbook p.129 Figure 9-7
不過同學們並沒有學過C++,考這個不太道德吧?
要也是用Java的generics來寫?
C++ Code:
template<class Item, class VType, int Buckets>
class Map {
public:
virtual map(const Item&, const VType&);
virtual Boolean isMapped(const Item&);
(話說課本這裡有錯字XD)
...
};
圖(超意象化表示法,請參照p.129):
Item
Map VType -> 我們在一個虛線框裡,代表要用來當作
Template parameters的變數名稱
buckets : IntegerExpression
+ map(i : item, v : Type)
+ isMapped(i : item) : Boolean {query}
^
|<<bind>> <Item->Customer, VType->Order, buckets->3>
|
OrderMap
(explicit binding)
or implicit binding: Map<Item->Customer, VType->Order, buckets->3>
要作template class的instance有兩種方法,一種是implicit binding
就是直接作一個class後面加上Template parameters的對應,
另外一種是explicit binding,用<<bind>>連過去。
還有,關於上面的{query}可以參照課本p.127,operation的properties的部份
大概不會考所以這裡就不列了。
10:Advanced Relationship:
Dependency: 17 stereotypes 課本只有12種,以投影片為準......
有關於dependency的箭頭:a->b a是靠b的
且待我娓娓道來
among classes & objects:
<<bind>> 指定一個template class的instance的actual parameter的值,
例子上面有了。
<<derive>> 說明A是從B算出來的,ex. Age --------> Birthdate
<<derive>>
<<friend>> 類似C++的friend class,A可以無視B的元素的visibility
ex. Iterator ----------> CourseSchedule
<<friend>>
<<instanceOf>> & <<instantiate>> (投影片錯字...)
instanceOf: A是B的instance
instantiate: B = new A() (感謝hikaru4指正)
<<instanceOf>>
ex. mickey:Mouse --------------> Mouse
 ̄¯¯ ̄¯¯
<<powertype>> B是A的powertype。
powertype是一種classifier,
他的instance是另外一個class(即A)的sub-class
<<powertype>> <<instanceOf>>
ex. 植物 <-------------- 棕樹: 植物
^ ¯¯¯¯¯
|<<powertype>> |
| |我是實線
樹△--------------------
請自行把三角形逆時針轉90度
其中樹種和棕樹都是class
有點像是弱化版的inheritance XD
<<refine>> A比B在抽象層級上更詳細
Customer <--------- Customer
(at analysis) (at design)
<<use>> Specifies that the semantics of the source use
element depends on the semantics of the public
part of the target.
好像是說如果A要完整實現,就必須要有B才行
有點類似abstract class?
Order --------> LineItem
<<use>>
訂單要完成,當然要告訴我lineitem囉
among packages:
<<access>> & <<import>>
類似java的import,可以在這個package裡頭使用其他package的class
的simple name。關於兩者的差異,投影片舉的例子很詭異,所以我自
己舉一個例子:
假設A access 了 B,若是C access 或是 import A,C仍然沒辦法使用
B裡頭的class的simple name。但是如果A是import B,C就可以使用B裡
頭class的simple name。
<<import>>
ex. Client -----------> GUI
(我們是package)
<<access>> <<access>>
ex. 選課服務 ----------> 密碼服務 -----------> 資料庫服務
(抄來的)
一般比較常用import
among use cases:
<<extend>> & <<include>>
如果A extend B,A是B的行為的延伸(廢話...
<<extend>>
(set priority)
ex. Place rush order ----------> Place order
(extensions points:set priority)
from text book p.233 figure 17-5
如果B include 在A裡頭,B就永遠不會單獨出現,而是當A出現的時候作為
一部分出現。
<<include>>
ex. 交易 -----------> 認證
(抄來的)
其實這段看沒有非常懂._.
interaction among objects:
<<become>>, <<call>> and <<copy>>
A become B: A和B是同一個object,只是A等等會變成B的樣子。
A call B: A的operation會叫到B的operation。
A copy B: B是A的copy。
投影片p.21下面是廢話嗎...
in the context of state machines:
<<send>>
A send B: A的operation會送event給B
organizing the elements of the system into subsystems and model:
<<trace>>
A trace B: 說明A來自B的樣子
<<trace>>
example: Design Model ---------> Analysis Model
Generalization :Mixin
有些Class是專門讓你拿來繼承用的,這些class並不會被拿來單獨使用,
而是多拿來用在multiple inheritance裡當作superclass。
Advanced Association
淦........
text book p. 142 - p. 145
Navigation
兩者之間的方向關係
我是實線
ex. User -------> Password
owner
User可以知道Password,Password沒辦法知道User。
Visibility
可以specify association裡的object的visibility
Private: 只有association的兩端有權限
Protected: association的兩端,和對面的sub-class instances有權限
Public: 大家都看光光
注意:沒有Package。
我是實線 我是實線
ex. UserGroup----------User---------->Password
+user +owner -key
Qualification
對傳進來的物件作識別用的工具
ex.
┌────┐
│ ├──────┐* 0..1
│WorkDesk│jobID : int ├────ReturnedItem
│ ├──────┘
└────┘
假設每個ReturnedItem都有自己specified的jobID,
要還到正確的WorkDesk上,就可以用到Qualifier啦~
要注意的是jobID是屬於這個association的attribute
而非ReturnedItem。
Interface Specifier
一個class可以實作好幾個interfaces,interface specifier
可以讓你指定class在當作什麼角色的時候應該使用哪個interface
用法是 角色名 : Interface名
-------
| |
worker : IEmploee |* 1 |
Person----
supervisor : IManager
抄來的
Composition
強化版的aggregation,和aggregation不同的是composition強調了
兩者的生命週期的關係(全體死了部份也會死)。
1 *
Window ◆──── Frame
Association Classes
用一個class來描述association中兩者相同的properties
* 我是實線 1..*
Company-------------------Person
employer | employee
|
|
Job
description
dateHired
salary
Constraints
有六種,而且課本和投影片的又不一樣
以投影片為主
{implicit} 說明兩者只有概念上的關係,而非實際上有關聯
ex. A------|
△ |
我是實線 | |我是實線
| |
B------C
{implicit}
我還是實線
{ordered}
表示association其中一端的物件是排序好的
1{ordered}*
ex. User─────>Password
假設Password是按照最近使用順序排序的(這什麼鬼例子...)
{changeable} 物件間的連結可以被增加,減少,更換
{addOnly} 物件可以自行增加連結
{frozen} 一旦一個物件增加了連結,就不能再更改或刪除
{xor} 在許多associations中,只有一個對該物件是成立的
我和下面那傢伙都是實線
-------------Person
ex. Acount{xor}
-------------Corporation
Account 同時僅能連結 Person 與 Corporation 之一,
而不能兩者同時連結,也不能兩者都沒有。
前面的8~10章就把大部分的東西都考完了...
12:Package
<<import>>,<<access>> (usage)
前面講過囉。
Generalization
沒抄到這個,不過聽說要考
Package的generalization和class的非常相似,以上。
13:Instances
Orphan instance (definition)
沒有和他有關的classifier的可憐孤兒instance
設計過程中如果這裡需要某個物件處理某件事情
卻還沒有想好要用哪個class,就可以先作一個
orphan instance。是過渡性的產品,最後還是會
幫他找到爸媽。
14:Object Diagram
What does Object Diagram mean or represent?
一種圖表用來表示一群物件在某個時間點下的關係。
19:Interaction Diagram
given a code, draw its interaction diagram
from text book p.264
code:
public void register() {
CourseCollection courses = getSchedule();
for (int i=0;i < courses.size(); I++)
courses.item(i).add(this);
this.registered=true;
}
圖(差太多了啦XD):畫不出來,請洽課本p.264 Orz
16:Use Case Diagram
Given a problem statement, draw a use case diagram.
(probably from term project)
http://atlas-connect-forum.web.cern.ch/Atlas-connect-forum/SDP/sadoc_3.gif

一模一樣,謝謝。
What are the "relationships" in use case diagram?
Explain how to use them.
就是<<extend>> & <<include>> & Generalization吧
懶得畫圖,請見課本p.233 Figure 17-5
20:Activity Diagrams
Forking and Joining
Forking:把一個flow of control分流成兩個以上
Joining:把兩個以上的flow of control匯流成一個
對嘴演講實錄(....)
Prepare for speech
聲明:我們都是實線 |
v ↓this is fork
-----------------------
| |
| v
| Decompress
| |
| v
| ---------- <- this is fork
Gesture | |
| v v
| Synch mouth Stream audio
| | |
| v v
| ---------- <- this is join
| |
v v
----------------------- <- this is join
|
v
Cleanup
Swimlanes
swimlane顧名思義就是泳道的意思,可以把一個activity diagrams
裡的activity states分到一道一道的泳道裡,達成分組的作用。
圖太難畫就不附了,在課本p.275 Figure 20-7或是投影片p.13
Object Flow
objects如果出現在flow of control裡頭就是object flow。
圖:p.277 Figure 20-8
22:State Machine
Need Statechart (2 principles)
使用State Machine的時機與兩大原則:
text book p.300 and ppt p.9
1.當物件必須回應訊號,而這些訊號是一些訊號是
instances間溝通用的非同步訊息時。(什麼跟什麼啊XD)
ex. 一隻手機必須要回應很多不同的隨機來電,
和使用者按下按鍵的事件之類的。
例子好像講得很明白,就不多作說明了。
2.當物件現在的行為必須根據過去的行為動作的時候。
ex. 假設有個空對空響尾蛇飛彈要發射,它必須針對現在的一些狀態
行動。比如說如果戰機還沒起飛,當然就不能發射,不然就自爆
了。又或者戰機還沒有鎖定任何敵機,直接發射當然就不太好。
An Example: ATM Machine
ppt. p.20 or text book p.310 Figure 22-5
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.169.172.192
※ 編輯: jimmycool 來自: 118.169.172.192 (06/17 10:24)
1F:推 Thewhat:超人性化講解! 06/17 10:27
2F:推 curtisyyc:人性化講解! 06/17 10:29
※ 編輯: jimmycool 來自: 118.169.172.192 (06/17 10:35)
3F:推 g3620kimo:救了我的stereotype! 06/17 10:43
4F:推 JingXD:推 06/17 11:05
5F:→ jimmycool:修正powertype部份example的嚴重錯誤orz 06/17 11:06
※ 編輯: jimmycool 來自: 118.169.172.192 (06/17 11:10)
※ 編輯: jimmycool 來自: 118.169.172.192 (06/17 11:32)
6F:推 hikaru4:instantiate 好像是 B create A 就是 有 new A() 吧!? 06/17 11:59
7F:→ jimmycool:喔喔原來如此! 06/17 12:03
※ 編輯: jimmycool 來自: 118.169.172.192 (06/17 12:04)
8F:推 Devarena:有下有推 06/17 12:10
9F:→ olala7846:沒下就給->吧 06/17 12:14
10F:推 folkterry:強者強者!! 06/17 12:18
11F:→ david00129:哇!!!!太棒了~~~~ 06/17 12:42
※ 編輯: jimmycool 來自: 118.169.172.192 (06/17 13:25)
12F:→ jimmycool:再次修正powertype的部份,觀念好像錯很大... 06/17 13:25
13F:推 bevis1989:讀起來有夠親切XD 06/17 13:26
※ 編輯: jimmycool 來自: 118.169.172.192 (06/17 13:31)
14F:推 s007150628:謝囉~ 06/17 13:50
15F:推 imprazaguy:做的太好了 06/17 13:56
16F:推 louner:用完有推 06/17 14:25
17F:推 woptspencil:推懋哥 06/17 14:36
18F:推 strangechu:privated -> private ? 06/17 14:39
※ 編輯: jimmycool 來自: 118.169.172.192 (06/17 14:40)
19F:→ jimmycool:感謝修正m(_ _)m 06/17 14:40
20F:推 zarcen:很好很強大 06/17 15:41
21F:推 like9515:有看有推 06/17 15:44
22F:推 iamwjj:這已經是好到不能用好來形容了^^ 06/17 16:18
23F:推 askus:有看有推! 06/17 16:20
24F:推 n7711245566:有看有推 06/17 16:32
25F:→ champavalon:感恩推~ 06/17 16:38
26F:推 brucechen2:這不推不行 06/17 16:56
27F:推 jyt0532:最後關頭推 06/17 17:26
28F:推 hikaru4:還在掙扎推 06/17 17:46
29F:推 Bingojkt:考完淚推T_T 06/17 20:01
30F:推 s007150628:球場有推推^__^ 06/17 20:51
31F:→ jimmycool:還是有miss一些,唉 06/17 20:53