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

原创 2015年11月20日 09:37:31

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

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虚拟机运行的过程中提供的机制。


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

这里有面向对象开发的几个核心的思想和概念 1、问题领域、对象、属性、状态、行为、方法、实现 问题领域: 指软件系统所模拟的真实世界中的系统,在现实生活中,比较常见的比如,税收、社...

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

1、问题领域、对象、属性、状态、行为、方法、实现 问题领域: 指软件系统所模拟的真实世界中的系统,在现实生活中,比较常见的比如,税收、社保、银行、商场等等,都可以使用软件来进行模拟,这些就...

面向对象开发与面向对象设计模式的几个核心的思想和概念 -java

>>>> 面向对象开发的几个核心思想 1、问题领域、对象、属性、状态、行为、方法、实现 问题领域:   指软件系统所模拟的真实世界中的系统,在现实生活中,比较常见的比如,税收、社保、银行、商...
  • ShareUs
  • ShareUs
  • 2016年03月21日 17:10
  • 2392

(一)1.3 面向对象开发中的核心思想和概念

问题领域 问题领域是指软件系统所模拟的真实世界中的系统。随着计算机技术的发展和普及,软件系统渗透到社会的各个方面,几乎可用来模拟任意一种问题领域,如学校、医院等。 2、对象 对象是...

服务容器——laravel真正的核心,面向对象思想阐述

服务容器,也叫IOC容器,其实包含了依赖注入(DI)和控制反转(IOC)两部分,是laravel的真正核心。其他的各种功能模块比如 Route(路由)、Eloquent ORM(数据库 ORM 组件)...

⚔疯狂输出⚔面向对象核心思想。

面向对象,只要是在大学里学过c语言的都知道,在大学的第一趟c语言课程老师都会讲c语言是面向过程的然后会简单的说个例子。然后再说c++是面向对象的语言再简单的举个例子。 我们Java也是面向对象的语言...

黑马程序员——Java语言基础——03.面向对象(1)思想和一些概念

----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------ 本节考点: 一、说说面向对象的思想 见正文 二、单例设计模式 单例设计模式...

java学习日记_9:面向对象的概念以及思想

java是面向对象的编程语言, 面向对象是基于面向过程的编程思想; 先区别一下面向过程与面向对象—— 面向过程:强调每一步的功能步骤, 面向过程:强调的是对象,然后由对象去调用功能; 面向对...

C++编程思想学习-随笔记录(面向对象概念)

所有的程序设计语言都提供抽象。如:汇编语言是对底层机器的小幅度抽象,c等命令式语言是对汇编语言的抽象,但是它们的主要抽象仍然要求程序员按计算机的结构去思考,而不是按要解决的问题结构去思考。因此,面向对...

浅谈PHP面向对象的几个抽象概念

本人专攻PHP+大数据集群,利用课余时间想巩固一下底层的C++和LINUX课程。写博客,一方面可以以博客的方式记录自己的程序猿之路,另一方面也可以起到前人种树后人乘凉的作用。计算机中这些概念有的时候很...
  • php_wyl
  • php_wyl
  • 2016年10月22日 01:02
  • 493
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:面向对象开发中的几个核心的思想和概念
举报原因:
原因补充:

(最多只允许输入30个字)