2010-04-24 64 views
0

的範圍我可以擁有所有這OO完全錯誤的,但這裏有雲:問題對業務WinForms應用程序C#OOP的概述 - 對象

好吧,場景是一個典型的訂單錄入。

客戶放置OrderLineItems爲StockItems的訂單。訂單由員工輸入。

  1. 應用程序啓動並要求登錄/密碼從MAINMENU形式
  2. 訂單形式打開
  3. 員工選擇「訂單」 ......
  4. 員工選擇客戶
  5. 員工選擇股票添加到OrderLineItems
  6. 選擇second StockItem;添加到OrderLineItems
  7. 訂單承諾,(庫存減少,爲了貼到DB,令打印)
  8. 員工返回到MainMenu的

現在有了對象範圍:

  1. 應用程序,並且要求登錄名/密碼
    • 這是製作objEmployee的最佳地點,在整個銷售應用程序中保留下來嗎?
  2. 員工選擇「訂單」從MAINMENU形式
  3. 訂單形式打開....
    • 讓objOrderHeader,是objEmployee能夠傳遞或者是它創造了這裏,還是在這裏重新創建。
  4. 員工選擇客戶 - 添加/如果需要編輯客戶詳細信息...
    • 讓objCustomer
  5. 員工選擇股票添加到OrderLineItems ...
    • 讓objStockItem和objOrderLineItem - > add to objOrderLineItems_collection
  6. 選擇second StockItem;添加到OrderLineItems ...
    • 讓objStockItem和objOrderLineItem - >添加到objOrderLineItems_collection
  7. 訂單承諾,(庫存減少,爲了貼到DB,訂單打印,訂單輸入者=僱員)
    • 一旦發佈到Db,所有對象現在都是冗餘/垃圾(objEmployee除外?)
  8. 員工返回到MainMenu的
    • 是objEmployee仍然有效爲對象?

回答

1

我遠非一個專家,但你所描述似乎不止一個面向對象的程序的想法。

如果你在思考面向對象的術語,你可能會問一些問題,例如Employee和Customer應該共享一個通用的Person基類,該類定義了Employee可以通過添加Salary屬性和Customer來繼承和擴展的Name,Age和Address屬性可以通過添加CreditCard屬性來擴展。

也許你的Employee和Customer業務對象都會實現一個IStoreable接口,該接口定義了當你想將它們保存/加載到數據庫或從數據庫加載時調用的方法。

也許您會使用CustomerPresenter類來維護對Customer對象的引用,並管理CustomerDetailsForm顯示的用於編輯的方式。對於對象創建而言,我認爲這是應用程序需求所規定的事情,但您不想通過擁有一個也負責創建Customer對象的Employee類來破壞封裝(daft示例),所以有時你會有其他的對象,他們的工作就是在適當的時候管理員工和客戶的創建。