對於一個作業,我做了一個簡單的C++程序,它使用超類(Student)和兩個子類(CourseStudent
和ResearchStudent
)來存儲學生列表並打印出詳細信息,針對兩種不同類型的學生所示的不同細節(使用從Student
覆蓋display()
方法)。封裝一個類的用戶輸入數據
我的問題是關於如何計劃從東西,如學生姓名,身份證號碼,單位和費用信息(爲一個療程學生)收集用戶輸入和研究信息(研究生):
我實現具有對用戶輸入的提示以及收集在類自身內處理的輸入。這背後的原因是每個班級都知道它需要什麼類型的輸入,所以讓我知道如何請求它是有意義的(給定一個ostream通過它詢問並從中收集輸入)。
我的講師說,提示和輸入都應該在主程序中處理,這在我看來似乎有點混亂,並且會使擴展程序來處理不同類型的學生更加棘手。
我正在考慮作爲一種折衷辦法,爲每個類型的Student
提供一個輔助類,以處理用戶輸入的提示和收集,然後可以由主程序調用該類。這樣做的好處是學生類沒有那麼多(因此他們更乾淨),但是如果需要輸入功能,他們也可以與幫助類捆綁在一起。這也意味着可以添加更多的Student
類,而不必對主程序進行重大更改,只要爲這些新類提供了輔助類。此外,輔助類可以替換爲另一種語言版本,而無需對類本身進行任何更改。
什麼是用戶輸入(全封閉,輔助類或者在主程序)的三個不同的選項的主要優點和缺點?
閱讀MVC(模型 - 視圖 - 控制器)分離的一點。在你的情況下,類是模型,讀取輸入的主要方法(或助手類)將是控制器。 – vladr 2010-04-01 00:02:10
我聽說過MVC架構,我想現在是騰出時間學習和應用它的時候了。 在這種情況下,'View'部分由Student類(和子類)的display()方法處理,以及處理菜單選項等的main方法。有一個提示學生提供詳細信息並顯示它們的觀察器類,或者這是人爲的分離(或者對於這樣一個小型項目不是必需的),會更合適嗎? – 2010-04-01 00:14:39