一,为什么要面向对象
在面向对象出现以前,结构化程序设计是程序设计的主流,又称为面向过程的程序设计。
1,面向过程
在面向过程的程序设计中,问题被看做一系列需要完成的任务,如读,计算和打印等,许多函数用于完成这些任务。其中函数式面向过程的,即它关注如何根据规定的条件完成指定的任务。面向过程相当于又函数堆积,互相调用的程序。
2,面向过程的开发方法,一般存在如下问题:
2.1,软件的重用性差
以前写程序,是否经常会看到有实现相同功能的代码到处进行复制、黏贴的情况?存在很大的冗余,软件重用性比较差。重用性:指同一事物不经修改或稍加修改就可多次重复试用的性质。
软件重用性是软件工程追求的目标之一。
2.2 软件可维护性差
在软件开发过程中,软件的可读性、可修改性和可测试性是软件的重要质量指标。实践证明:面向过程开发出来的软件,维护时期费用和成本仍然很高,其原因是可修改性差,维护困难, 导致可维护性差。
2.3,开发出的软件不能满足用户的需求变化
用结构化方法开发的软件,其稳定性、可修改性和可重用性都比较差,这是因为结构化方法的本质是功能分解,功能分解:把问题整体功能的单个处理着手,自顶向下不断把复杂问题分解为子处理,这样一层一层地分解下去,直到仅剩下若干个容易实现的子处理功能为止。因此,结构化方法是围绕实现处理功能的“过程”来构造系统的,而用户需求的变化大部分是针对功能的,用户需求的变化往往造成系统结构的较大变化。
3,为什么要用面向对象
面向对象把数据看成程序开发中的基本元素,并且不准它们在系统中自由流动。,并保护这些数据不会被外界的函数意外的改变。
面向对象将问题分解为一系列实体,这些实体被称为对象,然后围绕这些实体建立数据和函数。面向对象等于把无生命的过程化东西(数据和函数)变成活生生的事物(对象)来看待,更接近现 实世界。建立对象的目的不是完成一个步骤,而是描述某个事物在整个解决问题的步骤中的行为。面向对象过程就是用类一个个地构造出对象来,在主程序里调用的是一个个对象的行为。
程序 = 数据结构 + 算法,那么面向对象的理解更类似于:程序 = 对象 + 对象
4,面向对象的优点
4.1,更好地适应需求变化,应对变化上。
4.2,具有更好的重用性
软件的重用性是提高软件开发生产率和目标系统质量的重要途径。
面向对象的重用性体现在:
4.21,代码重用
通过继承,我们可以大幅减少多余的代码,并扩展现有代码的用途
4.22,设计结果的重用
指的是重用某个软件系统的设计模型,有助于把一个应用系统移植到完全不同的软/硬平台上
4.23,分析结果重用
重用某个系统的分析模型,这种重用特别适用于用户需求未改变,但系统结构发生根本变化的场合
4.3,更易于维护
由于适用面向对象思想设计的结构,可读性高,由于继承的存在,即使改变需求,维护也只是针对局部模块,所以维护起来非常方便和低成本
4.4,更易于扩展
由于继承,封装,多态的特性,可以设计出高内聚、低耦合的系统结构,使得系统更灵活、更容易扩展,而且成本较低。基于面向对象的系统也更容易从小到大逐步升级
4.4,更安全
数据隐藏的概念帮助程序员们保护程序免受外部代码的侵袭,允许一个对象的多个实例同时存在,而且彼此间不会相互干扰
5,什么是面向对象
什么是对象,对象时世界中的物体在人脑中的映像。从系统的角度去理解就是问题域或实现域中某些事物的一个抽象,它反映它反映此事物在系统中需要保存的信息和发挥的作用。
万物皆对象,一棵树、一个人、一个公司都可以说是一个对象。(同类,这个概念很重要)在软件开发中对象是建立面向对象程序所依赖的基本单元,专业来说,对象就是一种代码
的实例,这种代码执行特定的功能。
比如开发一个段子商务网站,与电子商务有关的都是我们要操作和关心的,例如商品,订单,用户,目录,购物车等都是对象。如果要开发一个论坛,那么论坛中必备的要素,如论
坛分类、主题、帖子、评论、用户等也全都是对象。
面向对象指的就是解决问题的一种方法。在面对比较复杂的系统时,我们可以将它作为一个对象来进行分析。一个系统(解决方案)作为一个对象,可以由多个部分组成。同样,这个对象
也可以由多个对象组成。同类的事物可以由一个对象来表示。
5.1 面向对象又分面向对象的分析,面向对象的设计,面向对象的编程
5.11,面向对象分析(OOA)
是一种分析方法,它以在问题域的词汇表中找到的类和对象的观点来审视需求。
5.12,面向对象设计 (OOD)
5.13,面向对象编程 (OOP)
6,面向对象可以理解为"以对象为核心" 或"从对象的角度" 来考虑问题