请问有多少是用面向对象的方法?

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

topic:请问有多少是用面向对象的方法?
newtomme:
现在大家做系统分析的时候,是用什么方法来,有多少是用面向对象的方法呀,还是都在用老方法?!
我在一些模块(一个项目里的几部分)里用以前的什么数据流图等方法分析后发现不能清晰、很好的解释系统,但整个大项目是用数据流来表示的,怎么办呢?我对OO的分析不懂呀!
还有就是,大部分软件开发都不是按照软件工程的方法来做,都是简单的分析后写好一些文档就开始CODE,那么这里的兄弟们,你们开发的时候是不是按照软件工程的开发规律来呀,先分析,完了有个很好的文档,程序员通过它和一些简单的沟通就可以把事情搞定!测试有测试记录,完了还有每部分的质量监控?!
你们大概都是怎么做的呀?
本人这方面很差,还情多指教,对了,在整个开发过程中,ROSE等起了什么作用,你们是不是把它用到了真正的开发过程中了呢?!

potian:
据我所知,现在国内真正在用面向对象方法开发的任何公司少之又少,有几种情况:
1。不知面向对象为何物:这并不一定就是坏事,姑且不论C开发了多少至今仍被奉为经典的操作系统、编译系统,我认为在某些情况下,非面向对象的方法也可以极完美地解决问题。如Apache。但是,我也不是说,面向对象在这方面(系统软件)就差,Ralph Johnson领导的CHOOSE小组在性能上大约能够达到C的80%,而灵活性和适配性方面的收获就不用说了。
2。使用面向的编程语言,但没有使用任何面向对象的特征。譬如,现今的delphi,vb,pb等等都是或者号称面向对象,但其实语言本身的特征完全没有被使用,我在1995年编写的一套系统获得了省科技进步奖,但老实地说,没有半点面向对象的思路。
3。使用了面向对象的语言和面向对象的工具,但其实还是假对象。这种公司和个人现在是主流。我一个以前的同僚在一个很大的中国公司工作,他们全套使用RUP,也有所谓的对象的概念,但是它们的对象绝大多数之不过是传统程序的一个简单包装,根本没有考虑到面向对象的目地:可靠性、灵活性、更好的体系结构、更快的客户响应。
从我本人的观点来说,面向对象的开发应该具有以下几个基本特点:
1。面向对象的思想:注意,我没有使用面向对象的方法学,如果你认为用一种面向对象的方法学,就可以称得上你使用面向对象的思想,我看不见得。面向对象的思想,首先是你如何来看待这个世界,小一点,就是你怎样来看待你要解决的问题,你认为要解决的问题是所有线和上面的点组成,譬如输入、修改、删除,还是有一些相互作用着的对象合作来完成任务?这个世界存在着一个“上帝“统管一切还是这个世界是其中具有自生自灭,自我行为的能力的这些对象共同协作的结果。
2。面向对象的软件工程:如果你没有使用任何一种面向对象的方法学,我不会断然否决你。但是,方法学毕竟是前人经验的积累,如何获取需求,如何进行建模、设计、如何开始编码(详尽设计)、如何文档、如何测试、如何组织你的开发团队。都是必须实践的问题,也是必须从各种各样方法学进行学习的问题。
在需求方面,根据不同情况,Use case ,Use Map,CRC都是可以利用的,但我实际中用得最多是草图加上Alistair Cockburn的模版。
在建模方面,UML是标准,但是分析模式是我经常借鉴的内容,我不会傻到去画详细对建模没有用处地东西。分析模式当然是无穷的。需要积累,但是对诸如party,business rule, invantory, account这样的东西,借鉴的东西太多太多了。
在设计时,通过我建立的模型从而应用设计模式是我最常用的方法,我发觉设计模式社团是如此丰富,以至于几乎你很难再去构造出新的模式,当然我不排除有时候有小的发现。譬如,我几乎在每一个系统里使用factoryMethod用于创建对象,Observer,stragy实现MVC,用command加上memoto来实现undo,redo,facade来包装子层,state模式的应用也极其广泛,包括医院病人的病人(登记、入院、预出院、出院),EOSP2P的P2P底层协议实现。这些系统都在使用,不同的医院、不同的P2P之上的服务,效果是明显的。Singleton就不用说了。
模式的使用你地设计如此灵活、有效,我觉得它们能解决设计中80%的问题。
测试有两个阶段,对于单元测试来讲,我极力主张有程序员自己来做,当然是xunit系列,这也是refactoring的必要条件。功能测试方面我没有太多地研究,一般来说有人工完成,rational的测试好像也比是太好。
3。应用软件工程的前提:之所以把这一点放在后面。是因为,如果你不了解软件工程,没有实践过,其实这个前提很难看到。这个前提就是面向接口而不是实现编程,没有接口编程,你的小组没办法组织,人员没办法分配。接口意味着一部分人可以实现接口,而另外一部分人可以使用接口。如果实现变化,对使用者没有任何影响,所以设计的关键是接口。人员组织,进程控制的关键也是接口。
人员组织和进度控制我经常参考Jim Coplien
的主页,获益匪浅,但是从我目前来说,主要使用的方法就是kent beck门的任务卡
4.语言,我喜欢Java甚于其他面向对象语言,当然,有很多争论,我不讲了。
5。成熟阶段。面向对象的成熟阶段是框架。关于框架的设计、开发对设计建模和白箱开发的人员要求很高,我在这里就不多说了。我的主页上正在研究的框架可以看出我们的思想方法。
其它的包括一些面向对象的基本技巧如idiom,refactoring等等非常重要,但在这里就不详述了。
有兴趣的人可以到我的erptao.org进行讨论。

newtomme:
多谢!
你看来是很有经验的系统分析员了,不错,以后可以向你请教问题吗?

对了,还想请教的是,你觉得是不是做面向对象的分析使用于任何项目(我觉得还有两种不同的项目:给客户定
制软件的项目,和做有自主产权的商品软件)。

potian:
这两者看起来是有区别的,但实际上是同一个问题:哪些是相对稳定的,哪些是可变的,变化的频率如何?
面向对象的分析方法第一个问题就是要把这两部分的内容分开。如果你给客户订制的项目是从来没有接触过的领域,那么一开始的抽象和隔离是比较困难的。但是,从我的经验来看,从来都没接触过的问题可能会很少,譬如你的系统不需要处理人员,单位,组织机构,量(金额、换算)?你的系统不要处理时间相关的问题?你的系统处理属性可能动态发生变化的问题?诸如此类的问题,如果有很好的框架,实现、扩展和修改都是很方便的。
问题可能在于时间、资金、压力在采用面向对象的方式时可能在一开始会有些困难。一个新的领域可能需要长时间的磨合才能了解地更深刻。如果时间等因素显得非常重要,你可以先实现,当然还要采用面向对象的方法。一开始的抽象可能较差,但这并不是问题。如果一开始就是用面向对象的方法设计和实现,以后慢慢地用refactory改进你的分析和设计。这个时候,refactoring可能非常重要,Extreme programming在这方面有突出的特长。我现在主要学习martin fowler的《refactoring》,和ralph johnson几个弟子的phd论文,我觉得改进已存在的代码是可行的,而且必须做的,效果也很明显。因为面向对象不管是何种方法学,都要求你iterator,而refactoring是反复的最佳方法。
但是即使是面向定制地开发全新的领域,面向对象的思想也是极其有用的。譬如,接口的分离,质量的控制,MVC模式更彻底的应用。你可以把模型和视图分开,两批不同的专家,好的接口,分开的测试。
BTW,很多系统看起来需要定制,但其实并非如此,如很多ERP系统不需要定向开发就能实施,你可以使用Business Rule来解决这些问题。

互相学习,有空访问我的主页erptao.org

newtomme:
我看了,还可以,不过我对好多理论都不知道,其实我对系统分析的经验和理论都只能算是个入门的,我写了近两年的软件,现在想转向DBA或系统设计,而在这过程中,我觉得比做程序员对系统分析、软件工程方面的知识要求要更高,所以,我觉得我都不知从何下手了,只听说过UML和ROSE,但实在不理解怎么利用这些规范和工具来适用于形形色色的软件项目,我想顶多只能规范文档、开发过程、测试、实施过程,但在前期的系统构架过程中,特别现在的ERP、CRM等软件的开发,还有和我关系很大的数据仓库的设计工作中,分析时候,这些的方法是否都很具体和可行,而且,现在有什么IMM,质量控制,它对前期的分析也有比较抽象的要求,所以,要具体做下来,什么方法和工具,什么做法才比较好,我觉得我心理都没底。

面向对象及属性与方法 面向对象(oop) 就是把一类具有相同属性和动作的实体抽象成为计算机里面的类,也就是对象的模板(图纸),把属性和方法封装成一个类中。 处理业务的流程就是对象之间的信息传递, 把程序中的所有东西当做对象来进行处理。 什么是对象 对象是内存中存储指定数据的一块区域,实际上对象就是一个容器,专门用来存储数据。 对象的结构 由id(标识),type(类型),value(值)构成。 1.id(标识)。 id... 阅读详情

相关推荐

【UML学习】面向对象方法之RUP

软件开发的方法 软件开发的方法主要有:结构化开发方法、面向数据结构的开发方法、面向问题的开发方法、原型化开发方法面向对象的软件开发方法、可视化开发方法等。本文主要介绍面向对象的开发方法。 什么是面向对象开发? 面向对象(Object Oriented ,OO)是从现实世界客观存在的事物(即对象)出发来构造软件系统,更强调使用对象、类、继承、封装、消息等基本概念来进行程序设计。面向对象=

人生苦短,我用Python 2187

谈谈为何面向对象很少普及

写了很代码,碰到过很项目。我发现在一些小型一点的项目中面向对象可以达到很好的效果,但是在一些大型一些的项目中却很难大面积推行,我想了一下可能有下面的原因。 面向对象的开发理念缺乏理论支持和工程指引。 估计任何一个大学学习计算机或者相关专业的学生都学习或者接触过面向对象。但是在学校课程中给到学生的无非就是三大特性,如果碰到好一点的老师可能就会提及一下SOLID原则。在企业中做项目,关于如何对...

乐客的专栏 465

软工笔记——面向对象设计方法

软件维护 定义 在软件运行阶段对软件产品进行修改 维护类型 改正性维护(20%)改正在开发周期间未能发现的遗留错误 适应性维护(25%)软件适应运行环境的改变 完善性维护(50)提高软件性能和软件可维护性 其他维护(5%) 面向对象技术 1面向对象=对象+类+继承+通信 2每个对象可用它本身的一组属性和它可以执行的一组操作来定义 3属性一般职能通过执行对象的操作来改变...

有一颗大心才盛的下喜怒,输的出力量 1600

面向对象的四种方法

package part04面向对象;/** * 四种方法 * @author Administrator * */public class T05Method { /** * 无参数无返回值方法 */  public void method1() {  //方法体  System.out.println("无参数无返回值方法");  }   /**   * 有参数...

phoneix123的博客 1184

面向过程方法面向对象方法的比较

  结构化方法是在软件行业得到广泛接受和使用,并一度成为早期占主导地位的软件构造与开发方法。而面向对象方法提出后,当代软件工程的发展面临着从传统的结构化范型到面向对象范型的转变,对象技术作为新范型的核心技术正在得到新的语言、新的系统和新的方法学的支持,这体现在已出现的面向对象语言、数据库、操作系统及开发环境上。一、结构化分析(面向过程)方法        结构化分析方法(Struct

王洪伟的专栏 1万+

面向对象 Object Oriented

面向对象 Object Oriented 考虑问题从对象的角度出发 文章目录面向对象 Object Oriented概述面向过程面向对象类和对象语法定义类创建对象(实例化)实例成员实例变量实例方法类变量类方法静态方法三大特征封装数据角度讲行为角度讲设计角度讲案例:信息管理系统需求分析架构设计继承语法角度讲继承方法内置函数继承数据优点缺点设计角度讲定义适用性相关概念继承态设计角度讲定义作用语法角...

哦 卷! 1219

javascript中的面向对象,你了解多少

Javascript 是面向对象开发的脚本语言,既然javascript是面向对象开发的,那么面向对象的前提:抽象,应该必须有,那么看看这个对象的创建,该如何抽象,然后封装呢?那么来看看javascript中对象的创建。不难看出,以上的对象创建方式,如果创建个类似的对象,那么首要问题就是代码重复。所以我们要创建可以复用并且保持独立的对象(独立:当该对象有个实例时,彼此引用操作该对象后,使得该对象保持不变)。有工厂方法,构造函数。 javascript封装: 1、单独原型 通过构造函数或者工厂方法,我们

王勇霞 信息技术提高班九期 4600

面向对象方法综述

陈小群博士  八十年代末以来,随着面向对象技术成为研究的热点出现了几十种支持软件开发的面向对象方法。其中,Booch, Coad/Yourdon, OMT, 和Jacobson的方法面向对象软件开发界得到了广泛的认可。特别值得一提的是统一的建模语言UML(Unified Modeling Language),该方法结合了Booch, OMT, 和Jacobson方法的优点,统一了符号体系,并

CSDN_document的专栏 3409

浅谈面向对象方法

目录 一、面向对象的基本概念 对象、类、实例、消息、方法 二、面向对象的基本特征 封装、继承、态 三、面向对象的建模 对象模型、动态模型、功能模型 四、面向对象设计 五、面向对象的实现 设计风格 测试策略 六、面向对象方法学的优点与缺点 优点 缺点 一、面向对象的基本概念 对象、类、实例、消息、方法 对象:对象能够表示现实或抽象的事物,具有良好定义的责任和良好定义的行为,以及良好 定义的接口。 对象具有封装性、自治性、通信性、被动性、暂存性、持久性 类:类的定义是具有相

小小张自由—>张有博 3837

面向对象方法

面向对象方法(Object-Oriented Method)是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法,简称OO (Object-Oriented)方法,是建立在“对象”概念基础上的方法学。对象是由数据和容许的操作组成的封装体,与客观实体有直接对应关系,一个对象类定义了具有相似性质的一组对象。而每继承性是对具有层次关系的类的属性和操作进行共享的一种方式。所谓面向对象就是基于

李浩荣的专栏 1155

面向对象开发方法

系统架构师、软考、软考高级

犇叔的博客 3102

结构化方法面向对象方法的比较

结构化方法面向对象方法的比较 翁松秀 北京航空航天大学 摘要:编程之精髓在于编程思想,而不同的编程方法有不同的编程思想。结构化程序设计方法一直以来都是编程人员基本的编程方法,而近年来流行的面向对象方法也备受人们青睐。文章通过介绍编程世界的这两种主要编程方法,结构化方法面向对象方法的分析、设计和应用。并在最后对两种方法进行比较分析,比较结构化方法面向对象方法编程思想的异...

diaoju3333的博客 1295

面向对象的软件开发方法

一、了解什么是面向对象的软件开发方法 答:1、OOSD是一种把面向对象的思想应用于软件开发过程,是一种当今成熟的、普遍流行的软件开发方法 2、面向对象方法的解决思路是从现实世界中的客观对象入手,尽量运用人类的自然思维方式来构造软件系统。是一种运用对象、类、继承、封装、聚合、消息传送、态性等概念来构造系统的软件开发方法。 3、面向对象方法中,把一切都看成是对象。对象是功能抽象和数据抽象的统一...

weixin_44599578的博客 6395

了解面向对象

面向对象思想 为了更好地理解面向对象的思想和方法,先介绍一些面向对象的基本概念。 面向对象开发方法主要在于模拟人们理解和处理客观世界的方式来分析问题和解决问题。认为客观世界是由各种各样的事物或实体组成,每个事物或实体都可用一个对象来表示。 因此,在面向对象的程序中,客观系统被描述成一系列对象,由这些相互联系、相互作用的对象来构成程序系统。 对象 现在让我们深入了解什么是对象。看看周围真实的世界,会发现身边有很对象,车,狗,人等等。所有这些对象都有自己的状态和行为。 拿一条狗来举例,它的状态有:名字、品种、

weixin_54862883的博客 488

面向对象的设计方法

面向对象的设计方法 文章目录面向对象的设计方法1面向对象编程的设计思想2面向对象编程的设计思想-2 1面向对象编程的设计思想 面向对象编程 面向对象编程是一种设计思想,并不局限于语言。 无论是C++, Java,还是C语言, B语言,或者Shell, Perl, Python,甚至汇编语言,都可以实现面向对象编程。 “面向对象编程”是设计思想,C,C++是实现手段。 (相对来说,C++更容...

爱吃蛋炒饭蜗牛君的博客 1135

结构化方法面向对象方法

1.结构化方法:面向过程的方法 结构化分析(SA, Structured Analysis) 结构化设计(SD, Structured Design) 结构化编程(SP, Structured Programming) 2.模块的独立性:模块是高内聚,低耦合的 高内聚指的是一个函数最好实现一个功能 低耦合指的是模块间的接口的参数不能太 3.使用goto语句不是结构化的程序 4.把大象放进冰箱 用结构化方法解决 分三步: 第一步:打开冰箱 第二步...

weixin_46858088的博客 2111

几种典型的面向对象开发方法总结

1.      Booch方法 Booch方法所采用的对象模型要素是:封装、模块化、层次类型、并发。重要的概念模型是类和对象、类和对象的特征、类和对象之间的关系。使用的图形文档包括六种: 类图、对象图、状态转换图、交互图、模块图和进程图。 Booch方法的开发过程: (1)      在给定的抽象层次上识别类和对象。 (2)      识别这些对象和类的语义。 (3)      识别这

不忘初心 ,方得始终 6958
上一篇: 面向对象与面向过程的侧重点
下一篇: 请问面向对象和面向过程的区别
nonocast
博客等级 码龄24年 107粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值