软件设计面向对象

LittleChery 2019-01-07 08:13:38
加精
当客户需求在同一功能上有些略微不同时 软件设计如何实现面向对象
...全文
17439 28 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_45220523 2019-06-11
  • 打赏
  • 举报
回复
很好,比较专业
qq_28411187 2019-05-23
  • 打赏
  • 举报
回复
图书卡阿贾克斯
gbbfum 2019-04-28
  • 打赏
  • 举报
回复
面向对象需要对实物进行抽象,可以画UML图,对象与对象的关系关系要理清楚。
大鱼> 2019-04-17
  • 打赏
  • 举报
回复
楼上两位大佬说的很对,面向对象编程并不是说你编程基于对象,而是要很好的时候继承与多态,程序设计过程中抽象函数与抽象类,接口的熟练应用才是一个好的程序设计
x8984666 2019-04-17
  • 打赏
  • 举报
回复
我是新人来学习学习
qq_37804920 2019-02-25
  • 打赏
  • 举报
回复
谢谢诸位高手的分享,我是新人来学习学习。
grayguardian 2019-01-27
  • 打赏
  • 举报
回复
这是把程序员当造物主用了吧
siemcs 2019-01-27
  • 打赏
  • 举报
回复
其实软件的面向对象是基于面向过程的思维,面向对象可以把复杂的代码简单化,通过类的实例化,再通过对象与对象之间的相互调用。
圣殿骑士18 2019-01-25
  • 打赏
  • 举报
回复
你这个问题,太宽泛了。
实际上,它 = 怎么进行代码复用 = 设计模式。

所以,你应该去学习一下,网上流行的所谓二十一中设计模式,设计模式就是讲如何复用代码的。

==========
欢迎关注微信公众号 “产品技术知与行” ,参加课程式学习,逐章节解析C#高级编程技术,全面深度了解C#编程。
weixin_44611015 2019-01-23
  • 打赏
  • 举报
回复
是适合于插在主板串口上进行控制的设备都继承于同一种接口特征,不管它是机器人还是鼠标、手机,甚至是卫星地面站,那么能写出一个文档来说明这些设备都有怎样的相同的对外交互控制的来源,必定是先要研究具体、然后才抽象。而那种为了抽象而抽象的人,则会滥用抽象并且只会衍生一堆诡异地东西。
  • 打赏
  • 举报
回复
大量使用“扩展、一般化、接口、多态”等等这些(基本上同类)概念,才是面向对象与结构化设计方法的区别。不是说 new 一个对象、然后调用对象的方法就算是面向对象设计。
  • 打赏
  • 举报
回复
"通过类的实例化,再通过对象与对象之间的相互调用"这是结构化面向过程方法就已经包括的,过程的输入输出参数本身就可以使结构化的对象实例。 面向对象是在结构化基础上,还支持继承和多态。
weixin_44563317 2019-01-18
  • 打赏
  • 举报
回复
软件设计面向对象是基于面向过程的编程思想,面向对象可以把复杂的代码简单化,通过类的实例化,再通过对象与对象之间的相互调用。
  • 打赏
  • 举报
回复
所谓 Ctrl+C 然后 Ctrl+V 方式,通常就类比为建筑工地的小工,或者是刚上流水线上的民工,而不是设计师水平。对他们来说,因为不做设计研发,只做搬运工的职责,所以复制粘贴眼前一刻行为,然后一旦千变万化地修改需求逐步到来,就开始消极怠工甚至跑路了。
  • 打赏
  • 举报
回复
区分业务对象是首先要做好的工作。比如说,不用银行的ATM机的交易操作稍有差别,这就是不同种类ATM的差别;但是假设一个ATM机安装了不同的显示触摸屏于是仅仅在触摸操作上有所不同,那么在你设计ATM操作流程中就应该对显示触摸屏相关操作抽象出来,然后再为具体的ATM实例内部初始化不同的显示触摸屏,此时的差别体现在触摸屏而不是体现在ATM上。 所以说,面向对象设计是一个设计工具,要灵活用到具体设计细节上。对象都识别错了,那么面向对象技术也就无用了。
  • 打赏
  • 举报
回复
设计、抽象、继承、多态、扩展......这一类类似的概念,要注意,一定要从业务建模方面就研究清楚符合面向对象基本原则,一定要用2种以上的具体实例来测试业务逻辑。 “为了抽象而抽象”是一个非常危险的动做。有些人为了少写一些代码来抽象,仅仅因为一些代码有重复就以为可以继承,这就是滥用继承了。这个分寸的把握,就是在技术之外,要从领域模型上本身就是同一类东西,编码才敢继承。如果编码是继承的但是实际业务领域分析不继承,那就是滥用继承。
  • 打赏
  • 举报
回复
其实纠结于汇编语言代码“横切”的所谓理论,并不算是一种真正的软件设计。我们都知道现在的软件不过是一堆 0、1、0、1.....的代码,实际上所谓的反转横切面向切面等等,不过是乱改机器码的概念。且不管这种所谓的“灵活性”其给靠谱的调试和几口规范带来了多少混乱,它起码不是来自于业务领域的设计,不是言行一致的设计。大量精力都投入到纯粹诡异地编程部分中,体现了人性的弱点,而那些“技术”对项目实践的长期价值并不高。 实际上开发中最坑爹的软件 bug 是因为程序员明明眼睛看着用户需求逻辑、而自己非要另外发明一套流程,有些程序员不喜欢100%忠实地按照用户的指令来编写和调试代码,结果浪费大量时间在那里改 bug,最后也不过是凑代码。就算是最终凑出结果来了,如果你问程序员“之前的 bug 是什么问题”那么这些人往往也是千方百计解释自己的流程的那套“算法理由”,而不会先承认自己没有按照业务用户给出的业务逻辑代码来编写计算机代码。 脱离实际,不知道时时刻刻从业务出发,总觉得编程的人所写的代码凌驾于业务之上,出了问题时不是扔掉计算机代码从业务出发重写代码、而是总是反复“求”各种代码来凑出业务需求,不承认技术是相对不重要的东西,这就只有靠不断跳槽去“玩儿”技术而不能很好地把技术用于项目。
  • 打赏
  • 举报
回复
当“略微不同时”,一个不懂一个领域设计开发的人,必定是从具体地实习开发,从建筑搬运工出发,当它流汗付出2、3个具体的设计实现之后才知道自己写出什么样地规范接口设计来。但是总之是要设计、抽象,把成功的设计发布出来,将来的每一种扩展只是描述“略微不同”的部分,子类通过父类的设计跟外界打交道,新的开发是站在之前成功的系统设计的肩膀上的。 总之系统扩展是面向对象的。而不是复制粘贴的。
  • 打赏
  • 举报
回复
所谓 Ctrl+C 然后 Ctrl+V 方式,通常就类比为建筑工地的小工,或者是刚上流水线上的民工,而不是设计师水平。对他们来说,因为不做设计研发,只做搬运工的职责,所以复制粘贴眼前一刻行为,然后一旦千变万化地修改需求逐步到来,就开始消极怠工甚至跑路了。
loveljy_19901114 2019-01-10
  • 打赏
  • 举报
回复
引用 4 楼 以专业开发人员为伍 的回复:
比如说,凡是适合于插在主板串口上进行控制的设备都继承于同一种接口特征,不管它是机器人还是鼠标、手机,甚至是卫星地面站,那么能写出一个文档来说明这些设备都有怎样的相同的对外交互控制的来源,必定是先要研究具体、然后才抽象。而那种为了抽象而抽象的人,则会滥用抽象并且只会衍生一堆诡异地东西。
大赞
加载更多回复(8)

13,189

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 分析与设计
社区管理员
  • 分析与设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧