面向对象理解
面向对象
。目前软件开发领域有两种主流的开发方法
。。结构化开发方法
*C、Basic、Pascal
。。和面向对象开发方法
*C++、Java、C#、Ruby
结构化程序设计
。结构化程序设计方法按功能来分析系统需求,则其同时被称为面向功能的程序设计方法
。主要原则
。。自定向下
。。逐步求精
。。模块化
。SA、SD、SP保证软件系统的开发进度和质量、
。。采用结构化分析(Structured Analysis,SA)对系统进行需求分析
。。使用结构化设计(Structured Design,SD)对系统进行概要设计
。。采用结构化编程(Structured Program,SP)来实现系统
。结构化软件系统由函数组成
。。函数是结构化程序设计里最小程序单元
。。主函数-程序入口函数
。。主函数依次调用其他普通函数,普通函数之间依次调用
。。每个函数都是具有输入、输出的子系统
*输入数据包括函数形参、全局变量、常量等
*输出数据包括函数返回值以及传出参数
。局限性
。。设计不够直观,与人类思维不一致
。。适应性差,可扩展性不强
*由于自定向下的设计方式,当用户需求发生改变、需要修改现有方法实现时,都需要自定向下修改模块,维护成本高
。三种基本结构
。。顺序结构
。。选择结构
。。循环结构
*当型循环-先判断条件,当条件为真执行循环体。先判断后执行
*直到型循环-先执行,直到条件为假时结束循环。先执行后判断
面相对象程序设计
。基本思想-使用类、对象、继承、封装、消息等基本概念进行程序设计
。面向对象软件系统由多个类组成
。。类是面向对象开发系统最小的程序单元
。。类生成系统的不同对象,而对象直接映射成客观世界的各种事物
。类代表客观世界具有某种特征的一类事物
。。成员变量-封装一类事物内部状态数据
。。方法-提供操作状态数据的方法以及实现类相应的行为特征
。。成员变量(状态数据)+方法(行为)=类定义
。基本特征
。。封装-隐藏对象的实现细节,通过公共方法暴露对象功能
。。继承-实现复用,子类继承父类后,直接获父类的属性和方法
。。多态-子类对象可以直接赋给父类对象,但运行时依然表现出子类的行为特征
*同一个类型的对象在执行同个方法时,可能表现出多种行为特征
。抽象
。。忽略主题中与当前目标无关的方面,以便充分注意与当前目标相关的方面
。。抽象是面向对象的重要部分但不是面相将对象的特征之一
*所有编程语言都需要抽象
。支持功能
。。对象是面向对象方法中最基础的概念
*基本特征:唯一标志性、分类性、多态性、封装性、模块独立性
。。类是具有共同属性、共同方法的一类事物
*类是对象的抽象
*对象是类的实例
*类是软件系统最小的程序单元
*类的封装性将各种细节隐藏起来,并通过公用方法来暴露该类对外提供的功能,提高类的高内聚,降低对象之间的耦合性
。。消息是对象之间相互协作的机制。
*消息是一个实例以另一个实例之间相互通信的机制
。。继承是类之间共享属性和操作的机制
*继承具有传递性
*继承分为单继承和多继承
*Java不支持多继承
。“基于对象”和“面向对象”都实现“封装”的概念,但面向对象实现了“继承和多态”
UML(Unified Modeling Language,标准/统一建模语言)
。流程
。。OOA(Object Oriented Analysis,面向对象分析)
*对目标系统进行分析,建立分析模型,并将之文档化
。。OOD(Object Oriented Design,面向对象设计)
*用面向对象的思想对OOA结果进行细化,得出设计模型
。。OOP(Object Oriented Program,面向对象编程)
。用例图
。。描述系统提供的系列功能
。。每个用例代表系统的一个功能模块
。类图
。。表示系统包含的实体以及实体之间的关联(显示系统的静态结构)
。。类之间的基本关联
*关联 
*聚合-部分与整体关系:部分 
整体
*组合-包含聚合关系的部分与整体关系: 部分 
整体
*泛化-与继承同一概念: 子类 
父类
*依赖-一个类(B)的改动导致另一个类(A)的改动:A类
B类
。组件图
。部署图
。顺序图
。活动图
。状态机图
Java的面向对象特征
Java是纯面向对象编程语言
。一切都是对象
。。除8个基本数据类型外,一切都是对象
。。对象是面向对象程序设计的中心
。。对象具有状态和操作
。类和对象
。。具有相同或相似性质的一组对象的抽象就是类
。。类是对一切事物的描述,是抽象的、概念上的定义
。。对象是实际存在的该类事物的个体,即实例
。。对象的抽象化是类,类的具体化是对象
。类之间的结构关系
。。一般-特殊关系:继承关系(extends)
。。整体-部分关系:组合关系(通过在一个类中保存另一个类的引用来实现)

浙公网安备 33010602011771号