`
he91_com
  • 浏览: 374025 次
文章分类
社区版块
存档分类
最新评论

面向对象开发中的几个核心的思想和概念

 
阅读更多
这里有面向对象开发的几个核心的思想和概念

1、问题领域、对象、属性、状态、行为、方法、实现

问题领域:
指软件系统所模拟的真实世界中的系统,在现实生活中,比较常见的比如,税收、社保、银行、商场等等,都可以使用软件来进行模拟,这些就是软件所针对的问题领域。

对象:
对象是对问题领域中的事物的一种抽象。
1)所有的东西都是对象,万物皆对象,问题领域中的实体和概念都可以抽象为对象。
2)世界上没有完全相同的两片叶子,每个对象都是唯一的,对象的唯一性来自于真实世界中的事物的唯一性,即使在系统中java的两个对象,内存地址也未必相同。
3)每个对象具有属性和行为。
4)每一个对象都具有状态,状态的意思就是在某一个时间点上,对象的各个属性的取值情况。
5)对象都属于一个类,每个对象都是某一个类的实例,类是具有相同属性和行为的对象的集合,同一个类的所有的实例都具有相同的属性,表示他们的属性的含义是相同的,但是他们的状态未必是相同的,也就是属性的取值未必是一样的。

2、类、类型
类:
类是一组具有相同属性和行为的对象的抽象。类以及类的关系构成了对象模型的主要内容。
面向对象变成的主要任务就是定义对象模型中的各个类。
对象是类的实例,类是对象的模板。

3、消息、服务
消息可以理解为参数,服务,就是方法返回的值。

4、接口
什么是接口?
对象,通过接口对提供服务。在现实的世界中,接口是实体,但是在面向对象的范畴中,接口是一个抽象的概念,指的是系统对外提供的服务。系统的接口描述系统能够提供哪些服务,但是不包含服务的实现的细节。对象是最小的子系统,每个对象都是服务提供者,因此每一个对象都具有接口。
站在使用者的角度上,对象中所有向使用者公开方法的声明构成了对象的接口。使用者调用对象的公开方法来获得服务,使用者在获得服务的时候,不需要关心对象到底是如何实现服务的。
接口,是实现系统之间松耦合的有力手段。
计算机系统也是一个充分利用接口来提高系统松耦合的例子,接口还提高了系统的可扩展性。

在java语言中,接口有两个方面的意思:
1)接口是指概念性的接口,也就是系统对外提供的所有的服务,在对象中表现的是public类型的方法的声明。
2)是指interface为关键字定义的实实在在的接口,也成为接口类型,用于明确的描述系统所提供的服务,能够更加清晰的把系统的实现细节与接口分离。

5、封装、透明
封装
封装是指隐藏对象的属性和实现的细节,仅仅对外公开接口,封装能够带来的优点如下:
1)便于使用者能够正确、方便的理解和使用系统,防止使用者错误修改系统的属性。
2)有助于建立各个系统之间的松耦合关系,提高系统的独立性,当一个系统的实现发生变化的时候,只要她的接口不发生变化,就不会影响到其他的系统。
3)提高系统的可重用性,每个系统都是一个相对独立的整体,可以在多种环境中得到重用。
4)降低了构建大型系统的风险,就类似于搭积木一样,个别的系统不成功,但是代码还是可以被重用的。

一个设计良好的系统会封装所有的实现细节,把它的接口与实现能够清晰的隔离起来,系统之间只通过接口进行通信。面向对象的编程语言主要通过访问控制机制来进行封装,这种机制能够控制对象的属性和方法的可访问性。在java语言中提供了如下四种方式的访问级别:
public(公开)private(私有)protected(同一个包、子类)default(同一个包)
把尽可能多的东西藏起来,然后对外提供间接的接口,如果封装的程度越高,那么相对的独立性就越高,这样使用起来就会更加的方便。
把所有的属性封装起来,至少有几个好处:更符合客观世界规律、更灵活的控制属性访问级别、防止用户错误操作、有助于对象封装实现细节。

6、抽象
抽象
从特定的角度出发,从已经存在的一些事物当中抽取我们所关注的细节,形成一个新的事物的思维过程。抽象是一种从具体到抽象、由复杂到简单的思维方式。
三种类型的抽象:
1)从问题领域到软件模型中的对象的抽象
2)从对象到类的抽象
3)从子类到父类的抽象

在java语言中,抽象有两种意思:
1)抽象,是一种思维过程,包含上面三种方式的抽象
2)抽象,是一个形容词,可以用来修饰类以及方法,如果一个方法被abstract修饰的话,则说明这个方法没有被具体实现,如果一个类被abstract修饰,则说明这个是抽象类,不能被实例化。

7、继承、扩展、覆盖
在父类和子类之间同时存在着继承和扩展的关系。子类继承父类的属性以及方法,同时子类中还可以扩展出新的属性以及方法,并且还可以覆盖父类当中方法的实现方式。
继承与扩展同时提高了系统的可重用性和可扩展性。
继承与扩展导致了面向对象软件开发领域中的架构类软件系统的发展。

如何在一些通用的软件架构的基础上进行扩展呢?
这些通用的软件架构中都提供了一些扩展点,简单的说,这些扩展点就是为了让用户进行继承和扩展的类。这些类已经具备了一些功能,并且能够和软件中的其他的类能够进行紧密的协作,用户只需要创建这些类的子类,然后在这些子类中增加新的功能或者是重新实现某些功能,用户定义的子类能够和系统中原有的类进行和谐融洽的协作。
比如:J2EE、Servlet、JSP、EJB、Struts、JSF、Spring这些都是一些通用的架构。

8、组合
组合 是一种用多个子系统来组装出复杂系统的有效的手段。
对于一个组合系统,组合系统和他的子系统是聚集关系,子系统之间则是关联关系或者是依赖关系(在UML中的定义)
面向对象的范畴中,组合具有以下的特点:
1)在软件的分析和设计的阶段,简化为复杂系统建立对象的模型。在建立对象模型的时候,通常首先识别问题领域的粗粒度对象,然后对该对象进行分解,比较符合人类的思维。
2)在软件编程的阶段中,假话创建复杂系统的过程,只需要分别创建独立的子系统,然后将其组合起来,就构成了一个复杂的系统。而且允许第三方参与系统的建设,提高了构架复杂系统的效率。
3)向使用者隐藏系统的复杂度。
4)提高程序代码的可重用性,一个独立的子系统可以被组合到多个复杂的系统当中。

9、多态、动态绑定
多态,是指系统A访问系统B提供的服务的时候,系统B可以通过多种方式来提供服务,而这一切对于系统A是透明的。

动态绑定,一个接口=new 实现类,这个实现类在运行的时候并不知道,可能是实现类A,也可能是实现类B,java虚拟机的这种运行机制被称为动态绑定。
抽象机制和动态绑定机制能够提高系统之间的松耦合性。

需要注意的一点是:抽象机制是开发人员在开发过程当中使用的机制,但是动态帮顶机制是在java虚拟机运行的过程中提供的机制。
分享到:
评论

相关推荐

    C++Builder核心program

    C++ Builder 3中的元件很多,尽管这些元件千差万别,但它们都是从几个公共基类继承下来的,因此,这些元件具有某种程度的相似性,为了节省篇幅,本书按照这样的思路编写,即先介绍公共基类,后面将只介绍每个元件...

    Java大数据开发+Java大厂面试题

    准备面试Java开发岗位?不要担心!我们为您准备了一份精心策划的Java面试题广告!无论您是初级开发者还是经验丰富的...这些题目涵盖了Java开发中的核心概念和常见问题,帮助您准备面试。祝您面试成功,取得理想的职位!

    Java后端+Java后端中级面试题

    准备面试Java开发岗位?不要担心!我们为您准备了一份精心策划的Java面试题广告!无论您是初级开发者还是经验丰富的...这些题目涵盖了Java开发中的核心概念和常见问题,帮助您准备面试。祝您面试成功,取得理想的职位!

    Java面试题+Java后端中级面试题

    准备面试Java开发岗位?不要担心!我们为您准备了一份精心策划的Java面试题广告!无论您是初级开发者还是经验丰富的...这些题目涵盖了Java开发中的核心概念和常见问题,帮助您准备面试。祝您面试成功,取得理想的职位!

    Think in UML大象(架构师必备,珍藏版).part03.rar

    内容简介回到顶部↑本书以UML为载体,将面向对象的分析设计思想巧妙地融入建模过程中,通过贯穿全书的实例将软件系统开发过程中方方面面的知识有机地结合在一起,用生动的语言和精彩的事例将复杂枯燥的软件过程讲解...

    Think in UML大象(架构师必备,珍藏版).part04.rar

    内容简介回到顶部↑本书以UML为载体,将面向对象的分析设计思想巧妙地融入建模过程中,通过贯穿全书的实例将软件系统开发过程中方方面面的知识有机地结合在一起,用生动的语言和精彩的事例将复杂枯燥的软件过程讲解...

    Think in UML大象(架构师必备,珍藏版).part01.rar

    内容简介回到顶部↑本书以UML为载体,将面向对象的分析设计思想巧妙地融入建模过程中,通过贯穿全书的实例将软件系统开发过程中方方面面的知识有机地结合在一起,用生动的语言和精彩的事例将复杂枯燥的软件过程讲解...

    Think in UML大象(架构师必备,珍藏版).part06.rar

    内容简介回到顶部↑本书以UML为载体,将面向对象的分析设计思想巧妙地融入建模过程中,通过贯穿全书的实例将软件系统开发过程中方方面面的知识有机地结合在一起,用生动的语言和精彩的事例将复杂枯燥的软件过程讲解...

    Think in UML大象(架构师必备,珍藏版).part10.rar

    内容简介回到顶部↑本书以UML为载体,将面向对象的分析设计思想巧妙地融入建模过程中,通过贯穿全书的实例将软件系统开发过程中方方面面的知识有机地结合在一起,用生动的语言和精彩的事例将复杂枯燥的软件过程讲解...

    Think in UML大象(架构师必备,珍藏版).part08.rar

    内容简介回到顶部↑本书以UML为载体,将面向对象的分析设计思想巧妙地融入建模过程中,通过贯穿全书的实例将软件系统开发过程中方方面面的知识有机地结合在一起,用生动的语言和精彩的事例将复杂枯燥的软件过程讲解...

    Think in UML大象(架构师必备,珍藏版).part05.rar

    内容简介回到顶部↑本书以UML为载体,将面向对象的分析设计思想巧妙地融入建模过程中,通过贯穿全书的实例将软件系统开发过程中方方面面的知识有机地结合在一起,用生动的语言和精彩的事例将复杂枯燥的软件过程讲解...

    Think in UML大象(架构师必备,珍藏版).part07.rar

    内容简介回到顶部↑本书以UML为载体,将面向对象的分析设计思想巧妙地融入建模过程中,通过贯穿全书的实例将软件系统开发过程中方方面面的知识有机地结合在一起,用生动的语言和精彩的事例将复杂枯燥的软件过程讲解...

    Think in UML大象(架构师必备,珍藏版).part02.rar

    内容简介回到顶部↑本书以UML为载体,将面向对象的分析设计思想巧妙地融入建模过程中,通过贯穿全书的实例将软件系统开发过程中方方面面的知识有机地结合在一起,用生动的语言和精彩的事例将复杂枯燥的软件过程讲解...

    Think in UML大象(架构师必备,珍藏版).part09.rar

    内容简介回到顶部↑本书以UML为载体,将面向对象的分析设计思想巧妙地融入建模过程中,通过贯穿全书的实例将软件系统开发过程中方方面面的知识有机地结合在一起,用生动的语言和精彩的事例将复杂枯燥的软件过程讲解...

    corejava基础重要知识点总结

    思想简单:面向对象的思想 = OO思想 面向过程:需要人站在计算机的角度去思考问题 面向对象:需要人拿着代码模拟实现生活 类:一组类型相同事物高度抽象之后的集合概念 创建对象的模板 -》 class 对象:类的一...

    计算机二级C语言考试题预测

    (5) 下面概念中,不属于面向对象方法的是 (D) 注:P55-58 A. 对象 B. 继承 C. 类 D. 过程调用 (6) 在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是(B) A. 可行性分析 B. 需求分析 C. 详细设计 D. ...

    C#.NET开发者指南计算机专业毕业设计外文翻译-中英文对照.docx

    C#来源于C和C++,是一种简单的、现代的、面向对象和类型安全的编程语言,由Microsoft的Anders Hejlsberg专门为.NET平台开发的语言,继承了许多语言的特征,如C、C++和Java。C#是为了综合Visual Basic的简单和C++...

    C#微软培训资料

    9.1 面向对象的基本概念.101 9.2 对象的模型技术 .103 9.3 面向对象的分析 .105 9.4 面向对象的设计 .107 9.5 小 结 .110 第十章 类 .112 10.1 类 的 声 明 .112 10.2 类 的 成 员 .113 10.3 构造...

    asp.net知识库

    与正则表达式相关的几个小工具 你真的了解.NET中的String吗? .NET中的方法及其调用(一) 如何判断ArrayList,Hashtable,SortedList 这类对象是否相等 帮助解决网页和JS文件中的中文编码问题的小工具 慎用const...

    亮剑.NET深入体验与实战精要2

    13.4 面向对象设计和开发实例 466 13.4.1 传统过程化设计实现播放器功能 466 13.4.2 基于面向对象设计实现播放器功能 467 13.4.3 面向对象封装、继承、多态的应用 468 13.4.4 设计模式、条件外置及反射技术的应用 ...

Global site tag (gtag.js) - Google Analytics