日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

软件构造学习笔记-实验2

發(fā)布時(shí)間:2023/12/4 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 软件构造学习笔记-实验2 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

P1

1.設(shè)計(jì)目標(biāo)
首先對(duì)圖的ADT進(jìn)行兩種實(shí)現(xiàn)(從邊和頂點(diǎn)出發(fā)),然后選擇一種實(shí)現(xiàn)的ADT,根據(jù)輸入的文件構(gòu)建語(yǔ)料庫(kù),再利用構(gòu)建的語(yǔ)料庫(kù),對(duì)輸入字符串進(jìn)行插入操作,并返回修改后的字符串。
2.有關(guān)AF和RI的概念,在實(shí)驗(yàn)剛開(kāi)始時(shí)是沒(méi)有講到的。進(jìn)一步學(xué)習(xí)之后才完成代碼的這個(gè)部分。
AF:R->A(抽象函數(shù))給出R空間的數(shù)據(jù),如何映射到A空間的解釋。
RI:R->boolean(表示不變性)某個(gè)具體的表示是否是合法的。也可以將RI看成所有表示值的一個(gè)子集,包含了所有合法的表示值。同時(shí)可以將RI看作描述什么是合法表示值的條件。
3.接口是不允許存在構(gòu)造方法的,因?yàn)榻涌跓o(wú)法被實(shí)例化。接口中可以存在工廠方法,返回接口的實(shí)現(xiàn)的實(shí)例,從而構(gòu)造出具有接口所有方法的實(shí)例。

4.在不可變類(lèi)中,方法不能直接返回可變的引用類(lèi)型。因?yàn)檫@么做會(huì)造成表示暴露。正確的做法應(yīng)該是返回其復(fù)制,即防御式拷貝。

P2

1.有關(guān)private成員域的繼承問(wèn)題
在實(shí)現(xiàn)FriendshipGraph類(lèi)時(shí),老師明確要求用繼承寫(xiě),而不能調(diào)用Graph的工廠方法創(chuàng)建圖的實(shí)例。這讓我很疑惑,因?yàn)閯偼瓿傻膱D的兩種實(shí)現(xiàn)中,它們的成員域都是private final修飾的,也就是說(shuō)無(wú)法被繼承的。既然沒(méi)有父類(lèi)的成員域,那怎么完成使用父類(lèi)成員域的成員方法呢?



從網(wǎng)上查找博客,我了解到,父類(lèi)的privare成員域其實(shí)是被繼承了,但是子類(lèi)沒(méi)有訪問(wèn)權(quán)限,只能通過(guò)調(diào)用繼承父類(lèi)的方法,對(duì)父類(lèi)的private成員域進(jìn)行修改。這也就能說(shuō)得通了。

P3

1.將小的、表示數(shù)據(jù)的類(lèi)設(shè)置成不可變類(lèi)。如Player類(lèi)、Piece類(lèi)、Positon類(lèi)。而B(niǎo)oard類(lèi)則必須是可變類(lèi),因?yàn)槠灞P(pán)上的棋子會(huì)發(fā)生變化。
2.關(guān)于如何實(shí)現(xiàn)游戲結(jié)束后查看走棋歷史,我選擇在Action類(lèi)中設(shè)置一個(gè)StringBuilder成員域,在每個(gè)操作調(diào)用完成后,在該成員域添加一行操作信息。當(dāng)需要查看走棋歷史時(shí),將其轉(zhuǎn)化成String類(lèi)型并返回即可。

3.客戶(hù)端代碼設(shè)計(jì)
-初始化
獲得輸入信息后,對(duì)游戲進(jìn)行初始化。由于兩類(lèi)游戲的棋盤(pán)大小和棋子的初始狀態(tài)不同,而玩家信息相同,所以在創(chuàng)建玩家實(shí)例之后對(duì)兩種游戲分別進(jìn)行初始化。在初始化象棋游戲時(shí),將象棋棋子添加到棋盤(pán)上。

-進(jìn)行游戲
用int類(lèi)型的變量operation記錄用戶(hù)輸入的操作,從1到8每個(gè)數(shù)字代表一種操作,在終端中顯示(通過(guò)調(diào)用printMenu方法)。然后將該值傳入performAction方法,進(jìn)行對(duì)應(yīng)操作。該方法返回布爾值,標(biāo)記是否操作成功。如果操作成功,則進(jìn)入對(duì)方回合(round取反),否則仍是當(dāng)前玩家的回合。



-游戲結(jié)束
游戲結(jié)束時(shí)會(huì)提示玩家是否查詢(xún)走棋信息。如果是,則打印走棋歷史,否則直接退出游戲。

總結(jié)

以上是生活随笔為你收集整理的软件构造学习笔记-实验2的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。