js面向对象编程的好处

1.什么是面向对象编程,它有哪些好处

面向对象编程(object oriented programming,oop,面向对象程序设计)是一种计算机编程架构。oop 的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成。oop 达到了软件工程的三个主要目标:重用性、灵活性和扩展性。为了实现整体运算,每个对象都能够接收信息、处理数据和向其它对象发送信息。

对于面向对象的理解。面向对象编程就是把自然界中的事物抽象成一个类,这个类可能会有一些属性。比如说把“人”抽象成一个类,那么人有身高、体重、三围等等属性。同时这个类可能会有一些方法,比如“人”可以吃喝(对自己的影响是增加体力)、可以走路和跑跳(~使自己产生位移)。

用伪代码定义一下人这个类

{

//属性有

姓名,

身高,

体重,

……

//方法有

吃(东西), //参数可以是不同的东西,获得的能量也不同。

走(方向),

……

}

类的实例叫做对象,在程序中可以通过实例化这个类来描述一个人的属性,比如这个人叫张三,身高180cm,80kg,三围是xx、xx、xx等等。

比如我们做了一个游戏,那么在新玩家创建角色的时候,就可以让玩家选择他角色的名字、外形等等参数,然后,用“人”这个类,实例化一个对象,然后在游戏中可以通过键盘或者鼠标触发走的动作。

2.面向对象程序设计的优点是什么?

1、维护简单

面向对象程序设计的一个特征就是模块化。实体可以被表示为类以及同一名字空间中具有相同功能的类,可以在名字空间中添加一个类而不影响该名字空间的其他成员。这种特征为程序的维护提供了便捷性。

2、可扩充性

如果有一个具有某一种功能的类,就可以扩充这个类,创建一个具有扩充功能的类。

3、代码重用

功能是被封装在类中的,类是作为一个独立实体而存在的,因此可以很简单的提供类库,使代码得以重复使用。

扩展资料

面向对象程序设计(Object Oriented Programming)作为一种新方法,其本质是以建立模型体现出来的抽象思维过程和面向对象的方法。模型是用来反映现实世界中事物特征的。任何一个模型都不可能反映客观事物的一切具体特征,只能对事物特征和变化规律的一种抽象,且在它所涉及的范围内更普遍、更集中、更深刻地描述客体的特征。通过建立模型而达到的抽象是人们对客体认识的深化。

3.面向对象编程的重要性在哪

基本特征就是它的重要性

1.抽象:

抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有

关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。比如,我们要设计一个学生成绩管理系统,考察学生这个对象时,我们只关

心他的班级、学号、成绩等,而不用去关心他的身高、体重这些信息。抽象包括两个方面,一是过程抽象,二是数据抽象。过程抽象是指任何一个明确定义功能的操

作都可被使用者看作单个的实体看待,尽管这个操作实际上可能由一系列更低级的操作来完成。数据抽象定义了数据类型和施加于该类型对象上的操作,并限定了对

象的值只能通过使用这些操作修改和观察。

2.继承: 继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性

的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类

(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。这也体现了大自然中一般与特殊的关系。继承

性很好的解决了软件的可重用性问题。比如说,所有的Windows应用程序都有一个窗口,它们可以看作都是从一个窗口类派生出来的。但是有的应用程序用于

文字处理,有的应用程序用于绘图,这是由于派生出了不同的子类,各个子类添加了不同的特性。

3.封装:

封装是面向对

象的特征之一,是对象和类概念的主要特性。封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可

以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。一旦定义了一个对象的特性,则有必要决定这些特性的可见性,即哪些特

性对外部世界是可见的,哪些特性用于表示内部状态。在这个阶段定义对象的接口。通常,应禁止直接访问一个对象的实际表示,而应通过操作接口访问对象,这称

为信息隐藏。事实上,信息隐藏是用户对封装性的认识,封装则为信息隐藏提供支持。封装保证了模块具有较好的独立性,使得程序维护修改较为容易。对应用程序

的修改仅限于类的内部,因而可以将应用程序修改带来的影响减少到最低限度。

4. 多态性:

多态性是指允许不同类的对

象对同一消息作出响应。比如同样的加法,把两个时间加在一起和把两个整数加在一起肯定完全不同。又比如,同样的选择编辑-粘贴操作,在字处理程序和绘图程

序中有不同的效果。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。

面向对象程序设计具有许多优点:

1、开发时间短,效率高,可靠性高,所开发的程序更强壮。由于面向对象编程的可重用性,可以在应用程序中大量采用成熟的类库,从而缩短了开发时间。

2、应用程序更易于维护、更新和升级。继承和封装使得应用程序的修改带来的影响更加局部化。

4.面向对象编程的优点和缺点分别是什么?

使用面向对象思想进行开发有以下优点:

1、易维护

采用面向对象思想设计的结构,可读性高,由于继承的存在,即使改变需求,那么维护也只是在局部模块,所以维护起来是非常方便和较低成本的。

2、质量高

在设计时,可重用现有的,在以前的项目的领域中已被测试过的类使系统满足业务需求并具有较高的质量。

3、效率高

在软件开发时,根据设计的需要对现实世界的事物进行抽象,产生类。使用这样的方法解决问题,接近于日常生活和自然的思考方式,势必提高软件开发的效率和质量。

4、易扩展

由于继承、封装、多态的特性,自然设计出高内聚、低耦合的系统结构,使得系统更灵活、更容易扩展,而且成本较低。

缺点:

1.性能损失.面向对象编程达到了软件工程的三个主要目标:重用性、灵活性和扩展性,相对的为了实现相应的目标, 就会有一定的性能损失,如果程序进行超大规模计算,则性能损失就比较明显;

2.对数学运算等对象化很弱的编程不适用;

5.面向对象编程的重要性在哪

基本特征就是它的重要性1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。

抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。比如,我们要设计一个学生成绩管理系统,考察学生这个对象时,我们只关心他的班级、学号、成绩等,而不用去关心他的身高、体重这些信息。

抽象包括两个方面,一是过程抽象,二是数据抽象。过程抽象是指任何一个明确定义功能的操作都可被使用者看作单个的实体看待,尽管这个操作实际上可能由一系列更低级的操作来完成。

数据抽象定义了数据类型和施加于该类型对象上的操作,并限定了对象的值只能通过使用这些操作修改和观察。2.继承: 继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。

对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。

派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。这也体现了大自然中一般与特殊的关系。

继承性很好的解决了软件的可重用性问题。比如说,所有的Windows应用程序都有一个窗口,它们可以看作都是从一个窗口类派生出来的。

但是有的应用程序用于文字处理,有的应用程序用于绘图,这是由于派生出了不同的子类,各个子类添加了不同的特性。3.封装: 封装是面向对象的特征之一,是对象和类概念的主要特性。

封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。

一旦定义了一个对象的特性,则有必要决定这些特性的可见性,即哪些特性对外部世界是可见的,哪些特性用于表示内部状态。在这个阶段定义对象的接口。

通常,应禁止直接访问一个对象的实际表示,而应通过操作接口访问对象,这称为信息隐藏。事实上,信息隐藏是用户对封装性的认识,封装则为信息隐藏提供支持。

封装保证了模块具有较好的独立性,使得程序维护修改较为容易。对应用程序的修改仅限于类的内部,因而可以将应用程序修改带来的影响减少到最低限度。

4. 多态性: 多态性是指允许不同类的对象对同一消息作出响应。比如同样的加法,把两个时间加在一起和把两个整数加在一起肯定完全不同。

又比如,同样的选择编辑-粘贴操作,在字处理程序和绘图程序中有不同的效果。多态性包括参数化多态性和包含多态性。

多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。面向对象程序设计具有许多优点: 1、开发时间短,效率高,可靠性高,所开发的程序更强壮。

由于面向对象编程的可重用性,可以在应用程序中大量采用成熟的类库,从而缩短了开发时间。2、应用程序更易于维护、更新和升级。

继承和封装使得应用程序的修改带来的影响更加局部化。

6.Javascript面向对象到底应该如何学习

1、没有任何理论和实践表明java是js的入门基础,这个也知道。js是只用于网页,而且绝大多数情况只用于前端的语言,java是几乎无所不能的语言,哪个入门难度大,也懂的。

2、js不能直接操作内存,java的知识在这里用不到。

3、js的面向对象是天下无双的,热门语言中没有任何语言跟它相近,跟java很不一样,充其量是理念相似。就好比学开汽车之前先学开拖拉机,或者学开拖拉机之前先学开汽车都是烧包。已经有足够的教程教学习js的面向对象编程,没见到哪个教程要求先学java。如果先学拖拉机然后接触汽车,去研究汽车跟拖拉机的区别,没意义。只有当去农村劳动,必须一定要学拖拉机的时候,再去学也不迟。

4、xhtml是严格的html4,属于W3C想当然的一种产物,虽然不能说没用但没必要专门去管。直接学HTML5就可以了。

5、js的作用域只有函数作用域,没有块级作用域,学了java没什么帮助,还可能让搞混。

6、视频教程这种东西,体现思想的话太多,如果看美国佬的教程还可以,如果看中国人的,大多是不懂装懂的那种,出了视频为了养家糊口。

7、建议是看书。建议看一本张亚飞的《javascript权威指南》。这本书的好处就是一个中国人从老外出的书里面把知识点整理归纳,做成适合中国人看的入门读物。作者本身写这本书没费什么劲,但他最大的功劳就是整理,内容非常全面。仍然提醒:当读到面向对象的章节时,看一遍就过去,不要妄图一遍读懂。以后再回来反复看。这本书的问题是,为了控制篇幅,没有多少实例,而且是假设对js有全面了解的前提下。所以再建议看一本真正入门级的书。

8、js学习的步骤是:语句、表达式、运算符、几种内置对象、DOM、正则……面向对象。总之把面向对象放到最后就对了。一开始就接触面向对象当然不好理解。学习语言最关键是边学边用,只学不用是很难有效果。

9、面向对象的优势是封装、聚合、继承、多态,劣势是复杂、占内存、运行效率低。不要以为面向对象是一个神圣的皇冠,得到它就无敌了,充其量面向对象是高等数学,简单面向过程是初等数学。

10、如果一定要学java,那也是js精通到某个程度之后的事情了。java中的一些精华理念可以在js中变通实现,这不是初级人员干的事。

7.面向对象编程语言有什么优点和特点

优点:

1、维护简单

模块化是面向对象编程中的一个特征。实体被表示为类和同一名字空间中具有相同功能的类,我们可以在名字空间中添加一个类而不会影响该名字空间的其他成员。

2、可扩充性

面向对象编程从本质上支持扩充性。如果有一个具有某种功能的类,就可以很快地扩充这个类,创建一个具有扩充的功能的类。

3、代码重用

由于功能是被封装在类中的,并且类是作为一个独立实体而存在的,提供一个类库就非常简单了。事实上,任何一个.NET Framework编程语言的程序员都可以使用.NET Framework类库,.NET Framework类库提供了很多的功能。更令人高兴的是,我们可以通过提供符合需求的类来扩充这些功能。

缺点:

就 C++ 而言,由于面向更高的逻辑抽象层,使得 C++ 在实现的时候,不得不做出性能上面的牺牲,有时候甚至是致命的 ( 所有对象的属性都经过内置多重指针的间接引用是其性能损失的主要原因之一;不过,笔者的局限性在于未使用过 VC++ 外的面向对象语言,所以不是十分肯定,哈哈,有人笑出来了… )。

在计算机速度飞速发展的今天,你可能会说,一丁点的性能牺牲没什么大不了。是的,从面向对象的角度,使的编程的结构更加清晰完整,数据更加独立和易于管理,性能的牺牲可以带来这么多的好处,没有理由不做稳赚的生意吧?

不过,在某些对速度要求极高特殊场合,例如你做的是电信的交换系统,每秒钟有超过百万的人同时进行电话交换,如果,每一个数据交换过程都是一个对象,那么总的性能损失将是天文数字!!

js面向对象编程的好处

转载请注明出处JS代码网 » js面向对象编程的好处

资讯

js传值的哪种方法好

阅读(5)

本文主要为您介绍js传值的哪种方法好,内容包括JS传递大数据量的参数时,应该采用哪种方式更好哪,JS中的传值方式有哪几种?,如何在JavaScript与ActiveX之间传递数据。在JS等脚本语言与ActiveX控件之间通信,如何传递各种类型的参数,以及COM的IDi

资讯

js如何取数的最大值

阅读(5)

本文主要为您介绍js如何取数的最大值,内容包括如何利用JS获取一组数字中的最大值,js如何取出数组中的最大值,Javascript如何取最大值?。你好,下面是我测试的代码,你试下:<br><script src=jquery-2.1.4.min.js></script><br><u

资讯

js获取元素的类型吗

阅读(6)

本文主要为您介绍js获取元素的类型吗,内容包括js获取元素是text类型吗,在javascript程序中,获取元素的标准方法,js如何获取class的元素不能用jq<br/1br/>2。1.function (n) {2. var classElements = [],allE

资讯

js修改服务器控件的值

阅读(5)

本文主要为您介绍js修改服务器控件的值,内容包括javascript如何修改服务器控件的属性值?,JavaScript如何实现改变服务器控件的值,asp服务器控件回传要刷新,javascript如何修改服务器控件的属性值?。javascript操作服务器控件主要是看服务器

资讯

js取对象数组的差集

阅读(6)

本文主要为您介绍js取对象数组的差集,内容包括JS求数组差集的几种方法,JS求数组差集的几种方法,在JavaScript中,如何求出两个数组的交集和差集?。第一种:如果不考虑IE8的兼容性完全可以使用 ,此方法求出

资讯

js删除上传的文件格式

阅读(6)

本文主要为您介绍js删除上传的文件格式,内容包括javascript获取上传的文件名,去掉文件的后缀名,清空上传控件内容JS代码怎么写?,我能删除自己上传的文件麽。【实例代码】html xmlns=http://www。w3。org/1999/xhtml headtitle标题页-学无忧

资讯

js计算li之前的高度

阅读(6)

本文主要为您介绍js计算li之前的高度,内容包括js中怎么获取当前li之前的所有li的宽度和(),关于篮球的一些详细规则,计算器使用JS代码如下,请高手做个连等功能?连等功能就是,比如。基本规则一: 1.比赛方法 一队五人,其中一人为队长,候补球员最

资讯

js获取text中的值

阅读(6)

本文主要为您介绍js获取text中的值,内容包括js怎样获取html:text的值,在js中怎么获得text文本框中的值变化了,JS:如何获取text文本框中输入的数值?。错的地方有两处,第一个错误:<input id="Text1" type="text" />没有设置name这个属性,所以 var x=

资讯

js获取路径中的参数

阅读(6)

本文主要为您介绍js获取路径中的参数,内容包括js怎么对获取的地址里边的参数,js获取url路径里面的参数,js中如何获取地址参数的方法。var getUrlVars = function(){var vars = {}, hash, idx, hashes, i, n;i

资讯

js中的function是什么意思

阅读(6)

本文主要为您介绍js中的function是什么意思,内容包括在js中function()是什么意思?一般是什么情况下用?新手求大神详细,(function(){})();//请问这是什么JS语法,作用是什么,js中如何停止function。js 中的函数也是一种对象(Function类型的对象),函

资讯

js动态改变input的值

阅读(4)

本文主要为您介绍js动态改变input的值,内容包括在js中怎样改变input标签里动态的改变value值的字体颜色,在js中怎样改变input标签里动态的改变value值的字体颜色求大神指教,关于JS改变input值的问题。我猜楼主是想要背后那个提示语css3中有

资讯

js的encode使用

阅读(3)

本文主要为您介绍js的encode使用,内容包括jsencode怎么用,jsencode怎么用,js高手请来,帮我看看这段代码是怎么做的?<scriptl。手机串号,如同手机的身份证,每部机子的 IMEI 号都是惟一的,一般说来可以由此来判断一部机子是否为正品。 判别方法

资讯

js新增的ngclick

阅读(7)

本文主要为您介绍js新增的ngclick,内容包括ngclick点击事件js怎样触发,XHTML+JS中事件处理函数如何可带参数?比如我用HTMLDO爱问知,JavaScript中事件处理的过程有哪三个环节.?JavaSc。第一阶段:HTML事件处理阶段。就是在元素里面添加onclick

资讯

js修改div下的iframe

阅读(3)

本文主要为您介绍js修改div下的iframe,内容包括JavaScript如何修改页面中iframe的属性值,js怎样修改iframe的属性值,如何实现iframe的形式?用div,dom,js..如何实现i。页面一刷新,所有JS对页面做的修改都会恢复的,如果楼主想让浏览器记住JS设

资讯

js传值的哪种方法好

阅读(5)

本文主要为您介绍js传值的哪种方法好,内容包括JS传递大数据量的参数时,应该采用哪种方式更好哪,JS中的传值方式有哪几种?,如何在JavaScript与ActiveX之间传递数据。在JS等脚本语言与ActiveX控件之间通信,如何传递各种类型的参数,以及COM的IDi

资讯

js如何取数的最大值

阅读(5)

本文主要为您介绍js如何取数的最大值,内容包括如何利用JS获取一组数字中的最大值,js如何取出数组中的最大值,Javascript如何取最大值?。你好,下面是我测试的代码,你试下:<br><script src=jquery-2.1.4.min.js></script><br><u

资讯

js获取元素的类型吗

阅读(6)

本文主要为您介绍js获取元素的类型吗,内容包括js获取元素是text类型吗,在javascript程序中,获取元素的标准方法,js如何获取class的元素不能用jq<br/1br/>2。1.function (n) {2. var classElements = [],allE

资讯

js修改服务器控件的值

阅读(5)

本文主要为您介绍js修改服务器控件的值,内容包括javascript如何修改服务器控件的属性值?,JavaScript如何实现改变服务器控件的值,asp服务器控件回传要刷新,javascript如何修改服务器控件的属性值?。javascript操作服务器控件主要是看服务器

资讯

js取对象数组的差集

阅读(6)

本文主要为您介绍js取对象数组的差集,内容包括JS求数组差集的几种方法,JS求数组差集的几种方法,在JavaScript中,如何求出两个数组的交集和差集?。第一种:如果不考虑IE8的兼容性完全可以使用 ,此方法求出

资讯

js删除上传的文件格式

阅读(6)

本文主要为您介绍js删除上传的文件格式,内容包括javascript获取上传的文件名,去掉文件的后缀名,清空上传控件内容JS代码怎么写?,我能删除自己上传的文件麽。【实例代码】html xmlns=http://www。w3。org/1999/xhtml headtitle标题页-学无忧

资讯

js计算li之前的高度

阅读(6)

本文主要为您介绍js计算li之前的高度,内容包括js中怎么获取当前li之前的所有li的宽度和(),关于篮球的一些详细规则,计算器使用JS代码如下,请高手做个连等功能?连等功能就是,比如。基本规则一: 1.比赛方法 一队五人,其中一人为队长,候补球员最

资讯

js删除files内的文件

阅读(4)

本文主要为您介绍js删除files内的文件,内容包括360jsFiles,是什么文件,我的共享里面里面是空的,可以删除吗?,怎样删除C:ProgramFiles下的文件夹?每次删除都提示正,谁告诉我怎么删C盘里除了系统文件以外的东西救命?谁告诉我怎么删。删除文件