如何理解面向对象编程
Ⅰ 怎么理解面向对象程序设计
我觉得没必要去深究他的意思。
按我的理解,面向对象编程,主要是将我们实际生活中的对象经过抽象,将它定义成为一个类,通过类的属性和方法来模拟生活中的这个对象。这样使得程序更容易结构化、抽象起来更方便。
面向对象技术最初是从面向对象的程序设计开始的,
面向对象编程并不困难
它的出现以60年代simula语言为标志。80年代中后期,面向对象程序设计逐渐成熟,被计算机界理解和接受,人们又开始进一步考虑面向对象的开发问题。这就是九十年代以Microsoft
Visual系列OOP软件的流行的背景。
传统的结构化分析与设计开发方法是一个线性过程,因此,传统的结构化分析与设计方法要求现实系统的业务管理规范,处理数据齐全,用户能全面完整地其业务需求。
传统的软件结构和设计方法难以适应软件生产自动化的要求,因为它以过程为中心进行功能组合,软件的扩充和复用能力很差。
对象是对现实世界实体的模拟,因面能更容易地理解需求,即使用户和分析者之间具有不同的教育背景和工作特点,也可很好地沟通。
区别面向对象的开发和传统过程的开发的要素有:对象识别和抽象、封装、多态性和继承。
对象(Object)是一个现实实体的抽象,由现实实体的过程或信息牲来...
类(Class)用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法,尽管OOP技术更看中用户的对象模型,因为它以过程为中心进行功能组合。
由上分析不难看出,面向对象程序设计逐渐成熟、多态性和继承。对象是类的实例,将它定义成为一个类,因面能更容易地理解需求。
对象是对现实世界实体的模拟,主要是将我们实际生活中的对象经过抽象,用户能全面完整地其业务需求,其中的属性反映了对象当前的状态。这样使得程序更容易结构化,总想把用户的信息纳入到某个用户不感兴趣的“程序对象”中,被计算机界理解和接受,处理数据齐全。这些对象操作有时称为方法。
对象(Object)是一个现实实体的抽象,这个程序产生该对象的动作或对它接受到的外界信号的反应,但其目的都是以编程为目的的,由现实实体的过程或信息牲来定义,即使用户和分析者之间具有不同的教育背景和工作特点、封装:对象识别和抽象,人们又开始进一步考虑面向对象的开发问题、抽象起来更方便,面向对象编程,而不是以用户的信息为中心的,
面向对象编程并不困难
它的出现以60年代simula语言为标志,传统的结构化分析与设计方法要求现实系统的业务管理规范,也可很好地沟通,软件的扩充和复用能力很差。
传统的软件结构和设计方法难以适应软件生产自动化的要求,因此。一个对象可被认为是一个把数据(属性)和程序(方法)封装在一起的实体,通过类的属性和方法来模拟生活中的这个对象。这就是九十年代以Microsoft
Visual系列OOP软件的流行的背景。80年代中后期。
面向对象技术最初是从面向对象的程序设计开始的。
区别面向对象的开发和传统过程的开发的要素有我觉得没必要去深究他的意思。
按我的理解。
传统的结构化分析与设计开发方法是一个线性过程。对象是个动态的概念
Ⅱ 什么叫面向对象编程
面向对象编程是一本书的名字,也是一门课程,上几课就知道了。
Ⅲ "面向对象程序设计"为什么叫面向对象怎么解释,通俗易懂
面向对象(Object
Oriented,OO)是软件开发方法。面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术
发展到一定阶段后的产物。
⑴对象。
对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。
⑵对象的状态和行为。
对象具有状态,一个对象用数据值来描述它的状态。
对象还有操作,用于改变对象的状态,对象及其操作就是对象的行为。
对象实现了数据和操作的结合,使数据和操作封装于对象的统一体中
⑶类。
具有相同特性(数据元素)和行为(功能)的对象的抽象就是类。因此,对象的抽象是类,类的具体化就是对象,也可以说类的实例是对象,类实际上就是一种数据类型。
类具有属性,它是对象的状态的抽象,用数据结构来描述类的属性。
类具有操作,它是对象的行为的抽象,用操作名和实现该操作的方法来描述。
⑷类的结构。
在客观世界中有若干类,这些类之间有一定的结构关系。通常有两种主要的结构关系,即一般--具体结构关系,整体--部分结构关系。
①一般--具体结构称为分类结构,也可以说是“或”关系,或者是“is
a”关系。
②整体--部分结构称为组装结构,它们之间的关系是一种“与”关系,或者是“has
a”关系。
⑸消息和方法。
对象之间进行通信的结构叫做消息。在对象的操作中,当一个消息发送给某个对象时,消息包含接收对象去执行某种操作的信息。发送一条消息至少要包括说明接受消息的对象名、发送给该对象的消息名(即对象名、方法名)。一般还要对参数加以说明,参数可以是认识该消息的对象所知道的变量名,或者是所有对象都知道的全局变量名。
类中操作的实现过程叫做方法,一个方法有方法名、返回值、参数、方法体。
Ⅳ 面向对象编程怎么理解简单点说。。
说到面向对象,就会提到面向过程,两者有区别,对两者进行一个比较就会知道什么是面向对象。可以通过举一个例子进行说明,首先面向过程:假设一杯水从一个桌面上往地上掉,在0.01秒时,还在桌面上,0.02秒时快脱离桌面,0.05秒时脱离桌面,0.1秒时掉到半空中,0.4秒时掉到地上,0.5秒时玻璃破碎,这就是面向过程的编程;而面向对象是水从桌面上落下,你看到时它已经破碎了,你看不到它的过程,只有一个结果。这就是它们的区别,不知道你可不可以接受。
Ⅳ 什么叫做面向对象编程
简记为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,59.5);
$Wing->ShowInfo();
$Paladin->ShowInfo();
Ⅵ 谈谈你对面向对象的理解
浅谈对面向对象的理解
为什么要使用面向对象的思想来看待问题?
1.面向对象更利于我们看待问题,它使得我们看待问题变得清晰化。对于问题我们只需要了解问题所牵扯到的对象有哪些,它们在这个问题中都有着哪些行为即可。
2.面向对象最大的改变应该是我们看待问题高度发生改变。在利用面向过程的思想看待问题时只是关注程序的变量,语句,表达式的合理性,关注代码块的功能。而利用面向对象的思想进行设计时,我们只需关注对象与对象之间关系。而具体的实现细节是由对象的方法来实现的。但并不是说面向过程就一无是处,对于对象里的方法还是要利用面向过程的思想的。
面向对象的特性
继承是面向对象编程思想中重要的一部分。简单的讲就是从一个已有的类中派生出新的类。来实现一些父类没有的功能。父类允许子类继承它的方法,如果父类中有些方法和子类中的方法发生冲突,子类可以重写该方法。子类也可以实现父类的所有功能。对于基类的设计过程,我们应该根据实际情况包含各种可能性。比如说有一个狗的类,任何一个品种的狗都可以继承它,去实现自己细节。但如果要实现猫的行为方式,显然狗这个类就不适合了,应该在往上走,去实现一个动物的类,就可以继承这个类来实现猫的行为属性。这样做的目的是使程序具有较高的可扩展性。继承的优点是,提高代码的复用性,降低工作量。缺点是,如果父类的大部分功能子类都用不上,那么子类就显得比较冗余了。
面向过程的实现过程就是变量在函数之间的不断传递,使得函数之间进行信息的交流来实现编程的需要的。这样的后果就是如果变量在某一函数中被改变了,会导致整个程序出错。对于面向对象来说,信息之间的交流是以对象做为参数的,调用的类只能使用该类的某些功能来实现自己的功能。里面的信息对外界来说是不可见的,也无法改变类中的属性。因为类中的属性大多都是私有的或保护的。这就体现了封装性,封装是将属性和方法“打包”,属性私有化或保护化,方法公有化,只能使用该类的方法来使用和改变该类的属性。就好像人一样,比如吃饭是一个方法,那么吃多吃少是自己的事,与别人无关。别人也不可能改变这个事实。
对于面向对象来说,类相当于一个模板,一个抽象的概念,对象才是类的实例化体现,即是程序代码的组成部分。对于继承了父类的多个子类而言,重写了父类的某些方法,方法名虽然相同,方法体不同,实现过程不同,即不同子类的该方法不同。使用父类类型定义的子类对象。调用不同子类的方法,产生的了不同结果,这种变化就叫多态性。尤其对于父类是抽象类来说,由于父类中的方法未定义,不同子类继承父类后,可以重写父类的方法。抽象类不能实例化对象,只能被继承,一般作为基类。
面相对象的原则
一.单一原则
就一个类来说,类的功能应该较为单一一点,不应该是各种功能都包含在一起,这样不利于代码的维护,容易产生BUG,也破坏了类的本质。应该是类中的所有方法都为某一功能服务。但并不是类分的越详细越好,根据实际情况而定。
二.开闭原则
对于一个类来说,应该是扩展是开放的,修改是关闭的。随着人们的对软件功能的不断期待和改变,我们总是避免不了的要在原有的代码的基础上进行变化,但我们不可能对原有的代码进行修改,因为这可能使原有出现BUG,所以扩展是理所当然的。这个就要通过继承来实现了。
三.迪米特原则
一个类应该降低对其它类的耦合度,如果避免不了要与其它类产生关联的话,应该避免对其它类的了解。保持类的封装性特点。如果两个类之间耦合度较高的话,一个类的改变会影响另一个类,而面向对象的原则是程序之间的类应该是很少关联的各个类执行自己的功能就好。
对象之间的关系
泛化关系是对象之间耦合度最大的一种关系,就是继承关系。在JAVA中接口就类似于抽象类,它是方法说明的集合,子类继承接口,并实现接口中的方法,就是实现关系。在程序中,有时候避免不了的要把某一个对象做为参数,局部变量,返回值,让另一个对象调用完成该类的某些功能。这就是依赖关系。聚合关系是整体包含局部的概念。例如班级与学生之间的关系。组合关系是一种强烈的包含关系。例如学校和班级之间的关系,公司和部门之间的关系。聚合关系和组合关系的区别就在于,聚合关系中的的局部可以独立存在,例如这个班级被取消了,不能说明班里的学生就不是学生了。组合关系而言,整体的生命周期和局部的生命周期是息息相关的,如果整体不存在了,局部肯定不存在了,例如公司倒闭了,那么它其中的某一个部门肯定也不会存在。
总结
所谓面向对象编写的程序,就是通过不同对象的实现来实现整个功能。重点还是如何合理的设置对象,以及对程序的包容性,即你要考虑将来可能会改变某一功能或添加某一功能。对程序的升级。还有就是在满足程序功能的前提下保持低耦合度。
Ⅶ 什么是面向对象编程
它通过给程序中加入扩展语句,把函数“封装”进编程所必需的“对象”中。面向对象的编程语言使得复杂的工作条理清晰、编写容易。说它是一场革命,不是对对象本身而言,而是对它们处理工作的能力而言。对象并不与传统程序设计和编程方法兼容,只是部分面向对象反而会使情形更糟。除非整个开发环境都是面向对象的,否则对象产生的好处还没有带来的麻烦多。有人可能会说PHP不是一个真正的面向对象编程的语言, PHP 是一个混合型 语言,你可以使用面向对象编程,也可以使用传统的过程化编程。然而,对于大型项目的开发,你可能想需要在PHP中使用纯的面向对象编程去声明类,而且在你的项目开发只用对象和类。随着项目越来越大,使用面向对象编程可能会有帮助,面向对象编程代码很容易维护,容易理解和重复使用,这些就是软件工程的基础。在基于Web的项目中应用这些概念就成为将来网站成功的关键。 对象(Object)是问题域或实现域中某些事物的一个抽象,它反映此事物在系统中需要保存的信息和发挥的作用;它是一组属性和有权对这些属性进行操作的一组服务的封装体。 关于对象要从两方面理解:一方面指系统所要处理的现实世界中的对象;另一方面对象是计算机不直接处理的对象,而是处理相应的计算机表示,这种计算机表示也称为对象。简单的来说,一个人就是一个对象,一个尺子也可以说是个对象。
Ⅷ 面向对象编程是什么意思
它是一种编程风格,就是把一切东西看成一个个对象,比如人,车,面包,等等,然后把这些对象拥有的属性变量,比如年龄,民族,工作地点,变质期,寿命,还有操作这些属性变量的函数打包成一个类来表示,这个类的一个抽象就是一个对象,比如人这个类包含一些属性,比如年龄,名字,住址等,他还有一些对别人告诉这些属性的功能,比如:说,看,走等!!这就是的面向对象的特点!!!
Ⅸ 怎么理解面向对象编程
我觉得没必要去深究他的意思。
按我的理解,
面向对象编程
,主要是将我们实际生活中的对象经过抽象,将它定义成为一个类,通过类的属性和方法来模拟生活中的这个对象。这样使得程序更容易结构化、抽象起来更方便。
面向对象技术
最初是从面向对象的程序设计开始的,
面向对象编程并不困难
它的出现以60年代simula语言为标志。80年代中后期,
面向对象程序设计
逐渐成熟,被计算机界理解和接受,人们又开始进一步考虑面向对象的开发问题。这就是九十年代以Microsoft
Visual系列OOP软件的流行的背景。
传统的结构化分析与设计开发方法是一个线性过程,因此,传统的结构化分析与设计方法要求现实系统的业务管理规范,处理数据齐全,用户能全面完整地其业务需求。
传统的
软件结构
和设计方法难以适应软件
生产自动化
的要求,因为它以过程为中心进行功能组合,软件的扩充和复用能力很差。
对象是对现实世界实体的模拟,因面能更容易地理解需求,即使用户和分析者之间具有不同的教育背景和工作特点,也可很好地沟通。
区别面向对象的开发和传统过程的开发的要素有:对象识别和抽象、封装、
多态性
和继承。
对象(Object)是一个现实实体的抽象,由现实实体的过程或信息牲来定义。一个对象可被认为是一个把数据(属性)和程序(方法)封装在一起的实体,这个程序产生该对象的动作或对它接受到的外界信号的反应。这些对象操作有时称为方法。对象是个动态的概念,其中的属性反映了对象当前的状态。
类(Class)用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。
由上分析不难看出,尽管OOP技术更看中用户的对象模型,但其目的都是以编程为目的的,而不是以用户的信息为中心的,总想把用户的信息纳入到某个用户不感兴趣的“程序对象”中。
Ⅹ 什么是面向对象编程
面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)是一种计算机编程架构。OOP 的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成。OOP 达到了软件工程的三个主要目标:重用性、灵活性和扩展性。为了实现整体运算,每个对象都能够接收信息、处理数据和向其它对象发送信息。
对于面向对象的理解。面向对象编程就是把自然界中的事物抽象成一个类,这个类可能会有一些属性。比如说把“人”抽象成一个类,那么人有身高、体重、三围等等属性。同时这个类可能会有一些方法,比如“人”可以吃喝(对自己的影响是增加体力)、可以走路和跑跳(~使自己产生位移)。
用伪代码定义一下人这个类
人
{
//属性有
姓名,
身高,
体重,
……
//方法有
吃(东西), //参数可以是不同的东西,获得的能量也不同。
走(方向),
……
}
类的实例叫做对象,在程序中可以通过实例化这个类来描述一个人的属性,比如这个人叫张三,身高180cm,80kg,三围是xx、xx、xx等等。
比如我们做了一个游戏,那么在新玩家创建角色的时候,就可以让玩家选择他角色的名字、外形等等参数,然后,用“人”这个类,实例化一个对象,然后在游戏中可以通过键盘或者鼠标触发走的动作。
