首页 > 其他分享 >[答疑]看一看这样一个类的设计合理不

[答疑]看一看这样一个类的设计合理不

时间:2022-12-29 12:06:04浏览次数:51  
标签:46486 01 17 22 16 看一看 答疑 合理 2013

2013-01-22 15:49:28 46486***(46486***)
class A
{
B Parent;
}
class B:A
{
} 各位老大,看一看这样一个类的设计合理不?
2013-01-22 15:51:04 lingshuai(375372***)
这样必须得有前置声明,否则可能编译通不过。
2013-01-22 15:51:53 灯火阑珊(58727***)
这个很正常,组合模式
2013-01-22 15:53:14 46486***(46486***)
程序的本意好像是这样一个意思,A是基本元素,B也是一个元素,但是又是一个容器,可以包含A
2013-01-22 15:54:14 46486***(46486***)
也就是程序运行时首先要有一个B的实例,然后产生A的实例,他们的父项是B
2013-01-22 15:55:51 深圳-Stupig(503685***)
现在是父类依赖于子类
2013-01-22 15:55:56 小武哥(757611140)
容器是所包含对象的子类,逆天吧
2013-01-22 15:56:35 瑶妖(24165***)
public abstract class Equipment {

  private String name;

  //实价

  public abstract double netPrice();

  //折扣价格

  public abstract double discountPrice();

  //增加部件方法

  public boolean add(Equipment equipment) { return false; }

  //删除部件方法

  public boolean remove(Equipment equipment) { return false; }

  //注意这里,这里就提供一种用于访问组合体类的部件方法。

  public Iterator iter() { return null; }     

  public Equipment(final String name)

{ this.name=name; }

}

这个是 compsite
2013-01-22 15:56:37 46486***(46486***)
我感觉要加两个接口 interface iA

{

iB Parent;

}

interface iB:iA
2013-01-22 16:06:21 瑶妖(24165***)
感觉像 编译不过去的 组合
2013-01-22 16:06:21 46486***(46486***)
interface iA;

interface iB:iA;

class A

{

iB Parent;

}

class B:A,iB

{

}

这样可以吗?
2013-01-22 16:06:52 海东青(33202***)
这个什么也不是,在基类(超类)中依赖子类的具体实现
2013-01-22 16:06:52 46486***(46486***)
interface iA;

interface iB:iA;

class A:iA

{

iB Parent;

}

class B:A,iB { } 这样可以吗?
2013-01-22 16:08:36 海东青(33202***)
class A

{

A Parent;

}

class B:A

{

}
2013-01-22 16:10:32 46486***(46486***)
class x
{
arraylist items;
a()
{
(A)items[1].Parent.xxx();
}
}
2013-01-22 16:10:57 46486***(46486***)
xxx()的方法在B类中实现
2013-01-22 16:11:12 46486***(46486***)
x的代码根本编译不过去啊
2013-01-22 16:12:50 瑶妖(24165***)
成 编译器 的 测试程序了,看 编译器 纠错能力 [表情]
2013-01-22 16:25:59 潘加宇(3504847)
这个不对的
[答疑]看一看这样一个类的设计合理不_UML
2013-01-22 16:28:20 潘加宇(3504847)
领域有它的规律,设计要捕获领域内涵,这样才能以最小成本跟随着领域规律变化。不仅是说能否写出代码或画出图的问题,爱怎么写怎么画都可以,说人是狗的一种也没问题。

2013-01-22 16:53:37 46486***(46486***)
class A
{
private B b;
}
class B
{
}
A和B具体是啥关系呢?
2013-01-22 16:54:29 46486***(46486***)
依赖、关联还是组合呢?
2013-01-22 16:57:08 龙盘虎踞(615875***)
这种问法是不太合理的,先从类图映射到代码,就不会存在这样的问题
2013-01-22 17:13:40 深圳-Stupig(503685***)
类的关系不能通过代码确定,类的关系表达出领域概念的关系,领域概念跟代码不能一一映射
2013-01-22 17:14:06 深圳-Stupig(503685***)
同一段代码,对应的类图可以有多种画法,同一个类图,代码可以有多种写法
2013-01-22 17:16:09 潘加宇(3504847)
不是这样了
2013-01-22 17:18:43 潘加宇(3504847)
代码有了,类的关系是确定的。之所以"类的关系不能通过代码确定"不是因为从代码不能倒推类图,而是因为我们要的是"反应领域内涵的类和关系",而不是随便的"类和关系"
2013-01-22 17:20:08 潘加宇(3504847)
有时我对开发人员说:这个不应该是泛化。开发人员瞪大眼睛"老师,是泛化啊,不信我拿代码给你看!"

2013-01-22 17:21:16 杭张凯(80447***)
关联和依赖不需要分的那么清楚,即使不理解那么透彻也行的!这个属于关联,不是依赖!关联一般以属性或成员变量的方式体现!可以用两个词语百度,不过也容易搞晕!还是把业务逻辑搞清楚,不要形成循环调用
2013-01-22 17:22:44 深圳-Stupig(503685***)
问个问题,根据类图写出代码后,再通过代码反推类图,能保证类图前后一致吗?
2013-01-22 17:24:04 龙盘虎踞(615875***)
老师想说的是 不能随便把随便从代码中反应的类关系 归结为领域内涵的关系,此关系非彼关系?
2013-01-22 17:24:06 京吴维(348010***)
我想不能吧,不然干嘛先要设计,才落地代码呢?
2013-01-22 17:25:26 杭张凯(80447***)
一般都有差别!我们这么干,获得的类图比较标准!存在的问题就是, 编写代码的时候,会修改原来设计的类图,甚至是关系!如果严格按照类图编写的,肯定一样的!
2013-01-22 17:26:24 杭张凯(80447***)
一个人考虑到所有情况,做出来类图!在编辑阶段,不做一点修改的, 太少了!尤其现在需求一直变
2013-01-22 17:27:23 龙盘虎踞(615875***)
一般核心领域的类图 八九不离十的
2013-01-22 17:28:22 潘加宇(3504847)
要通过案例反复培训,编码人员能够选择一致的实现套路

2013-01-22 17:27:42 深圳-Stupig(503685***)
这个涉及到另一个概念:UMl能否成为编程语言?UML能否像编程语言一样精确
2013-01-22 17:29:02 潘加宇(3504847)
群共享里答疑记录已经回答过这个问题。或者看《软件方法》第一章
2013-01-22 17:30:57 潘加宇(3504847)
另外,设计工作流推荐的做法是不需要画UML图,"代码就是设计"。要注意这里的"设计"的含义,代码是设计,但不是分析,不是需求,不是业务建模。反过来,"设计就是代码"也是成立的,例如用带有设计级调试和强大代码生成能力的Rational Rhapsody开发实时嵌入系统。对UML不了解的人经常问我的一个问题是:UML能代替编码吗?其实源代码(也就是人脑需要编辑的介质)的形式一直在变化,从最初的机器语言到汇编语言、过程式高级语言到现在流行的面向对象语言。"模型就是源代码"不是可不可能的问题,而是合不合算的问题。真实世界中,涉众对许多系统的质量要求并不高,电商网站、银行系统出个故障,人们习以为常,能够接受,反正出了故障再恢复呗。这样的系统,充分的建模没有必要性,也无可能性(类太多,工期不允许),只需要对关键的类充分建模。如果做一个心脏起搏器,通过充分的建模尽可能减少人工编码导致的偶发错误是必要的,也是可能的(类的个数少)。2013-01-22 17:32:31 潘加宇(3504847)
不同工作流之间首先是内容的区别,不是形式的区别。了解了这一点,用Java照样可以描述需求,UML也可以编码。只不过不同的内容,用不同的形式表达更高效。

2013-01-22 17:34:15 京吴维(348010***)
好像有点懂了,分析,设计,代码,其实都是用不同形式来描述同一样东西,代码太抽象.
2013-01-22 17:34:57 潘加宇(3504847)
"分析,设计,代码,其实都是用不同形式来描述同一样东西"--不对呀
2013-01-22 17:35:21 潘加宇(3504847)
既然是同样的东西,干嘛要用N种形式描述呢

2013-01-22 17:37:10 深圳-Stupig(503685***)
有不同的内容,和不同的形式,内容A、B都可以用形式C、D表达,只是是否高效实用的问题?潘老师是这个意思吗?
2013-01-22 17:38:15 潘加宇(3504847)
参见《软件方法》第一章
2013-01-22 17:41:13 潘加宇(3504847)
出问题出在分析(领域内涵没有把握住),不是出在类图代码的映射


标签:46486,01,17,22,16,看一看,答疑,合理,2013
From: https://blog.51cto.com/u_15684364/5976624

相关文章

  • UML设计模式符号答疑
    在UML类图中,常见的有以下几种关系:泛化(Generalization),  实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency) 1.泛化(Generalization)......
  • Microsoft Azure解决方案:合理使用Azure 虚拟桌面满足企业内部需求
    51CTO博客地址:​ ​​​​https://blog.51cto.com/14669127​​Azure培训视频地址:​ ​​​https://space.bilibili.com/2000820534​​很多企业比如金融服务,医疗或者政......
  • 云渲染哪个平台费用低??云渲染收费答疑!
    Renderbus瑞云渲染小编小瑞今天来给大家分享一下云渲染怎么收费的?云渲染哪个平台费用低?这两个问题。云渲染是怎么收费的?市面上​​云渲染平台大部分都是按渲染时间进行收费......
  • Mac VSCode启动提示(无法在合理的时间内解析shell)
    问题描述VSCode启动提示:无法在合理的时间内解析shell原因分析nvm如果在shell初始化期间运行,会导致shell启动时间变慢解决方法修改文件~/.bash_profilefunctionlo......
  • 长租公寓管理系统,国办发文提合理增加住房公共消费
    版权声明:本文章由“厦门多米克信息技术有限公司”编辑组汇编而成,未经授权和许可,任何个人或媒体不得对本网站的文章及其他信息资料予以复制、转载、抄袭、改编。厦门多米克......
  • Go语言接口类型的合理使用
    dog:=Dog{"littlepig"}varpetPet=&dog我们声明并初始化一个Dog类型的变量dog,然后它的指针赋给类型为Pet的变量pet对于一个接口类型的变量来讲,如上面的变量pet......
  • 知行之桥2022版本升级之页面变化以及监控邮件答疑
    近期有些客户将知行EDI系统升级到了我们最新知行之桥2022版本,升级过程或者升级后对于新版本的使用会有些疑问,根据近期协助大家进行知行EDI系统升级遇到的问题,我们的运维团......
  • 蓝桥杯 2020 国 ABC-答疑 贪心
    题面有\(n\)位同学同时找老师答疑。每位同学都预先估计了自己答疑的时间。老师可以安排答疑的顺序,同学们要依次进入老师办公室答疑。一位同学答疑的过程如下:首先进入......
  • AIRIOT答疑第2期|如何使用物联网平台的数据采集与控制引擎?
    任性用! 作为AIRIOT物联网低代码平台的五大核心能力引擎之一,数据采集与控制引擎具备极强的系统集成能力,提供丰富的接口,具备海量工业设备驱动库,分布式采集,稳定性高,实现......
  • UMLChina答疑记录20160521更新
    因篇幅所限,以下仅是部分问题标题,更多内容请访问http://www.umlchina.com/qa/Index1.htm或点击“查看原文”业务建模• 兼职用工的业务建模(2016/5/15) • 组织架构图和鱼刺......