面向对象建模与数据库建模两种分析设计方法的比较.doc

面向对象建模与数据库建模两种分析设计方法的比较.doc

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
面向对象建模与数据库建模两种分析设计方法的比较

面向对象建模与数据库建模两种分析设计方法的比较 板桥里人? 2007/9/23(转载请保留)我们知道:一个软件从无到有需要经过如下几个阶段:分析、设计、编程、调试、部署和运行。    编程阶段我们通常使用Java/.NET这样面向对象语言工具,可以带来很多设计上的好处,但是也存在一个奇怪的现象: 很多程序员虽然在使用OO语言,但是却在code非OO的代码,最终导致系统性能降低或失败,这个现象在Java语言尤其 显得突出,难怪有些人就把问题归结于Java语言本身,睡不着觉怪床歪,又为了面子问题,说自己转向.NET,实际上是在 回避自己的问题和弱点。   那么,这些人的问题和弱点体现在什么地方呢?从上面软件生产过程来看,每个阶段都对前面有所依赖, 在编程阶段出问题,追根溯源,问题无疑出在分析和设计阶段,分析设计作为一个软件产生的龙头,有着映射实际需求世界 到计算机世界这样一个拷贝任务,如何做到拷贝不走样,是衡量映射方法好坏与否的主要判断标准。   目前,将需求从客观现实世界映射到计算机软件世界主要有两种方式:传统数据库分析设计和面向对象建模( object-oriented class model), 当前软件主要潮流无疑是面向对象占据主流,虽然它可能不是唯一最好最简单的解决方案,但是它是最普通,也是最恰当的。   也就是说:在分析设计阶段,采取围绕什么为核心(是对象还是数据表为核心)的分析方法决定了后面编码阶段的编程特点,如果以数据表为核心进行分析设计, 也就是根据需求首先得到数据表名和字段,然后培训程序员学会SQL语句如何操作这些数据表,那么程序员为实现数据表的前后顺序操作, 必然会将代码写成过程式的风格。   相反,如果分析设计首先根据需求得出对象模型(class Model),那么程序员使用对象语言,再加上框架辅助,就很顺理成章走上OO编程风格。 至于OO代码相比传统过程编码的好处不是本文重点,可参考J道()相关讨论,扩展性和维护性好,开发越深入开发速度越快无疑是OO系统主要优点。   本文重点主要是比较OO建模和数据表建模两者特点,这两者我们已经发现属于两个不同方向,也就是说,属于两个完全不同的领域,在J道其他文章里我们 其实已经把这两个领域上升为不同的学科,数据表建模属于数学范畴思维;而OO建模属于哲学思维。(用科学的思维方法指导软件的设计开发/article/32520.html)   下面我们看看面向对象的Class Model和Database Model是如何来表达客观世界的,也就是他们在表达需求上有些什么不同? 面向对象模型(Class Model)   类代表一个对象类型,类在代码运行阶段将被创建为一个个对象实例, 每个类由两个部分组成:属性和行为,属性通常是一些数据状态值,也就是说:类将数据封装隐藏在自己内部了, 访问这些数据属性必须通过类公开的方法,或者接口。   别小看这样一个小小包装,却决定了以后代码的维护性和扩展性, 打个比喻,日常生活中我们经常用各种盒子和袋子包装一些东西,这样做就是为了方便这些东西的携带或储藏,小到生活, 大到客观世界每个地方,都是包装分类的影子,无论大小公司都是一个封装,行政部分单位划分,仓库物流更需要包装, 我们从来不会因为嫌麻烦而不愿意引入一个似乎多余的盒子或袋子,那么有什么理由不在我们赖之生存的软件中(靠编软件吃饭) 引入封装概念呢?   这里可以再深入想像一下:不愿意用盒子和袋子的携带东西大部分是一些急脾气的毛头小伙子,而偏偏这些小伙子又从事 软件工作,看来软件的非对象化是注定的,只是一个玩笑。   类的方法行为也有多种类型,如公开 私有等,我们可以设计一些方法为公开接口,而将另外一些行为隐藏起来, 这样一个看似简单灵活的选择,却能够应付我们日后频繁的修改,软件不修改就不叫软件,软件修改了就崩溃是业务软件, 专业的软件是抗修改的,而且能够极其方便快速地被修改。这些都依靠接口公开和隐藏这样一个简单魔术,具体各种魔术表演 可以参考GoF设计模式(/designpatterns/index.htm)。 类的关系   我们不能只用一个一个单独的类来表达客观世界,因为客观世界存在千丝万缕的各种关系,在计算机领域无疑我们使用 类的关系来表达映射这些关系。这里我们只探讨类在建模方法上的关系,而不是UML中类的通用关系。 类在建模上主要有如下几个关系:   类与类关系经常是这样:一个类包含一个类(构造性structural),或者借助另外一个类达到某个功能(功能性), 在对需求建模分析中,构造性的这种关系,也称为关联(Association)是我们关注重点,当然这种关系很显然表达的是一种 静态的结构,比如电脑包含屏幕,他们之间的关系就是一种关联。   聚合(Aggregation

文档评论(0)

wuailuo + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档