面向對象設計大作業迭代任務


第0次任務-面向對象入門

目標:
學會設計簡單的類(找出類的屬性與方法)
任務:

  1. 請完成作業03-面向對象入門中的書面作業2.1以面向對象方式改造數據結構作業“有理數”(重點).
  2. 上台展示自己的以面向對象方式設計的有理數。

第1次任務-面向對象設計(購物車)

目標:

  • 學會使用講故事的方式找到系統中可能包含的類與屬性
  • 理解封裝

任務:

  1. 編碼規范:使用英文對類、方法、包進行命名(查英文詞典,不得出現拼音)。參考JAVA編碼規范,進行類命名,方法命名、包命名,合適的縮進,有意義的變量名。見參考資料1中的1.1-1.4。
  2. 前期調查與功能設計:調查京東商城或者亞馬遜商城中的購物車,體驗從搜索商品、加入購物車、操作購物車、下單全過程,思考該過程可能包含的類。演示中要求圖多字少。
  3. 面向對象設計:以面向對象的方法編寫購物車代碼。先設計有什么類,再考慮什么方法放到那個類中合適。初期可不用完成具體功能,只要將類名、類之間的關系、方法名設計好即可。見參考資料2、3。注意學習類與類之間的關系(先重點掌握關聯關系依賴關系)。
  4. PPT制作、上台演示與博客制作:演示前,請務必在同學面前預演一遍。博客制作(可選)。

注意:初期將重點放在面向對象設計、命名規范。
以上任務,請小組組長明確分工,課堂展示時教師將針對每個組員負責的部分進行提問檢查。

分工表格(請組長將上述任務1-4分配到每個人,除了任務3每個任務只能有1個負責人):

任務 姓名
編碼規范 張一
前期調查與功能設計 張二
面向對象設計與UML制作 李四
PPT制作、演示 王五

課堂演示按順序主要包含如下幾個部分

  1. 前期調查。
  2. 系統功能結構圖。
  3. 系統描述:一段用來描述系統功能與流程的文字,用紅色字代表可能的對象(名詞)或屬性,用藍色字代表可能的方法(動詞)。
  4. UML類圖:類的關鍵屬性與方法、類與類之間的關系。每個類的功能描述。可使用ProcessOn繪制。
  5. 本系統哪里體現了面向對象的封裝性。可選:哪里體現了繼承與多態。
  6. 項目包結構與關鍵代碼:項目的包結構(為什么要這樣設計包結構),主要功能(如網購物車添加、刪除商品)的流程圖與關鍵代碼。

考核注意事項:
每個人要對自己的任務負責。即使項目整體完成良好,自己負責的任務也可能被判定為不合格。
不合格的標准?

  • 自己完成的任務與參考資料中給定的模板、規范多處不一致。
  • 敷衍了事。
  • 回答自己負責的相關問題時,基本全都不會。

參考資料:

  1. 阿里巴巴Java開發手冊 終極版(1.3.0)
  2. 面向對象設計與UML類圖中的什么是類如何繪制類圖
  3. 5分鍾讀懂UML類圖

第2次任務-迭代改進任務購物車代碼

目標:

  • 合理規划包結構
  • 使用git進行項目協同開發

任務:

  1. 閱讀面向對象設計案例代碼,改進自己的購物車代碼。見參考資料3中的人、借款者、姓名、地址StuManagementDemo.java
  2. 面向對象改造:不少同學的系統還是從功能出發,然后將功能寫成方法生搬硬套到某個類上。請大家以面向對象的方式重新改造。設計是否合理,請按照如下原則判定:
    • 每個類中包含的方法是否合適。比如User類中包含showMenu(顯示菜單)方法,顯然不合理。實際上,User雖然需要進行顯示菜單操作,但是菜單功能應該由商城相關類負責提供。
    • 涉及到繼承的設計使用“is-a”准則來判定自己面向對象建模是否合理。比如,ShoppingMall is-a Commodity,這種設計顯然不合理。初學者,暫且不要使用繼承進行設計。
    • 類之間的關系設計是否合理?如,ShoppingCart與Commodity如果設計成1對1的關系(即一個ShoppingCart只能包含一個Commidty),顯然不合理。
    • 控制台輸入輸出代碼不要放到業務相關的類。比如將“請輸入要查找的商品id”這種提示信息放在某個表示負責具體搜索任務(如,在某個數組中根據給定商品id查找該商品)的方法中,就是一種不好的設計。
  3. 為自己的面向對象系統繪制UML。見參考資料1、2。注意:UML中的不要包含太多細節(比如不要包含setter/getter方法),只要體現必要的屬性、方法、類之間的關系即可。建議使用Processon繪制UML類圖。
  4. 為自己的項目規划合理的包結構,至少應包含兩個包。見參考資料4。
  5. 使用Eclipse+Git方式管理你的項目。項目提交記錄中應該體現不同成員的提交。見參考資料5。

考核注意事項:
請負責編碼規范的同學,認領本次任務4.
請負責前期調查與功能設計的同學,認領本次任務5.

參考資料:

  1. 深入淺出UML類圖。注:這篇文章是5分鍾讀懂UML類圖的詳解版。
  2. 作業04-面向對象設計與繼承中的2.1(面向對象設計)
  3. 面向對象設計案例代碼
  4. OnlineShop項目模板
  5. 使用Eclipse Egit與碼雲管理你的代碼

第3次任務-面向對象案例分析(可選)

  1. 完成作業04-面向對象設計與繼承書面作業2.2ManagerTest.zip代碼分析(繼承、多態)
  2. 使用UML圖繪制題目1中的各種類及類之間的關系。
  3. 上台講解體現在ManagerTest.zip代碼中體現的面向對象技術。
  4. 完成作業05-繼承、多態、抽象類與接口中的4. 面向接口案例分析,並上台講解。

第4次任務-面向對象設計迭代改進(購物車需求變更)

目標:

  • 掌握繼承
  • 掌握多態

任務:

  1. 使用子類與繼承體現不同商品的特性:網上商城不同類別的商品有一些共同信息,比如商品名、價格。但有的信息並不相同。比如,書本還要顯示出版信息(出版社、ISBN、作業),電腦要顯示廠商、規格等信息。設計顯示不同商品的頁面,可根據商品的類別顯示不同的信息。請根據改進后的需求重新設計商品類及相關類的繼承架構。
  2. 使用多態、DAO模式為購物車增加不同的存儲方法:購物車可能使用文件存儲商品數據、也可能使用數組或者列表存儲數據。嘗試使用DAO模式實現此功能,使得涉及到存儲相關的代碼可以輕松在兩種存儲模式之間進行切換。請參考作業05-繼承、多態、抽象類與接口中的4. 面向接口案例分析

第5次任務-為購物車添加圖形界面

目標:

  • 掌握圖形界面編程
  • 掌握MVC模式
  • 懂得使用package合理划分包結構。

課堂展示任務:
PPT應按順序包含如下內容:
0. 前期調查。注:是對基於GUI的程序或安卓應用程序的調查,不得包含基於Web程序的調查。

  1. 程序運行視頻。注:不得使用Eclipse啟動,應通過雙擊某個.jar或.exe文件的形式進行啟動。
  2. 使用MVC模式編寫購物車程序。並明確自己的系統中M、V、C各有什么類?以一個完整的功能演示與代碼來說明C如何協調M與V完成該功能。簡述:MVC的好處。
  3. 簡述:對項目中的類使用包進行管理。結合MVC,闡述為什么要這樣分包。見OnlineShop項目模板
  4. 簡述:能否直接復用以前編寫的購物車代碼?在復用以前的購物車代碼時,會碰到什么問題。
  5. 簡述:DAO模式。
  6. 可選:你的git倉庫。

PPT中無需包含:
基於Web的前期調查,系統功能架構圖等。

編程中應避免的情況:

  1. 界面上的動態數據(比如購物車的商品數據)不得直接寫死在代碼。
  2. 盡量避免使用無模式窗體。窗體跳出時,不得出現在左上角。

建議:
使用JTable展示數據。

參考資料:

1 .MVC模式簡介-主要看StudentController是怎樣協調Model與View
2. OnlineShop項目模板
3. JTable常見用法細則
4. JTable案例-Netbeans項目


面向對象簡單案例備選

1.學生管理系統

管理員想管理多個班級與學生,每個班級可以有多個學生、但每個學生只能屬於一個班級。管理員希望可以對學生實現增刪改查。請以面向對象的方式設計這個學生管理系統。
針對上面這段話:找出其中的名詞(對象)與動詞(對象的方法)。
提示:菜單可以單獨設計成一個類,專門用來處理輸入、輸出。
進階:引入課程、成績、老師。

2. 團隊管理迭代改進任務

3. 使用面向對象方式設計QQ、微信、電子郵件系統

任選1題

4. 游戲類

請參考Java第05次實驗提綱(Java圖形界面編程)中的游戲參考資料。


面向對象設計優秀作業

網絡18-基於MySQL的購物車-謝曉淞、李天明、康友煌、嚴威,對MVC與DAO模式有自己的描述。
網絡17-購物車-面向對象設計-余景勝、劉格銘組
網絡17-購物車-GUI-蘭澤祥、吳修恩組
網絡17-購物車-GUI-何昕桐、李志婷、梁琦珧、陳慧琳


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM