1、面向对象其实是现实世界模型的自然延伸。2、现实世界中任何实体都可以看作是对象。对象之间通过消息相互作用。3、另外,现实世界中任何实体都可归属于某类事物,任何对象都是某一类事物的实例。4、如果说传统的面向过程式编程语言是以过程为中心以算法为驱动的话,面向对象的编程语言则是以对象为中心以消息为驱动。5、用公式表示,过程式编程语言为:程序=算法+数据;面向对象编程语言为:程序=对象+消息。
1、什么是面向对象程序设计?它与面向过程序设计的主要区别是什么?
面向对象设计是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法,是建立在“对象”概念基础上的方法学。对象是由数据和容许的 *** 作组成的封装体,与客观实体有直接对应关系,一个对象类定义了具有相似性质的一组对象。而每继承性是对具有层次关系的类的属性和 *** 作进行共享的一种方式。所谓面向对象就是基于对象概念,以对象为中心,以类和继承为构造机制,来认识、理解、刻画客观世界和设计、构建相应的软件系统
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
2、解释下列概念:对象、类,对象的状态,消息,方法
1)对象:对象是要研究的任何事物。从一本书到一家图书馆,单的整数到整数列庞大的数据库、极其复杂的自动化工厂、航天飞机都可看作对象,它不仅能表示有形的实体,也能表示无形的(抽象的)规则、计划或事件。对象由数据(描述事物的属性)和作用于数据的 *** 作(体现事物的行为)构成一独立整体。从程序设计者来看,对象是一个程序模块,从用户来看,对象为他们提供所希望的行为。在对内的 *** 作通常称为方法
2)类:类是对象的模板。即类是对一组有相同数据和相同 *** 作的对象的定义,一个类所包含的方法和数据描述一组对象的共同属性和行为。类是在对象之上的抽象,对象则是类的具体化,是类的实例。类可有其子类,也可有其它类,形成类层次结构。
3)对象具有状态,一个对象用数据值来描述它的状态。
4)消息:消息是对象之间进行通信的一种规格说明。一般它由三部分组成:接收消息的对象、消息名及实际变元。
5)方法:软件编程语言中,如果将函数定义为类定义的一部分或者将它与某个对象绑定,则该函数称为方法
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
3、对象有哪些特征:
对象(object)是一件事、一个实体、一个名词,可以获得的东西,可以想象有自己的标识的任何东西。对象是类的实例化。一些对象是活的,一些对象不是。比如这辆汽车、这个人、这间房子、这张桌子、这株植物、这张支票、这件雨衣。 概括来说就是:万物皆对象。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
4、如何理解对象的封装性。
封装性:封装是一种信息隐蔽技术,它体现于类的说明,是对象的重要特性。封装使数据和加工该数据的方法(函数)封装为一个整体,以实现独立性很强的模块,使得用户只能见到对象的外特性(对象能接受哪些消息,具有那些处理能力),而对象的内特性(保存内部状态的私有数据和实现加工能力的算法)对用户是隐蔽的。封装的目的在于把对象的设计者和对象者的使用分开,使用者不必知晓行为实现的细节,只须用设计者提供的消息来访问该对象。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
5、什么是继承,单继承,多继承?请举例说明。
继承性:继承性是子类自动共享父类之间数据和方法的机制。它由类的派生功能体现。一个类直接继承其它类的全部描述,同时可修改和扩充。继承具有传递性。继承分为单继承(一个子类只有一父类)和多重继承(一个类有多个父类)。类的对象是各自封闭的,如果没继承性机制,则类对象中数据、方法就会出现大量重复。继承不仅支持系统的可重用性,而且还促进系统的可扩充性。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
6、面向对象程序设计语言有哪些特征?
(1)封装是指将某事物的属性和行为包装到对象中,这个对象只对外公布需要公开的属性和行为,而这个公布也是可以有选择性的公布给其它对象。在java中能使用private、protected、public三种修饰符或不用(即默认defalut)对外部对象访问该对象的属性和行为进行限制。
(2)继承是子对象可以继承父对象的属性和行为,亦即父对象拥有的属性和行为,其子对象也就拥有了这些属性和行为。这非常类似大自然中的物种遗传。
(3)多态,谈到多态就需要先提到一些词汇,如overriding(覆盖)和overload(过载)。多态则是体现在overriding(覆盖)上,而overload(过载)则不属于面向对象中多态的范畴,因为overload(过载)概念在非面向对象中也存在。
面向对象编程的概念:面向对象的程序设计(Object-Oriented Programming,简记为OOP)立意于创建软件重用代码,具备更好地模拟现实世界环境的能力,这使它被公认为是自上而下编程的优胜者。它通过给程序中加入扩展语句,把函数“封装”进编程所必需的“对象”中。面向对象的编程语言使得复杂的工作条理清晰、编写容易。说它是一场革命,不是对对象本身而言,而是对它们处理工作的能力而言。对象并不与传统程序设计和编程方法兼容,只是部分面向对象反而会使情形更糟。除非整个开发环境都是面向对象的,否则对象产生的好处还没有带来的麻烦多。有人可能会说PHP不是一个真正的面向对象编程的语言, PHP 是一个混合型 语言,你可以使用面向对象编程,也可以使用传统的过程化编程。然而,对于大型项目的开发,你可能想需要在PHP中使用纯的面向对象编程去声明类,而且在你的项目开发只用对象和类。随着项目越来越大,使用面向对象编程可能会有帮助,面向对象编程代码很容易维护,容易理解和重复使用,这些就是软件工程的基础。在基于Web的项目中应用这些概念就成为将来网站成功的关键。
对象(Object)是问题域或实现域中某些事物的一个抽象,它反映此事物在系统中需要保存的信息和发挥的作用;它是一组属性和有权对这些属性进行 *** 作的一组服务的封装体。 关于对象要从两方面理解:一方面指系统所要处理的现实世界中的对象;另一方面对象是计算机不直接处理的对象,而是处理相应的计算机表示,这种计算机表示也称为对象。简单的来说,一个人就是一个对象,一个尺子也可以说是个对象。当这些对象可以用数据直接表示时,我们就称他为属性,尺子的度量单位可以是厘米,公尺或英尺,这个度量单位就是尺子的属性。
在PHP里我们可以定义一个类,类(Class)就是指变量与一些使用这些变量的函数的集合。PHP是一种松散类型的语言,所以通过类型重载不起作用,通过参数的个数不同来重载也不起作用。 有时在面向中重载构造函数非常好,这样你可以通过不同的方法创建对象(传递不同数量的参数)。在PHP中就是通过类来实现的。
在PHP中是通过类来完成信息封装的,在PHP中定义类的语法是:
<php
class Class_name // 在面向对象编程类中,习惯上类的第一个字符为大写,并且必须符合变量的命名规则。
{
//函数与变量的集合
}
>
在定义类时你可以按自已的喜好的格式进行定义,但最好能保持一种标准,这样开发起来会更有效些。
数据成员在类中使用"var"声明来定义,在给数据成员赋值之前,它们是没有类型的。一个数据成员可以是一个整数,一个数组,一个相关数组(Associative Array)或者是一个对象。
下面是一个类定义的实际例子:
<php
class Student
{
var $str_Name; //姓名
var $str_Sex; //性别
var $int_Id; //学号
var $int_English; //英语成绩
var $int_maths; //数学成绩
}
>
这是一个很普通定义类的简单例子,用于显示学生的学习成绩,类名为Student,Student类包涵了一个学生的基本属性:姓名、性别、学号、英语成绩和数学成绩。
function我们称之为在类中被定义的函数,在函数中访问类成员变量时,你应该使用$this->var_name,其中var_name指的是类中被声明的变量,否则对一个函数来说,它只能是局部变量。 我们先定义一个Input()的函数,用来给实例中的对象赋以初值:
function Input ( $Name, $Sex, $Id, $Englis, $Maths)
{
$this->str_Name=$Name;
$this->str_Sex =$Sex;
$this->int_Id =$Id;
$this->int_Englis=$English;
$this->int_Maths=$Maths;
}
现在我们再定义一个叫“ShowInfo()”的函数,用于打印学生的基本情况:
function ShowInfo() //定义ShowInfo()函数
{
echo (“姓名:$this->str_Name<br>
”);
echo (“性别:$this->str_Sex <br>
”);
echo (“学号:$this->int_Id <br>
”);
echo (“英语成绩:$this->int_English <br>
”);
echo (“数学成绩:$this->int_Maths <br>
”);
}
而定义好的类则必须使用new关键词来生成对象:
$A_student=new Student;
例如我们要为一个名为$Wing的对象创建实例,并进行赋值,可以使用下面的代码:
$Wing =new Student; //用new关键词来生成对象
$Wing ->Input (“Wing”,”男”,33,95,87);
//分别输入Wing的姓名、性别、学号、英语成绩、数学成绩,其中姓名和性别是字符型变量,所以需要用双引号,其它为数值型变量则不需要。
通过下面这段完整的源代码,我们就可以很清楚的看到类在PHP是怎么被运用的:
<php
class Student
{
var $str_Name;
var $str_Sex;
var $int_Id;
var $int_English;
var $int_maths;
function Input ( $Name, $Sex, $Id, $English, $Maths)
{
$this->str_Name=$Name;
$this->str_Sex =$Sex;
$this->int_Id =$Id;
$this->int_English=$English;
$this->int_Maths=$Maths;
}
function ShowInfo()
{
echo (“姓名:$this->str_Name<br>
”);
echo (“性别:$this->str_Sex <br>
”);
echo (“学号:$this->int_Id <br>
”);
echo (“英语成绩:$this->int_English <br>
”);
echo (“数学成绩:$this->int_Maths <br>
”);
}
}
$Wing = new Student;
$Wing->Input (“Wing”,”男”,33,95,87);
$Paladin = new Student;
$Paladin->Input (“paladin”,”女”,38,58,595);
$Wing->ShowInfo();
$Paladin->ShowInfo();
>
执行结果应是这样的:
姓名:Wing
性别:男
学号:33
英语成绩:95
数学成绩:87
姓名:Paladin
性别:女
学号:38
英语成绩:58
数学成绩:595
PHP现有的版本较以前的版本在对面向对象编程的支持方面有了很大的改善,但支持的还不是很完整,不过现阶段PHP对面向对象编程语言提供的支持不但有利于我们设计程序的结构,对于对程序的维护也能提供很大的帮助。
面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。
面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。
扩展资料面向对象(Object Oriented,OO)是当前计算机界关心的重点,它是90年代软件开发方法的主流。面向对象的概念和应用已超越了程序设计和软件开发,扩展到很宽的范围。如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。面向对象,这方面的文章非常多。但是,明确地给出对象的定义或说明对象的定义的非常少,至少现在还没有发现。起初,“面向对象”是专指在程序设计中采用封装、继承、抽象等设计。
面向过程”(Procedure Oriented)是一种以过程为中心的编程思想。“面向过程”也可称之为“面向记录”编程思想,他们不支持丰富的“面向对象”特性(比如继承、多态),并且它们不允许混合持久化状态和域逻辑。
参考资料
百度百科_面向对象
百度百科_面向过程
一种程序设计范型,同时也是一种程序开发的方法。对象指的是类的实例。它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性。
面向对象程序设计可以看作一种在程序中包含各种独立而又互相调用的对象的思想,这与传统的思想刚好相反:传统的程序设计主张将程序看作一系列函数的集合,或者直接就是一系列对电脑下达的指令。
面向对象程序设计中的每一个对象都应该能够接受数据、处理数据并将数据传达给其它对象,因此它们都可以被看作一个小型的“机器”,即对象。
扩展资料
面向对象程序设计的优点:
1、数据抽象的概念可以在保持外部接口不变的情况下改变内部实现,从而减少甚至避免对外界的干扰。
2、通过继承大幅减少冗余的代码,并可以方便地扩展现有代码,提高编码效率,也减低了出错概率,降低软件维护的难度。
3、结合面向对象分析、面向对象设计,允许将问题域中的对象直接映射到程序中,减少软件开发过程中中间环节的转换过程。
4、通过对对象的辨别、划分可以将软件系统分割为若干相对为独立的部分,在一定程度上更便于控制软件复杂度。
5、以对象为中心的设计可以帮助开发人员从静态(属性)和动态(方法)两个方面把握问题,从而更好地实现系统。
6、通过对象的聚合、联合可以在保证封装与抽象的原则下实现对象在内在结构以及外在功能上的扩充,从而实现对象由低到高的升级。
参考资料来源:百度百科-面向对象程序设计
参考资料来源:百度百科-面向对象的程序设计
对象就是 生活中的具体的东西(如电视机,飞机,哎,世界是物质的啊),类就是(东西)的设计图纸或模板,就是画了个图还没开始生产,定义对象是就开始生产对象(东西)了。封装就是找个东西把代码包起来,不让人看到,这是类该干的活啊,如果想看到的话,请开个偷窥孔,public这家伙不地道啊,保守不认人看,请private,只给亲人看,请protected,呵呵。继承就是先拿亲人,先人的东西,后自己开发,如老子死了,儿子继承了家产,呵呵,这个家产是继承来的,你不用从头干起了,拿这些本钱开始干吧,我靠富二代,管二代,都这么干啊。消息就是通知啊(MFC中消息就是一个整数值,用不同的整数代表不同消息,呵呵,当然你可以自己定义,如1,开火战斗,2,回家吃饭,看到通知是1是你就开始开火战斗,看到通知是2时,你立马就回家吃饭),消息就是通知某人要开始用你的东西了,先要招呼一声吧,函数调用就是这德性啊。多态性,就是动作不一样嘛,如都会飞,飞的姿势不一样。都会思考,思考方法不一样
C语言是面向过程的编程,它的最重要特点是函数,通过主函数来调用一个个子函数。程序运行的顺序都是程序员决定好了的。它是我学的第一种程序语言。
C++是面向对象的编程,类是它的主要特点,程序执行过程中,先由主函数进入,定义一些类,根据需要,执行类的成员函数,过程的概念被淡化了(实际上过程还是有的,就是主函数的那些语句),类就是对象,所以我们称之为面向对象程序设计。 不同点:1编程模型
所有计算机均由两种元素组成:代码和数据精确的说,有些程序是围绕着"什么正在发生"而编写,有些则是围绕"谁正在受影响"而编写的
第一种编程方式叫做"面向过程的模型",按这种模型编写的程序以一系列的线性步骤(代码)为特征,可被理解为作用于数据的代码如 C 等过程化语言
第二种编程方式叫做"面向对象的模型",按这种模型编写的程序围绕着程序的数据(对象)和针对该对象而严格定义的接口来组织程序,它的特点是数据控制代码的访问通过把控制权转移到数据上,面向对象的模型在组织方式上有:抽象,封装,继承和多态的好处
2抽象
面向对象程序设计的基本要素是抽象,程序员通过抽象来管理复杂性
管理抽象的有效方法是使用层次式的分类特性,这种方法允许用户根据物理含义分解一个复杂的系统,把它划分成更容易管理的块例如,一个计算机系统是一个独立的对象而在计算机系统内部由几个子系统组成:显示器,键盘,硬盘驱动器,DVD-ROM,软盘,音响等,这些子系统每个又由专门的部件组成关键是需要使用层次抽象来管理计算机系统(或其他任何复杂系统)的复杂性
面向对象程序设计的本质:这些抽象的对象可以被看作具体的实体,这些实体对用来告诉我们作什么的消息进行响应
/ (我的理解)
计算机是一个实体,我要输入字符,显示器显示出来,那么
计算机(对象)输入(键盘属性)显示(显示方法)
使用分层来引用, *** 作而不用管计算机内部如何处理
只要有计算机对象,它就能响应我的 *** 作,而我敲键盘,
计算机对象就把这个消息传给屏幕,屏幕显示
/
计算机对象包含了它所有的属性,以及 *** 作,这就是面向对象程序设计的三大原则之一:封装
3封装
封装是一种把代码和代码所 *** 作的数据捆绑在一起,使这两者不受外界干扰和误用的机制封装可被理解为一种用做保护的包装器,以防止代码和数据被包装器外部所定义的其他代码任意访问对包装器内部代码与数据的访问通过一个明确定义的接口来控制封装代码的好处是每个人都知道怎样访问代码,进而无需考虑实现细节就能直接使用它,同时不用担心不可预料的副作用
在JAVA中,最基本的封装单元是类,一个类定义着将由一组对象所共享的行为(数据和代码)一个类的每个对象均包含它所定义的结构与行为,这些对象就好象是一个模子铸造出来的所以对象也叫做类的实例
在定义一个类时,需要指定构成该类的代码与数据特别是,类所定义的对象叫做成员变量或实例变量 *** 作数据的代码叫做成员方法方法定义怎样使用成员变量,这意味着类的行为和接口要由 *** 作实例数据的方法来定义
由于类的用途是封装复杂性,所以类的内部有隐藏实现复杂性的机制所以JAVA中提供了私有和公有的访问模式,类的公有接口代表外部的用户应该知道或可以知道的每件东西私有的方法数据只能通过该类的成员代码来访问这就可以确保不会发生不希望的事情
4继承
继承是指一个对象从另一个对象中获得属性的过程是面向对象程序设计的三大原则之二,它支持按层次分类的概念例如,波斯猫是猫的一种,猫又是哺乳动物的一种,哺乳动物又是动物的一种如果不使用层次的概念,每个对象需要明确定义各自的全部特征通过层次分类方式,一个对象只需要在它的类中定义是它成为唯一的 各个属性,然后从父类中继承它的通用属性因此,正是由于继承机制,才使得一个对象可以成为一个通用类的一个特定实例一个深度继承的子类将继承它在类层次中的每个祖先的所有属性
继承与封装可以互相作用如果一个给定的类封装了某些属性,它的任何子类将会含有同样得属性,另加各个子类所有得属性这是面向对象程序在复杂性上呈线性而非几何增长的一个重要概念新的子类继承其所有祖先的所有属性子类和系统中的其他代码不会产生无法预料的交互作用
5多态
多态是指一个方法只能有一个名称,但可以有许多形态,也就是程序中可以定义多个同名的方法,用"一个接口,多个方法"来描述可以通过方法的参数和类型引用
6封装,继承,多态的组合使用
在由封装,继承,多态所组成的环境中,程序员可以编写出比面向过程模型更健壮,更具扩展性的程序经过仔细设计的类层次结构是重用代码的基础封装能让程序员不必修改公有接口的代码即可实现程序的移植多态能使程序员开发出简洁,易懂,易修改的代码例如:汽车
从继承的角度看,驾驶员都依靠继承性来驾驶不同类型(子类)的汽车,无论这辆车是轿车还是卡车,是奔驰牌还是菲亚特牌,驾驶员都能找到方向盘,手刹,换档器经过一段时间驾驶后,都能知道手动档与自动档之间的差别,因为他们实际上都知道这两者的共同超类:传动装置
从封装的角度看,驾驶员总是看到封装好的特性刹车隐藏了许多复杂性,其外观如此简单,用脚就能 *** 作它发动机,手刹,轮胎大小的实现对与刹车类的定义没有影响
从多态的角度看,刹车系统有正锁反锁之分,驾驶员只用脚踩刹车停车,同样的接口可以用来控制若干种不同的实现(正锁或反锁)
这样各个独立的构件才被转换为汽车这个对象的同样,通过使用面向对象的设计原则,程序员可以把一个复杂程序的各个构件组合在一起,形成一个一致,健壮,可维护的程序
以上就是关于面向对象程序设计方法中,对象是什么意思,如何描述一个对象全部的内容,包括:面向对象程序设计方法中,对象是什么意思,如何描述一个对象、《面向对象程序设计》高手进~~~~~~~~~~~~!!、面相对象的概念等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)