本文收集整理关于如何理解面向对象思想的相关议题,使用内容导航快速到达。
内容导航:
Q1:java面向对象思想如何理解?
比如说,我们要用程序来描述一个人。如果是以往的结构化编程,我们可能会这样;
例如用C语言的话,可能会建立一个结构体:
struct Person{
姓名;
年龄;
等等;...
}
然后用定义的一些函数来描述他的行为。比如void walk(struct p); void eat(struct p);等等。
然后使用 walk(p) 来描述行走,使用eat(p)来描述吃饭等。
这样不利于程序结构的维护。开发效率也不高。
但是用java面向对象方式,这一切就显得自然了。我们建立一个类,表示人:
class Person{
姓名
性别
体重
身高等..(人类都有的属性)
吃饭
睡觉 等行为(也就是人类都有的行为)
}
然后将类产生一个实例,就产生了一个人的对象。
Person xiaobai = new Person("小白",身高,体重...等参数);
如果要描述祖先后代的关系,很简单。只要让人类继承自Animal即可。
class Animal{
......
}
class Person extends Animal{
.......
}
这样动物有的属性和行为,人不用定义也可以拥有,符合自然规律~哈哈
面向对象不是java特有的,只是一种思想,如果你愿意,用结构化语言C语言也可以写出面向对象的代码。
Q2:面向对象(oo)思想怎么理解?
我理解的面向对象就是把某事物的特点和功能都抽象出来封装成一个类,由这个类来创建具体的对象,比如我们可以把狗封装成一个类,狗有的特点比如有毛,腿,眼睛,耳朵(这个相当于类的成员变量),狗的功能呢比如会叫,咬人(这个就相当于类的成员函数),具体要要用的时候呢,可以根据这个狗(类)来创建小白,小黑,小花等具体的狗(对象)。
Q3:Java高手是如何理解面向对象思想的?
java里面就是用面向对象的思想来考虑的,打个比方,我想盖房子,我可以自己盖,我还可以找人帮我来完成这个事。后者就是面向对象的思想。在java里有好多现成的类,我想用哪个类的的函数,我不需要自己写一个,直接new一个那个类的对象就可以了。
Q4:如何理解面向对象思想?
从现实世界中客观存在的事物(即对象)出发来构造软件系统,并在系统构造中尽可能运用人类的自然思维方式,强调直接以问题域(现实世界)中的事物为中心来思考问题,认识问题,并根据这些事物的本质特点,把它们抽象地表示为系统中的对象,作为系统的基本构成单位(而不是用一些与现实世界中的事物相关比较远,并且没有对应关系的其它概念来构造系统)。这可以使系统直接地映射问题域,保持问题域中事物及其相互关系的本来面貌。
它可以有不同层次的理解:
从世界观的角度可以认为:面向对象的基本哲学是认为世界是由各种各样具有自己的运动规律和内部状态的对象所组成的;不同对象之间的相互作用和通讯构成了完整的现实世界。因此,人们应当按照现实世界这个本来面貌来理解世界,直接通过对象及其相互关系来反映世界。这样建立起来的系统才能符合现实世界的本来面目。
从方法学的角度可以认为:面向对象的方法是面向对象的世界观在开发方法中的直接运用。它强调系统的结构应该直接与现实世界的结构相对应,应该围绕现实世界中的对象来构造系统,而不是围绕功能来构造系统。
从程序设计的角度来看,面向对象的程序设计语言必须有描述对象及其相互之间关系的语言成分。这些程序设计语言可以归纳为以下几类:系统中一切皆为对象;对象是属性及其操作的封装体;对象可按其性质划分为类,对象成为类的实例;实例关系和继承关系是对象之间的静态关系;消息传递是对象之间动态联系的唯一形式,也是计算的唯一形式;方法是消息的序列。
面向对象
面向对象(Object Oriented,OO)是当前计算机界关心的重点,它是90年代软件开发方法的主流。面向对象的概念和应用已超越了程序设计和软件开发,扩展到很宽的范围。如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。
谈到面向对象,这方面的文章非常多。但是,明确地给出对象的定义或说明对象的定义的非常少——至少我现在还没有发现。其初,“面向对象”是专指在程序设计中采用封装、继承、抽象等设计方法。可是,这个定义显然不能再适合现在情况。面向对象的思想已经涉及到软件开发的各个方面。如,面向对象的分析(OOA,Object Oriented Analysis),面向对象的设计(OOD,Object Oriented Design)、以及我们经常说的面向对象的编程实现(OOP,Object Oriented Programming)。许多有关面向对象的文章都只是讲述在面向对象的开发中所需要注意的问题或所采用的比较好的设计方法。看这些文章只有真正懂得什么是对象,什么是面向对象,才能最大程度地对自己有所裨益。这一点,恐怕对初学者甚至是从事相关工作多年的人员也会对它们的概念模糊不清。
面向对象是当前计算机界关心的重点,它是90年代软件开发方法的主流。面向对象的概念和应用已超越了程序设计和软件开发,扩展到很宽的范围。如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。
如果有软件开发方面的问题,也可以咨询我。
谢谢!
作为也正在路上摸索的我来说,建议你多阅读别人的代码,有条件可阅读一下一些小型框架的代码,加深对OO的理解。 这东西需要一定的编码量、一定的代码阅读量、一定项目参与量,加上理论知识的学习,才可能反思出来它的好处的,光说也只是一些基础的父类、子类的概念。
面向对象只是一种编程思想。再抽象的编程语言,最后都会汇成代码。我们完全可以说汇编语言是面向对象、脚本化、动态化、泛函化、并行化、分布化的语言。请牢记:源代码本身的书写是否结构化或面向对象或符合设计模式或敏捷…并不重要,重要的是你是否使用结构化或面向对象或符合设计模式或敏捷…的方法命名标识符、阅读、修改、检查、测试源代码。
Q7:解释面向对象的基本思想。
我这里有三个版本。
1.通俗版的:面向对象的思想就是以面而不是以线的角度看问题。
2.经典版的:面向对象是把面向过程中的逻辑看成由对象间的局部逻辑。
3.高深版的:面向对象方法是以认识论为基础,用对象来理解和分析问题空间,并设计和开发出由对象构成的软件系统(解空间)的方法。 由于问题空间和解空间都是由对象组成的,这样可以消除由于问题空间和求解空间结构上的不一致带来的问题。简言之,面向对象就是面向事情本身,面向对象的分析过程就是认识客观世界的过程。
通俗版一针见血,说明面向对象的目标是不像面向过程那样集中。通俗版是为了应用的。
经典版说明了面向对象和面向过程的联系。经典版是为研究的
高深版我也不是很懂。