Liny_@NotePad

沉迷ACG中

几个UML模型的Java实现..(2)

YOYO posted @ 2009年4月07日 17:03 in 【OOA/D】 with tags UML , 2560 阅读

这个图中有组合与聚合两种关系。
[Style.java]

  1. import java.awt.Color;
  2.  
  3. public class Style {
  4.    
  5.     private Color color;
  6.    
  7.     private boolean isFilled;
  8.  
  9.     public Color getColor() {
  10.         return color;
  11.     }
  12.  
  13.     public void setColor(Color color) {
  14.         this.color = color;
  15.     }
  16.  
  17.     public boolean isFilled() {
  18.         return isFilled;
  19.     }
  20.  
  21.     public void setFilled(boolean isFilled) {
  22.         this.isFilled = isFilled;
  23.     }
  24.  
  25. }

[Point.java]

  1. public class Point {
  2.  
  3. }

 [Circle.java]
它有一条实心菱形线指向Point,表组合,其中Point端注明1,
即每个Circle对象的产生都伴随着一个Point对象的产生,这个Circle对象消失了,相应的Point对象也随之消失。
因此我们直接在属性中直接new,
也可以先放一个Point属性不指向任何对象,而在构造方法中为其new新的Point对象。
另一条线则是空心菱形指向Style,Style端注明1,Circle端注明*,
表聚合,同时一个Style对象可以为多个Circle对象使用,而一个Circle对象只可以使用一个Style对象。
为此我们先放一个Style属性,再创建setter方法供后面为其设置Style对象时使用。

  1. import java.util.*;
  2.  
  3. public class Circle {
  4.    
  5.     private Point point = new Point();
  6.    
  7.     private Style style;
  8.    
  9.     private int radius;
  10.  
  11.     public int getRadius() {
  12.         return radius;
  13.     }
  14.  
  15.     public void setRadius(int radius) {
  16.         this.radius = radius;
  17.     }
  18.  
  19.     public Style getStyle() {
  20.         return style;
  21.     }
  22.  
  23.     public void setStyle(Style style) {
  24.         this.style = style;
  25.     }
  26.  
  27. }

[Polygon.java]
与Circle的线基本一样,
唯一不同的是指向Point时,Point端注明3..n,
即该类对象创建时至少要有3个Point对象,
因此我们新建个List来存放Point对象,同时在构造器中为其加入三个Point对象,
为了使可能存在n个节点,再添加了一个addPoint方法。
要注意的是,一个Point对象只能同时为一个Circle对象或一个Polygon对象所用,因此我们并非传Point类的参数进该方法,
而是在该方法中new一个新的Point对象再放入列表。

  1. import java.util.*;
  2.  
  3. public class Polygon {
  4.    
  5.     private List<Point> pointList = new ArrayList<Point>();
  6.    
  7.     private Style style;
  8.    
  9.     public Polygon(){
  10.         pointList.add(new Point());
  11.         pointList.add(new Point());
  12.         pointList.add(new Point());
  13.     }
  14.    
  15.     public void addPoint(){
  16.         pointList.add(new Point());
  17.     }
  18.  
  19.     public Style getStyle() {
  20.         return style;
  21.     }
  22.  
  23.     public void setStyle(Style style) {
  24.         this.style = style;
  25.     }
  26.  
  27. }

 


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter