锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
●Associate錛堝叧鑱旓級(jí)錛氱被涔嬮棿鏈夊叧鑱旓紝閫氬父鏄綔涓哄彉閲忓瓨鍦紱
●Aggregate(鑱氬悎)錛氱被A鍖呭惈綾籅鎴栫敱綾籅緇勬垚錛?/p>
●Compose錛堢粍鍚堬級(jí)錛氱被A鏄敱鍏朵粬綾葷粍鎴愶紱
●Dependency錛堜緷璧栵級(jí)錛氱被A闇瑕佺被B鐨勫崗鍔╋紝綾籅鍙樺寲浼?xì)濯?jiǎng)鍝嶇被A,鍙嶈繃鏉ヤ笉鎴愮珛錛?/p>
●Generalize錛堟硾鍖栵級(jí)錛氫竴鑸埌鍏蜂綋鐨勫叧緋伙紱
●Realize錛堝疄鐜幫級(jí)錛氱被A瀹炵幇綾籅錛?/p>
娉ㄦ剰錛氬叾涓紝鑱氬悎錛岀粍鎴愬睘浜庡叧鑱斿叧緋伙紝娉涘寲鍏崇郴琛ㄧ幇涓虹戶鎵挎垨瀹炵幇鍏崇郴(is a)錛屽叧鑱斿叧緋昏〃鐜頒負(fù)鍙橀噺(has a )錛屼緷璧栧叧緋昏〃鐜頒負(fù)鍑芥暟涓殑鍙傛暟(use a)銆?/p>
1.鍏寵仈(Associate)
琛ㄧず鏂規(guī)硶錛?綆ご錛嬪疄綰匡紝綆ご鎸囧悜琚嬌鐢ㄧ殑綾伙紱
緋葷粺鍥炬爣錛?img src="http://m.shnenglu.com/images/cppblog_com/api/a.gif" border="0" alt="" width="131" height="18" />
浣跨敤璇存槑錛氱被涓庣被涔嬮棿鐨勮仈鎺ワ紝瀹冧嬌涓涓被鐭ラ亾鍙︿竴涓被鐨勫睘鎬у拰鏂規(guī)硶錛屽涓嬪浘鎵紺猴細(xì)

2. 鑱氬悎鍏崇郴錛圓ggregation錛?/p>
琛ㄧず鏂規(guī)硶錛氱┖蹇冭彵褰紜瀹炵嚎錛岀┖蹇冭彵褰㈡寚鍚戞暣浣?/p>
緋葷粺鍥炬爣錛?img src="http://pic002.cnblogs.com/img/allanbolt/200912/2009122416523521.gif" alt="" style="border: 0px; max-width: 100%; margin: 0px; padding: 0px;" />
浣跨敤璇存槑錛氳仛鍚堝叧緋繪槸鏁翠綋鍜屼釜浣撶殑鍏崇郴銆備笅鍥懼簲鐢ㄧ▼搴忚仛鍚堝姛鑳芥ā鍧楋紝浣嗘槸鍔熻兘妯″潡鍙互紱誨紑搴旂敤紼嬪簭鑰岀嫭绔嬪瓨鍦紝濡備笅鍥炬墍紺猴細(xì)
3. 緇勫悎鍏崇郴錛圕omposition錛?/p>
琛ㄧず鏂規(guī)硶錛氬疄蹇冭彵褰紜瀹炵嚎銆瀹炲績鑿卞艦鎸囧悜鏁翠綋
緋葷粺鍥炬爣錛?img src="http://pic002.cnblogs.com/img/allanbolt/200912/2009122416530521.gif" alt="" style="border: 0px; max-width: 100%; margin: 0px; padding: 0px;" />
浣跨敤璇存槑錛氭槸鍏寵仈鍏崇郴鐨勪竴縐嶏紝鏄瘮鑱氬悎鍏崇郴寮虹殑鍏崇郴銆傚畠瑕佹眰鏅氱殑鑱氬悎鍏崇郴涓唬琛ㄦ暣浣撶殑瀵硅薄璐熻矗浠h〃閮ㄥ垎鐨勫璞$殑鐢熷懡鍛ㄦ湡錛屼笅鍥懼姛鑳芥ā鍧楃粍鍚堟搷浣滄柟娉曪紝榪欎釜鎿嶄綔鏂規(guī)硶涓嶈兘鑴辯鍔熻兘妯″潡鍗曠嫭鐨勫瓨鍦紝鍔熻兘妯″潡娑堝け鍚庢搷浣滄柟娉曚篃闅忓嵆娑堝け錛?/p>
4. 渚濊禆(Dependency)
琛ㄧず鏂規(guī)硶錛氳櫄綰匡紜綆ご銆綆ご鎸囧悜琚緷璧栫被錛?/p>
緋葷粺鍥炬爣錛?img src="http://pic002.cnblogs.com/img/allanbolt/200912/2009122416534398.gif" alt="" style="border: 0px; max-width: 100%; margin: 0px; padding: 0px;" />
浣跨敤璇存槑錛氬鏋滅被A璁塊棶綾籅鐨勫睘鎬ф垨鑰呮柟娉曪紝鎴栬呯被A璐熻矗瀹炰緥鍖栫被B錛岄偅涔堝彲浠ヨ綾籄渚濊禆綾籅銆傚拰鍏寵仈鍏崇郴涓嶅悓錛屾棤欏誨湪綾籄涓畾涔夌被B綾誨瀷鐨勫睘鎬э細(xì)
5. 娉涘寲(Generalization)
琛ㄧず鏂規(guī)硶錛氬疄綰匡紜涓夎綆ご銆涓夎綆ご鎸囧悜涓鑸被錛?/p>
緋葷粺鍥炬爣錛?img src="http://pic002.cnblogs.com/img/allanbolt/200912/2009122416540576.gif" alt="" style="border: 0px; max-width: 100%; margin: 0px; padding: 0px;" />
浣跨敤璇存槑錛氫袱涓被瀛樺湪娉涘寲鐨勫叧緋繪椂灝變嬌鐢ㄦ鍏崇郴錛屼緥濡傜埗鍜屽瓙錛屽姩鐗╁拰鑰佽檸錛屾鐗╁拰鑺辯瓑錛屽湪闈㈠悜瀵硅薄涓紝鎴戜滑涓鑸О涔嬩負(fù)緇ф壙鍏崇郴錛?/p>
6. 瀹炵幇(Realization)
琛ㄧず鏂規(guī)硶錛氳櫄綰匡紜涓夎綆ご銆涓夎綆ご鎸囧悜涓鑸被錛?/p>
緋葷粺鍥炬爣錛?img src="http://pic002.cnblogs.com/img/allanbolt/200912/2009122416544554.gif" alt="" style="border: 0px; max-width: 100%; margin: 0px; padding: 0px;" />
浣跨敤璇存槑錛氱被瀹炵幇浜嗗彟涓涓被鐨勫姛鑳斤紝涓鑸〃鐜板湪綾葷戶鎵挎帴鍙d笂錛屽涓嬪浘錛?/p>

浣滆咃細(xì)鍒樹紵 錛屽彂甯冧簬錛?012-11-23錛屾潵婧愶細(xì)CSDN
|
鍦║ML 2.0鐨?3縐嶅浘褰腑錛岀被鍥炬槸浣跨敤棰戠巼鏈楂樼殑UML鍥句箣涓銆侻artin Fowler鍦ㄥ叾钁椾綔銆奤ML Distilled: A Brief Guide to the Standard Object Modeling Language, Third Edition銆嬶紙銆奤ML綺劇補(bǔ)錛氭爣鍑嗗璞″緩妯¤璦綆鏄庢寚鍗楋紙絎?鐗堬級(jí)銆嬶級(jí)涓湁榪欎箞涓孌碉細(xì)“If someone were to come up to you in a dark alley and say, 'Psst, wanna see a UML diagram?' that diagram would probably be a class diagram. The majority of UML diagrams I see are class diagrams.”錛?#8220;濡傛灉鏈変漢鍦ㄩ粦鏆楃殑灝忓販涓悜浣犺蛋鏉ュ茍瀵逛綘璇達(dá)細(xì)‘鍢匡紝鎯充笉鎯崇湅涓寮燯ML鍥撅紵’閭d箞榪欏紶鍥懼緢鏈夊彲鑳藉氨鏄竴寮犵被鍥撅紝鎴戞墍瑙佽繃鐨勫ぇ閮ㄥ垎鐨刄ML鍥鵑兘鏄被鍥?#8221;錛夛紝鐢辨鍙綾誨浘鐨勯噸瑕佹с? 綾誨浘鐢ㄤ簬鎻忚堪緋葷粺涓墍鍖呭惈鐨勭被浠ュ強(qiáng)瀹冧滑涔嬮棿鐨勭浉浜掑叧緋伙紝甯姪浜轟滑綆鍖栧緋葷粺鐨勭悊瑙o紝瀹冩槸緋葷粺鍒嗘瀽鍜岃璁¢樁孌電殑閲嶈浜х墿錛屼篃鏄郴緇熺紪鐮佸拰嫻嬭瘯鐨勯噸瑕佹ā鍨嬩緷鎹?/p> 1. 綾?/p> 綾?Class)灝佽浜嗘暟鎹拰琛屼負(fù)錛屾槸闈㈠悜瀵硅薄鐨勯噸瑕佺粍鎴愰儴鍒嗭紝瀹冩槸鍏鋒湁鐩稿悓灞炴с佹搷浣溿佸叧緋葷殑瀵硅薄闆嗗悎鐨勬葷О銆傚湪緋葷粺涓紝姣忎釜綾婚兘鍏鋒湁涓瀹氱殑鑱岃矗錛岃亴璐f寚鐨勬槸綾昏瀹屾垚浠涔堟牱鐨勫姛鑳斤紝瑕佹壙鎷呬粈涔堟牱鐨勪箟鍔°備竴涓被鍙互鏈夊縐嶈亴璐o紝璁捐寰楀ソ鐨勭被涓鑸彧鏈変竴縐嶈亴璐c傚湪瀹氫箟綾葷殑鏃跺欙紝灝嗙被鐨勮亴璐e垎瑙f垚涓虹被鐨勫睘鎬у拰鎿嶄綔錛堝嵆鏂規(guī)硶錛夈傜被鐨勫睘鎬у嵆綾葷殑鏁版嵁鑱岃矗錛岀被鐨勬搷浣滃嵆綾葷殑琛屼負(fù)鑱岃矗銆傝璁$被鏄潰鍚戝璞¤璁′腑鏈閲嶈鐨勭粍鎴愰儴鍒嗭紝涔熸槸鏈澶嶆潅鍜屾渶鑰楁椂鐨勯儴鍒嗐?/p> 鍦ㄨ蔣浠剁郴緇熻繍琛屾椂錛岀被灝嗚瀹炰緥鍖栨垚瀵硅薄(Object)錛屽璞″搴斾簬鏌愪釜鍏蜂綋鐨勪簨鐗╋紝鏄被鐨勫疄渚?Instance)銆?/p> 綾誨浘(Class Diagram)浣跨敤鍑虹幇鍦ㄧ郴緇熶腑鐨勪笉鍚岀被鏉ユ弿榪扮郴緇熺殑闈欐佺粨鏋勶紝瀹冪敤鏉ユ弿榪頒笉鍚岀殑綾諱互鍙?qiáng)瀹冧滑涔嬮棿鐨勫叧绯汇?/p> 鍦ㄧ郴緇熷垎鏋愪笌璁捐闃舵錛岀被閫氬父鍙互鍒嗕負(fù)涓夌錛屽垎鍒槸瀹炰綋綾?Entity Class)銆佹帶鍒剁被(Control Class)鍜岃竟鐣岀被(Boundary Class)錛屼笅闈㈠榪欎笁縐嶇被鍔犱互綆瑕佽鏄庯細(xì) (1) 瀹炰綋綾伙細(xì)瀹炰綋綾誨搴旂郴緇熼渶姹備腑鐨勬瘡涓疄浣擄紝瀹冧滑閫氬父闇瑕佷繚瀛樺湪姘鎬箙瀛樺偍浣撲腑錛屼竴鑸嬌鐢ㄦ暟鎹簱琛ㄦ垨鏂囦歡鏉ヨ褰曪紝瀹炰綋綾繪棦鍖呮嫭瀛樺偍鍜屼紶閫掓暟鎹殑綾伙紝榪樺寘鎷搷浣滄暟鎹殑綾匯傚疄浣撶被鏉ユ簮浜庨渶姹傝鏄庝腑鐨勫悕璇嶏紝濡傚鐢熴佸晢鍝佺瓑銆?/p> (2) 鎺у埗綾伙細(xì)鎺у埗綾葷敤浜庝綋鐜板簲鐢ㄧ▼搴忕殑鎵ц閫昏緫錛屾彁渚涚浉搴旂殑涓氬姟鎿嶄綔錛屽皢鎺у埗綾繪娊璞″嚭鏉ュ彲浠ラ檷浣庣晫闈㈠拰鏁版嵁搴撲箣闂寸殑鑰﹀悎搴︺傛帶鍒剁被涓鑸槸鐢卞姩瀹劇粨鏋勭殑鐭錛堝姩璇?鍚嶈瘝錛夎漿鍖栨潵鐨勫悕璇嶏紝濡傚鍔犲晢鍝佸搴旀湁涓涓晢鍝佸鍔犵被錛屾敞鍐屽搴旀湁涓涓敤鎴鋒敞鍐岀被絳?/p> (3) 杈圭晫綾伙細(xì)杈圭晫綾葷敤浜庡澶栭儴鐢ㄦ埛涓庣郴緇熶箣闂寸殑浜や簰瀵硅薄榪涜鎶借薄錛屼富瑕佸寘鎷晫闈㈢被錛屽瀵硅瘽妗嗐佺獥鍙c佽彍鍗曠瓑銆?/p> 鍦ㄩ潰鍚戝璞″垎鏋愬拰璁捐鐨勫垵綰ч樁孌碉紝閫氬父棣栧厛璇嗗埆鍑哄疄浣撶被錛岀粯鍒跺垵濮嬬被鍥撅紝姝ゆ椂鐨勭被鍥句篃鍙О涓洪鍩熸ā鍨嬶紝鍖呮嫭瀹炰綋綾誨強(qiáng)鍏跺畠浠箣闂寸殑鐩鎬簰鍏崇郴銆?/p> 2. 綾葷殑UML鍥劇ず 鍦║ML涓紝綾諱嬌鐢ㄥ寘鍚被鍚嶃佸睘鎬у拰鎿嶄綔涓斿甫鏈夊垎闅旂嚎鐨勯暱鏂瑰艦鏉ヨ〃紺猴紝濡傚畾涔変竴涓狤mployee綾伙紝瀹冨寘鍚睘鎬ame銆乤ge鍜宔mail錛屼互鍙?qiáng)鎿嶄綔modifyInfo()錛屽湪UML綾誨浘涓綾誨鍥?鎵紺猴細(xì)
鍥? 綾葷殑UML鍥劇ず 鍥?瀵瑰簲鐨凧ava浠g爜鐗囨濡備笅錛?/p>
鍦║ML綾誨浘涓紝綾諱竴鑸敱涓夐儴鍒嗙粍鎴愶細(xì) (1) 絎竴閮ㄥ垎鏄被鍚嶏細(xì)姣忎釜綾婚兘蹇呴』鏈変竴涓悕瀛楋紝綾誨悕鏄竴涓瓧絎︿覆銆?/p> (2) 絎簩閮ㄥ垎鏄被鐨勫睘鎬?Attributes)錛氬睘鎬ф槸鎸囩被鐨勬ц川錛屽嵆綾葷殑鎴愬憳鍙橀噺銆備竴涓被鍙互鏈変換鎰忓涓睘鎬э紝涔熷彲浠ユ病鏈夊睘鎬?/p> UML瑙勫畾灞炴х殑琛ㄧず鏂瑰紡涓猴細(xì) 鍙鎬?鍚嶇О:綾誨瀷 [ = 緙虹渷鍊?] 鍏朵腑錛?/p>
(3) 絎笁閮ㄥ垎鏄被鐨勬搷浣?Operations)錛氭搷浣滄槸綾葷殑浠繪剰涓涓疄渚嬪璞¢兘鍙互浣跨敤鐨勮涓猴紝鏄被鐨勬垚鍛樻柟娉曘?/p> UML瑙勫畾鎿嶄綔鐨勮〃紺烘柟寮忎負(fù)錛?/p> 鍙鎬?鍚嶇О(鍙傛暟鍒楄〃) [ : 榪斿洖綾誨瀷] 鍏朵腑錛?/p>
鍦ㄧ被鍥?涓紝鎿嶄綔method1鐨勫彲瑙佹т負(fù)public(+)錛屽甫鍏ヤ簡涓涓狾bject綾誨瀷鐨勫弬鏁皃ar錛岃繑鍥炲間負(fù)絀?void)錛涙搷浣渕ethod2鐨勫彲瑙佹т負(fù)protected(#)錛屾棤鍙傛暟錛岃繑鍥炲間負(fù)String綾誨瀷錛涙搷浣渕ethod3鐨勫彲瑙佹т負(fù)private(-)錛屽寘鍚袱涓弬鏁幫紝鍏朵腑涓涓弬鏁頒負(fù)int綾誨瀷錛屽彟涓涓負(fù)int[]綾誨瀷錛岃繑鍥炲間負(fù)int綾誨瀷銆?/p>
鍥? 綾誨浘鎿嶄綔璇存槑紺烘剰鍥?/p> 鐢變簬鍦↗ava璇█涓厑璁稿嚭鐜板唴閮ㄧ被錛屽洜姝ゅ彲鑳戒細(xì)鍑虹幇鍖呭惈鍥涗釜閮ㄥ垎鐨勭被鍥撅紝濡傚浘3鎵紺猴細(xì)
鍥? 鍖呭惈鍐呴儴綾葷殑綾誨浘 綾諱笌綾諱箣闂寸殑鍏崇郴錛?錛?/p> 鍦ㄨ蔣浠剁郴緇熶腑錛岀被騫朵笉鏄绔嬪瓨鍦ㄧ殑錛岀被涓庣被涔嬮棿瀛樺湪鍚勭鍏崇郴錛屽浜庝笉鍚岀被鍨嬬殑鍏崇郴錛孶ML鎻愪緵浜嗕笉鍚岀殑琛ㄧず鏂瑰紡銆?/p> 1. 鍏寵仈鍏崇郴 鍏寵仈(Association)鍏崇郴鏄被涓庣被涔嬮棿鏈甯哥敤鐨勪竴縐嶅叧緋伙紝瀹冩槸涓縐嶇粨鏋勫寲鍏崇郴錛岀敤浜庤〃紺轟竴綾誨璞′笌鍙︿竴綾誨璞′箣闂存湁鑱旂郴錛屽姹借濺鍜岃疆鑳庛佸笀鍌呭拰寰掑紵銆佺彮綰у拰瀛︾敓絳夌瓑銆傚湪UML綾誨浘涓紝鐢ㄥ疄綰胯繛鎺ユ湁鍏寵仈鍏崇郴鐨勫璞℃墍瀵瑰簲鐨勭被錛屽湪浣跨敤Java銆丆#鍜孋++絳夌紪紼嬭璦瀹炵幇鍏寵仈鍏崇郴鏃訛紝閫氬父灝嗕竴涓被鐨勫璞′綔涓哄彟涓涓被鐨勬垚鍛樺彉閲忋傚湪浣跨敤綾誨浘琛ㄧず鍏寵仈鍏崇郴鏃跺彲浠ュ湪鍏寵仈綰夸笂鏍囨敞瑙掕壊鍚嶏紝涓鑸嬌鐢ㄤ竴涓〃紺轟袱鑰呬箣闂村叧緋葷殑鍔ㄨ瘝鎴栬呭悕璇嶈〃紺鴻鑹插悕錛堟湁鏃惰鍚嶈瘝涓哄疄渚嬪璞″悕錛夛紝鍏崇郴鐨勪袱绔唬琛ㄤ袱縐嶄笉鍚岀殑瑙掕壊錛屽洜姝ゅ湪涓涓叧鑱斿叧緋諱腑鍙互鍖呭惈涓や釜瑙掕壊鍚嶏紝瑙掕壊鍚嶄笉鏄繀欏葷殑錛屽彲浠ユ牴鎹渶瑕佸鍔狅紝鍏剁洰鐨勬槸浣跨被涔嬮棿鐨勫叧緋繪洿鍔犳槑紜?/p> 濡傚湪涓涓櫥褰曠晫闈㈢被LoginForm涓寘鍚竴涓狫Button綾誨瀷鐨勬敞鍐屾寜閽甽oginButton錛屽畠浠箣闂村彲浠ヨ〃紺轟負(fù)鍏寵仈鍏崇郴錛屼唬鐮佸疄鐜版椂鍙互鍦↙oginForm涓畾涔変竴涓悕涓簂oginButton鐨勫睘鎬у璞★紝鍏剁被鍨嬩負(fù)JButton銆傚鍥?鎵紺猴細(xì)
鍥? 鍏寵仈鍏崇郴瀹炰緥 鍥?瀵瑰簲鐨凧ava浠g爜鐗囨濡備笅錛?/p>
鍦║ML涓紝鍏寵仈鍏崇郴閫氬父鍙堝寘鍚涓嬪嚑縐嶅艦寮忥細(xì) (1) 鍙屽悜鍏寵仈 榛樿鎯呭喌涓嬶紝鍏寵仈鏄弻鍚戠殑銆備緥濡傦細(xì)欏懼(Customer)璐拱鍟嗗搧(Product)騫舵嫢鏈夊晢鍝侊紝鍙嶄箣錛屽崠鍑虹殑鍟嗗搧鎬繪湁鏌愪釜欏懼涓庝箣鐩稿叧鑱斻傚洜姝わ紝Customer綾誨拰Product綾諱箣闂村叿鏈夊弻鍚戝叧鑱斿叧緋伙紝濡傚浘2鎵紺猴細(xì)
鍥? 鍙屽悜鍏寵仈瀹炰緥 鍥?瀵瑰簲鐨凧ava浠g爜鐗囨濡備笅錛?/p>
(2) 鍗曞悜鍏寵仈 綾葷殑鍏寵仈鍏崇郴涔熷彲浠ユ槸鍗曞悜鐨勶紝鍗曞悜鍏寵仈鐢ㄥ甫綆ご鐨勫疄綰胯〃紺恒備緥濡傦細(xì)欏懼(Customer)鎷ユ湁鍦板潃(Address)錛屽垯C(jī)ustomer綾諱笌Address綾誨叿鏈夊崟鍚戝叧鑱斿叧緋伙紝濡傚浘3鎵紺猴細(xì)
鍥? 鍗曞悜鍏寵仈瀹炰緥 鍥?瀵瑰簲鐨凧ava浠g爜鐗囨濡備笅錛?/p>
(3) 鑷叧鑱?/strong> 鍦ㄧ郴緇熶腑鍙兘浼?xì)瀛樺湪涓浜涚被鐨勫睘鎬у璞$被鍨嬩負(fù)璇ョ被鏈韓錛岃繖縐嶇壒孌婄殑鍏寵仈鍏崇郴縐頒負(fù)鑷叧鑱斻備緥濡傦細(xì)涓涓妭鐐圭被(Node)鐨勬垚鍛樺張鏄妭鐐筃ode綾誨瀷鐨勫璞★紝濡傚浘4鎵紺猴細(xì)
鍥? 鑷叧鑱斿疄渚?/p> 鍥?瀵瑰簲鐨凧ava浠g爜鐗囨濡備笅錛?/p>
(4) 澶氶噸鎬у叧鑱?/strong> 澶氶噸鎬у叧鑱斿叧緋誨張縐頒負(fù)閲嶆暟鎬?Multiplicity)鍏寵仈鍏崇郴錛岃〃紺轟袱涓叧鑱斿璞″湪鏁伴噺涓婄殑瀵瑰簲鍏崇郴銆傚湪UML涓紝瀵硅薄涔嬮棿鐨勫閲嶆у彲浠ョ洿鎺ュ湪鍏寵仈鐩寸嚎涓婄敤涓涓暟瀛楁垨涓涓暟瀛楄寖鍥磋〃紺恒?/p> 瀵硅薄涔嬮棿鍙互瀛樺湪澶氱澶氶噸鎬у叧鑱斿叧緋伙紝甯歌鐨勫閲嶆ц〃紺烘柟寮忓琛?鎵紺猴細(xì) 琛? 澶氶噸鎬ц〃紺烘柟寮忓垪琛?/p>
渚嬪錛氫竴涓晫闈?Form)鍙互鎷ユ湁闆朵釜鎴栧涓寜閽?Button)錛屼絾鏄竴涓寜閽彧鑳藉睘浜庝竴涓晫闈紝鍥犳錛屼竴涓狥orm綾葷殑瀵硅薄鍙互涓庨浂涓垨澶氫釜Button綾葷殑瀵硅薄鐩稿叧鑱旓紝浣嗕竴涓狟utton綾葷殑瀵硅薄鍙兘涓庝竴涓狥orm綾葷殑瀵硅薄鍏寵仈錛屽鍥?鎵紺猴細(xì)
鍥? 澶氶噸鎬у叧鑱斿疄渚?/p> 鍥?瀵瑰簲鐨凧ava浠g爜鐗囨濡備笅錛?/p>
(5) 鑱氬悎鍏崇郴 鑱氬悎(Aggregation)鍏崇郴琛ㄧず鏁翠綋涓庨儴鍒嗙殑鍏崇郴銆傚湪鑱氬悎鍏崇郴涓紝鎴愬憳瀵硅薄鏄暣浣撳璞$殑涓閮ㄥ垎錛屼絾鏄垚鍛樺璞″彲浠ヨ劚紱繪暣浣撳璞$嫭绔嬪瓨鍦ㄣ傚湪UML涓紝鑱氬悎鍏崇郴鐢ㄥ甫絀哄績鑿卞艦鐨勭洿綰胯〃紺恒備緥濡傦細(xì)姹借濺鍙戝姩鏈?Engine)鏄苯杞?Car)鐨勭粍鎴愰儴鍒嗭紝浣嗘槸姹借濺鍙戝姩鏈哄彲浠ョ嫭绔嬪瓨鍦紝鍥犳錛屾苯杞﹀拰鍙戝姩鏈烘槸鑱氬悎鍏崇郴錛屽鍥?鎵紺猴細(xì)
鍥? 鑱氬悎鍏崇郴瀹炰緥 鍦ㄤ唬鐮佸疄鐜拌仛鍚堝叧緋繪椂錛屾垚鍛樺璞¢氬父浣滀負(fù)鏋勯犳柟娉曘丼etter鏂規(guī)硶鎴栦笟鍔℃柟娉曠殑鍙傛暟娉ㄥ叆鍒版暣浣撳璞′腑錛屽浘6瀵瑰簲鐨凧ava浠g爜鐗囨濡備笅錛?/p>
(6) 緇勫悎鍏崇郴 緇勫悎(Composition)鍏崇郴涔熻〃紺虹被涔嬮棿鏁翠綋鍜岄儴鍒嗙殑鍏崇郴錛屼絾鏄湪緇勫悎鍏崇郴涓暣浣撳璞″彲浠ユ帶鍒舵垚鍛樺璞$殑鐢熷懡鍛ㄦ湡錛屼竴鏃︽暣浣撳璞′笉瀛樺湪錛屾垚鍛樺璞′篃灝嗕笉瀛樺湪錛屾垚鍛樺璞′笌鏁翠綋瀵硅薄涔嬮棿鍏鋒湁鍚岀敓鍏辨鐨勫叧緋匯傚湪UML涓紝緇勫悎鍏崇郴鐢ㄥ甫瀹炲績鑿卞艦鐨勭洿綰胯〃紺恒備緥濡傦細(xì)浜虹殑澶?Head)涓庡槾宸?Mouth)錛屽槾宸存槸澶寸殑緇勬垚閮ㄥ垎涔嬩竴錛岃屼笖濡傛灉澶存病浜嗭紝鍢村反涔熷氨娌′簡錛屽洜姝ゅご鍜屽槾宸存槸緇勫悎鍏崇郴錛屽鍥?鎵紺猴細(xì)
鍥? 緇勫悎鍏崇郴瀹炰緥 鍦ㄤ唬鐮佸疄鐜扮粍鍚堝叧緋繪椂錛岄氬父鍦ㄦ暣浣撶被鐨勬瀯閫犳柟娉曚腑鐩存帴瀹炰緥鍖栨垚鍛樼被錛屽浘7瀵瑰簲鐨凧ava浠g爜鐗囨濡備笅錛?/p>
綾諱笌綾諱箣闂寸殑鍏崇郴錛?錛?/p> 2. 渚濊禆鍏崇郴 渚濊禆(Dependency)鍏崇郴鏄竴縐嶄嬌鐢ㄥ叧緋伙紝鐗瑰畾浜嬬墿鐨勬敼鍙樻湁鍙兘浼?xì)濯?jiǎng)鍝嶅埌浣跨敤璇ヤ簨鐗╃殑鍏朵粬浜嬬墿錛屽湪闇瑕佽〃紺轟竴涓簨鐗╀嬌鐢ㄥ彟涓涓簨鐗╂椂浣跨敤渚濊禆鍏崇郴銆傚ぇ澶氭暟鎯呭喌涓嬶紝渚濊禆鍏崇郴浣撶幇鍦ㄦ煇涓被鐨勬柟娉曚嬌鐢ㄥ彟涓涓被鐨勫璞′綔涓哄弬鏁般傚湪UML涓紝渚濊禆鍏崇郴鐢ㄥ甫綆ご鐨勮櫄綰胯〃紺猴紝鐢變緷璧栫殑涓鏂規(guī)寚鍚戣渚濊禆鐨勪竴鏂廣備緥濡傦細(xì)椹鵑┒鍛樺紑杞︼紝鍦―river綾葷殑drive()鏂規(guī)硶涓皢Car綾誨瀷鐨勫璞ar浣滀負(fù)涓涓弬鏁頒紶閫掞紝浠ヤ究鍦╠rive()鏂規(guī)硶涓兘澶熻皟鐢╟ar鐨刴ove()鏂規(guī)硶錛屼笖椹鵑┒鍛樼殑drive()鏂規(guī)硶渚濊禆杞︾殑move()鏂規(guī)硶錛屽洜姝ょ被Driver渚濊禆綾籆ar錛屽鍥?鎵紺猴細(xì)
鍥? 渚濊禆鍏崇郴瀹炰緥 鍦ㄧ郴緇熷疄鏂介樁孌碉紝渚濊禆鍏崇郴閫氬父閫氳繃涓夌鏂瑰紡鏉ュ疄鐜幫紝絎竴縐嶄篃鏄渶甯哥敤鐨勪竴縐嶆柟寮忔槸濡傚浘1鎵紺虹殑灝嗕竴涓被鐨勫璞′綔涓哄彟涓涓被涓柟娉曠殑鍙傛暟錛岀浜岀鏂瑰紡鏄湪涓涓被鐨勬柟娉曚腑灝嗗彟涓涓被鐨勫璞′綔涓哄叾灞閮ㄥ彉閲忥紝絎笁縐嶆柟寮忔槸鍦ㄤ竴涓被鐨勬柟娉曚腑璋冪敤鍙︿竴涓被鐨勯潤鎬佹柟娉曘傚浘1瀵瑰簲鐨凧ava浠g爜鐗囨濡備笅錛?/p>
3. 娉涘寲鍏崇郴 娉涘寲(Generalization)鍏崇郴涔熷氨鏄戶鎵垮叧緋伙紝鐢ㄤ簬鎻忚堪鐖剁被涓庡瓙綾諱箣闂寸殑鍏崇郴錛岀埗綾誨張縐頒綔鍩虹被鎴栬秴綾伙紝瀛愮被鍙堢О浣滄淳鐢熺被銆傚湪UML涓紝娉涘寲鍏崇郴鐢ㄥ甫絀哄績涓夎褰㈢殑鐩寸嚎鏉ヨ〃紺恒傚湪浠g爜瀹炵幇鏃訛紝鎴戜滑浣跨敤闈㈠悜瀵硅薄鐨勭戶鎵挎満鍒舵潵瀹炵幇娉涘寲鍏崇郴錛屽鍦↗ava璇█涓嬌鐢╡xtends鍏抽敭瀛椼佸湪C++/C#涓嬌鐢ㄥ啋鍙?#8220;錛?#8221;鏉ュ疄鐜般備緥濡傦細(xì)Student綾誨拰Teacher綾婚兘鏄疨erson綾葷殑瀛愮被錛孲tudent綾誨拰Teacher綾葷戶鎵夸簡Person綾葷殑灞炴у拰鏂規(guī)硶錛孭erson綾葷殑灞炴у寘鍚鍚?name)鍜屽勾榫?age)錛屾瘡涓涓猄tudent鍜孴eacher涔熼兘鍏鋒湁榪欎袱涓睘鎬э紝鍙﹀Student綾誨鍔犱簡灞炴у鍙?studentNo)錛孴eacher綾誨鍔犱簡灞炴ф暀甯堢紪鍙?teacherNo)錛孭erson綾葷殑鏂規(guī)硶鍖呮嫭琛岃蛋move()鍜岃璇漵ay()錛孲tudent綾誨拰Teacher綾葷戶鎵夸簡榪欎袱涓柟娉曪紝鑰屼笖Student綾昏繕鏂板鏂規(guī)硶study()錛孴eacher綾昏繕鏂板鏂規(guī)硶teach()銆傚鍥?鎵紺猴細(xì)
鍥? 娉涘寲鍏崇郴瀹炰緥 鍥?瀵瑰簲鐨凧ava浠g爜鐗囨濡備笅錛?/p>
4. 鎺ュ彛涓庡疄鐜板叧緋?/p> 鍦ㄥ緢澶氶潰鍚戝璞¤璦涓兘寮曞叆浜嗘帴鍙g殑姒傚康錛屽Java銆丆#絳夛紝鍦ㄦ帴鍙d腑錛岄氬父娌℃湁灞炴э紝鑰屼笖鎵鏈夌殑鎿嶄綔閮芥槸鎶借薄鐨勶紝鍙湁鎿嶄綔鐨勫0鏄庯紝娌℃湁鎿嶄綔鐨勫疄鐜般俇ML涓敤涓庣被鐨勮〃紺烘硶綾諱技鐨勬柟寮忚〃紺烘帴鍙o紝濡傚浘3鎵紺猴細(xì)
鍥? 鎺ュ彛鐨刄ML鍥劇ず 鎺ュ彛涔嬮棿涔熷彲浠ユ湁涓庣被涔嬮棿鍏崇郴綾諱技鐨勭戶鎵垮叧緋誨拰渚濊禆鍏崇郴錛屼絾鏄帴鍙e拰綾諱箣闂磋繕瀛樺湪涓縐嶅疄鐜?Realization)鍏崇郴錛屽湪榪欑鍏崇郴涓紝綾誨疄鐜頒簡鎺ュ彛錛岀被涓殑鎿嶄綔瀹炵幇浜嗘帴鍙d腑鎵澹版槑鐨勬搷浣溿傚湪UML涓紝綾諱笌鎺ュ彛涔嬮棿鐨勫疄鐜板叧緋葷敤甯︾┖蹇冧笁瑙掑艦鐨勮櫄綰挎潵琛ㄧず銆備緥濡傦細(xì)瀹氫箟浜嗕竴涓氦閫氬伐鍏鋒帴鍙ehicle錛屽寘鍚竴涓娊璞℃搷浣渕ove()錛屽湪綾籗hip鍜岀被Car涓兘瀹炵幇浜嗚move()鎿嶄綔錛屼笉榪囧叿浣撶殑瀹炵幇緇嗚妭灝嗕細(xì)涓嶄竴鏍鳳紝濡傚浘4鎵紺猴細(xì)
鍥? 瀹炵幇鍏崇郴瀹炰緥 瀹炵幇鍏崇郴鍦ㄧ紪紼嬪疄鐜版椂錛屼笉鍚岀殑闈㈠悜瀵硅薄璇█涔熸彁渚涗簡涓嶅悓鐨勮娉曪紝濡傚湪Java璇█涓嬌鐢╥mplements鍏抽敭瀛楋紝鑰屽湪C++/C#涓嬌鐢ㄥ啋鍙?#8220;錛?#8221;鏉ュ疄鐜般傚浘4瀵瑰簲鐨凧ava浠g爜鐗囨濡備笅錛?/p>
瀹炰緥鍒嗘瀽1——鐧誨綍妯″潡 鏌愬熀浜嶤/S鐨勫嵆鏃惰亰澶╃郴緇熺櫥褰曟ā鍧楀姛鑳芥弿榪板涓嬶細(xì) 鐢ㄦ埛閫氳繃鐧誨綍鐣岄潰(LoginForm)杈撳叆璐﹀彿鍜屽瘑鐮侊紝緋葷粺灝嗚緭鍏ョ殑璐﹀彿鍜屽瘑鐮佷笌瀛樺偍鍦ㄦ暟鎹簱(User)琛ㄤ腑鐨勭敤鎴蜂俊鎭繘琛屾瘮杈冿紝楠岃瘉鐢ㄦ埛杈撳叆鏄惁姝g‘錛屽鏋滆緭鍏ユ紜垯榪涘叆涓葷晫闈?MainForm)錛屽惁鍒欐彁紺?#8220;杈撳叆閿欒”銆?/p> 鏍規(guī)嵁浠ヤ笂鎻忚堪緇樺埗鍒濆綾誨浘銆?/p> 鍙傝冭В鍐蟲柟妗堬細(xì) 鍙傝冪被鍥懼涓嬶細(xì)
鑰冭檻鍒扮郴緇熸墿灞曟э紝鍦ㄦ湰瀹炰緥涓紩鍏ヤ簡鎶借薄鏁版嵁璁塊棶鎺ュ彛IUserDAO錛屽啀灝嗗叿浣撴暟鎹闂璞℃敞鍏ュ埌涓氬姟閫昏緫瀵硅薄涓紝鍙氳繃閰嶇疆鏂囦歡錛堝XML鏂囦歡錛夌瓑鏂瑰紡鏉ュ疄鐜幫紝灝嗗叿浣撶殑鏁版嵁璁塊棶綾葷被鍚嶅瓨鍌ㄥ湪閰嶇疆鏂囦歡涓紝濡傛灉闇瑕佹洿鎹㈡柊鐨勫叿浣撴暟鎹闂璞★紝鍙渶淇敼閰嶇疆鏂囦歡鍗沖彲錛屽師鏈夌▼搴忎唬鐮佹棤欏誨仛浠諱綍淇敼銆?/p> 綾昏鏄庯細(xì)
鏂規(guī)硶璇存槑錛?/p>
瀹炰緥鍒嗘瀽2——娉ㄥ唽妯″潡 鏌愬熀浜嶫ava璇█鐨凜/S杞歡闇瑕佹彁渚涙敞鍐屽姛鑳斤紝璇ュ姛鑳界畝瑕佹弿榪板涓嬶細(xì) 鐢ㄦ埛閫氳繃娉ㄥ唽鐣岄潰(RegisterForm)杈撳叆涓漢淇℃伅錛岀敤鎴風(fēng)偣鍑?#8220;娉ㄥ唽”鎸夐挳鍚庡皢杈撳叆鐨勪俊鎭氳繃涓涓皝瑁呯敤鎴瘋緭鍏ユ暟鎹殑瀵硅薄(UserDTO)浼犻掔粰鎿嶄綔鏁版嵁搴撶殑鏁版嵁璁塊棶綾伙紝涓轟簡鎻愰珮緋葷粺鐨勬墿灞曟э紝閽堝涓嶅悓鐨勬暟鎹簱鍙兘闇瑕佹彁渚涗笉鍚岀殑鏁版嵁璁塊棶綾伙紝鍥犳鎻愪緵浜嗘暟鎹闂被鎺ュ彛錛屽IUserDAO錛屾瘡涓涓叿浣撴暟鎹闂被閮芥槸鏌愪竴涓暟鎹闂被鎺ュ彛鐨勫疄鐜扮被錛屽OracleUserDAO灝辨槸涓涓笓闂ㄧ敤浜庤闂甇racle鏁版嵁搴撶殑鏁版嵁璁塊棶綾匯?/p> 鏍規(guī)嵁浠ヤ笂鎻忚堪緇樺埗綾誨浘銆備負(fù)浜嗙畝鍖栫被鍥撅紝涓漢淇℃伅浠呭寘鎷處鍙?userAccount)鍜屽瘑鐮?userPassword)錛屼笖鐣岄潰綾繪棤闇娑夊強(qiáng)鐣岄潰緇嗚妭鍏冪礌銆?/p> 鍙傝冭В鍐蟲柟妗堬細(xì) 鍦ㄤ互涓婂姛鑳借鏄庝腑錛屽彲浠ュ垎鏋愬嚭璇ョ郴緇熷寘鎷笁涓被鍜屼竴涓帴鍙o紝榪欎笁涓被鍒嗗埆鏄敞鍐岀晫闈㈢被RegisterForm銆佺敤鎴鋒暟鎹紶杈撶被UserDTO銆丱racle鐢ㄦ埛鏁版嵁璁塊棶綾籓racleUserDAO錛屾帴鍙f槸鎶借薄鐢ㄦ埛鏁版嵁璁塊棶鎺ュ彛IUserDAO銆傚畠浠箣闂寸殑鍏崇郴濡備笅錛?/p> (1) 鍦≧egisterForm涓渶瑕佷嬌鐢║serDTO綾諱紶杈撴暟鎹笖闇瑕佷嬌鐢ㄦ暟鎹闂被鏉ユ搷浣滄暟鎹簱錛屽洜姝egisterForm涓嶶serDTO鍜孖UserDAO涔嬮棿瀛樺湪鍏寵仈鍏崇郴錛屽湪RegisterForm涓彲浠ョ洿鎺ュ疄渚嬪寲UserDTO錛屽洜姝ゅ畠浠箣闂村彲浠ヤ嬌鐢ㄧ粍鍚堝叧鑱斻?/p> (2) 鐢變簬鏁版嵁搴撶被鍨嬮渶瑕佺伒媧繪洿鎹紝鍥犳鍦≧egisterForm涓笉鑳界洿鎺ュ疄渚嬪寲IUserDAO鐨勫瓙綾伙紝鍙互閽堝鎺ュ彛IUserDAO緙栫▼錛屽啀閫氳繃娉ㄥ叆鐨勬柟寮忎紶鍏ヤ竴涓狪UserDAO鎺ュ彛鐨勫瓙綾誨璞★紙鍦ㄦ湰涔﹀悗緇珷鑺備腑灝嗗涔?fàn)濡備綍鍏蜂綋瀹炵帋图?jí)錛屽洜姝egisterForm鍜孖UserDAO涔嬮棿鍏鋒湁鑱氬悎鍏寵仈鍏崇郴銆?/p> (3) OracleUserDAO鏄疄鐜頒簡IUserDAO鎺ュ彛鐨勫瓙綾伙紝鍥犳瀹冧滑涔嬮棿鍏鋒湁綾諱笌鎺ュ彛鐨勫疄鐜板叧緋匯?/p> (4) 鍦ㄥ0鏄嶪UserDAO鎺ュ彛鐨勫鍔犵敤鎴蜂俊鎭柟娉昦ddUser()鏃訛紝闇瑕佸皢鍦ㄧ晫闈㈢被涓疄渚嬪寲鐨刄serDTO瀵硅薄浣滀負(fù)鍙傛暟浼犻掕繘鏉ワ紝鐒跺悗鍙栧嚭灝佽鍦║serDTO瀵硅薄涓殑鏁版嵁鎻掑叆鏁版嵁搴擄紝鍥犳addUser()鏂規(guī)硶鐨勫嚱鏁板師鍨嬪彲浠ュ畾涔変負(fù)錛歱ublic boolean addUser(UserDTO user)錛屽湪IUserDAO鐨勬柟娉昦ddUser()涓皢UserDTO綾誨瀷鐨勫璞′綔涓哄弬鏁幫紝鏁匢UserDAO涓嶶serDTO瀛樺湪渚濊禆鍏崇郴銆?/p> 閫氳繃浠ヤ笂鍒嗘瀽錛岃瀹炰緥鍙傝冪被鍥懼鍥?鎵紺猴細(xì)
鍥? 娉ㄥ唽鍔熻兘鍙傝冪被鍥?/p> 娉ㄦ剰錛氬湪緇樺埗綾誨浘鎴栧叾浠朥ML鍥懼艦鏃訛紝鍙互閫氳繃娉ㄩ噴(Comment)鏉ュ鍥句腑鐨勭鍙鋒垨鍏冪礌榪涜涓浜涢檮鍔犺鏄庯紝濡傛灉闇瑕佽緇嗚鏄庣被鍥句腑鐨勬煇涓鏂規(guī)硶鐨勫姛鑳芥垨鑰呭疄鐜拌繃紼嬶紝鍙互浣跨敤濡傚浘2鎵紺鴻〃紺烘柟寮忥細(xì)
鍥? 綾誨浘娉ㄩ噴瀹炰緥 瀹炰緥鍒嗘瀽3——鍞エ鏈烘帶鍒剁▼搴?/p> 鏌愯繍杈撳叕鍙稿喅瀹氫負(fù)鏂扮殑鍞エ鏈哄紑鍙戣濺紲ㄩ攢鍞殑鎺у埗杞歡銆傚浘I緇欏嚭浜嗗敭紲ㄦ満鐨勯潰鏉跨ず鎰忓浘浠ュ強(qiáng)鐩稿叧鐨勬帶鍒墮儴浠躲?/p>
鍥綢 鍞エ鏈洪潰鏉跨ず鎰忓浘 鍞エ鏈虹浉鍏抽儴浠剁殑浣滅敤濡備笅鎵榪幫細(xì) (1) 鐩殑鍦伴敭鐩樼敤鏉ヨ緭鍏ヨ紼嬬洰鐨勫湴鐨勪唬鐮侊紙渚嬪錛?00琛ㄧず鎬葷珯錛夈?/p> (2) 涔樺鍙互閫氳繃杞︾エ閿洏閫夋嫨杞︾エ縐嶇被錛堝崟紼嬬エ銆佸嬈″線榪旂エ鍜屽駭甯綾伙級(jí)銆?/p> (3) 緇х畫/鍙栨秷閿洏涓婄殑鍙栨秷鎸夐挳鐢ㄤ簬鍙栨秷璐エ榪囩▼錛岀戶緇寜閽厑璁鎬箻瀹㈣繛緇喘涔板寮犵エ銆?/p> (4) 鏄劇ず灞忔樉紺烘墍鏈夌殑緋葷粺杈撳嚭鍜岀敤鎴鋒彁紺轟俊鎭?/p> (5) 鎻掑崱鍙f帴鍙桵Card錛堢幇閲戝崱錛夛紝紜竵鍙e拰綰稿竵妲芥帴鍙楃幇閲戙?/p> (6) 鎵撳嵃鏈虹敤浜庤緭鍑鴻濺紲ㄣ?/p> (7) 鎵鏈夐儴浠跺潎鍙疄鐜拌嚜媯(gè)騫舵仮澶嶅埌鍒濆鐘舵併?/p> 鐜伴噰鐢ㄩ潰鍚戝璞℃柟娉曞紑鍙戣緋葷粺錛屼嬌鐢║ML榪涜寤烘ā錛岀粯鍒惰緋葷粺鐨勫垵濮嬬被鍥俱?/p> 鍙傝冭В鍐蟲柟妗堬細(xì) 鍙傝冪被鍥懼涓嬶細(xì)
綾昏鏄庯細(xì)
鏂規(guī)硶璇存槑錛?/p>
|
鍏寵仈鍏崇郴 (association)錛?/p>
(1)鍏寵仈鍏崇郴鏄被涓庣被涔嬮棿鐨勮仈緇擄紝瀹冧嬌涓涓被鐭ラ亾鍙︿竴涓被鐨勫睘鎬у拰鏂規(guī)硶銆?br> (2)鍏寵仈鍙互鏄弻鍚戠殑錛屼篃鍙互鏄崟鍚戠殑銆傚弻鍚戠殑鍏寵仈鍙互鏈変袱涓澶存垨鑰呮病鏈夌澶達(dá)紝鍗曞悜鐨勫叧鑱旀湁涓涓澶淬?br> (3)鍦?Java 鎴?c++ 涓紝鍏寵仈鍏崇郴鏄氳繃浣跨敤鎴愬憳鍙橀噺鏉ュ疄鐜扮殑銆?class 寰掑紵
{ };
class 鍞愬儳
{
protected:
list<寰掑紵> tdlist;
};

鑱氬悎鍏崇郴 (aggregation)錛?/p>
1銆佽仛鍚堝叧緋繪槸鍏寵仈鍏崇郴鐨勪竴縐嶏紝鏄己鐨勫叧鑱斿叧緋匯?br> 2銆佽仛鍚堟槸鏁翠綋鍜岄儴鍒嗕箣闂寸殑鍏崇郴錛屼緥濡傛苯杞︾敱寮曟搸銆佽疆鑳庝互鍙?qiáng)鍏跺畠闆朵欢缁勬垚銆?br> 3銆佽仛鍚堝叧緋諱篃鏄氳繃鎴愬憳鍙橀噺鏉ュ疄鐜扮殑銆備絾鏄紝鍏寵仈鍏崇郴鎵娑夊強(qiáng)鐨勪袱涓被澶勫湪鍚屼竴涓眰嬈′笂錛岃岃仛鍚堝叧緋諱腑錛屼袱涓被澶勪簬涓嶅悓鐨勫眰嬈′笂錛屼竴涓唬琛ㄦ暣浣擄紝涓涓唬琛ㄩ儴鍒嗐?br> 4銆佸叧鑱斾笌鑱氬悎浠呬粎浠?Java 鎴?C++ 璇硶涓婃槸鏃犳硶鍒嗚鯨鐨勶紝蹇呴』鑰冨療鎵娑夊強(qiáng)鐨勭被涔嬮棿鐨勯昏緫鍏崇郴銆?br> class 寮曟搸
{
};
class 杞儙
{
};
class 姹借濺
{
protected:
寮曟搸 engine;
杞儙 tyre[4];
};

鍚堟垚鍏崇郴 (composition)錛?/p>
1銆佸悎鎴愬叧緋繪槸鍏寵仈鍏崇郴鐨勪竴縐嶏紝鏄瘮鑱氬悎鍏崇郴榪樿寮虹殑鍏崇郴銆?br> 2銆佸畠瑕佹眰鏅氱殑鑱氬悎鍏崇郴涓唬琛ㄦ暣浣撶殑瀵硅薄璐熻矗浠h〃閮ㄥ垎鐨勫璞$殑鐢熷懡鍛ㄦ湡銆?br> 1 class 鑲?
{
};
class 浜?
{
protected:
鑲?limb[4];
};

渚濊禆鍏崇郴 (dependency)錛?/p> 1銆佷緷璧栧叧緋諱篃鏄被涓庣被涔嬮棿鐨勮仈緇?br> 2銆佷緷璧栨繪槸鍗曞悜鐨勩?br> 3銆佷緷璧栧叧緋誨湪 Java 鎴?C++ 璇█涓綋鐜頒負(fù)灞閮ㄥ彉閲忋佹柟娉曠殑鍙傛暟鎴栬呭闈欐佹柟娉曠殑璋冪敤銆?br>
鏄劇ず浠g爜鎵撳嵃
public class Person