一,为何要面向对象程序员
在面向对象出现之前,结构化程序设计是程序设计的主流,又称为面向过程的程序设计。算法
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,面向对象能够理解为"以对象为核心" 或"从对象的角度" 来考虑问题