看了一篇讨论:
http://www.cnblogs.com/yimlin/archive/2006/11/30/578333.html
有些感想:并不是所有的行为都必须属于某个对象,有的行为似乎放在任何一个对象中都不合适,那就单独放在那里好了,没必要非要造出一个对象来,更不能把它硬安在某个对象上。
按照oop的方法,软件的逻辑架构可以分成下面几个层次:
1:基础设施层——这个层次解决的是物理问题,比如database gateway、网络通信、对象容器……这个部分与业务需求关系不大,是系统的物理条件。有很多技术框架帮助我们尽快的把这个层搭起来,比如web server、中间件、ACE。搞软件的公司会在这方面形成自己的技术积累。开始搞一个项目的时候,经常把以前的东西拿来复用,尽快进入后面的工作。
2:business对象——在这个层次上,业务要素出现了,业务领域中的概念在这里实现。比如一个航运公司的系统,这里就应该有航线、航班、座位、乘客、登机牌……这些对象应该拥有与实际业务领域相符的属性、方法。长期在某个业务领域开发的公司,在这方面也应该形成自己的技术积累,形成可以直接复用的对象模型。这个层次上也是有一些现成的产品可以用的,比如SAP、工作流引擎,可以在这些东西的基础上做定制开发。
3:business流程——这个流程不是指程序解决问题的流程,而是用户的商业活动的流程。他体现的是端到端的业务流程。比如:检票员为旅客办理登机牌。business流程的输入参数是business对象,输出参数也是business对象。business对象在这里组合、串接,实现业务流程的自动化。这个层次是在直接实现用户的需求。
4:UI和接口——这个层面调用business流程,将执行的结果交给软件的用户,或者别的系统。
在“3:business流程”这个层次上,并不是每个行为都可以在系统中找到一个归属的对象,这是正常的。没有必要为了oo而oo,一定要给某个行为找到一个对象。尤其是不能把这些行为硬安在某个不相关的business对象上,那样反而会使系统变得混乱,难以理解。business流程的独立存在不会误导任何人。
从一个大的范围上说,这些business流程的所属对象,应该是系统的使用人。不应该花太大的精力,过多的考虑这些行为应该属于哪个实体。
分享到:
相关推荐
**OO4O的C++类库**是本文讨论的重点之一。该类库简化了自动化对象的获取过程,使得开发者能够用较少的代码完成复杂的数据库操作。 - **连接数据库**:使用`Oo4oSession`类建立数据库连接。 - **执行SQL语句**:通过...
3. **OOALV介绍**:面向对象的ALV(OOALV)是ALV的一种扩展,引入了面向对象编程的概念,使得开发者能够更灵活地定制ALV的功能。通过创建类和继承,可以实现更复杂的逻辑和界面定制。 4. **CL_SALV_TABLE类**:OO...
8. 渐进式转型:即使不完全转向OO,ABAP程序员也可以通过逐步引入对象和方法,改善传统面向过程程序的结构,提高代码的可读性和可维护性。 总结来说,ABAP面向对象编程提供了更高的灵活性、代码复用性、可维护性和...
设计模式——可复用的OO软件
"SAP ABAP OO实现ALV框可编辑" 在SAP ABAP中,实现ALV框的可编辑功能是非常重要的。本文将详细介绍如何使用面向对象编程(Object-Oriented Programming,OOP)在SAP ABAP中实现ALV框的可编辑功能。 首先,我们需要...
#### 一、ABAP OOALV 概述 **ABAP OOALV**(Object-Oriented Application List Viewer)是一种用于SAP系统的高级列表显示技术,主要用于生成复杂的报表和列表视图。自R/3 4.6C版本起,其名称由“ABAP ListViewer”...
然而,随着面向对象编程(OO)概念在SAP中的推广,ABAP也引入了一系列面向对象的ALV实现机制。这种方式不仅提供了更灵活的编程接口,还增强了代码的可读性和可维护性。 #### 二、面向对象的ALV实现 面向对象的ALV...
OO ALV技术可以满足大多数ALV需求,但有时需要与后续的屏幕开发等集中在一个屏幕中,或者需要实现一些函数ALV不可实现的事件等。 OO ALV技术的实现方式是通过调用cl_gui_alv_grid类的方法set_table_for_first_...
- **优先使用组合而非继承(Favor Composition Over Inheritance)**:在多数情况下,使用组合而非继承来扩展类的功能可以减少代码复杂性和提高系统的可维护性。 #### 单一职责原则(SRP) **定义**: 单一职责...
Docker 可以让开发者打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。 2. **容器化**:Docker-oo 源码中的关键概念是容器化,这是一种轻量级的虚拟化技术,...
例如,“g_alv_grid”是一个OOALV对象的引用类型,而“g_it_show”是一个与之关联的内表。代码片段中展示了如何通过SQL查询读取数据,并通过ALV展示。 “PERFORM frm_set_alv_toolbar”这一行代码表明系统中存在一...
SAP OOALV(Object-Oriented ALV Grid Control)是一种利用面向对象编程技术实现的高级列表视图(ALV)控制,它允许开发者以更灵活、高效的方式创建复杂的用户界面。与传统的ALV相比,OOALV提供了更多的自定义选项和...
OO ALV技术的优点是可以满足更多的报表需求,例如需要与后续的屏幕开发等集中在一个屏幕中,或者需要实现一些函数ALV不可实现的事件等。同时,OO ALV技术也可以与标准函数REUSE_ALV_GRID_DISPLAY和REUSE_ALV_GRID_...
读书笔记:OO原则详述
【Oth-oo: Othéoo产品着陆页】是一个基于CSS技术构建的网页设计项目。这个项目的主要目的是创建一个吸引人的、具有专业外观的产品着陆页面,用于展示Oth-oo(假设这是一个虚构的品牌或产品)的特点和功能。源码的...
实战OO_用例建模 实战OO_用例建模 实战OO_用例建模
它是一个只向前的、不可更新的数据流,允许按顺序访问每一行数据。可以使用`Read`方法移动到下一行,`GetString`、`GetInt32`等方法获取字段值。若要进行数据插入、更新或删除,可以使用`OracleDataAdapter`和`...
一、Oracle Objects for OLE (OO4O): 开启数据库与OLE应用的桥梁 Oracle Objects for OLE (OO4O)是Oracle公司专为OLE(Object Linking and Embedding)开发者设计的服务器对象编程模型。该模型允许开发人员在OLE...