A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 和鹏 中级黑马   /  2015-4-11 12:33  /  772 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


   java语言是建立在面向对象的基础之上。java自身是一种纯面向对象的程序设计语言,提倡万物皆对象。java语言语法中不可以在类外面定义单独的数据和函数,也就是说,java最外部的数据类型是对象,所有的成员都要通过类和对象来访问。
       我以前学过C语言,C是面向过程的编程语言。还记得当时对算法的研究以及对指针的操作都很折磨人。当时用C编程,主要考虑的是这个功能模块怎么实现,实现了这个功能模块后在哪里调用,然后程序就按照顺序一步步的执行下去。当时完全还没有面向对象这个意识,在程序需要某个函数的时候,第一个念头就是我要怎么去设计这个模块,怎么去实现它。就是那种我需要考虑到它的每一个细节,每一种可能都需要我对它做一些掌控。就是做一件事,ok第一步开始,第二步,第三步……直到完成这件事情。当我接触到java时,刚开始还是不太理解面向对象的编程思想,随着对代码的编写以及联系现实生活的思考,终于理解了面向对象的思想。我认为要想真正掌握一门语言,必须是对它的思想有着深刻的认识,而语法和规则都只是一种形式,只有深刻的理解它的思想我们才能发挥它的力量。

面向对象的思想来源于现实生活

       面向对象的思想是人类最自然的一种思考方式,这种思考方式将所有预处理的问题抽象为对象,同时也都了解这些对象都具有那些与之相对应的属性和行为。利用对象自身具有的这些属性和行为解决一些实际问题。先来解释一下“面向对象”。所谓“面向”就是我们的关注点和侧重点,“对象”就是现实中随处可见的一种事物,是事物存在的实体。比如我们使用电脑,大家都知道接上电源打开电源开关我们就可以用电脑了。而电脑的内部构造我们是不知道的,也不需要知道。我们关注的是我们能用这台电脑了,至于这台电脑的电路板是怎么设计的,芯片装在了那里,显卡,声卡,网卡等等都是怎么组装起来的我们并不需要关心。人类解决问题的方式总是将大的复杂的问题划分成若干个小的简单的问题,于是就会思考对象是由哪些部分组成的?通常我们将对象划分为两个部分,一个是静态部分,另一个是动态部分。静态部分顾名思义就是不能动的部分,这个部分我们称之为“属性”,任何对象都会具备自身的属性。比如说人有身高、胖瘦、年龄、性别……然而具有这些属性的人会执行不同的动作,比如吃饭、跑步、说话、微笑……这些是这个人的行为也就是动态部分。

面向对象的思想在程序设计中的应用

       有了以上的思想,我们就将其运用到编程中。程序要解决的问题就是解决现实生活中的问题。重点就是如何将现实中的问题域投射到程序中的方法域中。想要解决这个问题,首先要将现实世界的实体抽象化。然后再考虑这个实体具备的属性和行为。比如解决一个人从中国到美国的的问题。首先我们从这个问题中抽象出一个对象,这里抽象出的对象就是人。然后识别这个对象具有的属性。这个人具有的静态属性有:姓名、年龄、性别、身高、体重、发色、有一双脚、一张嘴巴等等。接下来识别这个对象具有的动态行为,这个人可以走路、奔跑、说话、吃饭等等。这些行为都是这个对象基于其属性而具有的动作。识别完这个对象的属性和行为后这个对象就被定义完成了。然后可以根据这个人具有的特性制定出这个人从中国到美国的具体方案了。

类与对象的关系

       当我们引入面向对象的思想时,就需要对事物进行不断的抽象。抽取一些对象的共有属性和行为,这样就产生了类。在现实生活中我们不能将一个事物描述成一类事物,比如一个人不能称之为人类,一只鸟不能称之为鸟类。所以我要说说对类的认识。类就是同一类事物的统称,如果将现实中的一个事物抽象成对象,类就是对这类事物的统称。比如人类、鸟类、哺乳类。类是构造对象时所依赖的规范,比如一个人具有腿和脚,他可以用腿和脚走路或是奔跑(这里排除那些不幸失去腿和脚的人,还有我只是为了单纯的举个例子),这样具有相同属性和行为的事物就成为类。那么我们就明白类和对象的关系了,对象就是符合某一个类的定义所产生出来的实例。简而言之就是:类是现实中事物的抽象称呼,而对象则是这个事物相对应的实体。面临实际问题时通常都是实例化类的对象来解决问题。比如人类是一个类,而一个名叫“李明”的人则是这个类的一个实例。是真是存在的可以解决某些实际问题的实体。而一个叫“王宝强”的人显然也是人类的一个实例化对象。但“李明”和“王宝强”是不同的他们是两个不同的对象。

2 个回复

倒序浏览
赞下同是学过C语言和C#语言 的
回复 使用道具 举报
这个可以从项目的角度来考虑,现实生活中有分类,对象,抽象,分析,设计,编码,等等,就理解面向对象了,我是看那个项目分析书得来呢,呵呵,拙见
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马