我的困惑!
其實(shí)我覺得要實(shí)現(xiàn)這道題的功能并不難,但是,怎么樣完美的實(shí)現(xiàn)代碼的封裝以及減少代碼量才是我頭疼的...例如對于這種判斷名字和編號是否正確的方法是否可以封裝等等問題。我覺得在測試類里代碼越少越好,最好只要一句話調(diào)用一個(gè)方法就好了。還有對于業(yè)務(wù)的分析我感覺也遇到了障礙,從邏輯上來說,選書應(yīng)該是人的方法,讓人選書是圖書館的方法,我是否應(yīng)該再創(chuàng)建一個(gè)人類,和一個(gè)圖書館類?
問題寫得有些混亂,還請高手能詳細(xì)替我解答,要是有代碼就更好了,不勝感激!
2015-08-04
下面是我個(gè)人的理解,參考了老師的代碼,不保證正確性,自由采用。
圖書館借書系統(tǒng)整體上作為一個(gè)類對待,其中涉及屬性和方法。
不需要?jiǎng)?chuàng)建人類吧,畢竟這里只需要獲取控制臺(tái)的命令,如果是真實(shí)的借書系統(tǒng),可能會(huì)涉及到人類的創(chuàng)建,比如學(xué)生或者教職工;
這里我們盡量從全局上劃分系統(tǒng)的實(shí)現(xiàn)方法,比如:
按照書名選書模塊;
安裝序號選書模塊;
命令接受模塊;
可以發(fā)現(xiàn)有了以上三個(gè)功能方法,該系統(tǒng)的功能就都實(shí)現(xiàn)了。
**盡量把和這些功能相關(guān)的組件都封裝到該方法里,而不要放到主調(diào)用方法里,主方法只負(fù)責(zé)接受返回值和處理拋出的異常。**
然后用主方法,分布調(diào)用這些模塊,處理這些模塊拋出的異常即可。
2015-08-05
我自己也說亂了,總之我覺得可以把方法里的異常分為兩種類型,
一種可以把異??醋鍪欠椒ㄗ陨韮?nèi)部的小bug,可以直接在方法里面處理掉用,
一種可以把異??醋鍪窃摲椒ǖ囊活愄厥夥祷刂?,既然是該方法的特殊返回值,當(dāng)然應(yīng)該可以拋給調(diào)用者處理,(有三種方式:1,返回值間接拋出;2,通過異常鏈打包拋出;3,直接拋出)
里面可能有講的不對的地方,學(xué)習(xí)就是試錯(cuò)
2015-08-05
再比如getBookByName()這個(gè)方法,會(huì)拋出“圖書不存在異?!?,當(dāng)然可以在方法內(nèi)直接處理這個(gè)異常,但是處理過程用到了main()里的其他命令,所以還是拋給mian()。