java – UML中的接口和抽象类聚合
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – UML中的接口和抽象类聚合,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3192字,纯文字阅读大概需要5分钟。
内容图文
![java – UML中的接口和抽象类聚合](/upload/InfoBanner/zyjiaocheng/774/d8e229e943e041b0a42be841ba2e33cf.jpg)
我得到了一个任务,我必须实现一个模拟太阳系的小程序,太阳系有行星绕行星运行,行星必须有行星绕行星运行.我已经成功实现了动画,但为了获得完全的功劳,我们需要使用以下UML:
我知道框架有Sun的一个实例,而Sun在Orbit接口中实现了这些方法,并且有一个用Planet构造函数创建的OrbitingBody实例,依此类推……我不想要的是UML中的关系接口Orbit和抽象类OrbitingBody之间.
/****************************************************************/
import java.awt.*;
@SuppressWarnings("serial")
public class Sun implements Orbit {
private Dimension dim;
private OrbitingBody earth;
private OrbitingBody mars;
//Other vars
public void init(Dimension dim) {
// CODE irrelevant for the question
}
public void setPlanetPosition() {
// CODE irrelevant for the question
}
public int calX(int distance, int angle){
// CODE irrelevant for the question
}
public int calY(int distance, int angle){
// CODE irrelevant for the question
}
public void draw(Graphics g) {
// CODE irrelevant for the question
}
}
/****************************************************************/
import java.awt.*;
@SuppressWarnings("serial")
public class Planet extends OrbitingBody implements Orbit {
private Moon moon;
private Moon eris;
Planet(int x, int y, Color color) {
super.x = x;
super.y = y;
moon = new Moon();
eris = new Moon();
this.color = color;
}
public int calX(int distance, int angle){
// CODE irrelevant for the question
}
public int calY(int distance, int angle){
// CODE irrelevant for the question
}
}
/****************************************************************/
public interface Orbit {
int calX(int distance, int angle);
int calY(int distance, int angle);
}
/****************************************************************/
import java.awt.*;
public abstract class OrbitingBody {
protected Color color;
protected int x, y;
protected int radius = 25;
void setPosition(int x, int y) {
this.x = x;
this.y = y;
}
public void draw(Graphics g) {
// CODE irrelevant for the question
}
}
解决方法:
我能理解你的困惑.
我自己很难理解UML图的目的(我这样做是为了谋生).
UML图的问题
>对每个关联使用聚合(关联结束时打开菱形).聚合表示整个部分关系.我没有在图上的任何关联中看到它.行星如何成为太阳或月球的一部分?
>«Orbit»和{Orbiting Body}的UML符号是错误的.我猜测轨道是一个接口?在这种情况下,正确的表示法是使用棒棒糖表示法,或者在名称前使用关键字“interface”的标准框.对于轨道体,大括号仅用于UML以指示约束.我再次猜测你的老师是想表明一个抽象的课程?在这种情况下,正确的是使用斜体作为名称,所以轨道体
>’轨道体’和’轨道’之间的聚合没有任何意义.正如现在所写,轨道是轨道运动的一部分.我能理解轨道体与轨道之间是否存在正常关联
>“轨道体和轨道”之间关联的方向与太阳与行星与行星和月球之间的关联相反.我认为实现Orbit和Orbiting Body的类之间的关联将是对该关联的某种重新定义,但在这种情况下,方向必须是相同的. (并且还需要重新定义).
正如它现在设计的那样,你应该有两个协会来实现太阳与星球之间以及星球与月球之间的联系.每个方向一个.
我建议你忽略实际UML图的细节,因为它不一致并使用你自己的判断.程序员应该是一个无意识的codemonkey,在代码中翻译UML.您应该自己思考并(如果可能的话)挑战和/或改进分析.
代码中的问题:
>考虑如何实现轨道物体(行星,月球)和轨道(太阳,行星)之间的关系.
>你需要哪个方向?
>您是在一般级别还是仅在具体级别需要它
>为什么Planet类上有两个Moon类型的属性?一颗行星不能有超过2个月亮吗?我期待某种月亮列表
>关于Planet的Sun课程相同的评论.
内容总结
以上是互联网集市为您收集整理的java – UML中的接口和抽象类聚合全部内容,希望文章能够帮你解决java – UML中的接口和抽象类聚合所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。