简述什么叫做php面向对象编程程

他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)什么是面向对象的程序设计?
什么是面向对象的程序设计?
08-12-20 &
面向对象的程序设计  所谓面向对象的程序设计,就是把面向对象的思想应用到软件工程中,并知道开发维护软件。  对象是由数据和容许的操作组成的封装体,所谓面向对象,就是基于对象的概念,以对象为中心,类和继承为构造机制,认识了解刻画客观世界以及开发出相应的软件系统。  面向对象的程序设计(OOP)并不是刚刚提出来的,主要是由于C++和Java这类语言的传播,OOP最近才显得越来越重要了。为什么面向对象的设计如此流行呢?从理论上讲,用面向对象的语言可以处理任何其他计算机语言所能完成的事情。然而当建立基于智能体的模型时,OOP对于开始的程序员和后来的程序读者都表现出了很大的优势。  面向对象的程序设计特点    1.编程模型   所有计算机均由两种元素组成:代码和数据.精确的说,有些程序是围绕着&什么正在发生&而编写,有些则是围绕&谁正在受影响&而编写的.   第一种编程方式叫做&面向过程的模型&,按这种模型编写的程序以一系列的线性步骤(代码)为特征,可被理解为作用于数据的代码.如 C 等过程化语言.   第二种编程方式叫做&面向对象的模型&,按这种模型编写的程序围绕着程序的数据(对象)和针对该对象而严格定义的接口来组织程序,它的特点是数据控制代码的访问.通过把控制权转移到数据上,面向对象的模型在组织方式上有:抽象,封装,继承和多态的好处.   2.抽象   面向对象程序设计的基本要素是抽象,程序员通过抽象来管理复杂性.   管理抽象的有效方法是使用层次式的分类特性,这种方法允许用户根据物理含义分解一个复杂的系统,把它划分成更容易管理的块.例如,一个计算机系统是一个独立的对象.而在计算机系统内部由几个子系统组成:显示器,键盘,硬盘驱动器,DVD- ROM,软盘,音响等,这些子系统每个又由专门的部件组成.关键是需要使用层次抽象来管理计算机系统(或其他任何复杂系统)的复杂性.   面向对象程序设计的本质:这些抽象的对象可以被看作具体的实体,这些实体对用来告诉我们作什么的消息进行响应.   /* (我的理解)   *计算机是一个实体,我要输入字符,显示器显示出来,那么   *计算机(对象).输入(键盘属性).显示(显示方法)   *使用分层来引用,操作.而不用管计算机内部如何处理.   *只要有计算机对象,它就能响应我的操作,而我敲键盘,   *计算机对象就把这个消息传给屏幕,屏幕显示.   */   计算机对象包含了它所有的属性,以及操作,这就是面向对象程序设计的三大原则之一:封装.   3.封装   封装是一种把代码和代码所操作的数据捆绑在一起,使这两者不受外界干扰和误用的机制.封装可被理解为一种用做保护的包装器,以防止代码和数据被包装器外部所定义的其他代码任意访问.对包装器内部代码与数据的访问通过一个明确定义的接口来控制.封装代码的好处是每个人都知道怎样访问代码,进而无需考虑实现细节就能直接使用它,同时不用担心不可预料的副作用.   在JAVA中,最基本的封装单元是类,一个类定义着将由一组对象所共享的行为(数据和代码).一个类的每个对象均包含它所定义的结构与行为,这些对象就好象是一个模子铸造出来的.所以对象也叫做类的实例.   在定义一个类时,需要指定构成该类的代码与数据.特别是,类所定义的对象叫做成员变量或实例变量.操作数据的代码叫做成员方法.方法定义怎样使用成员变量,这意味着类的行为和接口要由操作实例数据的方法来定义.   由于类的用途是封装复杂性,所以类的内部有隐藏实现复杂性的机制.所以JAVA中提供了私有和公有的访问模式,类的公有接口代表外部的用户应该知道或可以知道的每件东西.私有的方法数据只能通过该类的成员代码来访问.这就可以确保不会发生不希望的事情.   4.继承   继承是指一个对象从另一个对象中获得属性的过程.是面向对象程序设计的三大原则之二,它支持按层次分类的概念.例如,波斯猫是猫的一种,猫又是哺乳动物的一种,哺乳动物又是动物的一种.如果不使用层次的概念,每个对象需要明确定义各自的全部特征. 通过层次分类方式,一个对象只需要在它的类中定义是它成为唯一的各个属性,然后从父类中继承它的通用属性.因此,正是由于继承机制,才使得一个对象可以成为一个通用类的一个特定实例.一个深度继承的子类将继承它在类层次中的每个祖先的所有属性.   继承与封装可以互相作用.如果一个给定的类封装了某些属性,它的任何子类将会含有同样得属性, 另加各个子类所有得属性.这是面向对象程序在复杂性上呈线性而非几何增长的一个重要概念.新的子类继承其所有祖先的所有属性.子类和系统中的其他代码不会产生无法预料的交互作用.   5.多态   多态是指一个方法只能有一个名称,但可以有许多形态,也就是程序中可以定义多个同名的方法,用&一个接口,多个方法&来描述.可以通过方法的参数和类型引用.   6.封装,继承,多态的组合使用   在由封装,继承,多态所组成的环境中,程序员可以编写出比面向过程模型更健壮,更具扩展性的程序.经过仔细设计的类层次结构是重用代码的基础.封装能让程序员不必修改公有接口的代码即可实现程序的移植.多态能使程序员开发出简洁,易懂,易修改的代码.例如:汽车   从继承的角度看,驾驶员都依靠继承性来驾驶不同类型(子类)的汽车,无论这辆车是轿车还是卡车,是奔驰牌还是菲亚特牌,驾驶员都能找到方向盘,手刹,换档器.经过一段时间驾驶后,都能知道手动档与自动档之间的差别,因为他们实际上都知道这两者的共同超类:传动装置.   从封装的角度看,驾驶员总是看到封装好的特性.刹车隐藏了许多复杂性,其外观如此简单,用脚就能操作它.发动机,手刹,轮胎大小的实现对与刹车类的定义没有影响.   从多态的角度看,刹车系统有正锁反锁之分,驾驶员只用脚踩刹车停车,同样的接口可以用来控制若干种不同的实现(正锁或反锁).   这样各个独立的构件才被转换为汽车这个对象的.同样,通过使用面向对象的设计原则,程序员可以把一个复杂程序的各个构件组合在一起,形成一个一致,健壮,可维护的程
请登录后再发表评论!
很好理解,赞
请登录后再发表评论!什么是面向对象编程?_百度知道
什么是面向对象编程?
我有更好的答案
向&对象&编程,对象,一切万物皆为对象,比如说具体的一个人,能不能吃饭,能不能跑,等等,,根对象紧密联系在一起的是&类&quot,很重要的一点就是其中必须要意识到,对象,这个对象有哪些特征呢?又有哪些行为呢?对于特征,它也是一个对象;那就是某一类对象的模型,最重要的一点,就是自己要领悟到,而对象是一个具体的某样东西:能不能走路,轻不是重,有多重,等等到,对于行为.自我感觉,面向对象编程,比如说汽车生产时需要的模型,它是一个抽象体:身高,高还是矮,有多高体重
采纳率:28%
你可以使用面向对象编程、编写容易。说它是一场革命,不是对对象本身而言,而是对它们处理工作的能力而言,而是处理相应的计算机表示,这种计算机表示也称为对象;它是一组属性和有权对这些属性进行操作的一组服务的封装体。对象并不与传统程序设计和编程方法兼容,只是部分面向对象反而会使情形更糟。然而,对于大型项目的开发,你可能想需要在PHP中使用纯的面向对象编程去声明类,而且在你的项目开发只用对象和类。随着项目越来越大。除非整个开发环境都是面向对象的,否则对象产生的好处还没有带来的麻烦多。有人可能会说PHP不是一个真正的面向对象编程的语言, PHP 是一个混合型 语言。 关于对象要从两方面理解:一方面指系统所要处理的现实世界中的对象;另一方面对象是计算机不直接处理的对象,它反映此事物在系统中需要保存的信息和发挥的作用,也可以使用传统的过程化编程,使用面向对象编程可能会有帮助,面向对象编程代码很容易维护,容易理解和重复使用,这些就是软件工程的基础。在基于Web的项目中应用这些概念就成为将来网站成功的关键。
对象(Object)是问题域或实现域中某些事物的一个抽象。简单的来说,一个人就是一个对象它通过给程序中加入扩展语句,把函数“封装”进编程所必需的“对象”中。面向对象的编程语言使得复杂的工作条理清晰
本回答被网友采纳
向对象主要相对与面向过程来说的;万事万物皆对象&.不过,我觉得这只是一种看待的方式,就编程本身而言都是面向对象和面向过程相结合的..... 这是在c++出现之后的一种编程思想,把任意看成是能够操作的对象可以让程序的条理更加清晰,更加容易理解..,它是完全面向对象的,&quot.就语言来说.也就是说,在编程时候把需要任一实现看成是面对对象的操作. 对象便于封装可以操作的东西,给编程提供接口,让他们等到共同协作完成某个工作,即是一种过程,c++ java vb等都提供面向对象的模式,当然java是典型的代表......
一句话, 就是按照自然界事物的存在方式来组织程序.
其他1条回答
为您推荐:
其他类似问题
您可能关注的内容
面向对象编程的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。什么是面向对象编程(OOP)?面向对象编程的特点-js教程-PHP中文网QQ群微信公众号还没有收藏什么是面向对象编程(OOP)?面向对象编程的特点什么是面向对象编程(OOP)?用对象的思想去写代码,就是面向对象编程。面向对象编程的特点抽象:抓住核心问题封装:只能通过对象来访问方法继承:从已有对象上继承出新的对象多态:多对象的不同形态对象的组成属性:对象下面的变量叫做对象的属性方法:对象下面的函数叫做对象的方法var arr = [];
arr.number = 10;
//对象下面的变量:叫做对象的属性//alert( arr.number );//alert( arr.length );arr.test = function(){
//对象下面的函数 : 叫做对象的方法alert(123);
arr.test();//方法arr.push();//方法arr.sort();创建一个对象var obj=new Object();//创建一个空的对象obj.name='小明';
//属性obj.showName=function(){
//方法alert(this.name);//this指向obj }
obj.showName();//小明 如果需要创建两个或多个对象var obj1=new Object();//创建一个空的对象obj1.name='小明';
//属性obj1.showName=function(){
//方法alert(this.name);//this指向obj }
obj1.showName();//小明var obj2=new Object();//创建一个空的对象obj2.name='小灰';
//属性obj2.showName=function(){
//方法alert(this.name);//this指向obj }
obj2.showName();//小灰使用Object函数或对象字面量都可以创建面向对象,但需要创建多个对象时,会产生大量的重复代码,可通过工厂方式来解决这个问题工厂方式
--------------------
面向对象中的封装函数//工厂方式 : 封装函数function createPerson(name){var obj = new Object();
obj.name =
obj.showName = function(){
alert( this.name );
}var p1 = createPerson('小明');
p1.showName();var p2 = createPerson('小强');
p2.showName();创建对象用工厂方式来实现,可以传递参数,由于创建对象都是使用Object的原生构造函数来实现的,因此无法识别对象类型构造函数模式
--------------------
给一个对象添加方法//new 后面调用的函数叫构造函数function CreatePerson(name){this.name=this.showName=function(){
alert(this.name);
}var p1=new CreatePerson('小明');//当new去调用一个函数时,函数中的this就是创建出来的对象而函数中的返回值就是this
p1.showName();var p2=new CreatePerson('小强');
p2.showName();使用自定义的构造函数,定义对象类型的属性和方法,与工厂方式的区别:没有显式的创建对象直接将属性和方法赋给this对象没有return语句上面例子中:CreatePerson构造函数生成的两个对象p1与p2都是CreatePerson的实例虽然构造函数解决了上面工厂方式的问题,但是它一样存在缺点,就是在创建对象时,每个对象都有一套自己的方法,每定义一个函数都实例化了一个对象例如:function CreatePerson(name){
this.name =this.showName = function(){
alert( this.name );
}var p1 = new CreatePerson('小明');//p1.showName();var p2 = new CreatePerson('小强');//p2.showName();alert( p1.showName == p2.showName );
它们的值相同,地址不同测试例子中的p1.showName与p2.showName是否会相等,弹出的结果是false,说明p1和p2实例都包含一个不同的showName实例再来举几个例子:var a = [1,2,3];var b = [1,2,3];
alert( a == b );
值相同,地址不同var a = 5;var b =b += 3
alert(b); //8alert(a); //5
基本类型 : 赋值的时候只是值的复制 var a = [1,2,3];var b =b.push(4);
//[1,2,3,4]alert(a);
//[1,2,3,4]
对象类型 : 赋值不仅是值的复制,而且也是引用的传递var a = [1,2,3];var b =
b = [1,2,3,4];
alert(b); //[1,2,3,4]alert(a); //[1,2,3]对比上面的几个例子,不难看出基本类型和对象类型的区别了,对象类型的赋值不仅是值的复制,也是引用的传递;提到了对象的引用应该很清楚上述p1.showName==p2.showName为何会返回结果是false原型模式(prototype)
--------------------
给一类对象添加方法原型(prototype):重写对象下面公用的属性或方法,让公用的属性或方法在内存中只存在一份(提高性能),也就是说所有在原型对象中创建的属性或方法都直接被所有对象实例共享。原型:类比css中的class普通方法:类比css中的stylevar arr = [1,2,3,4,5];var arr2 = [2,2,2,2,2];
Array.prototype.sum = function(){//原型prototype : 要写在构造函数的下面var result = 0;for(var i=0;i&this.i++){
result += this[i];
alert( arr.sum() );
//15alert( arr2.sum() );
//10原型优先级:如果在实例中添加了一个属性,而该属性与实例原型中的一个属性同名,该属性将会屏蔽原型中的那个属性例子1:var arr = [];
arr.number = 10;
Array.prototype.number = 20;
alert(arr.number);//10例子2:Array.prototype.a=12;//原型属性var arr=[1,2,3];
alert(arr.a);//12arr.a=5;//实例属性alert(arr.a);//5工厂方式之原型function CreatePerson(name){//普通方法this.name=
CreatePerson.prototype.showName=function(){//原型alert(this.name);
}var p1=new CreatePerson('小明');
p1.showName();var p2=new CreatePerson('小强');
p2.showName();
alert( p1.showName== p2.showName);//true由上述例子中:p1.showName== p2.showName弹出的结果是true,可见原型解决了构造函数中“每定义一个函数都实例化了一个对象”的问题原型的运用选项卡实例:&!DOCTYPE html&&html&&head lang=&en&&&meta charset=&UTF-8&&&title&选项卡&/title&&style&#p1 p{width:400height:300border:1px solid #overflow:display:margin: 15px 0;}#p1 input{color: #width:100height:40background:border:font-size: 14letter-spacing: 5}#p1 p{font-size: 20line-height: 24text-align:color:}#p1 .title{padding: 0;font-weight:}#p1 .active{background:color:#}&/style&&script&window.onload=function(){var oDiv=document.getElementById('p1');var aInput=oDiv.getElementsByTagName('input');var aDiv=oDiv.getElementsByTagName('p');var i=0;for(i=0;i&aInput.i++){
aInput[i].index=i;
aInput[i].onmousemove=function(){for(var i=0;i&aInput.i++){
aInput[i].className='';
aDiv[i].style.display='none';
aInput[this.index].className='active';
aDiv[this.index].style.display='block';
}&/script&&/head&&body&&p id=&p1&&&input class=&active& type=&button& value=&五言律诗&&&input type=&button& value=&七言律诗&&&input type=&button& value=&五言绝句&&&input type=&button& value=&七言绝句&&&p style=&display:&&&p class=&title&&落 花&/p&&p class=&author&&李商隐&/p&&p&高阁客竟去,小园花乱飞。&/p&&p&参差连曲陌,迢递送斜晖。&/p&&p&肠断未忍扫,眼穿仍欲归。&/p&&p&芳心向春尽,所得是沾衣。&/p&&/p&&p&&p class=&title&&蜀 相&/p&&p class=&author&&杜甫&/p&&p&丞相祠堂何处寻,锦官城外柏森森。&/p&&p&映阶碧草自春色,隔叶黄鹂空好音。&/p&&p&三顾频烦天下计,两朝开济老臣心。&/p&&p&出师未捷身先死,长使英雄泪满襟。&/p&&/p&&p&&p class=&title&&八阵图&/p&&p class=&author&&杜甫&/p&&p&功盖三分国,名成八阵图。&/p&&p&江流石不转,遗恨失吞吴。&/p&&/p&&p&&p class=&title&&泊秦淮&/p&&p class=&author&&杜牧&/p&&p&烟笼寒水月笼沙,夜泊秦淮近酒家。&/p&&p&商女不知亡国恨,隔江犹唱后庭花。&/p&&/p&&/p&&/body&&/html&效果(鼠标经过按钮时选项卡切换): 面向对象选项卡:&!DOCTYPE html&&html&&head lang=&en&&&meta charset=&UTF-8&&&title&选项卡&/title&&style&#p1 p,#p2 p{width:400height:300border:1px solid #overflow:display:margin: 15px 0;}#p1 input,#p2 input{color: #width:100height:40background:border:font-size: 14letter-spacing: 5}#p1 p,#p2 p{font-size: 20line-height: 24text-align:color:}#p1 .title,#p2 .title{padding: 0;font-weight:}#p1 .active,#p2 .active{background:color:#}&/style&&script&window.onload=function(){var t1=new TabSwitch('p1');
t1.switch();
var t2=new TabSwitch('p2');//面向对象的复用性
t2.switch();
t2.autoPlay();/*alert(t2.switch==t1.switch);//ture*/}function TabSwitch(id){this.oDiv=document.getElementById(id);this.aInput=this.oDiv.getElementsByTagName('input');this.aDiv=this.oDiv.getElementsByTagName('p');this.iNow=0;//自定义属性}
TabSwitch.prototype.switch=function(){//原型for(var i=0;i&this.aInput.i++){var This=//将指向面向对象的this保存下来this.aInput[i].index=i;this.aInput[i].onmousemove=function(){
This.tab(this);//This指向面向对象
this指向this.aInput[i]
TabSwitch.prototype.tab=function(obj){//原型for(var i=0;i&this.aInput.i++){this.aInput[i].className='';this.aDiv[i].style.display='none';
}this.aInput[obj.index].className='active';this.aDiv[obj.index].style.display='block';
}//自动播放
TabSwitch.prototype.autoPlay=function(){var This=
setInterval(function(){if(This.iNow==This.aInput.length-1){
This.iNow=0;
This.iNow++;
}for(var i=0;i&This.aInput.i++){
This.aInput[i].className='';
This.aDiv[i].style.display='none';
This.aInput[This.iNow].className='active';
This.aDiv[This.iNow].style.display='block';
}&/script&&/head&&body&&p id=&p1&&&input class=&active& type=&button& value=&五言律诗&&&input type=&button& value=&七言律诗&&&input type=&button& value=&五言绝句&&&input type=&button& value=&七言绝句&&&p style=&display:&&&p class=&title&&落 花&/p&&p class=&author&&李商隐&/p&&p&高阁客竟去,小园花乱飞。&/p&&p&参差连曲陌,迢递送斜晖。&/p&&p&肠断未忍扫,眼穿仍欲归。&/p&&p&芳心向春尽,所得是沾衣。&/p&&/p&&p&&p class=&title&&蜀 相&/p&&p class=&author&&杜甫&/p&&p&丞相祠堂何处寻,锦官城外柏森森。&/p&&p&映阶碧草自春色,隔叶黄鹂空好音。&/p&&p&三顾频烦天下计,两朝开济老臣心。&/p&&p&出师未捷身先死,长使英雄泪满襟。&/p&&/p&&p&&p class=&title&&八阵图&/p&&p class=&author&&杜甫&/p&&p&功盖三分国,名成八阵图。&/p&&p&江流石不转,遗恨失吞吴。&/p&&/p&&p&&p class=&title&&泊秦淮&/p&&p class=&author&&杜牧&/p&&p&烟笼寒水月笼沙,夜泊秦淮近酒家。&/p&&p&商女不知亡国恨,隔江犹唱后庭花。&/p&&/p&&/p&&p id=&p2&&&input class=&active& type=&button& value=&五言律诗&&&input type=&button& value=&七言律诗&&&input type=&button& value=&五言绝句&&&input type=&button& value=&七言绝句&&&p style=&display:&&&p class=&title&&落 花&/p&&p class=&author&&李商隐&/p&&p&高阁客竟去,小园花乱飞。&/p&&p&参差连曲陌,迢递送斜晖。&/p&&p&肠断未忍扫,眼穿仍欲归。&/p&&p&芳心向春尽,所得是沾衣。&/p&&/p&&p&&p class=&title&&蜀 相&/p&&p class=&author&&杜甫&/p&&p&丞相祠堂何处寻,锦官城外柏森森。&/p&&p&映阶碧草自春色,隔叶黄鹂空好音。&/p&&p&三顾频烦天下计,两朝开济老臣心。&/p&&p&出师未捷身先死,长使英雄泪满襟。&/p&&/p&&p&&p class=&title&&八阵图&/p&&p class=&author&&杜甫&/p&&p&功盖三分国,名成八阵图。&/p&&p&江流石不转,遗恨失吞吴。&/p&&/p&&p&&p class=&title&&泊秦淮&/p&&p class=&author&&杜牧&/p&&p&烟笼寒水月笼沙,夜泊秦淮近酒家。&/p&&p&商女不知亡国恨,隔江犹唱后庭花。&/p&&/p&&/p&&/body&&/html&效果(第二个选项卡加了一个自动切换功能): 面向对象中this的问题一般会出现问题的情况有两种:定时器事件例子1://定时器function Aaa(){
var _this=//将当前this值保存this.a=12;
setInterval(function(){//定时器中this指向window
_this.show();
Aaa.prototype.show=function(){
alert(this.a);
}var obj=new Aaa();//12例子2:&!DOCTYPE html&&html&&head lang=&en&&&meta charset=&UTF-8&&&title&面向对象中this的问题-----事件&/title&&script&function Bbb(){var _this=this.b=5;
document.getElementById('btn1').onclick=function(){//点击事件
_this.show();
Bbb.prototype.show=function(){ alert(this.b); } window.onload=function(){var p2=new Bbb();
}&/script&&/head&&body&&input id=&btn1& type=&button& value=&按钮&&&/body&&/html&上面两个是分别对定时器和事件中this问题的解决方法,即将指向对象的this保存到了_this中,在嵌套函数中调用对象的方法或属性时用
_this.属性 或
_this.方法再来个实例:拖拽效果:&!DOCTYPE html&&html&&head lang=&en&&&meta charset=&UTF-8&&&title&最初写的拖拽效果&/title&
height:100
background:
&/style&&script&window.onload=function(){var oDiv=document.getElementById('p1');
oDiv.onmousedown=function(ev){var oEvent=ev||var disX=0;var disY=0;var disX=oEvent.clientX-oDiv.offsetLvar disY=oEvent.clientY-oDiv.offsetT
document.onmousemove=function(ev){var oEvent=ev||
oDiv.style.left=oEvent.clientX-disX+'px';
oDiv.style.top=oEvent.clientY-disY+'px';
document.onmouseup=function(){
document.onmousemove=
document.onmouseup=
}&/script&&/head&&body&&p id=&p1&&&/p&&/body&&/html&面向对象的拖拽&!DOCTYPE html&&html&&head lang=&en&&&meta charset=&UTF-8&&&title&面向对象写的拖拽效果&/title&&style&#p1{width:100height:100background:position:}&/style&&script&window.onload=function(){var p=new Darg('p1');
}function Darg(id){this.oDiv=document.getElementById(id); //属性this.disX=0;//属性this.disY=0;//属性}
Darg.prototype.init=function(){//原型
方法var This=this.oDiv.onmousedown=function(ev){var oEvent=ev||
This.fnDown(oEvent);
Darg.prototype.fnDown=function(ev){//原型
方法var This=this.disX=ev.clientX-this.oDiv.offsetLthis.disY=ev.clientY-this.oDiv.offsetT
document.onmousemove=function(ev){var oEvent=ev||
This.fnMove(oEvent);
document.onmouseup=function(){
This.fnUp();
Darg.prototype.fnMove=function(ev){//原型this.oDiv.style.left=ev.clientX-this.disX+'px';this.oDiv.style.top=ev.clientY-this.disY+'px';
Darg.prototype.fnUp=function(){//原型
document.onmousemove=
document.onmouseup=
}&/script&&/head&&body&&p id=&p1&&&/p&&/body&&/html&以上就是什么是面向对象编程(OOP)?面向对象编程的特点的详细内容,更多请关注php中文网其它相关文章!共3篇638点赞收藏分享:.php.cn&猜你喜欢PHP中文网:独家原创,永久免费的在线,php技术学习阵地!
All Rights Reserved | 皖B2-QQ群:关注微信公众号什么是面向对象编程
我们不妨用实际的程序来做个对比,如,编写一个程序,计算+,-,*,/,的值并显示出来。先用C实现一下,以下程序纯属手打,不保证完全正确,这里只用来比较。int main()
scanf("%d %d", &a, &b);
printf("%d + %d = %d", a, b, a+b);
printf("%d - %d = %d", a, b, a-b);
printf("%d * %d = %d", a, b, a*b);
printf("%d / %d = %d", a, b, a/b);
}我们用面向对象的程序实现下,如C#,我们先分析,要对两个数的做操作并输出结果,设计一个计算对象类,如:class CalcObject
public int a{}
public int b{}
public char operator{}
public int calc(){
switch(operator){
return a+b;
return a-b;
return a*b;
return a/b;
}那么楼主如果不熟悉C#的话,我在用JAVA写一遍~class CalcObject
//...省略getter setter
public int calc(){
switch(operator){
return a+b;
return a-b;
return a*b;
return a/b;
}楼主可能要问了,这Ta Niang的比我过程话的程序设计写了多少代码,看看看看~~且不急,听我慢慢道来~~这时~~领导来了,说那个谁谁~~给我改下这个程序,要实现幂运算,一会又说,要实现求余运算,一会又说,要...这时,原本简洁的C语言代码看起来臃肿不堪,而面向对象的程序,只是加了一句case语句实现了扩展。这时,需求又变了,说我们不仅要实现int类型的数据运算,还要实现double,float,long,....,这时,写C语言代码的程序猿已经怒了~~而对于面向对象的程序,只是加了一个泛型支持,就OK了总之,面向对象的程序语言一般有三大特点,封装、继承,多态,使用这三大特点,可以大大的解放我们程序员,使得我们的工作效率和质量大大提到,所以,一生中,至少学习一门面向对象的语言,是非常有必要的~~在此,我推荐JAVA,
你还没有登录,请先登录或注册慕课网帐号
问你一个问题。把大象装进冰箱,你会怎么做呢。把冰箱打开
2.把大象装进去 3.关闭冰箱
这是面向过程。
1. 要有个冰箱
2.要有个大象
3.把大象放进冰箱完事
这是面向对象
冰箱和大象就是对象。
你还没有登录,请先登录或注册慕课网帐号
大大的萨达撒大所多撒
你还没有登录,请先登录或注册慕课网帐号
简单易懂的一句话,万物皆对象
你还没有登录,请先登录或注册慕课网帐号
http://www.imooc.com/wenda/detail/345300
你还没有登录,请先登录或注册慕课网帐号
面向对象是一种编程思维,就是把程序语言的逻辑思维抽象到现实对象中来处理问题。比如一个人就是一个对象,眼,手,鼻,耳,等就是属性。呼吸,吃饭,声音就是他的会的方法。
你还没有登录,请先登录或注册慕课网帐号
面向对象就是用一个实体来比喻我们的程序,比如,狗,它有属性:身高,长短.它有方法:能跑,能吃,还有看家的本领,这些就可以比喻我们的程序。程序有什么属性,属性就是特点,它有什么,而方法就是做什么,这就是面向对象
你还没有登录,请先登录或注册慕课网帐号
面向对象是一种思想
你还没有登录,请先登录或注册慕课网帐号
可以去问一问东方网景公司
你还没有登录,请先登录或注册慕课网帐号
不恰当的比喻,就像活字印刷术。
你还没有登录,请先登录或注册慕课网帐号
道友请百度
你还没有登录,请先登录或注册慕课网帐号
你可以把人家的东西实例化,自己闲了包装下搞个程序卖掉,就像你可以处很多对象,相中了是自己伴,生的孩儿有你们的特点,怎么构成的链条结构(DNA)不用管,只要明确怎么引导你孩,怎么做,借古通今,搞搞事情走向巅峰,对象是这个理扯远了 请笑纳
你还没有登录,请先登录或注册慕课网帐号
封装,继承,多态
你还没有登录,请先登录或注册慕课网帐号
就是拿着电脑坐在你对象的对面写代码。
你还没有登录,请先登录或注册慕课网帐号
75565人关注
Copyright (C) 2018 imooc.com All Rights Reserved | 京ICP备 号-11

我要回帖

更多关于 什么事面向对象编程 的文章

 

随机推荐