成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

軟件構(gòu)造lab2

孫吉亮 / 968人閱讀

摘要:本次實(shí)驗(yàn)訓(xùn)練抽象數(shù)據(jù)類(lèi)型的設(shè)計(jì)規(guī)約測(cè)試,并使用面向?qū)ο缶幊碳夹g(shù)實(shí)現(xiàn)。改成泛型將函數(shù)聲明和調(diào)用等修改一下即可調(diào)用之前我們實(shí)現(xiàn)的一個(gè)圖結(jié)構(gòu)實(shí)現(xiàn)方法如下讀取文件輸入,識(shí)別序列,構(gòu)建圖結(jié)構(gòu)。

本次實(shí)驗(yàn)訓(xùn)練抽象數(shù)據(jù)類(lèi)型(ADT)的設(shè)計(jì)、規(guī)約、測(cè)試,并使用面向?qū)ο缶幊蹋∣OP)技術(shù)實(shí)現(xiàn) ADT。

3.1 Poetic Walks
建立對(duì)ADT的基本印象,比如如何設(shè)計(jì)一個(gè)能夠泛型化的ADT。
加深對(duì)AF,RI,rep exposure 這些抽象概念的理解
這個(gè)實(shí)驗(yàn)給出了一個(gè)如何設(shè)計(jì)泛型ADT的方法,首先先針對(duì)某一個(gè)特定實(shí)例設(shè)計(jì)具體的ADT:

給出接口Graph
通過(guò)不同方法實(shí)現(xiàn)該接口,對(duì)于該類(lèi)的實(shí)現(xiàn)遵循ADT設(shè)計(jì)的基本方法,寫(xiě)好Spec,AF,RI,并避免泄露,
3.1.1 Get the code
實(shí)驗(yàn)報(bào)告中給出了github倉(cāng)庫(kù)的的地址

3.1.2 Problem 1: Test Graph
進(jìn)行測(cè)試。

3.1.3 Problem 2: Implement Graph
兩種方式實(shí)現(xiàn)Graph。

3.1.3.1 Implement ConcreteEdgesGraph

Edge類(lèi)實(shí)現(xiàn)
Edge包含兩個(gè)String類(lèi)型,source和target存放每個(gè)邊的起點(diǎn)終點(diǎn),一個(gè)int類(lèi)型weight保存權(quán)重。

ConcreteEdgesGraph實(shí)現(xiàn)
ConcreteEdgeGraph類(lèi)中含有成員變量:
vertices
edges

3.1.3.2 Implement ConcreteVerticesGraph

Vertex類(lèi):
包含一個(gè)String類(lèi)型 label存放該頂點(diǎn)的標(biāo)簽名稱,
Map類(lèi)用于存放以該點(diǎn)為起點(diǎn)的邊的信息,即終點(diǎn)和權(quán)重

ConcreteVerticesGraph類(lèi)
ConcreteEdgeGraph類(lèi)中含有一個(gè)成員變量
vertices頂點(diǎn)列表。

3.1.4 Problem 3: Implement generic Graph
改成泛型:將函數(shù)聲明和調(diào)用等修改一下即可

3.1.5 Problem 4: Poetic walks
調(diào)用之前我們實(shí)現(xiàn)的一個(gè)GraphADT圖結(jié)構(gòu)實(shí)現(xiàn)

3.1.5.1 Implement GraphPoet
方法如下:
GraphPoet
讀取文件輸入,識(shí)別序列,構(gòu)建圖結(jié)構(gòu)。相鄰元素,在圖中新增邊。
poem
兩個(gè)連續(xù)單詞A B,利用sources函數(shù),檢查圖中B的前一個(gè)單詞,比如存在C到B的邊,還存在D到B的邊,那就檢查C的前一個(gè)單詞,比方說(shuō)A到C沒(méi)有邊,A到D有邊,那就說(shuō)明有路徑ADB,那么打印詩(shī)句的時(shí)候就打印ADB

3.2 Re-implement the Social Network in Lab1
利用前面實(shí)現(xiàn)的graph,重新實(shí)現(xiàn)Social Network。

3.2.1 FriendshipGraph類(lèi)
函數(shù)聲明:
addVertex
addEdge
getDistance
多調(diào)用Gragh中的函數(shù),很容易改寫(xiě)

3.2.2 Person類(lèi)
只需要一個(gè)label表示姓名即可:

3.3 Playing Chess
ADT設(shè)計(jì)/實(shí)現(xiàn)方案
ACTION BOARD PIECE PLAYER POSITION
PIECE類(lèi),int belong記錄是哪一方的子,String label記錄KING.QUEEN等

POSITION類(lèi),記錄坐標(biāo),每個(gè)position都有一個(gè)piece,當(dāng)然棋子的起始設(shè)為0,隱形子,相當(dāng)于沒(méi)有子

PLAYER類(lèi),記個(gè)名字就好

BOARD類(lèi),構(gòu)造方法中參數(shù)決定棋盤(pán)的大小

ACTION類(lèi),按指導(dǎo)書(shū)的要求完成
心得:
面向ADT的編程和直接面向應(yīng)用場(chǎng)景編程,需要適應(yīng)它們的區(qū)別
初步體會(huì)使用泛型的好處
一個(gè)ADT可以在多個(gè)應(yīng)用場(chǎng)景下使用,這種復(fù)用,很舒服
為ADT撰寫(xiě)specification, invariants, RI, AF,時(shí)刻注意ADT是否有rep exposure,是很重要的

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/77899.html

相關(guān)文章

  • 三年半Java后端面試經(jīng)歷

    摘要:經(jīng)過(guò)半年的沉淀,加上對(duì),和分布式這塊的補(bǔ)齊,終于開(kāi)始重拾面試信心,再次出征。面試官提示沒(méi)有提到線程的有內(nèi)核態(tài)的切換,程只在用戶態(tài)調(diào)度。三面綜合技術(shù)面這面面的是陣腳大亂,面試官采用刨根問(wèn)底的方式提問(wèn),終究是面試經(jīng)驗(yàn)不夠,導(dǎo)致面試的節(jié)奏有點(diǎn)亂。 經(jīng)過(guò)半年的沉淀,加上對(duì)MySQL,redis和分布式這塊的補(bǔ)齊,終于開(kāi)始重拾面試信心,再次出征。 鵝廠 面試職位:go后端開(kāi)發(fā)工程師,接受從Jav...

    kviccn 評(píng)論0 收藏0
  • 第6章:可維護(hù)性軟件構(gòu)建方法 6.1可維護(hù)性的度量和構(gòu)造原則

    摘要:設(shè)計(jì)方案的容易改變這就是所謂的軟件構(gòu)建的可維護(hù)性,可擴(kuò)展性和靈活性。這也可能表明類(lèi)型或方法可能難以維護(hù)?;谠创a中不同運(yùn)算符和操作數(shù)的數(shù)量的合成度量。對(duì)修改的封閉這種模塊的源代碼是不可侵犯的。 大綱 軟件維護(hù)和演變可維護(hù)性度量模塊化設(shè)計(jì)和模塊化原則OO設(shè)計(jì)原則:SOLIDOO設(shè)計(jì)原則:GRASP總結(jié) 軟件維護(hù)和演變 什么是軟件維護(hù)? 軟件工程中的軟件維護(hù)是交付后修改軟件產(chǎn)品以糾正故障...

    chanjarster 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<