自測(cè)題:
1. 圖11-1的UML設(shè)計(jì)中各個(gè)類之間的關(guān)系。
Hostel與TenantList是關(guān)聯(lián)關(guān)系;
TenantList和PaymentList與ObjectList是泛化關(guān)系。TenantList和PaymentList是ObjectList的子類;
TenantList與Tenant是聚合關(guān)系;
PaymentList與Payment是聚合關(guān)系;
Tenant與PaymentList是關(guān)聯(lián)關(guān)系。
注:不太明白什么時(shí)候描述關(guān)系,可能用來(lái)描述的還是業(yè)務(wù)上的關(guān)系。
2. 為什么開(kāi)發(fā)一個(gè)通用的ObjectList類。
該系統(tǒng)需要開(kāi)發(fā)兩種列表,PaymentList和TenantList,為了避免重復(fù)開(kāi)發(fā)代碼,因此開(kāi)發(fā)了一個(gè)通用的ObjectList類,
然后通過(guò)繼承方法分別為PaymentList和TenantList添加特定的屬性和方法。
3. 在UML類圖中如何記錄類的屬性?
類屬性的語(yǔ)法:
[可見(jiàn)性]屬性名[:類型][=初始值][{屬性字符串}]
(1)可見(jiàn)性:類中屬性的可見(jiàn)性主要包括公有(Public)、私有(Private)和受保護(hù)(Protected)。
在UML中,用“+”表達(dá)公有類型,用“-”表達(dá)私有類型,而用“#”表達(dá)受保護(hù)類型。UML的類中不存在默認(rèn)的可見(jiàn)性,
如果沒(méi)有顯示任何一種符號(hào),就表示沒(méi)有定義該屬性的可見(jiàn)性。
(2)屬性名:每個(gè)屬性都必須有一個(gè)名字以區(qū)別于類中的其他屬性,是類的一個(gè)特性。屬性名由描述所屬類
的特性的名詞或名詞短語(yǔ)組成。按照UML的約定,單字屬性名小寫(xiě)。如果屬性名包含多個(gè)單詞,這些單詞要合并,
且除了第一個(gè)單詞外其余單詞的首字母要大寫(xiě)。
(3)類型:說(shuō)明屬性的數(shù)據(jù)類型。在類的圖標(biāo)里,可以指定每個(gè)屬性值的類型。可能的類型包括字符串
(string)、浮點(diǎn)型(float)、整型(int)和布爾型(boolean),以及其他的枚舉類型。指明類型時(shí),需要在
屬性值后面加上類型名,中間用冒號(hào)隔開(kāi)。還可以為屬性指定一個(gè)默認(rèn)值。
(4)初始值:為了保護(hù)系統(tǒng)的完整性,防止漏掉取值或被非法的值破壞系統(tǒng)的完整性,可以設(shè)定屬性的初始值。
(5)屬性字符串:屬性字符串用來(lái)指定關(guān)于屬性的其他信息,例如,某個(gè)屬性應(yīng)該是永久的。任何希望添加
在屬性定義字符串值但又沒(méi)有合適地方可以加入的規(guī)則,都可以放在屬性字符串里。
4. 如何改進(jìn)本章案例研究中開(kāi)發(fā)的應(yīng)用程序。
(1)使用圖形化用戶界面。下章會(huì)完成。
(2)其他可以改的地方太多了,就不擴(kuò)展了。
編程練習(xí):代碼附件
1. PaymentTester.java
2. PaymentTester.java
3. TenantTester.java
4. TenantListTester.java
5. TenantListTester.java
6. ...