架构-面向对象技术1-面向对象开发
概述
对象:由数据及其操作所构成的封装体,是系统中用来描述客观事务的一个实体,是构成系统的一个基本单位。一个对象通常可以由对象名、属性和方法3个部分组成。
类:现实世界中实体的形式化描述,类将该实体的属性(数据)和操作(函数)封装在一起。对象是类的实例,类是对象的模板
类可以分为三种:实体类、接口类(边界类)和控制类。
- 实体类的对象表示现实世界中真实的实体,如人、物等。
- 接口类(边界类)的对象为用户提供一种与系统合作交互的方式,分为人和系统两大类,其中人的接口可以是显示屏窗口、Web 窗体、对话框、菜单、列表框、其他显示控制、条形码、二维码或者用户与系统交互的其他方法。系统接口涉及到把数据发送到其他系统,或者从其他系统接收数据。
- 控制类的对象用来控制活动流,充当协调者
抽象:通过特定的实例抽取共同特征以后形成概念的过程。它强调主要特征,忽略次要特征。一个对象是现实世界中一个实体的抽象,一个类是一组对征,抽象是一种单一化的描述,它强调给出与应用相关的特性,抛弃不相关的特性。
封装:是一种信息隐蔽技术,将相关的概念组成一个单元模块,并通过一个名称来引用。面向对象封装是将数据和基于数据的操作封装成一个整体对象,对数据的访问或修改只能通过对象对外提供的接口进行。
继承:表示类之间的层次关系(父类与子类),这种关系使得某类对象可以继承另外一类对象的特征,又可分为单继承和多继承。
多态:不同的对象收到同一个消息时产生完全不同的结果。包括参数多态(不同类型参数多种结构类型)、包含多态(父子类型关系)、过载多态(类似于重载,一个名字不同含义)、强制多态(强制类型转换)四种类型。多态由继承机制支持,将通用消息放在抽象层,具体不同的功能实现放在低层。
接口:描述对操作规范的说明,其只说明操作应该做什么,并没有定义操作如何做。
消息:体现对象间的交互,通过它向目标对象发送操作请求
覆盖:子类在原有父类接口的基础上,用适合于自己要求的实现去置换父类中的相应实现。即在子类中重定义一个与父类同名同参的方法
函数重载:与覆盖要区分开,函数重载与子类父类无关,且函数是同名不同参数。
绑定:是一个把过程调用和响应调用所需要执行的代码加以结合的过程。在一般的程序设计语言中,绑定是在编译时进行的,叫作静态绑定。动态绑定则是在运行时进行的,因此,一个给定的过程调用和代码的结合直到调用发生时才进行。
面向对象需求分析
面向对象的分析
是为了确定问题域,理解问题。包含五个活动:
- 认定对象、
- 组织对象、
- 描述对象间的相互作用、
- 确定对象的操作、
- 定义对象的内部信息。
面向对象需求建模
- 用例模型
- 分析模型
面向对象的设计
是设计分析模型和实现相应源代码,设计问题域的解决方案,与技术相关。OOD同样应遵循抽象、信息隐蔽、功能独立、模块化等设计准则。
【分析模型】主要由顶层架构图、用例与用例图、领域概念模型构成;
【设计模型】则包含
- 以包图表示的软件体系结构图、
- 以交互图表示的用例实现图、
- 完整精确的类图、
- 针对复杂对象的状态图
- 用以描述流程化处理过程的活动图等。
面向对象的设计原则
- 开放一封闭原则。软件实体(类、模块、函数等)应该是可以扩展的,即开放的;但是不可修改的,即封闭的。
- 里氏替换原则。子类型必须能够替换掉他们的基类型。即,在任何父类可以出现的地方,都可以用子类的实例来赋值给父类型的引用。
- 依赖倒置原则。抽象不应该依赖于细节,细节应该依赖于抽象。换言之,要针对接口编程而不是针对实现编程。
- 组合/聚合复用原则。又称为合成复用原则,是在一个新的对象中通过组合关系或聚合关系来使用一些已有的对象,使之成为新对象的一部分,新对象通过委派调用已有对象的方法达到复用其已有功能的目的。简单地说,就是要尽量使用组合/聚合关系,少用继承。一般而言,如果两个类之间是Has-A的关系,则应使用组合或聚合;如果是Is-A关系,则可使用继承。
- 接口隔离原则。指使用多个专门的接口,而不使用单一的总接口。每个接口应该承担一种相对独立的角色,不多不少,不干不该干的事,该干的事都要干。
- 最少知识原则也称为迪米特法则,是指一个软件实体应当尽可能少地与其他实体发生相互作用。最少知识原则可分为狭义原则和广义原则。
- 在狭义原则中,如果两个类之间不必彼此直接通信,那么这两个类就不应当发生直接的相互作用:如果其中的一个类需要调用另一个类的某一个方法,可以通过第三者转发这个调用。
- 广义原则是指对对象之间的信息流量、流向和信息的影响的控制,主要是对信息隐藏的控制。
面向对象开发
面向对象程序设计(00P)是一种计算机编程架构。 00P的一条基本原则是计算机程序由单个能够起到子程序作用的单元或对象组合而成。00P 达到了软件工程的3个主要目标:重用性、灵活性和扩展性。
00P=对象+类+继承+多态+消息,其中核心概念是类和对象。
数据持久化与数据库:
在面向对象开发方法中,对象只能存在于内存中,而内存不能永久保存数据,如果要永久保存对象的状态,需要进行对象的持久化,对象持久化是把内存中的对象保存到数据库或可永久保存的存储设备中。在多层软件设计和开发中,为了降低系统的耦合度,一般会引入持久层,即专注实现数据持久化应用领域的某个特定系统的一个逻辑层面,将数据使用者和数据实体相关联,持久层的设计实现了数据处理层内部的业务逻辑和数据逻辑的解耦。
目前,关系数据库仍旧是使用最为广泛的数据库,因此,将对象持久化到关系数据库中,需要进行对象/关系的映射(0RM)。随着对象持久化技术的发展,诞生了越来越多的持久化框架,目前,主流的持久化技术框架包括Hibernate、iBatis和 JD0等。