面向对象之前有一篇博客是在陈述面向对象和面向过程的区别,而这次就来分析一下究竟什么是面向对象?
1.面向对象是一种思想,是基于面向过程而言的,是一种把面向对象的思想应用于软件开发过程中的方法,简称“OO”
2.面向对象是将功能通过对象来实现,将功能封装进对象之中,让对象去实现具体的细节;
3.面向对象总体来说是对数据一种优化,操作起来更加的方便,简化了过程。
所以面向对象的在使用起来大大减小我们的工作负担。
下面是我对面向对象技术的一些理解:
一、面向对象的三大特点: 封装性,继承性,动态性
封装性 | 概念: 隐藏对象的属性和实现细节,仅对外提供公共访问方式,在一个对象内部,一些数据是私有的不能被外部所访问 好处: 将外部隔离,便于使用,提供复用性和安全性 |
继承性 | 概念: 所谓继承就是让一个类型的对象获得另一个对象的属性和方法,继承是提高代码复用性和多态性的基础,在无需重新编写原来的类的情况下对这些功能进行扩展 分为父类和子类, 被继承的是“父类”,继承的是子类
|
动态性 | 概念:所谓多态就是指一个类实例的相同方法在不同情形有不同表现形式 例子: 在一个大型的演奏会现场,相同的一个指挥家,但是他面对的是不同的人使用着不同的乐器,但是他们都通过看同一个指挥家来演奏不一样的乐器,出来的声音也是不一样的。这就是多态性。 |
二、面向对象技术基本概念:
1.对象 (object)
指现实世界中各种各样的实体,既可以指具体的事物,也可以指抽象的事物。
它具有三个特征: 状态(静态信息),行为(动态),标识
举例:比如一个老师正在上课,可以想想成一个画面
在这个图片中有很多对象:老师,黑板,书等,我们以老师为例子
状态:指静态信息,那么身高,年龄都是状态
行为:走路,上课等动态行为
标识:姓名
2.类(class):
类就是具有相似内部状态和运行规律的实体的集合。类定义了属性和方法,提供了一个创建对象的模板
类和对象的关系可以总结为:
(1)每一个对象都是某一个类的实例。
(2)每一个类在某一时刻都有零或更多的实例。
(3)类是静态的,它们的存在、语义和关系在程序执行前就已经定义好了,对象是动态的,它们在程序执行时可以被创建和删除。
(4)类是生成对象的模板。
3.属性:
属性是类中所定义的数据,他是对客观世界实体所具有的性质的抽象
类的每个实例都有自己特有的属性值。比如姓名、性别就可以作为员工的属性而出现。
4.组件:
组件是软件系统可替换的,物理的组成部分,它封装了实现体(实现某个智能),并提供了一组接口的实现方法,有人将组件理解为具有一定功能,能够独立工作,或同其他组件组合起来协作工作的对象
5.接口:
接口就是对操作规范的说明,只能说明这个操作应该做什么,但是没有定义操作如何去做,接口可以理解成类的一个特例,只规定实现此接口的操作方法,而真正的实现细节需要交由实现该接口的类去完成
6.包:
关系:
1.泛化关系:
泛化关系也叫作继承关系指的是一个类继承另一个类的功能,并且可以增加它自己的新功能。
通过关键字 extends 来明确标识,在UML中继承是用一条带空心三角箭头的实线来表示,从子类指向父类
2.实现关系:
指的是一个class类实现interface接口的功能,实现是类与接口之间最常见的关系
用implements来明确标识,在UML中用一条带空心三角箭头的虚线来表示
3.依赖关系:
依赖就是一个类A用了另外一个类B,但是类B的变化会影响到类A
在UML中依赖关系有A类指向B类,带箭头虚线表示
4.关联关系:
体现的是俩个类之间的依赖关系,比如我和我的朋友,这种关系不存在临时的,一般是长期性的,而且双方的关系都是平等的
在uml中用带箭头实现表示
面向对象分析:OOA
面向对象设计:OOD
面向对象实现:OOA