作者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