軟體構造 Lab3APP的設計

2021-10-06 16:13:33 字數 3640 閱讀 6307

private listresource = new arraylist<>();

private listloc = new arraylist<>();

private list> entry = new arraylist<>();

private listtime = new arraylist<>();

// abstraction function:

// 以儲存的資源、位置、時間對、計畫項列表

// representation invariant:

// resource、loc、entry、time等列表不為null

// safety from rep exposure:

// 所有屬性都定義成private保護屬性不會直接洩露

// 對於返回可變型別的物件,使用防禦式拷貝的方式進行保護,避免表示洩露

/**

* @param longitude 位置的經度

* @param latitude 位置的緯度

* @param name 位置的名稱

* @param share 位置是否可共享,1表示可共享,0表示不可共享

*/public int addlocation(float longitude,float latitude,string name,int share)

/*** @param name 位置的名稱

*/public int dellocation(string name)

boolean f = false;

for(location a : loc)

} if(f)

else

checkrep();

return loc.size();

}

然後是增加一條新的計畫項的功能,這個功能的完成需要輸入提示資訊。這個功能的實現不是很複雜,就是需要先進行資源位置時間的輸入,詳細實現如下:

/**

* @param name 計畫項名稱

* @param time 課程的時間對

* @param loc 課程的位置

* @return 返回新建的課程

*/public courseentryaddentry(string name,timeslot time, location loc)

接下來就是分配資源的功能,分配資源的功能也並不複雜,都是將具體的實現交給委託進行完成了,實現如下:

/**

* 為計畫項分配某個資源

* @param name 計畫項名字

* @param a 課程資源

* @return 分配成功返回true,否則返回false

*/public boolean setresource(string name,courser a)

// }

for(int i = 0;i < entry.size();i++)

} checkrep();

return f;

}

後面實現的是統一的改變狀態功能以及檢視狀態功能。改變狀態功能的實現同樣是交給state屬性進行完成,這裡以running功能為例,展示以下實際的實現:

/**

* 設定計畫項狀態為執行

* @param name 計畫項名字

* @param run 輸入的狀態

* @return 設定成功返回true,否則返回false

*/public boolean setrun(string name,string run)

boolean f = false;

// for(courseentryen : entry)

// }

for(int i = 0;i < entry.size();i++)

} checkrep();

return f;

}

之後是進行檢查位置衝突和資源衝突,以及尋找使用同一資源的計畫項的功能。這裡以檢查位置衝突為例,實際實現如下:

/**

* 檢查位置衝突

* @return 位置有衝突返回true,否則返回false

*/public boolean checklocation()

最後實現展示功能,具體的呼叫邏輯如下:

/**

* 將計畫項顯示在計畫板中

* @param name 輸入的位置

* @return 返回true

*/public boolean showboard(string name)

航班應用中的功能在前面統一功能實現中已經描述過了,沒有新增的不同的功能。輸入格式需要注意先進行資源、位置、時間對的建立,時間輸入格式為2020-05-15 12:31|2020-05-15 12:35。後續可進行資源分配。

高鐵應用相較於前面提到的普通功能,還增加了可以阻塞的功能、重新啟動的功能。輸入格式需要注意先進行資源、位置、時間對的建立,時間輸入格式為2020-05-15 12:31|2020-05-15 12:35。後續可進行資源分配。同時火車設計時時間對和位置項數量是一致的。這兩個功能的實現是有不同的,具體實現如下:

/**

* 將計畫項的狀態設定為阻塞

* @param name 計畫項名稱

* @param block 修改的狀態

* @return 成功設定返回true,否則返回false

*/public boolean setblocked(string name,string block)

boolean f = false;

// for(trainentryen : entry)

// }

for(int i = 0;i < entry.size();i++)

} checkrep();

return f;

}

而重新啟動功能就可以直接呼叫啟動功能進行實現。

課表應用還需要增加的額外功能是改變位置。輸入格式需要注意先進行資源、位置、時間對的建立,時間輸入格式為2020-05-15 12:31|2020-05-15 12:35。後續可進行資源分配。這個功能的實現如下:

/**

* 改變計畫項的位置

* @param name 計畫項名字

* @param longitude 位置經度

* @param latitude 位置緯度

* @param locname 位置名字

* @param share 位置是否可共享,1可共享,0不可共享

* @return 改變成功返回true,否則返回false

*/public boolean changelocation(string name,float longitude,float latitude,string locname,int share)

// }

for(int i = 0;i < entry.size();i++)

} checkrep();

return f;

}

軟體構造 Lab3

遇到的一些問題 按鈕 覆寫 由於我的gui的實現是由乙個基礎類和三個子類組成,其中基礎類的一些按鈕的 實現要在子類中覆寫,但是我一直找不到好的方法去覆寫,所以我直接在子類中遍歷了該按鈕的所有 把它們都刪了然後重加 正規表示式匹配 在這個實驗裡我發現了正規表示式的乙個好用的功能,比如在匹配如下資訊時 ...

軟體構造Lab3實驗總結

本次實驗是軟體構造課程當中工作量最大,且最為複雜的乙個。主要工作是實現乙個多軌道系統,在這個系統的基礎上完成三個應用。track game atom structure social network circle 三種應用都具有一定的多軌道結構。track game 中的軌道是跑道,atom str...

哈工大軟體構造lab3

3.1 待開發的三個應用場景 首先請列出你要完成的具體應用場景 至少3個,1和2中選一,3必選,4和5中選一,鼓勵完成更多的應用場景 行星系統 原子系統 社交網路 分析你所選定的多個應用場景的異同,理解需求 它們在哪些方面有共性 哪些方面有差異。他們都具有軌道,中心物體,軌道物體等屬性,但是各自具體...