面向对象开发方法概述
面向对象开发方法的优点?
1.把软件系统看成是各种对象的集合,这更接近人类的自然思维方式.
2.软件需求的变动往往是功能的变动,而功能的执行者--对象一般不会有大的变化.
这使得按照对象设计出来的系统结构比较稳定.
3.对象包括属性(数据)和行为(方法),对象吧数据及方法的具体实现方式一起封装起来,
这使得方法和与之相关的诗句不在分离,提高了每个字系统的相对独立性,从而提高了
软件的可维护性.
4.支持封装,抽象,继承和多态,提高了软件的可重用性,可维护性和可扩展性.
对象的特性?
1.万物皆为对象
2.每个对象都是唯一的
3.对象具有属性和行为
4.对象具有状态
5.对象都属于某个类,每个对象都是某个累的实列.
类.类型
类是一组具有相同属性和行为的对象的抽象,类及类的关系构成了对象模式的主要内容.
接口
在java语言中,接口有两种意思:
1.一是指概念性的接口,即指系统对外提供的的所有服务,在对象中表现为public类型的方法 的声明.
2.二是指用interface关键字定义的实实在在地接口,也称为接口类型,它用于明确的描述系 统对外的所有服务.它能够更加清晰的把系统的实现细节与接口分离.
封装,透明
封装是指隐藏对象的属性和实现细节,仅仅对外公开接口.
封装能为软件带来以下优点:
1.便于使用者正确,方便的理解和使用系统,防止使用者错误修改系统的属性.
2.有助于建立各个系统之间的松耦合关系,提高系统的独立性,当某一个系统地实现发生变化 时,只要他的接口不变,就不会影响到其他的系统.
3.提高软件的可重用性,每个系统都是一个独立的整体,可以在多种环境中得到重用.
4.降低了构建大型系统的风险.
在java语言中提供一下4中访问控制级别:
1.public:对外公开,访问级别最高.
2.protected:只对同一个包中的类或者子类公开.
3.默认:只对同一个包中的类公开.
4.private:不对外公开.只能在对象内部访问,访问级别最低.
抽象
类之间的关系
类(对象)之间的关系
一.关联关系(最弱的一种关系)
类和类之间是有关系的,如学生和老师这两个类,老师可以教学生,学生可以向老师学习。这就是他们之间的关系。关系和关系之间是不同的,你和你老婆的关系和你和你其他女朋友的关系是不能混为一谈的。关系最弱的一种关系叫关联关系。关联关系反应到代码上往往是一个类的方法里面的参数是另一个类的具体的某一个对象,比如教授教研究生,教哪个研究生,教是教授这个类里面的一个方法,某个研究生是研究生这个类里面的一个具体的对象。关联关系是最弱的一种关系,咱们两个类之间有关系,或者两个对象之间有关系,但关系不是很紧密。
二.继承关系(比较强的一种关系)
继承关系封装了这样一种逻辑:“XX是一种XX”,只要这东西能说通了,就可以考虑用继承关系来封装它。如:游泳运动员从运动员继承,游泳运动员是一种运动员,这能说得通,所以游泳运动员就是从运动员继承过来的,游泳运动员和运动员就是一种继承关系。学生是一个人,学生从人继承,老师是一个人,老师也从人继承,学生是一种老师,这说不通,所以学生和老师就不存在继承关系。所以将来做设计的时候要分清继承关系很简单,你只要说通这么一句话:“XX是一种XX”。OK,那他们之间就是继承关系。篮球运动员是一种球类运动员,这说得通,所以篮球运动员从球类运动员继承,这样继承很有可能会产生一棵继承树,运动员派生出来,派生出来的意思是游泳运动员这个类、球类运动员这个类、射击运动员类从它继承,相当于运动员派生出来了这些个不同的运动员,包括游泳的,球类的,射击的。球类的再派生足球的,篮球的,排球的。这就是一棵继承树,不过这棵树是比较理想化的情况,只有一个根节点。但实际当中,我们真实世界当中的继承关系不一定只从一个类继承,一个类可能从多个类继承过来,比如说:金丝猴从动物这个类继承,这很正常,但我还有另外一个专门的类:“应该受到保护的东西”,这也是一个类,金丝猴应该受到保护,所以金丝猴是一种应该受到保护的东西。所以金丝猴从“应该受到保护的东西”这个类继承过来。所以在现实情况当中,一个类完完全全有可能从多个不同的类继承,C++正是因为想封装这种继承关系,所以C++存在多重继承。
三.聚合关系(整体和部分)(比较强的一种关系)
什么是聚合?聚合就是一个整体与部分的关系。我们说“XX是XX的一部分”,只要说得通,那么他们之间的关系就是聚合关系,队长是球队的一部分,队员是球队的一部分。所以队长和球队是聚合关系,队员和球队也是聚合关系。脑袋是人的以部分,身体和胳膊也是人的一部分,因此脑袋,身体和胳膊与人都是聚合关系。聚合关系分得再细一点的话就可以分成聚集关系和组合关系,比如球队、队长,队员,这三者是聚集关系,假如这个队长既是足球的队长,同时也是篮球的队长,一个人分属两个不同的球队,这是可以的,球队与队长之间没有我离不了你,你离不了我这种情况,所以如果分得更细的话,这种就叫做聚集关系。还有一种情况叫组合,组合说的是咱们俩密不可分,我是你必不可少的一部分。一个人的脑袋不可能既属于你又属于别人,身体也一样,不可能既属于你又属于别人。所以你的身体,脑袋和你是密不可分的,这是一种更加严格的聚合关系,专门给它取了个名字叫组合。
四.实现关系
作为父类来说,我觉得我应该具有这样一个方法,但我不知道怎么去实现,谁去实现,我的子类去实现,这就是实现关系。和实现关系息息相关的还有一种关系叫多态。
五.多态
七、Java与面向对象
对象和类是分不开的,必须首先定义类才能有对象。首先定义方法才能调用。对象是JAVA里面的核心,做任何东西你首先都得给我造出一个对象才能做。静态属性简称属性,也叫成员变量,以后说属性或者说成员变量它们指的都是同一回事。
整个类可以看作是静态的属性还有方法他们之间的一个综合。怎么抽象出一个类的概念,还是那句话,你必须抽象出两个方面来,第一方面是看他们的静态属性,他们有哪些成员变量,第二方面是看他们的有哪些方法。
写JAVA程序时,我们一上来写的就是public class(声明一个类),在这个class里面我们写的是成员变量和方法。
从这个意义上来讲,JAVA里面的每定义一个类实际上就相当于一种新的数据类型。就跟int ,float, String等一样,不过是一种新定义的类型而已。
八、为什么使用面向对象编程?
面向对象编程:一组对象互相配合通过沟通完成特定功能
做软件苦苦追求的一种境界是可重用性(reusable),可扩展性。如果是面向过程,一般情况是属性和方法它们是分开的,他们不是聚合的关系,不是合在一起的,这样要复用起来比较麻烦,复用的层次只是局限于方法这个层次上,而面向对象则不同,它是把属性和方法综合在一个里面。综合在一起复用的时候是整个对象进行复用。所以面向对象和面向过程相比,前者更加容易让我们达到可重用性。