餐飲系統(tǒng)大拆解,用類圖拆解套餐和桌臺信息(2)
編輯導(dǎo)讀:UML既是圖,更是個思考工具,能夠提升文檔質(zhì)量。本文作者通過梳理餐廳的套餐和桌臺,來說明類圖的作用,希望對你有幫助。
這是餐廳系統(tǒng)拆解第二篇。在上一篇中,我們用類圖表達(dá)了員工之間的關(guān)系,以及每個員工的工作。有人說這么做沒必要,用腦圖不也一樣嗎?
這是不對的,產(chǎn)品經(jīng)理的文檔考慮不周和不嚴(yán)謹(jǐn),就是因?yàn)闆]有學(xué)會UML,UML既是圖,更是個思考工具,TA能提升你的文檔質(zhì)量。
下面,我們通過梳理餐廳的套餐和桌臺,來說明類圖的作用,并學(xué)習(xí)一些《圖解產(chǎn)品》中未講到的內(nèi)容。同樣閱讀本文需有《圖解產(chǎn)品》一書的知識背景。
01 兩個“多余”的類圖
產(chǎn)品經(jīng)理要給“老夫牛腩”餐廳開發(fā)餐飲軟件,這就要梳理餐廳菜單,并將其用于后臺的菜品管理中。
餐廳是以賣套餐為主,套餐內(nèi)有沙拉、湯、開胃菜、主菜和甜點(diǎn),用類圖表示如下。
產(chǎn)品經(jīng)理還要梳理餐廳的桌臺信息,并用于后臺的餐桌管理中,甩類圖表示如下。
有人認(rèn)為這兩個類圖就是樹狀結(jié)構(gòu),用腦圖也一樣,但這是錯誤的。兩個圖的問題很多,很容易被研發(fā)挑戰(zhàn)。
下面就是女研發(fā)小蒼挑戰(zhàn)男產(chǎn)品經(jīng)理小黃的過程。
02 研發(fā)挑戰(zhàn)產(chǎn)品經(jīng)理
小蒼問:“小黃,行啊,類圖都會畫,但請問他們上菜有沒有先后次序?”
小黃尷尬幾秒,說:“小蒼,不好意思,我沒想到啊,我問問餐廳?!?/p>
小黃趕緊抓起電話問,之后告訴小蒼說:“他們是有上菜順序的,他們是先上開胃菜,再上主菜,之后上甜點(diǎn)?!?/p>
小蒼微微一笑:“辛苦小黃了,再問個問題啊,套餐內(nèi)有沒有二選一的?”
小黃不悅,怎么不一次把話說完?“小蒼,實(shí)在不好意思,我又沒想到啊,我再問問去。”
小黃又抓起電話問,之后又告訴小蒼:“他們上菜是有二選一的,沙拉和湯就要二選一?!?/p>
小蒼最后問:“辛苦小黃了,最后一個問題啊,1個桌子可以屬于N個服務(wù)區(qū)嗎?”
這次小黃憤怒了:“小蒼同學(xué),1個桌子只能屬于1個服務(wù)區(qū)啊,怎么可能屬于N個服務(wù)區(qū)啊!有沒有常識?”
小蒼也怒了:“但你畫的符號是說,1個桌子可以屬于N個服務(wù)區(qū)??!是你錯了!”。
“你這是在找茬!”小黃大怒,摔門而去。
故事講完了,一方面小蒼在有意為難小黃,另一方面也是小黃學(xué)藝不精,總是考慮不周。
為什么小蒼要為難小黃?文末有答案。小黃的問題是什么?下面給出答案。
03 用約束關(guān)系,將事情考慮全
兩個類之間可以有約束關(guān)系,具體說就是有“先后關(guān)系”以及“或的關(guān)系”。
1.先后關(guān)系:套餐要求上開胃菜,再上主菜,再上甜點(diǎn),這三個類就有“先后關(guān)系”,或稱開胃菜先于主菜。
2.或的關(guān)系:套餐中的沙拉和湯兩個菜就要二選一,這兩者就是“或的關(guān)系”。
如何表達(dá)?如下圖所示。
圖中的虛線表達(dá)了兩個類之間有關(guān)系,虛線上的字表達(dá)了具體關(guān)系,可寫上“先于”,“或”等字樣。
回顧小蒼和小黃的對話,如小黃知道類之間還有約束關(guān)系,就不至于丟三拉四。
需要說明的是,UML的標(biāo)準(zhǔn)寫法是“{先于}”,也就是說要加“{}”。UML制造了太多的符號,雖然嚴(yán)謹(jǐn)?shù)珔s讓人困惑,很多專家都反對。所以我的圖中沒有加“{}”,你也不用加。
04 用聚合和組成,將事情考慮準(zhǔn)
《圖解產(chǎn)品》中描述了類的“聚合與組成”,兩者區(qū)別微小,但卻重要??催^書的朋友,想想上圖的問題是什么?沒看過書的朋友,我做個簡單說明。
類之間聚合關(guān)系強(qiáng)調(diào)了兩個類有大與小,整體與部分關(guān)系。如“公司—>部門”和“部門—>員工”就都是聚合關(guān)系。而后臺也要按此設(shè)計,即公司下掛部門,部門下掛員工,而不是反過來。
但是有些聚合是強(qiáng)聚合,這種強(qiáng)聚合被稱為“組成”,組成關(guān)系是說兩者是“同生共死”的。
如桌子和桌腿首先是“聚合”關(guān)系,這表明了兩者的大與小,整體與部分的關(guān)系。但如桌腿沒了,桌子也就不完整,兩者就是同生共死的,更準(zhǔn)確地說兩者是“組成”關(guān)系。
聚合關(guān)系是空心菱形,組成關(guān)系是黑心菱形,分別如下圖。
區(qū)分聚合和組合的原因還是兩者的原型圖會不同。如部門和員工是“聚合”關(guān)系,則員工還可以在其他部門兼職,則要支持員工設(shè)置部門時復(fù)選;如果部門與員工是“組成”關(guān)系,則該員工就不能屬于多個部門,則要支持單選。
而對于本案例,服務(wù)區(qū)與桌子之間顯然是組成關(guān)系,一個桌子不能屬于多個服務(wù)區(qū),這是自然的,但小黃用的卻是聚合關(guān)系。
因此,小蒼才會和小黃確認(rèn)兩個類之間的關(guān)系,避免做錯。聚合和組成的其他知識請見《圖解產(chǎn)品》。
好了,這就是今天的內(nèi)容??傊?,一個類圖可以有或、先后、聚合和組成等關(guān)系,產(chǎn)品經(jīng)理必須都知道,這能讓你考慮周全,用詞準(zhǔn)確,避免研發(fā)返工,并最終指導(dǎo)原型設(shè)計。
TIPS
姜文在拍《鬼子來了》時,日本鬼子都用中學(xué)生,因?yàn)槎?zhàn)日本軍人平均身高不到一米六,如用成人就很別扭,姜文很較真。產(chǎn)品經(jīng)理也應(yīng)對UML較真,從而寫出優(yōu)秀文檔。
相關(guān)閱讀:
餐飲系統(tǒng)大拆解:用類圖拆解員工結(jié)構(gòu)與工作職責(zé)(1)
作者:擎蒼,《“圖解”產(chǎn)品:產(chǎn)品經(jīng)理業(yè)務(wù)設(shè)計與UML建?!纷髡?,公眾號:圖解產(chǎn)品設(shè)計
本文由 @圖解產(chǎn)品設(shè)計 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。
題圖來自Unsplash,基于CC0協(xié)議
按照圖上畫的一個桌子是屬于一個服務(wù)區(qū)啊。一個服務(wù)區(qū)有1至 多個桌子,一個桌子只有一個服務(wù)區(qū)。
UML既是圖,更是個思考工具,TA能提升你的文檔質(zhì)量??偨Y(jié)到位。