锘??xml version="1.0" encoding="utf-8" standalone="yes"?> import java.io.FileInputStream; import sun.audio.AudioPlayer; public class Sound {
]]>
import sun.audio.AudioStream;
}
瑙e喅鍔炴硶錛氬湪Build Path閲岄潰鎶奐RE System Library縐婚櫎鍚庨噸鏂版坊鍔犺繘鍘伙紝闂瑙e喅
涓夌閰嶇疆鐜鍙橀噺鐨勬柟娉?br />
1. 淇敼/etc/profile鏂囦歡
濡傛灉浣犵殑璁$畻鏈轟粎浠呬綔涓哄紑鍙戜嬌鐢ㄦ椂鎺ㄨ崘浣跨敤榪欑鏂規硶錛屽洜涓烘墍鏈?strong>鐢ㄦ埛鐨剆hell閮芥湁鏉冧嬌鐢ㄨ繖浜涚幆澧冨彉閲忥紝鍙兘浼氱粰緋葷粺甯︽潵瀹夊叏鎬ч棶棰樸?
·鐢ㄦ枃鏈紪杈戝櫒鎵撳紑/etc/profile
·鍦╬rofile鏂囦歡鏈熬鍔犲叆錛?
export JAVA_HOME=/usr/share/jdk1.6.0_14
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
·閲嶆柊鐧誨綍
·娉ㄨВ
a. 浣犺灝?/usr/share/jdk1.6.0_14鏀逛負浣犵殑jdk瀹夎鐩綍
b. linux涓嬬敤鍐掑彿“:”鏉ュ垎闅旇礬寰?
c. $PATH / $CLASSPATH / $JAVA_HOME 鏄敤鏉ュ紩鐢ㄥ師鏉ョ殑鐜鍙橀噺鐨勫?
鍦?strong>璁劇疆鐜鍙橀噺鏃剁壒鍒娉ㄦ剰涓嶈兘鎶婂師鏉ョ殑鍊肩粰瑕嗙洊鎺変簡錛岃繖鏄竴縐?
甯歌鐨勯敊璇?
d. CLASSPATH涓綋鍓嶇洰褰?#8220;.”涓嶈兘涓?鎶婂綋鍓嶇洰褰曚涪鎺変篃鏄父瑙佺殑閿欒銆?
e. export鏄妸榪欎笁涓彉閲忓鍑轟負鍏ㄥ眬鍙橀噺銆?
f. 澶у皬鍐欏繀欏諱弗鏍煎尯鍒嗐?/p>
2. 淇敼.bash_profile鏂囦歡
榪欑鏂規硶鏇翠負瀹夊叏錛屽畠鍙互鎶婁嬌鐢ㄨ繖浜涚幆澧冨彉閲忕殑鏉冮檺鎺у埗鍒?strong>鐢ㄦ埛綰у埆錛屽鏋滀綘闇瑕佺粰鏌愪釜鐢ㄦ埛鏉冮檺浣跨敤榪欎簺鐜鍙橀噺錛屼綘鍙渶瑕佷慨鏀瑰叾涓漢鐢ㄦ埛涓葷洰褰曚笅鐨?bash_profile鏂囦歡灝卞彲浠ヤ簡銆?
·鐢ㄦ枃鏈紪杈戝櫒鎵撳紑鐢ㄦ埛鐩綍涓嬬殑.bash_profile鏂囦歡
·鍦?bash_profile鏂囦歡鏈熬鍔犲叆錛?/p>
export JAVA_HOME=/usr/share/jdk1.6.0_14
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
·閲嶆柊鐧誨綍
3. 鐩存帴鍦╯hell涓?strong>璁劇疆鍙橀噺
涓嶈禐鎴愪嬌鐢ㄨ繖縐嶆柟娉曪紝鍥犱負鎹釜shell錛屼綘鐨?strong>璁劇疆灝辨棤鏁堜簡錛屽洜姝よ繖縐嶆柟娉曚粎浠呮槸涓存椂浣跨敤錛屼互鍚庤浣跨敤鐨勬椂鍊欏張瑕侀噸鏂?strong>璁劇疆錛屾瘮杈冮夯鐑︺?
鍙渶鍦╯hell緇堢鎵ц涓嬪垪鍛戒護錛?
export JAVA_HOME=/usr/share/jdk1.6.0_14
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
package serializable;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
public class ObjectToIO
{
/**
*
* 瀵硅薄杞?/span>Byte鏁扮粍
*
* @param obj
*
* @return
*
* @throws Exception
*
*/
public static byte[] objectToBytes(Object obj) throws Exception
{
// logger.debug("objectToString called ");
ByteArrayOutputStream out = new ByteArrayOutputStream();
ObjectOutputStream sOut = new ObjectOutputStream(out);
sOut.writeObject(obj);
sOut.flush();
byte[] bytes = out.toByteArray();
// logger.debug(bytes.toString());
return bytes;
}
/**
*
* 瀛楄妭鏁扮粍杞璞?/span>
* @param content
*
* @return
*
* @throws Exception
*
*/
public static Object bytesToObject(byte[] bytes) throws Exception
{
// logger.debug("bytesToObject called ");
// byte杞?/span>object
ByteArrayInputStream in = new ByteArrayInputStream(bytes);
ObjectInputStream sIn = new ObjectInputStream(in);
return sIn.readObject();
}
}
杞夎嚜:http://wenku.baidu.com/view/1e0a23b465ce050876321373.html
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.IOException;
import java.util.Properties;
import javax.servlet.ServletContext;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
/**
* This class deals with maintaining options, including the e-mail account.
*
* @author <a href="mailto:fzammetti@omnytex.com">Frank W. Zammetti</a>.
*/
public class OptionsManager {
/**
* Log instance.
*/
private static Log log = LogFactory.getLog(OptionsManager.class);
/**
* File name of the options file.
*/
private static final String optionsFilename = "options.properties";
/**
* This method retrieves the options and returns them. If no
* optionsFilename file is found, a 'blank' DTO is returned.
*
* @param sc ServletContext associates with the request.
* @return An OptionsDTO containing all the stored options.
*/
public OptionsDTO retrieveOptions(ServletContext sc) {
// Instantiate an OptionsDTO, and by default assume it will be configured.
// This means the application has already been configured for use. This
// affects what the user can do when the app is accessed initially.
OptionsDTO options = new OptionsDTO();
options.setConfigured(true);
// Read in the options.
InputStream isFeedFile =
sc.getResourceAsStream("/WEB-INF/" + optionsFilename);
Properties props = new Properties();
try {
if (isFeedFile == null) {
throw new IOException(optionsFilename + " not found");
}
props.load(isFeedFile);
isFeedFile.close();
} catch (IOException e) {
log.info("No " + optionsFilename + " file, a blank DTO will " +
"be returned.");
// Make sure the OptionsDTO is set as unconfigured so that when the
// index.jsp page is loaded, all the user will be allowed to do is go to
// the Options views.
options.setConfigured(false);
props.setProperty("pop3Server", "");
props.setProperty("pop3ServerRequiresLogin", "false");
props.setProperty("pop3Username", "");
props.setProperty("pop3Password", "");
props.setProperty("smtpServer", "");
props.setProperty("smtpServerRequiresLogin", "false");
props.setProperty("smtpUsername", "");
props.setProperty("smtpPassword", "");
props.setProperty("fromAddress", "");
}
// Populate OptionsDTO from options Properties.
options.setPop3Server(props.getProperty("pop3Server"));
options.setPop3ServerRequiresLogin(
props.getProperty("pop3ServerRequiresLogin"));
options.setPop3Username(props.getProperty("pop3Username"));
options.setPop3Password(props.getProperty("pop3Password"));
options.setSmtpServer(props.getProperty("smtpServer"));
options.setSmtpServerRequiresLogin(
props.getProperty("smtpServerRequiresLogin"));
options.setSmtpUsername(props.getProperty("smtpUsername"));
options.setSmtpPassword(props.getProperty("smtpPassword"));
options.setFromAddress(props.getProperty("fromAddress"));
return options;
} // End retrieveOptions().
/**
* This method saves the options.
*
* @param pop3Server The POP3 server address.
* @param pop3ServerRequiresLogin Does the POP3 server require login?
* @param pop3Username The POP3 username.
* @param pop3Password The POP3 password.
* @param smtpServer The SMTP server address.
* @param smtpServerRequiresLogin Does the SMTP server require login?
* @param smtpUsername The SMTP username.
* @param smtpPassword The SMTP password.
* @param fromAddress From address for outgoing messages.
* @param sc ServletContext associated with the request.
* @return A message saying the save was OK.
*/
public String saveOptions(String pop3Server, String pop3ServerRequiresLogin,
String pop3Username, String pop3Password, String smtpServer,
String smtpServerRequiresLogin, String smtpUsername,
String smtpPassword, String fromAddress, ServletContext sc) {
// Log what we received.
log.info("\nSaving options:\n" +
"pop3Server = " + pop3Server + "\n" +
"pop3ServerRequiresLogin = " + pop3ServerRequiresLogin + "\n" +
"pop3Username = " + pop3Username + "\n" +
"pop3Password = " + pop3Password + "\n" +
"smtpServer = " + smtpServer + "\n" +
"smtpServerRequiresLogin = " + smtpServerRequiresLogin + "\n" +
"smtpUsername = " + smtpUsername + "\n" +
"smtpPassword = " + smtpPassword + "\n" +
"fromAddress = " + fromAddress + "\n");
String result = "";
// Populate Properties structure.
Properties props = new Properties();
props.setProperty("pop3Server", pop3Server);
props.setProperty("pop3ServerRequiresLogin",
pop3ServerRequiresLogin);
props.setProperty("pop3Username", pop3Username);
props.setProperty("pop3Password", pop3Password);
props.setProperty("smtpServer", smtpServer);
props.setProperty("smtpServerRequiresLogin",
smtpServerRequiresLogin);
props.setProperty("smtpUsername", smtpUsername);
props.setProperty("smtpPassword", smtpPassword);
props.setProperty("fromAddress", fromAddress);
// Lastly, delete any existing optionsFilename file in WEB-INF and
// write out a new version from the Properties object we just populated.
// Return a message saying the operation was complete, or if any problems
// occur, a message saying what went wrong.
FileOutputStream fos = null;
try {
new File(sc.getRealPath("WEB-INF") + "/" + optionsFilename).delete();
fos = new FileOutputStream(sc.getRealPath("WEB-INF") +
"/" + optionsFilename);
props.store(fos, null);
fos.flush();
result = "Options have been saved.";
} catch (IOException e) {
log.error("Error saving contact:");
e.printStackTrace();
result = "Options could not be saved. " +
"Please review logs for details.";
} finally {
try {
if (fos != null) {
fos.close();
}
} catch (IOException e) {
log.error("Error closing fos: " + e);
}
}
return result;
} // End saveOptions().
} // End class.
鐢↗ava緙栧啓搴旂敤鏃訛紝鏈夋椂闇瑕佸湪紼嬪簭涓皟鐢ㄥ彟涓涓幇鎴愮殑鍙墽琛岀▼搴忔垨緋葷粺鍛戒護錛岃繖鏃跺彲浠ラ氳繃緇勫悎浣跨敤Java鎻愪緵鐨凴untime綾誨拰Process綾葷殑鏂規硶瀹炵幇銆備笅闈㈡槸涓縐嶆瘮杈冨吀鍨嬬殑紼嬪簭妯″紡錛?
...
Process process = Runtime.getRuntime().exec(".\\p.exe");
process.waitfor( );
...
鍦ㄤ笂闈㈢殑紼嬪簭涓紝絎竴琛岀殑“.\\p.exe”鏄鎵ц鐨勭▼搴忓悕錛孯untime.getRuntime()榪斿洖褰撳墠搴旂敤紼嬪簭鐨凴untime瀵硅薄錛岃瀵硅薄鐨別xec()鏂規硶鎸囩ずJava铏氭嫙鏈哄垱寤轟竴涓瓙榪涚▼鎵ц鎸囧畾鐨勫彲鎵ц紼嬪簭錛屽茍榪斿洖涓庤瀛愯繘紼嬪搴旂殑Process瀵硅薄瀹炰緥銆傞氳繃Process鍙互鎺у埗璇ュ瓙榪涚▼鐨勬墽琛屾垨鑾峰彇璇ュ瓙榪涚▼鐨勪俊鎭傜浜屾潯璇彞鐨勭洰鐨勭瓑寰呭瓙榪涚▼瀹屾垚鍐嶅線涓嬫墽琛屻?
浣嗗湪windows騫沖彴涓婏紝濡傛灉澶勭悊涓嶅綋錛屾湁鏃跺茍涓嶈兘寰楀埌棰勬湡鐨勭粨鏋溿備笅闈㈡槸絎旇呭湪瀹為檯緙栫▼涓葷粨鐨勫嚑縐嶉渶瑕佹敞鎰忕殑鎯呭喌錛?
1銆佹墽琛孌OS鐨勫唴閮ㄥ懡浠?
濡傛灉瑕佹墽琛屼竴鏉OS鍐呴儴鍛戒護錛屾湁涓ょ鏂規硶銆備竴縐嶆柟娉曟槸鎶婂懡浠よВ閲婂櫒鍖呭惈鍦╡xec()鐨勫弬鏁頒腑銆備緥濡傦紝鎵цdir鍛戒護錛屽湪NT涓婏紝 鍙啓鎴恊xec("cmd.exe /c dir")錛屽湪windows 95/98涓嬶紝鍙啓鎴?#8220;command.exe /c dir”錛屽叾涓弬鏁?#8220;/c”琛ㄧず鍛戒護鎵ц鍚庡叧闂璂os绔嬪嵆鍏抽棴紿楀彛銆傚彟涓縐嶆柟娉曟槸錛屾妸鍐呴儴鍛戒護鏀懼湪涓涓壒鍛戒護my_dir.bat鏂囦歡涓紝鍦↗ava紼嬪簭涓啓鎴恊xec("my_dir.bat")銆傚鏋滀粎浠呭啓鎴恊xec("dir")錛孞ava铏氭嫙鏈哄垯浼氭姤榪愯鏃墮敊璇傚墠涓縐嶆柟娉曡淇濊瘉紼嬪簭鐨勫彲縐繪鎬э紝闇瑕佸湪紼嬪簭涓鍙栬繍琛岀殑鎿嶄綔緋葷粺騫沖彴錛屼互璋冪敤涓嶅悓鐨勫懡浠よВ閲婂櫒銆傚悗涓縐嶆柟娉曞垯涓嶉渶瑕佸仛鏇村鐨勫鐞嗐?
2銆佹墦寮涓涓笉鍙墽琛岀殑鏂囦歡
鎵撳紑涓涓笉鍙墽琛岀殑鏂囦歡錛屼絾璇ユ枃浠跺瓨鍦ㄥ叧鑱旂殑搴旂敤紼嬪簭錛屽垯鍙互鏈変袱縐嶆柟寮忋?浠ユ墦寮涓涓獁ord鏂囨。a.doc鏂囦歡涓轟緥錛孞ava涓彲浠ユ湁浠ヤ笅涓ょ鍐欐硶錛?
exec("start .\\a.doc");
exec(" c:\\Program Files\\Microsoft Office\\office\\winword.exe .\\a.doc");
鏄劇劧錛屽墠涓縐嶆柟娉曟洿涓虹畝鎹鋒柟渚褲?
3銆佹墽琛屼竴涓湁鏍囧噯杈撳嚭鐨凞OS鍙墽琛岀▼搴?
鍦╳indows騫沖彴涓婏紝榪愯琚皟鐢ㄧ▼搴忕殑DOS紿楀彛鍦ㄧ▼搴忔墽琛屽畬姣曞悗寰寰騫朵笉浼氳嚜鍔ㄥ叧闂紝浠庤屽鑷碕ava搴旂敤紼嬪簭闃誨鍦╳aitfor( )銆傚鑷磋鐜拌薄鐨勪竴涓彲鑳界殑鍘熷洜鏄紝璇ュ彲鎵ц紼嬪簭鐨勬爣鍑嗚緭鍑烘瘮杈冨錛岃岃繍琛岀獥鍙g殑鏍囧噯杈撳嚭緙撳啿鍖轟笉澶熷ぇ銆傝В鍐崇殑鍔炴硶鏄紝鍒╃敤Java鎻愪緵鐨凱rocess綾繪彁渚涚殑鏂規硶璁㎎ava铏氭嫙鏈烘埅鑾瘋璋冪敤紼嬪簭鐨凞OS榪愯紿楀彛鐨勬爣鍑嗚緭鍑猴紝鍦╳aitfor()鍛戒護涔嬪墠璇誨嚭紿楀彛鐨勬爣鍑嗚緭鍑虹紦鍐插尯涓殑鍐呭銆備竴孌靛吀鍨嬬殑紼嬪簭濡備笅錛?
...
String ls_1;
Process process = Runtime.getRuntime().exec("cmd /c dir \\windows");
BufferedReader bufferedReader = new BufferedReader( \
new InputStreamReader(process.getInputStream());
while ( (ls_1=bufferedReader.readLine()) != null)
System.out.println(ls_1);
顥?
process.waitfor( );
...
浠ヤ笂鍐呭涓鴻漿杞絶涓嬮潰鍐呭涓哄師鍒涳紒
浠婂ぉ鍦ㄥ仛瀹㈡埛绔▼搴忕殑鑷姩鏇存柊錛岀畝鍗曟弿榪頒竴涓嬶紝灝辨槸浠庢湇鍔″櫒涓婂皢鏇存柊鍖呬笅杞戒笅鏉ワ紝鐒跺悗鍦ㄦ湰鍦拌В鍘嬬緝錛屾渶鍚庡垹鎺墌鍔熻兘寰堢畝鍗晘
浣嗘槸闂鍑哄湪浣跨敤JAVA鐨刏IP妯″潡鍋氭枃浠剁殑瑙e帇緙╀笉鏄兂璞$殑閭d箞綆鍗曪紝璧勬簮闇瑕侀噴鏀撅紝涓涓笉灝忓績灝辨病鏈夊姙娉曞垹闄ゆ帀鍘熸湁ZIP鏂囦歡浜唦璧勬簮鐨勫崰鐢ㄧ‘瀹炴槸涓ぇ闂錛屼絾鏄ソ鍦紝瀹㈡埛绔▼搴忔洿鏂板畬鏄閲嶅惎鐨勶紝涓鍒囬兘鐑熸秷浜戞暎浜唦瀵逛簬鍒犻櫎涓嶆帀ZIP鏂囦歡鐨勯棶棰橈紝鎴戜篃嫻佹皳涓涓媬鐢―EL紜垹闄姝ゅ涓瀹氳娉ㄦ剰錛?/p>
Process process = Runtime.getRuntime().exec("cmd /c del f:\\aaa.doc");
榪欐牱鐨勮皟鐢ㄦ槸娌℃湁闂~
Process process = Runtime.getRuntime().exec("del f:\\aaa.doc");
榪欐牱鍐欐槸涓嶅彲鑳藉鐨剘
璁板綍涓涓嬶紝璀﹀憡涓涓嬪悗浜猴紒
public static Class<?> forName(String className) throws ClassNotFoundException
Class
瀵硅薄銆傝皟鐢ㄦ鏂規硶絳夋晥浜庯細
鍏朵腑Class.forName(className, true, currentLoader)
currentLoader
琛ㄧず姝ょ被鐨勫畾涔夌被鍔犺澆鍣ㄣ?
渚嬪錛屼互涓嬩唬鐮佺墖孌佃繑鍥?java.lang.Thread
綾葷殑榪愯鏃?Class
鎻忚堪絎︺?
Class t = Class.forName("java.lang.Thread")
璋冪敤 forName("X") 灝嗗鑷村悕涓?X 鐨勭被琚垵濮嬪寲銆?
className
- 鎵闇綾葷殑瀹屽叏闄愬畾鍚嶃?
Class
瀵硅薄銆?
LinkageError
- 濡傛灉閾炬帴澶辮觸
ExceptionInInitializerError
- 濡傛灉姝ゆ柟娉曟墍嬋鍙戠殑鍒濆鍖栧け璐?
ClassNotFoundException
- 濡傛灉鎵句笉鍒拌綾?/dd>Object綾葷殑clone()鏂規硶
protected Object clone()
throws CloneNotSupportedException
鏄紜殑錛屽垯琛ㄨ揪寮忥細x.clone() != x
灝嗕負 true錛屼絾榪欎簺涓嶆槸緇濆鏉′歡銆備竴鑸儏鍐典笅鏄細x.clone().getClass() == x.getClass()
灝嗕負 true錛屼絾榪欎笉鏄粷瀵規潯浠躲?x.clone().equals(x)
鎸夌収鎯緥錛岃繑鍥炵殑瀵硅薄搴旇閫氳繃璋冪敤 super.clone 鑾峰緱銆傚鏋滀竴涓被鍙婂叾鎵鏈夌殑瓚呯被錛?tt>Object 闄ゅ錛夐兘閬靛畧姝ょ害瀹氾紝鍒?x.clone().getClass() == x.getClass()銆?
鎸夌収鎯緥錛屾鏂規硶榪斿洖鐨勫璞″簲璇ョ嫭绔嬩簬璇ュ璞★紙姝h鍏嬮殕鐨勫璞★級銆傝鑾峰緱姝ょ嫭绔嬫э紝鍦?super.clone 榪斿洖瀵硅薄涔嬪墠錛屾湁蹇呰瀵硅瀵硅薄鐨勪竴涓垨澶氫釜瀛楁榪涜淇敼銆傝繖閫氬父鎰忓懗鐫瑕佸鍒跺寘鍚鍦ㄨ鍏嬮殕瀵硅薄鐨勫唴閮?#8220;娣卞眰緇撴瀯”鐨勬墍鏈夊彲鍙樺璞★紝騫朵嬌鐢ㄥ鍓湰鐨勫紩鐢ㄦ浛鎹㈠榪欎簺瀵硅薄鐨勫紩鐢ㄣ傚鏋滀竴涓被鍙寘鍚熀鏈瓧孌墊垨瀵逛笉鍙樺璞$殑寮曠敤錛岄偅涔堥氬父涓嶉渶瑕佷慨鏀?super.clone 榪斿洖鐨勫璞′腑鐨勫瓧孌點?
Object 綾葷殑 clone 鏂規硶鎵ц鐗瑰畾鐨勫厠闅嗘搷浣溿傞鍏堬紝濡傛灉姝ゅ璞$殑綾諱笉鑳藉疄鐜版帴鍙?Cloneable錛屽垯浼氭姏鍑?CloneNotSupportedException銆?/span>娉ㄦ剰錛氭墍鏈夌殑鏁扮粍閮借瑙嗕負瀹炵幇鎺ュ彛 Cloneable銆傚惁鍒欙紝姝ゆ柟娉曚細鍒涘緩姝ゅ璞$殑綾葷殑涓涓柊瀹炰緥錛屽茍鍍忛氳繃鍒嗛厤閭f牱錛屼弗鏍間嬌鐢ㄦ瀵硅薄鐩稿簲瀛楁鐨勫唴瀹瑰垵濮嬪寲璇ュ璞$殑鎵鏈夊瓧孌碉紱榪欎簺瀛楁鐨勫唴瀹規病鏈夎鑷垜鍏嬮殕銆傛墍浠ワ紝姝ゆ柟娉曟墽琛岀殑鏄瀵硅薄鐨?#8220;嫻呰〃澶嶅埗”錛岃屼笉“娣卞眰澶嶅埗”鎿嶄綔銆?
Object 綾繪湰韜笉瀹炵幇鎺ュ彛 Cloneable錛屾墍浠ュ湪綾諱負 Object 鐨勫璞′笂璋冪敤 clone 鏂規硶灝嗕細瀵艱嚧鍦ㄨ繍琛屾椂鎶涘嚭寮傚父銆?
CloneNotSupportedException
- 濡傛灉瀵硅薄鐨勭被涓嶆敮鎸?Cloneable
鎺ュ彛錛屽垯閲嶅啓 clone
鏂規硶鐨勫瓙綾諱篃浼氭姏鍑烘寮傚父錛屼互鎸囩ず鏃犳硶鍏嬮殕鏌愪釜瀹炰緥銆?
Cloneable
UML鎶婄被涔嬮棿鐨勫叧緋誨垎涓轟互涓?縐?
鈼?nbsp;鍏寵仈錛氱被A涓庣被B鐨勫疄渚嬩箣闂村瓨鍦ㄧ壒瀹氱殑瀵瑰簲鍏崇郴
鈼?nbsp;渚濊禆錛氱被A璁塊棶綾籅鎻愪緵鐨勬湇鍔?br />
鈼?nbsp;鑱氶泦錛氱被A涓烘暣浣撶被錛岀被B涓哄眬閮ㄧ被錛岀被A鐨勫璞$敱綾籅鐨勫璞$粍鍚堣屾垚
鈼?nbsp;娉涘寲錛氱被A緇ф壙綾籅
鈼?nbsp;瀹炵幇錛氱被A瀹炵幇浜咮鎺ュ彛
鍏寵仈錛圓ssociation錛?/strong>
鍏寵仈鎸囩殑鏄被涔嬮棿鐨勭壒瀹氬搴斿叧緋伙紝鍦║ML涓敤甯﹀疄綰跨殑綆ご琛ㄧず銆傛寜鐓х被涔嬮棿鐨勬暟閲忓姣旓紝鍏寵仈
鍙互鍒嗕負浠ヤ笅涓夌錛?br />
鈼?nbsp;涓瀵逛竴鍏寵仈
鈼?nbsp;涓瀵瑰鍏寵仈
鈼?nbsp;澶氬澶氬叧鑱?br />
娉ㄦ剰錛氬叧鑱旇繕瑕佷互鍒嗕負鍗曞悜鍏寵仈鍜屽弻鍚戝叧鑱?/p>
渚濊禆錛圖ependency錛?br />
渚濊禆鎸囩殑鏄被涔嬮棿鐨勮皟鐢ㄥ叧緋伙紝鍦║ML涓敤甯﹁櫄綰跨殑綆ご琛ㄧず銆傚鏋滅被A璁塊棶綾籅鐨勫睘鎬ф垨鑰呮柟娉曪紝
鎴栬呯被A璐熻矗瀹炰緥鍖栫被B錛岄偅涔堝彲浠ヨ綾籄渚濊禆綾籅銆傚拰鍏寵仈鍏崇郴涓嶅悓錛屾棤欏誨湪綾籄涓畾涔夌被B綾誨瀷鐨勫睘鎬с?/p>
鑱氶泦錛圓ggregation錛?/strong>
鑱氶泦鎸囩殑鏄暣浣撲笌閮ㄥ垎涔嬮棿鐨勫叧緋伙紝鍦║ML涓敤甯﹀疄綰跨殑鑿卞艦綆ご琛ㄧず銆?br />
鑱氶泦鍏崇郴榪樺彲浠ュ垎涓轟袱縐嶇被鍨嬶細
鈼?nbsp;琚仛闆嗙殑瀛愮郴緇熷厑璁歌鎷嗗嵏鍜屾浛鎹紝榪欐槸鏅氳仛闆嗗叧緋匯?br />
鈼?nbsp;琚仛闆嗙殑瀛愮郴緇熶笉鍏佽琚媶鍗稿拰鏇挎崲錛岃繖縐嶈仛闆嗙О涓哄己鑱氶泦鍏崇郴錛屾垨鑰呯粍鎴愬叧緋匯?br />
娉細寮鴻仛闆嗭紙緇勬垚錛夊彲鐢ㄥ甫瀹炵嚎鐨勫疄蹇冭彵褰㈢澶?/strong>琛ㄧず銆?br />
娉涘寲錛圙eneralization錛?/strong>
娉涘寲鎸囩殑鏄被涔嬮棿鐨勭戶鎵垮叧緋伙紝鍦║ML涓敤甯﹀疄綰跨殑涓夎褰㈢澶?/strong>琛ㄧず銆?br />
瀹炵幇錛圧ealization錛?br />
瀹炵幇鎸囩殑鏄被涓庢帴鍙d箣闂寸殑鍏崇郴錛屽湪UML涓敤甯﹁櫄綰跨殑涓夎褰㈢澶?/strong>琛ㄧず銆?nbsp;
鍚?nbsp; 綾?/strong>
鍚?nbsp; 鍖?/strong>
瀛?nbsp; 綾?/strong>
涓嶅悓鐨勫寘