[問題1]
在需求分析階段,采用UML 的用例圖(use case diagram)描述系統(tǒng)功能需求,如圖3-1
所示。請(qǐng)指出圖中的A、B、C 和D 分別是哪個(gè)用例?
[問題2]
在 UML 中,重復(fù)度(Multiplicity)定義了某個(gè)類的一個(gè)實(shí)例可以與另一個(gè)類的多少個(gè)
實(shí)例相關(guān)聯(lián)。通常把它寫成一個(gè)表示取值范圍的表達(dá)式或者一個(gè)具體的值。例如圖 3-2 中
的類 InternetClient 和CustomerList,InternetClient 端的“0..*”表示:一個(gè) Custo~erList 的實(shí)
例可以與 0 個(gè)或多個(gè) InternetClient 的實(shí)例相關(guān)聯(lián);CustomerList 端的“1”表示:一個(gè)
InternetClient 的實(shí)例只能與一個(gè)CustomerList 的實(shí)例相關(guān)。
請(qǐng)指出圖3-2 中(1)到(4)處的重復(fù)度分別為多少?
[問題3]
類通常不會(huì)單獨(dú)存在,因此當(dāng)對(duì)系統(tǒng)建模時(shí),不僅要識(shí)別出類,還必須對(duì)類之間的相
互關(guān)系建模。在面向?qū)ο蠼V,提供了四種關(guān)系:依賴(dependency)、概括(generalization)、
關(guān)聯(lián)(aassociation)和聚集(aggregation)。請(qǐng)分別說(shuō)明這四種關(guān)系的含義,并說(shuō)明關(guān)聯(lián)和聚集之
間的主要區(qū)別。
試題五
閱讀下列程序說(shuō)明和 C 代碼,將應(yīng)填人 __(n)__ 處的字句寫在答卷的對(duì)應(yīng)欄內(nèi)。
[程序 6 說(shuō)明]
設(shè)某城市有 n 個(gè)車站,并有 m 條公交線路連接這些車站,設(shè)這些公交車都是單向
的,這 n 個(gè)車站被順序編號(hào)為 0 至 n-1 。本程序,輸入該城市的公交線路數(shù)、車站個(gè)
數(shù),以及各公交線路上的各站編號(hào),求得從站 0 出發(fā)乘公交車至站 n-1 的最少換車次數(shù)。
程序利用輸入信息構(gòu)建一張有向圖 G (用鄰接矩陣 g 表示),有向圖的頂點(diǎn)是車站,
若有某條公交線路經(jīng) i 站能到達(dá) j 站,就在頂點(diǎn) i 到頂點(diǎn) j 之間設(shè)置一條權(quán)為 1 的有向
邊。如是這樣,從站點(diǎn) x 至站點(diǎn) y 的最少上車次數(shù)便對(duì)應(yīng)圖 G 中從點(diǎn) x 至點(diǎn) y 的
最短路徑長(zhǎng)度。而程序要求的換車次數(shù)就是上車次數(shù)減 1 。
[程序6]
#include
#define M 20
#define N 50
int a[N+l]; /*用于存放一條線路上的各站編號(hào)*/
int g[N][N]; /*存儲(chǔ)對(duì)應(yīng)的鄰接矩陣*/
int dist[N]; /*存儲(chǔ)站 0 到各站的最短路徑*/
int m, n;
void buildG( )
{ int i, j, k, sc, dd;
printf ("輸入公交線路數(shù),公交站數(shù)\n");
scanf ("%d%d", &m, &n);
for( i = O; i < n; i++) /* 鄰接矩陣清0 */
for(j = O; j < n; j++) g[i][j] = O;
for( i = O; i < m; i++) {
printf (" 沿第 %d 條公交車線路前進(jìn)方向的各站編號(hào)
( O <= 編號(hào) <= %d, -1 結(jié)束):\n", i+l, n-1 );
sc = O; /* 當(dāng)前線路站計(jì)數(shù)器 */
while (1) {
scanf ("%d", &dd);
if (dd == -1) break;
if (ad >= 0 && dd < n) ___(1)___
}
a[sc] = -1;
for(k = 1; a[k] >= O; k++) /* 處理第 i+l 條公交線路 */
for (j = 0; j < k; j++)
g __(2)__ = 1;
}}
int minLen( )
{ int j, k;
for(j = O; j < n; j++) dist[j] = g[O][j];
dist[O] = 1;
do {
for(k = -1, j = 0 ; j < n; j++) /* 找下一個(gè)最少上車次數(shù)的站*/
if (dist[j] > 0 && (k == -1 || dist[j] < dist[k])) k = j;
if (k < 0 || k == n-l) break;
dist[k] = -dist[k]; /* 設(shè)置 k 站已求得上車次數(shù)的標(biāo)記 */
for(j = 1; j < n; j++) /* 調(diào)整經(jīng)過 k 站能到達(dá)的其余各站的上車次數(shù) */
if ( __(3)__ && (dist[j] == 0 || -dist[k] + 1 < dist[j] ) )
dist[j] = __(4)__ ;
} while (1);
j = dist [n-l];
return __(5)__ ;
}
void main ( )
{ int t;
buildG ( );
if ((t = minLen()) < O) printf ("無(wú)解 ! \n"),
else printf ("從 0 號(hào)站到 %d 站需換車 %d 次\n , n-i, t);
}
相關(guān)推薦:計(jì)算機(jī)軟考:軟件設(shè)計(jì)師練習(xí)試題及答案解析匯總北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |