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

2023-10-13 06:08
文章标签 设计 合理 答疑 看一看

本文主要是介绍[答疑]看一看这样一个类的设计合理不,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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)
这个不对的

图片
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)
出问题出在分析(领域内涵没有把握住),不是出在类图代码的映射


 

图片

这篇关于[答疑]看一看这样一个类的设计合理不的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/201268

相关文章

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

怎么让1台电脑共享给7人同时流畅设计

在当今的创意设计与数字内容生产领域,图形工作站以其强大的计算能力、专业的图形处理能力和稳定的系统性能,成为了众多设计师、动画师、视频编辑师等创意工作者的必备工具。 设计团队面临资源有限,比如只有一台高性能电脑时,如何高效地让七人同时流畅地进行设计工作,便成为了一个亟待解决的问题。 一、硬件升级与配置 1.高性能处理器(CPU):选择多核、高线程的处理器,例如Intel的至强系列或AMD的Ry

基于51单片机的自动转向修复系统的设计与实现

文章目录 前言资料获取设计介绍功能介绍设计清单具体实现截图参考文献设计获取 前言 💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们电子相关专业的大学生,希望您们都共创辉煌!✌💗 👇🏻 精彩专栏 推荐订阅👇🏻 单片机

SprinBoot+Vue网络商城海鲜市场的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 application.yml3.5 SpringbootApplication3.5 Vue 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍:CSDN认证博客专家,CSDN平台Java领域优质创作者,全网30w+

单片机毕业设计基于单片机的智能门禁系统的设计与实现

文章目录 前言资料获取设计介绍功能介绍程序代码部分参考 设计清单具体实现截图参考文献设计获取 前言 💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们电子相关专业的大学生,希望您们都共创辉煌!✌💗 👇🏻 精彩专栏 推荐订

Spring的设计⽬标——《Spring技术内幕》

读《Spring技术内幕》第二版,计文柯著。 如果我们要简要地描述Spring的设计⽬标,可以这么说,Spring为开发者提供的是⼀个⼀站式的轻量级应⽤开发框架(平台)。 作为平台,Spring抽象了我们在 许多应⽤开发中遇到的共性问题;同时,作为⼀个轻量级的应⽤开发框架,Spring和传统的J2EE开发相⽐,有其⾃⾝的特点。 通过这些⾃⾝的特点,Spring充分体现了它的设计理念:在

开题报告中的研究方法设计:AI能帮你做什么?

AIPaperGPT,论文写作神器~ https://www.aipapergpt.com/ 大家都准备开题报告了吗?研究方法部分是不是已经让你头疼到抓狂? 别急,这可是大多数人都会遇到的难题!尤其是研究方法设计这一块,选定性还是定量,怎么搞才能符合老师的要求? 每次到这儿,头脑一片空白。 好消息是,现在AI工具火得一塌糊涂,比如ChatGPT,居然能帮你在研究方法这块儿上出点主意。是不

创业者该如何设计公司的股权架构

本文来自七八点联合IT橘子和车库咖啡的一系列关于设计公司股权结构的讲座。 主讲人何德文: 在公司发展的不同阶段,创业者都会面临公司股权架构设计问题: 1.合伙人合伙创业第一天,就会面临股权架构设计问题(合伙人股权设计); 2.公司早期要引入天使资金,会面临股权架构设计问题(天使融资); 3.公司有三五十号人,要激励中层管理与重要技术人员和公司长期走下去,会面临股权架构设计问题(员工股权激

分布式文件系统设计

分布式文件系统是分布式领域的一个基础应用,其中最著名的毫无疑问是 HDFS/GFS。如今该领域已经趋向于成熟,但了解它的设计要点和思想,对我们将来面临类似场景 / 问题时,具有借鉴意义。并且,分布式文件系统并非只有 HDFS/GFS 这一种形态,在它之外,还有其他形态各异、各有千秋的产品形态,对它们的了解,也对扩展我们的视野有所俾益。本文试图分析和思考,在分布式文件系统领域,我们要解决哪些问题、有

(入门篇)JavaScript 网页设计案例浅析-简单的交互式图片轮播

网页设计已经成为了每个前端开发者的必备技能,而 JavaScript 作为前端三大基础之一,更是为网页赋予了互动性和动态效果。本篇文章将通过一个简单的 JavaScript 案例,带你了解网页设计中的一些常见技巧和技术原理。今天就说一说一个常见的图片轮播效果。相信大家在各类电商网站、个人博客或者展示页面中,都看到过这种轮播图。它的核心功能是展示多张图片,并且用户可以通过点击按钮,左右切换图片。