2014-11-21 24 views
0

我是面向對象編程的新手。我正在開發一家雜貨店的軟件。雜貨店有客戶,客戶有地址和訂閱。所有這些在應用程序中都是不同的類。 我有點困惑,應該在哪個類中創建哪種方法,以及如何決定這個方法。 Like viewSubscription()應該是Subscription類或Customer類的一部分。 modifyCustomer()應該是Customer類或Store類的一部分。如何決定課程中的方法

+0

如果這些方法執行任何類型的用戶交互(例如呈現GUI視圖),它們應該完全處於不同的類中。您的「模型」類應該只關注將客戶,地址和訂閱所需的各種數據分組。也許包括一些業務邏輯,如驗證(但也可以進入「控制器」類)。但肯定不是演示代碼。 – Thilo 2014-11-21 04:32:48

+1

您使用哪種用戶界面技術來查看訂閱?如果是桌面GUI或基於Web GUI,可以通過查看[MVC(模型 - 視圖 - 控制器)模式](http://en.wikipedia.org/wiki/Model%E2%80%93view %E2%80%93controller)。我說*開始*因爲它是一個非常大的話題。在這種情況下,您可能會創建一個SubscriptionView類(或頁面,具體取決於您決定使用的技術)來查看訂閱。 – 2014-11-21 04:32:58

+1

查看http://en.wikipedia.org/wiki/Single_responsibility_principle – 2014-11-21 04:40:54

回答

0

面向對象編程的一個想法是將事物分組在一起,這是有意義的。在你的例子中,因爲他們正在處理與客戶相關的信息,所以我可能會將這兩種方法放在Customer類中。

0

方法是行爲,變量是狀態。

什麼可以訂閱?從什麼是製造的懷疑?

Suscription cant查看本身,誰將查看訂閱?一個客戶?

一個懷疑應該是一個類,但是POJO,它是一個州的集合。客戶可以看到這些狀態。

0

OOP可以很容易地分解複雜的問題。你可能想要坐下來做一個你的類與你的類將包含的數據之間關係的模式。這將變得很明顯哪些方法應該去。

爲什麼要查看訂閱應該是訂閱的成員?

總是問你自己這個簡單的問題:查看訂閱什麼?你想做什麼行動。

我打賭你想查看一個客戶的訂閱!使viewSubscription成爲客戶的一種方法! customer1.viewSubscription()

查看UML和OCL。他們會幫助你塑造你的想法。

0

只是一個概述:對象代表了現實生活中的實體可以說,例如汽車,A車有一定的屬性,如它有輪子,一個方向盤,變速箱以及更多的同樣的方式,它有一些行爲,如向前移動,左轉,左轉,停止。 上面提到的所有與汽車相關的東西都與面向對象的編程方法相關,看起來像:我們創建一個類汽車和屬性(車輪,轉向,變速箱等)被定義爲該類中的變量,而行爲(向前移動,左轉,右轉)被定義爲該類別的功能。關於面向對象的規則並沒有硬性規定,您只需使其在邏輯上感覺爲真實生活儘可能例如在您的情況下訂閱班級擁有與訂閱有關的所有信息,並且客戶已訂閱,所以viewSubscription()方法應該進入客戶作爲專用字段的類,因爲它應該獲取並顯示與特定客戶相關的訂閱信息。 modifyCustomer(),因爲它涉及到修改Customer類的數據字段,所以這也將進入客戶類,因爲字段值的所有修改都應該在包含字段的類內完成。