锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
綾?/span>涓?/span>綾?/span>涔?/span>闂?/span>鐨勫叧緋?/span>瀵?/span>浜庣悊瑙i潰鍚?/span>瀵?/span>璞″叿鏈夊緢閲嶈鐨勪綔鐢紝浠ュ墠鍦ㄩ潰璇?/span>鐨?/span>鏃?/span>鍊欎篃緇?/span>甯歌闂?/span>鍒?/span>榪?/span>涓?/span>闂錛屽湪榪?/span>閲屾垜灝變粙緇?/span>涓涓嬨?/span>
綾?/span>涓?/span>綾?/span>涔?/span>闂?/span>瀛樺湪浠ヤ笅鍏崇郴:
(1)娉涘寲(Generalization)
(2)鍏?/span>鑱?/span>(Association)
(3)渚?/span>璧?/span>(Dependency)
(4)鑱氬悎(Aggregation)
UML鍥?/span>涓?/span>搴?/span>鐢ㄤ唬鐮?/span>渚嬪瓙:
1.娉涘寲(Generalization)
[娉涘寲]
琛ㄧず綾?/span>涓?/span>綾?/span>涔?/span>闂?/span>鐨?/span>緇?/span>鎵垮叧緋伙紝鎺ュ彛涓庢帴鍙d箣闂?/span>鐨?/span>緇?/span>鎵垮叧緋伙紝鎴?/span>綾誨鎺ュ彛鐨?/span>瀹炵幇鍏崇郴銆?/span>涓鑸寲鐨勫叧緋繪槸浠庡瓙綾?/span>鎸囧悜鐖?/span>綾?/span>鐨勶紝涓?/span>緇?/span>鎵挎垨瀹炵幇鐨勬柟娉曠浉鍙嶃?/span>
[鍏蜂綋琛?/span>鐜?/span>]
鐖?/span>綾?/span>鐖?/span>綾誨疄渚嬶紳new 瀛?/span>綾?/span>()
[UML鍥?/span>](鍥?/span>1.1)
鍥?/span>1.1 Animal綾?/span>涓?/span>Tiger綾?/span>,Dog綾?/span>鐨勬硾鍖栧叧緋?/span>
[浠?/span>鐮?/span>琛?/span>鐜?/span>]
class Animal{}
class Tiger extends Animal{}
public class Test
{
public void test()
{
Animal a=new Tiger();
}
}
2.渚?/span>璧?/span>(Dependency)
[渚?/span>璧?/span>]
瀵?/span>浜庝袱涓浉瀵?/span>鐙珛鐨?/span>瀵?/span>璞★紝褰撲竴涓?/span>瀵?/span>璞?/span>璐熻矗鏋勯犲彟涓涓?/span>瀵?/span>璞$殑瀹?/span>渚嬶紝鎴栬呬緷璧?/span>鍙︿竴涓?/span>瀵?/span>璞$殑鏈?/span>鍔℃椂錛?/span>榪?/span>涓や釜瀵?/span>璞′箣闂?/span>涓昏浣?/span>鐜頒負渚?/span>璧?/span>鍏崇郴銆?/span>
[鍏蜂綋琛?/span>鐜?/span>]
渚?/span>璧?/span>鍏崇郴琛?/span>鐜?/span>鍦ㄥ眬閮?/span>鍙?/span>閲忥紝鏂規硶鐨勫弬鏁幫紝浠ュ強瀵?/span>闈?/span>鎬?/span>鏂規硶鐨?/span>璋?/span>鐢?/span>
[鐜板疄渚嬪瓙]
姣斿璇?/span>浣犺鍘?/span>鎷?/span>铻?/span>涓?/span>錛屼綘鏄笉鏄鍊熷姪(涔熷氨鏄緷璧?/span>)铻?/span>涓?/span>鍒(Screwdriver)鏉ュ府鍔╀綘瀹屾垚鎷?/span>铻?/span>涓?/span>(screw)鐨勫伐浣?/span>
[UML琛?/span>鐜?/span>](鍥?/span>1.2)
鍥?/span>1.2 Person綾?/span>涓?/span>Screwdriver綾?/span>鐨勪緷璧?/span>鍏崇郴
[浠?/span>鐮?/span>琛?/span>鐜?/span>]
public class Person{
/** 鎷?/span>铻?/span>涓?/span> */
public void screw(Screwdriver screwdriver){
screwdriver.screw();
}
}
3.鍏?/span>鑱?/span>(Association)
[鍏?/span>鑱?/span>]
瀵?/span>浜庝袱涓浉瀵?/span>鐙珛鐨?/span>瀵?/span>璞★紝褰撲竴涓?/span>瀵?/span>璞$殑瀹?/span>渚嬩笌鍙︿竴涓?/span>瀵?/span>璞$殑涓浜涚壒瀹?/span>瀹?/span>渚嬪瓨鍦ㄥ浐瀹氱殑瀵瑰簲鍏崇郴鏃?/span>錛?/span>榪?/span>涓や釜瀵?/span>璞′箣闂翠負鍏?/span>鑱?/span>鍏崇郴銆?/span>
[鍏蜂綋琛?/span>鐜?/span>]
鍏?/span>鑱?/span>鍏崇郴鏄嬌鐢?/span>瀹?/span>渚?/span>鍙?/span>閲忔潵瀹炵幇
[鐜板疄渚嬪瓙]
姣斿瀹?/span>鎴?/span>鍜?/span>璁㈠崟錛屾瘡涓?/span>璁㈠崟瀵瑰簲鐗瑰畾鐨勫鎴?/span>錛屾瘡涓鎴峰搴?/span>涓浜涚壒瀹氱殑璁㈠崟錛涘啀渚嬪鍏徃鍜?/span>鍛?/span>宸ワ紝姣忎釜鍏徃瀵瑰簲涓浜涚壒瀹氱殑鍛?/span>宸ワ紝姣忎釜鍛?/span>宸?/span>瀵瑰簲涓鐗瑰畾鐨勫叕鍙?/span>
[UML鍥?/span>] (鍥?/span>1.3)
鍥?/span>1.3 鍏徃鍜?/span>鍛?/span>宸ョ殑鍏?/span>鑱?/span>鍏崇郴
[浠?/span>鐮?/span>琛?/span>鐜?/span>]
public class Company{
private Employee employee;
public Employee getEmployee(){
return employee;
}
public void setEmployee(Employee employee){
this.employee=employee;
}
//鍏徃榪愪綔
public void run(){
employee.startWorking();
}
}
(4)鑱氬悎錛?/span>Aggregation錛?/span>
[鑱氬悎]
褰?/span>瀵?/span>璞?/span>A琚姞鍏ュ埌瀵?/span>璞?/span>B涓紝鎴?/span>涓哄璞?/span>B鐨?/span>緇?/span>鎴愰儴鍒?/span>鏃?/span>錛?/span>瀵?/span>璞?/span>B鍜?/span>瀵?/span>璞?/span>A涔?/span>闂翠負鑱氶泦鍏崇郴銆?/span>鑱氬悎鏄叧鑱?/span>鍏崇郴鐨勪竴縐嶏紝鏄?/span>杈冨己鐨勫叧鑱?/span>鍏崇郴錛?/span>寮鴻皟鐨勬槸鏁翠綋涓庨儴鍒嗕箣闂?/span>鐨勫叧緋匯?/span>
[鍏蜂綋琛?/span>鐜?/span>]
涓庡叧鑱?/span>鍏崇郴涓鏍?/span>錛岃仛鍚堝叧緋諱篃鏄?/span>榪囧疄渚?/span>鍙?/span>閲忔潵瀹炵幇榪欐牱鍏崇郴鐨勩傚叧鑱?/span>鍏崇郴鍜岃仛鍚堝叧緋繪潵璇?/span>娉曚笂鏄病鍔?/span>娉曞尯鍒嗙殑錛屼粠璇箟涓婃墠鑳芥洿濂界殑鍖哄垎涓よ呯殑鍖?/span>鍒?/span>銆?/span>
[鍏?/span>鑱?/span>涓庤仛鍚堢殑鍖?/span>鍒?/span>]
(1)鍏?/span>鑱?/span>鍏崇郴鎵娑夊強鐨勪袱涓?/span>瀵?/span>璞℃槸澶?/span>鍦ㄥ悓涓涓?/span>灞?/span>嬈′笂鐨勩傛瘮濡備漢鍜岃嚜琛?/span>杞?/span>灝辨槸涓縐嶅叧鑱?/span>鍏崇郴錛岃屼笉鏄仛鍚堝叧緋伙紝鍥?/span>涓?/span>浜轟笉鏄敱鑷杞︾粍鎴愮殑銆?/span>
鑱氬悎鍏崇郴娑夊強鐨勪袱涓?/span>瀵?/span>璞?/span>澶?/span>浜庝笉騫崇瓑鐨?/span>灞?/span>嬈′笂錛屼竴涓唬琛ㄦ暣浣擄紝涓涓唬琛ㄩ儴鍒嗐傛瘮濡?/span>鐢佃剳鍜屽畠鐨?/span>鏄?/span>紺哄櫒銆?/span>閿洏銆佷富鏉夸互鍙婂唴瀛樺氨鏄仛闆嗗叧緋伙紝鍥?/span>涓?/span>涓繪澘鏄?/span>鐢佃剳鐨?/span>緇?/span>鎴愰儴鍒嗐?/span>
(2)瀵?/span>浜庡叿鏈夎仛闆嗗叧緋伙紙灝ゅ叾鏄?/span>寮?/span>鑱氶泦鍏崇郴錛夌殑涓や釜瀵?/span>璞★紝鏁翠綋瀵?/span>璞′細鍒?/span>綰?/span>瀹冪殑緇?/span>鎴?/span>瀵?/span>璞$殑鐢熷懡鍛ㄦ湡銆傞儴鍒?/span>綾?/span>鐨?/span>瀵?/span>璞′笉鑳?/span>鍗?/span>鐙瓨鍦紝瀹冪殑鐢熷懡鍛ㄦ湡渚?/span>璧?/span>浜庢暣浣?/span>綾?/span>鐨?/span>瀵?/span>璞$殑鐢熷懡鍛ㄦ湡錛屽綋鏁翠綋娑堝け錛岄儴鍒嗕篃灝遍殢涔嬫秷澶便傛瘮濡?/span>寮?/span>涓夌殑鐢佃剳琚?/span>鍋?/span>浜嗭紝閭d箞鐢佃剳鐨勬墍鏈?/span>緇?/span>浠朵篃涓嶅瓨鍦ㄤ簡錛岄櫎闈?/span>寮?/span>涓変簨鍏堟妸涓浜?/span>鐢佃剳鐨?/span>緇?/span>浠訛紙姣斿紜?/span>鐩?/span>鍜屽唴瀛橈級鎷嗕簡涓嬫潵銆?/span>
[UML鍥?/span>](鍥?/span>1.4)
鍥?/span>1.3 鐢佃剳鍜?/span>緇?/span>浠剁殑鑱氬悎鍏崇郴
[浠?/span>鐮?/span>琛?/span>鐜?/span>]
public class Computer{
private CPU cpu;
public CPU getCPU(){
return cpu;
}
public void setCPU(CPU cpu){
this.cpu=cpu;
}
//寮鍚?/span>鐢佃剳
public void start(){
//cpu榪愪綔
cpu.run();
}
}
////////////////////////////////////////////
鎴戞兂瀵?/span>渚?/span>璧?/span>(Dependency)鍜屽叧鑱?/span>(Association)鍋氫竴涓?/span>琛?/span>鍏呫備笉姝d箣澶?/span>鏁?/span>璇?/span>鎸囧嚭銆?/span>
[渚?/span>璧?/span>]
瀵?/span>浜庝袱涓浉瀵?/span>鐙珛鐨?/span>瀵?/span>璞★紝褰撲竴涓?/span>瀵?/span>璞?/span>璐熻矗鏋勯犲彟涓涓?/span>瀵?/span>璞$殑瀹?/span>渚嬶紝鎴栬呬緷璧?/span>鍙︿竴涓?/span>瀵?/span>璞$殑鏈?/span>鍔℃椂錛?/span>榪?/span>涓や釜瀵?/span>璞′箣闂?/span>涓昏浣?/span>鐜頒負渚?/span>璧?/span>鍏崇郴銆?/span>
[鍏蜂綋琛?/span>鐜?/span>]
渚?/span>璧?/span>鍏崇郴琛?/span>鐜?/span>鍦ㄥ眬閮?/span>鍙?/span>閲忥紝鏂規硶鐨勫弬鏁幫紝浠ュ強瀵?/span>闈?/span>鎬?/span>鏂?/span>娉曠殑璋?/span>鐢?/span> //闄や簡榪?/span>涓夌澶栨垜鎯?/span>榪樺簲璇?/span>鍖呮嫭涓浜?/span>瀹?/span>渚?/span>鍙?/span>閲忔潵瀹炵幇錛屽氨鍍忓叧鑱?/span>鍏崇郴鍜岃仛鍚堝叧緋諱粠璇?/span>娉曚笂寰?/span>闅?/span>鍖哄垎涓鏍?/span>銆備緷璧?/span>鍜屽叧鑱?/span>鍦ㄦ煇浜涙柟闈篃寰?/span>闅?/span>浠?/span>璇?/span>娉曚笂鍘誨尯鍒嗐?/span>
[鐜板疄渚嬪瓙]
姣斿璇?/span>浣犺鍘?/span>鎷?/span>铻?/span>涓?/span>錛屼綘鏄笉鏄鍊熷姪(涔熷氨鏄緷璧?/span>)铻?/span>涓?/span>鍒(Screwdriver)鏉ュ府鍔╀綘瀹屾垚鎷?/span>铻?/span>涓?/span>(screw)鐨勫伐浣?/span>
[浠?/span>鐮?/span>琛?/span>鐜?/span>]
java 浠?/span>鐮?/span>
public class Person {
private ScrewService screwService;
public ScrewService getScrewService() {
return screwService;
}
public void setScrewService(ScrewService screwService) {
this.screwService = screwService;
}
public void screw(){
screwService.screw();
}
}
鎴戜笉鐭ラ亾鍋囧鏄互涓婁唬鐮?/span>鎯呭喌seagar 鎯蟲妸瀹?/span>浠綊鍏ラ偅縐嶅叧鑱?/span>銆備互鎴戠殑鎯蟲硶灝辨槸瀹?/span>浠?/span>浠嶇劧灞炰簬渚?/span>璧?/span>鍏崇郴錛屽洜涓虹幇鍦ㄦ垜灝辨槸鐢?/span>spring鏉ユ妸ScrewServiceImpl娉ㄥ叆 screwService鐨勩傝屼笖瀹冧篃絎﹀悎褰撲竴涓?/span>瀵?/span>璞?/span>璐熻矗鏋勯犲彟涓涓?/span>瀵?/span>璞$殑瀹?/span>渚嬶紝鎴栬呬緷璧?/span>鍙︿竴涓?/span>瀵?/span>璞$殑鏈?/span>鍔?/span>銆?/span>榪?/span>涓畾涔?/span>銆傛墍浠ユ垜鎯充互涓婃儏鍐墊妸瀹?/span>褰掍負渚?/span>璧?/span>鍏崇郴浼氭瘮杈?/span>鍚堥備竴鐐廣?/span>