软件设计面向对象

LittleChery 2019-01-07 08:13:38
加精
当客户需求在同一功能上有些略微不同时 软件设计如何实现面向对象
...全文
17436 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)
第1章课程定位与教学案例综述. 1.1职业岗位能力需求分析 1.2课程设置和课程定位分析 1.3WebShop电子商城介绍 1.3.1电子商城需求分析 1.3.2电子商城系统设计 1.3.3电子商城数据库设计 1.4LibraryMIS图书管理系统介绍 1.4.1图书管理系统需求分析 1.4.2图书管理系统系统设计 1.4.3图书管理系统数据库设计 习题 第2章面向对象技术和建模基础 2.1面向对象方法 2.1.1面向对象方法的基本思想 2.1.2面向对象方法的发展 2.2面向对象的基本概念与特征 2.2.1面向对象的基本概念 2.2.2面向对象的主要特征 2.3面向对象分析 .2.3.1处理复杂问题的原则 2.3.200A方法的基本步骤 2.4面向对象设计 2.5面向对象实现 2.6面向对象方法的内涵 2.7软件建模概述 2.7.1软件建模的概念 2.7.2软件建模的用途 2.7.3软件建模的优点 习题 第3章UML简介 3.1UML的发展 3.1.1UML的发展历程 3.1.2理解UML建模 3.2UML的特点 3.3UML的结构 3.3.1UML的事物 3.3.2UML的关系 3.4UML的视图 3.4.1用例视图 3.4.2逻辑视图 3.4.3并发视图 3.4.4组件视图 3.4.5部署视图 3.5UML图形符号 3.5.1用例图 3.5.2类图 3.5.3对象图 3.5.4状态图 3.5.5活动图 3.5.6顺序图 3.5.7协作图 3.5.8组件图 3.5.9部署图 3.5.10UML 2.0新特性 3.6UML建模基本流程 习题 第4章UML建模工具简介 4.1常用UML建模工具 4.1.1 Rational Rose 4.1.2Enterprise Architect 4.1.3Together 4.1.4PowerDesigner 4.1.5 Visi0 4.1.6Tnffun Plat0 4.2Rational Rose安装与配置 4.2.1Rational Rose的运行环境 4.2.2Rational Rose的安装 4.2.3Rational Rose的配置 4.3使用Rational Rose建模 4.3.1Rational Rose主菜单 4.3.2Rational Rose的视图 4.3.3 Rational Rose建模的基本过程 习题 第5章需求建模 5.1用例模型概述 5.2用例图组成 5.2.1参与者 5.2.2系统 5.2.3用例 5.3识别和描述用例.. 5.3.1识别用例 5.3.2绘制WebShop电子商城用例图 5.3.3通过包对用例进行合理规划 5.3.4WebShop电子商城用例图(不含关系) 5.3.5用例描述 5.4用例间的关系 5.4.1泛化关系 5.4.2使用关系 5.4.3包含关系 5.4.4扩展关系 5.4.5关系小结 5.4.6WebShop电子商城用例图(含关系) 习题 第6章静态建模 6.1静态建模概述 6.2类图概述 6.3类图的基本组成 6.3.1类的概述 6.3.2绘制带属性的实体类 6.3.3绘制带操作的实体类 6.3.4绘制边界类图 6.3.5绘制控制类图 6.3.6UML中的类与语言中的类 6.4类之间的关系 6.4.1关联关系 6.4.2聚合关系 6.4.3组合关系 6.4.4泛化关系 6.4.5实现关系 6.4.6依赖关系 6.5对象图 6.5.1对象图概述 6.5.2对象图组成 6.5.3类图和对象图的比较 习题 第7章数据库建模 7.1PowerDesigner简介 7.2PowerDesigner安装和启动 7.2.1PowerDesigner的安装 7.2.2PowerDesigner的启动 7.3PowerDesigner概念数据模型 7.3.1概念数据模型概述 7.3.2PowerDesigner概念数据模型概述 7.4 PowerDesigner物理数据模型 习题 第8章动态建模 8.1动态建模概述 8.2状态图 8.2.1状态图概述 8.2.2状态图组成 8.2.3绘制员工下班回家状态图 8.3活动图 8.3.1活动图概述 8.3.2活动图组成 8.3.3绘制WebShop电子商城活动图 8.4活动图拾遗 8.4.1活动图与流程图的比较 8.4.2活动图与状态图的比较 8.5顺序图 8.5.1顺序图概述 8.5.2顺序图组成 8.5.3绘制WebShop电子商城顺序图 8.6协作图 8.6.1协作图概述 8.6.2协作图组成 8.6.3绘制WebShop电子商城协作图 8.7 顺序图拾遗 8.7.1 顺序图与协作图的比较 8.7.2 顺序图与协作图的互换 习题 第9章物理建模 9.1物理建模概述 9.1.1硬件 9.1.2软件 9.2组件图 9.2.1组件图概述 9.2.2组件图组成 9.2.3绘制WebShop电子商城组件图 9.3部署图 9.3.1部署图概述 9.3.2部署图组成 9.3.3绘制WebShop电子商城部署图 习题 第10章双向工程 10.1双向工程简介 10.2正向工程(生成Java代码) 10.3逆向工程 习题 第11章统一软件过程RUP 11.1RUP简介 11.2RUPT作流程 11.2.1业务建模 11.2.2需求 11.2.3分析设计 11.2.4实施 11.2.5测试 11.2.6部署 11.2.7配置与变更管理 11.2.8项目管理 11.2.9环境 11.3RUP迭代过程 11.3.1初始 11.3.2细化 11.3.3构造 11.3.4移交 11.3.5迭代计划示例(构造阶段) 习题 附录A综合实训 附录B Rational Rose2003主菜单 参考文献...

13,190

社区成员

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

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