簡體   English   中英

創建媒體收藏經理

[英]creating a media collections manager

嗨,我正在嘗試創建一個程序來管理我下載的電影和電視節目文件。 我想用JAVA編寫它,因為我可以在學校練習這樣做,並且程序需要跨平台,所以我想在Windows / Mac / Linux上運行它。 我要程序執行的操作是讀取文件夾名稱或文件名,然后使用API​​從IMDB / themoviedb.org / theTVDB.org抓取信息。 刮取信息后,應使用XML結構將其保存到.nfo文件中,以便XBMC可以讀取它們並將信息添加到其媒體庫中。 我在學校上過一些UML課程,所以我認為我應該對程序中如何使用信息進行分類,但我不知道自己做的是好還是可以改進。 有誰可以給​​我一些建議嗎? UML類圖。

首先,在設計中沒有對與錯,只有意見。 尋求建議是個好主意,只要記住建議就是您所能得到的-不是正確或錯誤的答案。 也就是說,這是我的一些建議:

1)注意關聯方向和多重性。

目前,您的MovieInfo具有與流派的有向關聯,並且MovieInfo的結束多重性為0..1。 這意味着任何類型的電影最多只能有一部電影,並且您也不能選擇一種類型並找到該類型的所有電影。

如果改為使關聯為雙向,並且兩端的多重性為0 .. *,則更好地對應於電影和流派之間的邏輯關系。

2)不允許設置關鍵特征。

例如,您的流派類包含setGenre()操作,這意味着您可以將電影與流派“恐怖”相關聯,然后將流派本身更改為“浪漫喜劇”。 您很可能不希望發生這種情況,因此應僅在流派構造函數中設置流派名稱。

3)更多課程!

為您的信息空間中的每個概念創建一個單獨的類是一個好主意。 現在,您正在使用簡單的字符串來表示工作室,導演等,這意味着,如果要查找某個工作室放映的所有電影,則必須遍歷所有電影並檢查其“工作室”字段個別地。

當前的設計也使得在涉及多個工作室的情況下進行聯合制作變得非常困難。

相反,您應該像對Actor和Genre一樣創建單獨的類。

4)將演員更改為人物。

有些人在某些電影中是演員,在另一些電影中是導演,在某些電影中是制片人……但是,如果為演員,導演等創建單獨的類,則最終會出現同一個人由不同類的多個實例表示的情況。很亂

如果改而創建一個單獨的類Person,與名為actorIn的Movie關聯為0 .. *,向名為DirectorOf的Movie關聯為另一個0 .. *,則可以解決此問題。 是的,在相同的兩個類之間可以有幾個單獨的關聯。

5)將信息模型與實現模型分開。

信息模型描述了概念及其關系,實現模型是用於實現所需功能的代碼實體的模型。 在這種情況下,get()和set()例程是實現模型的一部分; 他們沒有添加任何信息模型。

進入實現模型后,您就可以開始考慮實現問題,例如“我是否真的希望能夠任意設置電影的播放次數,而不僅僅是想增加影片的播放次數?一?”

好的,希望對您有所幫助。 請記住,這都是個人觀點,祝您好運。


第2部分-在《宙斯盾》評論7月30日添加:

您在這里提出了一個非常大的問題,它比通用的Java或UML更具通用軟件工程領域。

在大型或復雜的系統中,通常使用域模型。 這描述了系統存在的上下文。 在您的情況下,域模型將包含IMDB之類的內容,但其中將不包含Actor,因為您的系統將不會與任何actor通信。

另一方面,信息模型描述了系統管理的信息以及不同信息實體之間的關系。 信息實體可以表示某些領域對象,但是它們不需要,也不需要在信息模型中表示所有領域對象。 您在更新的圖中擁有信息模型的起點。

領域模型和信息模型都有助於定義或解釋系統。 它們不直接用於生成代碼或類似的東西。 他們在那里可以幫助您討論和理解系統及其部分。 它們之所以是單獨的模型,是因為系統設計是一個復雜的過程,並且如果您一次只關注一個方面,則有助於簡化事務。 同樣,UML語言家族本身也沒有“方面”的概念,這意味着您不能以簡單的方式描述同一事物的不同方面。 因此針對不同方面使用了單獨的模型。

實施之后,您需要做的一件事就是管理信息。 同樣,您創建的要做的類不需要直接與信息模型中的類相對應,但是在這里您需要確保正確實現所有信息概念和關系。

綜上所述,在任何項目中,您始終需要在編寫規范和完成工作之間以及在指定系統的不同方面之間找到​​適當的平衡。 信息管理只是一個方面,還有很多其他方面,例如通信,錯誤管理,線程化等。

對於任何文檔(UML模型是文檔的一種),您都應該始終牢記目標讀者:您需要告訴他們什么,以及如何構造消息以使其盡可能清晰地傳達出來? 如果目標受眾是您本人,則可能是您指定得過多-盡管將自己的想法記在紙上(或模型中)以檢查自己並確保自己的想法總是一個好主意。並不是試圖在某處除以零。

請注意,我不是要勸阻您。 如果您在該項目中的目標之一是學習UML,那么您一切都很好。 請注意,建模會誘使您思考,只要模型完整且一致,代碼就會自行編寫。 不會的,在您進入代碼之前,總會有一些大問題不讓自己知道。 如果您花大量時間進行指定和建模只是為了意識到它不能解決這些大問題,那么您可能會厭倦整個事情,將其丟掉,這很可惜。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM