Java思想之什么是对象的聚合?附带例子(计算三角形、圆形面积)

本次进行对象的聚合的举例测试,其内功能为计算三角形和圆形的面积。

 

聚合就是:表示两个对象之间是整体和部分的弱关系,部分的生命周期可以超越整体。如下:实例化Person,不一定要实例化Telephone。
public class Person{
private Telephone tel; 它是has-a 组成关系,
在组成关系中,一个
private Hand hand = new Hand(); 对象将一个或者多个
....... 其它对象作为自己的成员。
}
class Telephone{

......
}

 

在以下完整测试中

我们会使用到四个类

1.Rectangle

 

2.Circle

 

3. Geometry

 

4.MainClass

 

_____________________________________________________________________________________________________

.

我们来看一看代码实现

.

//三角形类

package objectCoop;

public class Rectangle {

	private double x, y, width, height;
	
	public void setX(double x){
		this.x = x;
	}
	
	public double getX(){
		return x;
	}
	
	public void setY(double y){
		this.y = y;
	}
	
	public double getY(){
		return y;
	}
	
	public void setWidth(double width){
		if(width <= 0){
			this.width = 0;
		}
		else{
			this.width = width;
		}
	}
	
	public double getWidth(){
		return width;
	}
	
	public void setHeight(double height){
		if(height <= 0){
			this.height = 0;
		}
		else{
			this.height = height;
		}
	}
	
	public double getHeight(){
		return height;
	}
}

 

//圆形类

package objectCoop;

public class Circle {

	private double x, y, radius;
	
	public void setX(double x){
		this.x = x;
	}
	
	public double getX(){
		return x;
	}
	
	public void setY(double y){
		this.y = y;
	}
	
	public double getY(){
		return y;
	}
	
	public void setRadius(double radius){
		if(radius <= 0){
			this.radius = 0;
		}
		else{
			this.radius = radius;
		}
	}
	
	public double getRadius(){
		return radius;
	}
}

 

//几何类

package objectCoop;

public class Geometry {

	private Rectangle rect;
	private Circle circle;
	
	Geometry(Rectangle rect, Circle circle){
		this.rect = rect;
		this.circle = circle;
	}
	
	public void setCirclePosition(double x, double y){
		circle.setX(x);
		circle.setY(y);
	}
	
	public void setCircleRadius(double radius){
		circle.setRadius(radius);
	}
	
	public void setRectanglePosition(double x, double y){
		rect.setX(x);
		rect.setY(y);
	}
	
	public void setRectangleWidthAndHeight(double w, double h){
		rect.setWidth(w);
		rect.setHeight(h);
	}
	
	public void showState(){
		double circleX = circle.getX();
		double rectX = rect.getX();
		
		if((rectX - circleX) == (circle.getRadius() * 2)){
			System.out.println("图形中的矩形在圆的右侧");
		}
		
		if((circleX - rectX) == rect.getWidth()){
			System.out.println("图形中的矩形在圆的右侧");
		}
	}
}

 

//主类

package objectCoop;

public class MainClass {

	public static void main(String[] args){
		
		Rectangle rect1 = new Rectangle(), rect2 = new Rectangle();
		Circle circle1 = new Circle(), circle2 = new Circle();
		
		Geometry geometryOne, geometryTwo;
		geometryOne = new Geometry(rect1, circle1);
		geometryOne.setRectanglePosition(30, 40);
		geometryOne.setRectangleWidthAndHeight(120, 80);
		geometryOne.setCirclePosition(150, 30);
		geometryOne.setCircleRadius(60);
		
		geometryTwo = new Geometry(rect2, circle2);
		geometryTwo.setRectanglePosition(160, 160);
		geometryTwo.setRectangleWidthAndHeight(120, 80);
		geometryTwo.setCirclePosition(40, 30);
		geometryTwo.setCircleRadius(60);
		
		geometryOne.showState();
		geometryTwo.showState();
	}
}

 

 

看完这篇文章,你是否对对象的聚合又有了更深的了解呢?

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值