选择面向对象设计的原因

首先我们思考几个问题:

  1. 由结构化方法的思想去解决软件问题不行了吗?
  2. 面向对象的方法真的使我们设计软件变得简单有效了吗?
  3. 到底什么是面向对象的方法?

     

        大部分学习编程的人群都是从c语言开始入手的,人们就会有一种潜意识叫做先入为主,就算后来学习过面向对象的方法也是跟结构化方法混为一谈,总是觉得哎,面向对象嘛,我晓得,就是把原来的变量变为某某类别里面的一份子,编写的函数也变为某某类的一部分,调用再学习一下就ok了,不过,面向对象的方法真的只是这样把原来“全局性”的东西变为某“个体”的了吗。

        同一个想要实现的算法可能用面向对象的方法去写,会变得更加复杂,更加困难,那么我们为什么还要去做这个事情,我们的目标是什么?

         存在即合理。这种方法的出现必然是要解决一些问题,而这个问题就是由社会与科技进步而产生的软件危机、我们并不是写不出来程序,而是因为在如今这种超大体量的工程面前,我们写出的程序往往是可以实现功能,但是无法修改,无法稳定去运行。现在回想一下结构化方法就是在不断的堆积,结构并不需要多么合理,因为我们是在“创建一个虚拟的世界”而最完美的“创建这个世界”的方法就是去模仿这个世界。

        面向对象的方法就是在模仿这个世界。有一个苹果我们就在虚拟的世界中创建这个苹果,而不是用到在去添加,这个苹果就好像存在于我们所构建的虚拟的世界。而面向对象的一系列技术(类、对象、抽象、封装、继承、多态......)就是在帮助我们去完成这种过程。而简简单单依靠这一种方法是明显不行的,凡事都要有计划,这时候UML出现了,我们可以也把uml看成我们的第二大脑,来帮助我们把现实生活中的的一系列方式方法集合模式,处理成我们想要的更容易去理解与编程的信息。

 

下面介绍一下面向对象的主要概念与原则

  • 对象

               对象是一个实体,这个实体具有明确定义的边界和标识,并且封装了状态和行为。在UML中,对象用矩形框标识,对象的名称写在矩形框内部,并加下划线。

              类是一系列对象的抽象描述,这些对象共享相同的属性、操作、关系和语义。一个具体的对象就是该类的一个实例。比如说,教授是一个类,那么张教授,李教授....都是一个具体的,他们扮演的角色相同,使用相同的特性,就好像数据库中是同一个表,拥有相同的属性,可能有些为空。在UML中,同样采用矩形框表示类,该矩形框可以划分为3个区域,分别表示类名、属性和操作。

  • 抽象

              世界是复杂的,为了处理这种复杂性,需要将其中的内容抽象化。抽象的过程就是揭示事物区别于其他事物的本质特征的过程,是一个分析和理解问题的过程,这个过程取决于使用者的目的,它应该包括使用者所感兴趣的那些职责问题,而忽略其他不想换的过程。从对象到类的过程就是抽象的过程。

  • 封装

             封装是指对象对其访问者隐藏具体的实现,它是团建模块化思想体现。通过封装实现信息隐藏和数据抽象,保证了数据的一致性。

  • 分解

             分解是将单个大规模复杂系统划分为多个不同的小构件,分解后的构件通过抽象和封装等技术形成相对独立的单元,分而治之。

  • 泛化

             泛化是类与类之间的一种关系,通过这种关系,一个类可以共享另外一个类或多个类的结构和行为。为了实现泛化关系,引入继承机制。一个子类继承一个或多个父类关系,从而实现了不同的抽象层次,这些层次之间所建立的关系,就是泛化关系。

  • 多态

             多态是在同一接口下表现出多种行为的能力,它是对象技术的根本特征。

  • 分层

             分层是指面向不同的目标建立不同的抽象级别层次,从而在不同的抽象层次对系统进行分解,进一步简化对系统的理解。主要有两种层次结构:类层次结构和对象层级结构。

  • 复用

             将软件看成是由不同功能部分的构件所组成的有机体,每个构件在设计编写时可以被设计成完成同类工作的通用工具,如果完成何种工作的构件被建立起来以后,编写特定软件的工作就编程了将各种不同构件进行组合的简单问题,从而对软件产品的最终质量和维护工作都有本质性的改变。

 

使用面向对象思维分析案例

  • 案例里面有什么事物(类和对象)
  • 每个事物是什么样的(类的属性)
  • 每个事物能做什么(类的操作)
  • 这些事物都在什么地方(类的状态和部署)
  • 这些事物之间有什么关系(类之间的关联)
  • 这些事物是怎么完成整件事情的(类之间的交互)

 

使用UML表达

  • 为了描述整个系统中的静态关系,采用UML类图
  • 为了理解整个事情的业务流程,采用UML活动图
  • 为了对每个活动的细节进行详细分析,采用UML顺序图
  • 为了能够理解在活动系统中各个参与对象之间的关系,采用UML通信图
  • 为了了解某个对象内在的变化过程,采用UML状态图

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值