下面是我寫的一個小東西,繪制了若干圖形: import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.awt.geom.*; import
創(chuàng)新互聯(lián)提供做網站、網站設計、網頁設計,成都品牌網站建設,廣告投放等致力于企業(yè)網站建設與公司網站制作,十多年的網站開發(fā)和建站經驗,助力企業(yè)信息化建設,成功案例突破成百上千,是您實現網站建設的好選擇.
怎么用visio畫Java代碼中類之間的關系圖
依賴 --- 兩個事物間的語義關系,對于兩個對象X、Y,如果對象X發(fā)生變化,可能會引起對另一個對象Y的變化,則稱Y依賴于X。
關聯(lián) --- 是一種結構關系,指一種對象和另一種對象有聯(lián)系。給定關聯(lián)的兩個類,可以從其中的一個類的對象訪問到另一個類的相關對象。
泛化 --- 一般/特殊關系
1.關聯(lián)
關聯(lián)即對象與對象之間的連接。java類之間的關聯(lián)是一個類的作為另一個的屬性被定義,即“has-a”的關系。關聯(lián)又分為組合與聚合兩種。示例如下:
//兩個類之間的聚合public class Car{}public class Person{
private Car car;
}//兩個類之間的組合public class Car{}public class Person{
private Car car=new Car();//創(chuàng)建一個Car對象}123456789101112
關聯(lián)又分為單向關聯(lián)與雙向關聯(lián),以上代碼為單向關聯(lián)(Person類關聯(lián)Car類),雙向關聯(lián)(Person類關聯(lián)Car類,同時Car類關聯(lián)Person類)代碼如下:
public class Car{
private Person per;
}public class Person{
private Car car;
}123456
類之間的關聯(lián),可以一對一的關聯(lián),也可以一對多的關聯(lián)。
2.依賴
依賴的具體表現是將一個類的對象當做方法參數傳給另一個類的方法,是一種use-a的關系。如:
public class Person{
public void dirve(Car car){
}
}1234
關聯(lián)與依賴的區(qū)別在于:關聯(lián)是has-a的關系,依賴是use-a的關系;而且關聯(lián)中Person關聯(lián)Car,只要Person類對象存在,Car對象就存在;依賴中只有Person類對象調用到dirve()方法時,Car對象才會被創(chuàng)建,方法執(zhí)行結束后,Car對象就被收回。
3.繼承
類與類的另一個關系是繼承。繼承是一個類的定義基于另一個存在的類,即子類基于父類,如此可實現代碼的重用,子類能夠繼承父類可訪問的方法、屬性,并能擴展新的能力,而且子類可重寫父類方法以滿足子類需要。在繼承中子類可調用父類的構造方法,子類構造方法總是先調用父類的構造方法,而且默認情況下調用父類的無參構造方法,在子類構造方法的第一行使用super關鍵字即可調用父類構造方法。示例代碼如下:
public class Point {
private double x; private double y; public double getX() { return x;
} public void setX(double x) { this.x = x;
} public double getY() { return y;
} public void setY(double y) { this.y = y;
} //無參構造方法
public Point() {
} //有參構造方法
public Point(double x, double y) { this.x = x; this.y = y;
} //draw()方法
public void draw(){
}
}public class Circle extends Point {
private double r; public double getR() { return r;
} public void setR(double r) { this.r = r;
} //有參構造方法
public Circle(double x, double y) { super(x, y);
} public void draw() {
System.out.println("半徑為:" + this.r + " x坐標為:" + getX() + " y坐標為:" + getY() + "的圓繪制成功!");
}
}public class Test {
public static void main(String[] args) {
Circle circle = new Circle(2, 3);
circle.setR(3);
circle.draw();
}
}