面向对象开发

面向对象开发方法概述

面向对象开发方法的优点?

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),可扩展性。如果是面向过程,一般情况是属性和方法它们是分开的,他们不是聚合的关系,不是合在一起的,这样要复用起来比较麻烦,复用的层次只是局限于方法这个层次上,而面向对象则不同,它是把属性和方法综合在一个里面。综合在一起复用的时候是整个对象进行复用。所以面向对象和面向过程相比,前者更加容易让我们达到可重用性。

时间: 2024-10-15 15:18:02

面向对象开发的相关文章

结构化系统开发和面向对象开发方法

结构化系统开发方法: 系统分析员.软件工程师.程序员以及最终用户按照用户至上的原则,自顶向下分析与设计和自底向上逐步实施的建立计算机信息系统的一个过程,是组织.管理和控制信息系统开发过程的一种基本框架. 三部分:管理策略部分:强调系统开发的规划.进程安排.评估.监控和反馈.开发策略部分:任务分解结构:WBS优先级结构.开发经验.开发标准. 开发过程分为:系统规划阶段.系统分析阶段.系统设计阶段.系统实施阶段.系统运行与维护阶段结构化开发早期的程序开发,如C语言,都是用结构化开发方法. 面向对象开

php面向对象开发的学习

1.概念:程序设计中采用封装,继承,抽象等设计方式. 2.传统开发问题 软件重用性差.可维护性差,无很好扩展性 3.要素 抽象性,封装性,共享性,强调对象结构而不是程序 4.特点(缺一不可) 封装(把相似类型封装成一类),继承(父类有什么属性,子类就有什么属性),多态(运行时加载) 5.类:一个功能的集合菜单(用户不同,需求不同) 6.创建类:class 方法名{...} 例:class Student{     public $id;    public $name;    public $c

[学习笔记]面向对象开发中的一些思想和原则

摘自<Java与模式>作者阎宏 面向对象的可复用设计的第一块基石:开闭原则(一个软件实体应当对扩展开放,对修改关闭) "开-闭"原则的手段和工具: 1)里氏代换原则:任何基类出现的地方,子类一定可以出现: 2)依赖倒转原则:要依赖于抽象,不要依赖于实现: 3)合成\聚合复用原则:要尽量使用合成\聚合,而不是继承关系达到复用的目的: 4)迪米特法则:一个软件实体应该与尽可能少的其它实体发生相互作用: 5)接口隔离原则:应当为客户端提供尽可能小的单独的接口,而不要提供大的总接口

javaScript 面向对象开发实例

javaScript 面向对象开发实例 这个是结合require的模块化开发,首先创建构造函数: //test.js 1 function Test(lists) { 2 var config={ 3 name:lists.name, 4 sex:lists.sex 5 }; 6 this.init(config) 7 } 8 Radio.prototype = { 9 init: function(config) { 10 var self=this; 11 self.initContent(

面向对象开发方法优点

首先来看看结构化的软件开发方法 1.结构化的软件开发方法 SASD方法,也可称为面向功能的软件开发方法或者面向数据流的软件开发方法.SASD方法是20世纪80年代使用最广泛的软件开发方法.它首先用结构化分析(Structure Analysis,SA)对软件进行需求分析,然后用结构化设计(Structure Design,SD)方法进行总体设计,最后进行结构化编程(Structure Programming,SP).这种开发方法使得开发步骤明确,SA.SD和SP相辅相成,一气呵成. 结构化开发方

ASP.NET的简单与面向对象开发

ASP.NET开发,一开始是为了超赶时间完成任务,只能把功能实现即可.如下面一个功能,在网页中有一个铵钮,用户点一点切换网页的图片,再点一点又切换回来.我们要怎样做?在铵钮事件中去变更图片的路径即可. 这个例子,Insus.NET找到两张图片,图片来自<ASP.NET的适配器设计模式(Adapter)>http://www.cnblogs.com/insus/archive/2013/02/04/2891426.html .铵钮也参考了<关于母版页的按钮事件>http://www.

JavaScript 面向对象开发知识基础总结

JavaScript 面向对象开发知识基础总结 最近看了两本书,书中有些内容对自己还是很新的,有些内容是之前自己理解不够深的,所以拿出来总结一下,这两本书的名字如下: JavaScript 面向对象精要 JavaScript 启示录 如果对于 JavaScript 面向对象编程理解不够深的话,第一本书还是强烈推荐的.第二本书比较适合初中级的开发者阅读.对各种知识点都有代码示例.内容中规中矩. 1.JavaScript 中的变量类型和类型检测 C#和Java等编程语言用栈存储原始类型,用堆存储引用

Java面向对象开发学习笔记(一)

Java面向对象开发 阿里云课程链接 共105课时 课时1 面向对象简介 面向对象是一种程序设计方法,但是并不是所有开发者都认同面向对象,因为很多开发者认为面向对象过于复杂,所以更多人愿意使用函数式编程. 面向对象的前身是面向过程,如果要想笼统地解释这两种开发模型的区别,最好的例子:面向过程是解决问题,而面向对象是模块化设计.对于现在的程序开发,更多情况下就像是汽车组装一样,不同的工厂生产不同的配件.将所有的零件组装在一起,就可以形成一辆汽车,并且当某一个零件坏掉的时候,还可以进行配装. 在面向

侯捷《C++面向对象开发》——动手实现自己的复数类

前言 最近在看侯捷的一套课程<C++面向对象开发>,刚看完第一节introduction之后就被疯狂圈粉.感觉侯捷所提及所重视的部分也正是我一知半解的知识盲区,我之前也写过一些C++面向对象的程序,不过正如侯捷所说,我还仅仅停留于Object-based层面,写程序时总是在想如何封装好一个类,而不是Object-oriented强调类与类之间关系的设计. 这门课程分为两部分,第一部分讲Object-based,第二部分讲Object-oriented:第一部分又分为两部分:带指针的类的封装和不