js的面向对象的三大特征
◆js的面向对象的三大特征
1.封装性
所谓封装,就是把我们抽象出的属性和对属性的操作写到类的定义中,称为封装.
js 中实现封装主要有两种封装( 公开,私有)
class Person(name,sal){
https://www.360docs.net/doc/6a1548178.html,=name; //公开
var sal=sal;//私有
this.showInfo=function(){ //公开
window.alert(https://www.360docs.net/doc/6a1548178.html,+””+sal);
}
showInfo2(){ //把函数私有化.
window.alert(“你好”+https://www.360docs.net/doc/6a1548178.html,+””+sal)
}
}
◆通过构造函数添加成员方法和通过原型法添加成员方法的区别
1.通过原型法分配的函数是所有对象共享的.
2.通过原型法分配的属性是独立.(如果你不修改属性,他们是共享)
3.建议,如果我们希望所有的对象使用同一一个函数,最好使用原型法添加函
数,这样比较节省内存.
function Dog(){
this.shout=function(){
}
}
//原型法
Dog.prototype.shout=function (){
window.alert("小狗尖叫"+https://www.360docs.net/doc/6a1548178.html,);
}
//通过原型也可以给每个对象,分配属性
Dog.prototype.color="red";
var dog1=new Dog("aa");
var dog2=new Dog("bb");
if(dog1.shout==dog2.shout){
window.alert("dog1.shout==dog2.shout");
}
dog1.color="黑色";
window.alert(dog1.color+" "+dog2.color);
4.请大家看一个题:
function Person(){
}
// 创建对象
var p1=new Person();
// p1.say(); [错误]
// 这时用原型法分配
Person.prototype.say=function(){
window.alert("ok");
}
p1.say();
结论是类.prototype.函数=function (){};
称为后置绑定.
js面相对象的继承
看一段代码->问题是什么?
①对象冒充
代码如下:
//中学生
/* function MidStu(name,age){
https://www.360docs.net/doc/6a1548178.html,=name;
this.age=age;
this.show=function(){
window.alert(https://www.360docs.net/doc/6a1548178.html,+"年龄是="+this.age);
}
this.pay=function(fee){
window.alert("你的学费是"+fee*0.8);
}
}
//小学生
function Pupil(name,age){
https://www.360docs.net/doc/6a1548178.html,=name;
this.age=age;
this.show=function(){
window.alert(https://www.360docs.net/doc/6a1548178.html,+"年龄是="+this.age);
}
this.pay=function(fee){
window.alert("你的学费是"+fee*0.5);
}
}*/
//代码的复用性不高.
//修改如下:
//1. 把子类中共有的属性和方法抽取出,定义一个父类Stu function Stu(name,age){
https://www.360docs.net/doc/6a1548178.html,=name;
this.age=age;
this.show=function(){
window.alert(https://www.360docs.net/doc/6a1548178.html,+"年龄是="+this.age);
}
}
//2.通过对象冒充来继承父类的属性的方法
function MidStu(name,age){
this.stu=Stu; //这里相当于把Stu构造函数(类)赋值给我们的属性this.stu
//调用this.stu方法
this.stu(name,age); //这个表示初始化MidStu,相当于执行Stu(name,age),这句话必须有,否则无法实现集成的效果
//可以写MidStu自己的方法.
this.pay=function(fee){
window.alert("你的学费是"+fee*0.8);
}
}
function Pupil(name,age){
this.stu=Stu;//这里只是把码继承.
//初始化一把
this.stu(name,age);
//可以写Pupil自己的方法.
this.pay=function(fee){
window.alert("你的学费是"+fee*0.5);
}
}
//测试
var midstu=new MidStu("贾宝玉",15);
var pupil=new Pupil("贾环",12);
midstu.show();
midstu.pay(100);
pupil.show();
pupil.pay(100);
②通过call 或者apply来实现
//中学生
/* function MidStu(name,age){
https://www.360docs.net/doc/6a1548178.html,=name;
this.age=age;
this.show=function(){
window.alert(https://www.360docs.net/doc/6a1548178.html,+"年龄是="+this.age);
}
this.pay=function(fee){
window.alert("你的学费是"+fee*0.8);
}
}
//小学生
function Pupil(name,age){
https://www.360docs.net/doc/6a1548178.html,=name;
this.age=age;
this.show=function(){
window.alert(https://www.360docs.net/doc/6a1548178.html,+"年龄是="+this.age);
}
this.pay=function(fee){
window.alert("你的学费是"+fee*0.5);
}
}*/
//代码的复用性不高.
//修改如下:
//1. 把子类中共有的属性和方法抽取出,定义一个父类Stu function Stu(name,age){
window.alert("确实被调用.");
https://www.360docs.net/doc/6a1548178.html,=name;
this.age=age;
this.show=function(){
window.alert(https://www.360docs.net/doc/6a1548178.html,+"年龄是="+this.age);
}
}
//2.通过对象冒充来继承父类的属性的方法
function MidStu(name,age){
//这里这样理解: 通过call修改了Stu构造函数的this指向,
//让它指向了调用者本身.
Stu.call(this,name,age);
//如果用apply实现,则可以
//Stu.apply(this,[name,age]); //说明传入的参数是数组方式
//可以写MidStu自己的方法.
this.pay=function(fee){
window.alert("你的学费是"+fee*0.8);
}
}
function Pupil(name,age){
Stu.call(this,name,age);//当我们创建Pupil对象实例,Stu的构造函数会被执行,当执行后,我们Pupil对象就获取从Stu封装的属性和方法
//可以写Pupil自己的方法.
this.pay=function(fee){
window.alert("你的学费是"+fee*0.5);
}
}
//测试
var midstu=new MidStu("孙悟空",15);
var pupil=new Pupil("猪八戒",12);
midstu.show();
midstu.pay(100);
pupil.show();
pupil.pay(100);
js的继承小结
(1)js对象可以通过对象冒充,实现多重继承Object 类是所有js类的基类
面向对象三大基本特性,五大基本原则
透切理解面向对象三大基本特性是理解面向对象五大基本原则的基础 三大特性是:封装,继承,多态 所谓封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。封装是面向对象的特征之一,是对象和类概念的主要特性。简单的说,一个类就是一个封装了数据以及操作这些数据的代码的逻辑实体。在一个对象内部,某些代码或某些数据可以是私有的,不能被外界访问。通过这种方式,对象对内部数据提供了不同级别的保护,以防止程序中无关的部分意外的改变或错误的使用了对象的私有部分。 所谓继承是指可以让某个类型的对象获得另一个类型的对象的属性的方法。它支持按级分类的概念。继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。通过继承创建的新类称为“子类”或“派生类”,被继承的类称为“基类”、“父类”或“超类”。继承的过程,就是从一般到特殊的过程。要实现继承,可以通过“继承”(Inheritance)和“组合”(Composition)来实现。继承概念的实现方式有二类:实现继承与接口继承。实现继承是指直接使用基类的属性和方法而无需额外编码的能力;接口继承是指仅使用属性和方法的名称、但是子类必须提供实现的能力; 所谓多态就是指一个类实例的相同方法在不同情形有不同表现形式。多态机制使具有不同内部结构的对象可以共享相同的外部接口。这意味着,虽然针对不同对象的具体操作不同,但通过一个公共的类,它们(那些操作)可以通过相同的方式予以调用。 五大基本原则 单一职责原则SRP(Single Responsibility Principle) 是指一个类的功能要单一,不能包罗万象。如同一个人一样,分配的工作不能太多,否则一
Java的三大特性
Java是完全面向对象的计算机编程语言,它有三大特性: 1、封装性 封装是面向对象的方法所遵循的一个重要原则,它有两个含义:一是指把对象的属性和行为看成一个密不可分的整体,将这两者“封装”在一个不可分割的独立单位(即对象)中;二是指“信息隐藏”,把不需要让外界知道的信息隐藏起来,有些对象及行为允许外界用户知道或使用,但不允许更改,而另一些属性或行为,则不允许外界知道,或只允许使用对象的功能,而尽可能隐藏对象的功能实现细节。 封装机制在程序设计中表现为,把描述对象属性的变量及实现对象功能的方法合在一起,定义为一个程序单位,并保证外界不能任意更改其内部的属性值,也不能任意调动其内部的功能方法。 封装机制的另一个特点是,为封装在一个整体内的变量及方法规定不同级别的“可见性” 或访问权限。 2、继承性 继承是面向对象方法中的重要概念,并且使提高软件开发效率的重要手段。首先拥有反映事物一般特性的类,然后再其基础上派生出反映特殊事物的类。在Java程序设计中,已有的类可以是Java开发环境所提供的一批最基本的程序——类库,用户开发的程序类就是继承这些已有的类。这样,现在类所描述的属性及行为,即已定义的变量和方法,在继承产生的类中可以使用。面向对象程序设计中的继承机制大大增加了程序代码的可复用性,提高了软件的开发效率,降低了程序产生错误的可能性,也为程序的修改扩充提供了便利。Java支持单继承,通过接口的方式来弥补由于Java不支持多继承而带来的子类不能享用多个父类的成员的缺点。 3、多态性 多态是面向对象程序设计的又一个重要特征。多态是允许程序中出现重名现象。Java语言中含有方法重载与对象多态两种形式的多态。 方法重载:在一个类中,允许多个方法使用同一个名字,但方法的参数不同,完成的功能也不同。 对象多态:子类对象可以与父类对象进行相互转换,而且根据其使用的子类的不同,完成的功能也不同。 多态的特性使程序的抽象程度和简捷程度更高,有助于程序设计人员对程序的分组协同开发。 怎样理解面向对象的三大特性: 一、封装 1、概念:封装也称为信息隐藏,是指利用抽象数据类型(即ADT,一个ADT是一个仅由保 存的数据类型和可能在这个数据类型上进行的操作定义的,用户只能通过ADT的操作方法来访问ADT的属性,而且用户不会知道这个数据类型内容各种操作是如何实现的。ADT 提供了一个对象公共接口中的操作和其具体的实现公开的强有力的工具,这使得一个ADT的实现可以不断变化和演化同时保持其公共接口不变。)将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体,数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些对外接口使之与外部发生联系。系统的其他部分中有通过包裹在数据外面的被授权的操作与这个抽象数据类型交流与交互,即用户不需要知道对象内部方法的实现细节,但可以根据提供的外部接口(对象名和参数)访问该对象。 2、优点:a)实现了专业的分工:将能实现某一特定功能的代码封装成一个独立的实体后, 各程序员可以在需要的时候调用,从而实现了专业的分工。b)实现了信息的隐藏:通
Js中的Parent对象
Js中的Parent对象 文章分类:Web前端 该变更永远指分割窗口最高层次的浏览器窗口。如果计划从分割窗口的最高层次开始执行命令,就可以用top变量。 parent: 该变量指的是包含当前分割窗口的父窗口。如果在一个窗口内有分割窗口,而在其中一个分割窗口中又包含着分割窗口,则第2层的分割窗口可以用parent变量引用包含它的父分割窗口。 opener: 指用WINDOW.OPEN等方式创建的新窗口对应的原窗口。 附:Window对象、Parent对象、Frame对象、Document对象和Form对象的阶层关系:Windows对象→Parent对象→Frame对象→Document对象→Form对象, 如下:parent.frame1.document.forms[0].elements[0].value; 问题:在一个页面嵌入框架
面向对象的高级特性_参考答案
Ⅰ.选择题 1、给定下列代码:B 当在第6行加入什么方法时会引起编译错误? 2、给定以下代码:B 执行后的结果是? A. 打印字符串“T ested” B. 编译失败 C. 代码运行成功但无输出 D. 运行时抛出异常 3、MAX_LENGTH是int型public成员变量, 变量值保持为常量100,用简短语句定义这个变量?( CD ) A. public int MAX_LENGTH=100; B. final int MAX_LENGTH=100; C. final public int MAX_LENGTH=100; D. public final int MAX_LENGTH=100. 4、给出以下代码,请问该程序的运行结果是什么?(B) 1.class A { static void foo(int i ) {};} 2. class B extends A{ void foo( int i ){};}
A 第1行编译错误。 B 第2行编译错误。 C 代码编译成功。 //静态方法不能被重写 4、有关类的说法正确的是(B) A.类具有封装性,所以类的数据是不能被访问的 B.类具有封装性,但可以通过类的公共接口访问类中的数据 C.声明一个类时,必须使用public修饰符 D.每个类中必须有main方法,否则程序无法运行 5、将类的访问权限设置为默认的,则该成员能被(A) A. 同一包中的类访问 B.其他包中的类访问 C.所有的类访问 D.所有的类的子类访问 6、假设下面的程序代码都放在MyClass.java文件中,(D)程序代码能够编译通过。 A.import java.awt.*; package mypackage; calss MyClass{ } B.package mypackage; import java.awt.*; public class myClass{ } C.int m; package mypackage; import java.awt.*; class MyClass{ } D./*This is a comment*/ package mypackage; import java.awt.*; public class MyClass{ } 7、假设在java源程序文件“MyClass.java”中只含有一个类,而且这个类必须能够被位于一个庞大的软件系统中的所有java类访问到,那么下面(C )声明有可能是符合要求的类声明。A.private class MyClass extends Object B.public class myclass extends Object C.public class MyClass D.class MyClass extends Object Ⅱ.程序分析题 1、分析并完善如下程序,并写出最后执行结果: class Person{ String name="zhangsan"; int age=18; double height=1.75;
面向对象的三个基本特征讲解
面向对象的三个基本特征是:封装、继承、多态。 封装 封装最好理解了。封装是面向对象的特征之一,是对象和类概念的主要特性。 封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。 继承 面向对象编程(OOP) 语言的一个主要功能就是“继承”。继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。 通过继承创建的新类称为“子类”或“派生类”。 被继承的类称为“基类”、“父类”或“超类”。 继承的过程,就是从一般到特殊的过程。 要实现继承,可以通过“继承”(Inheritance)和“组合”(Composition)来实现。 在某些OOP 语言中,一个子类可以继承多个基类。但是一般情况下,一个子类只能有一个基类,要实现多重继承,可以通过多级继承来实现。 继承概念的实现方式有三类:实现继承、接口继承和可视继承。 实现继承是指使用基类的属性和方法而无需额外编码的能力; 接口继承是指仅使用属性和方法的名称、但是子类必须提供实现的能力; 可视继承是指子窗体(类)使用基窗体(类)的外观和实现代码的能力。 在考虑使用继承时,有一点需要注意,那就是两个类之间的关系应该是“属于”关系。例如,Employee 是一个人,Manager 也是一个人,因此这两个类
都可以继承Person 类。但是Leg 类却不能继承Person 类,因为腿并不是一个人。 抽象类仅定义将由子类创建的一般属性和方法,创建抽象类时,请使用关键字Interface 而不是Class。 OO开发范式大致为:划分对象→抽象类→将类组织成为层次化结构(继承和合成) →用类与实例进行设计和实现几个阶段。 多态 多态性(polymorphisn)是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。 实现多态,有二种方式,覆盖,重载。 覆盖,是指子类重新定义父类的虚函数的做法。 重载,是指允许存在多个同名函数,而这些函数的参数表不同(或许参数个数不同,或许参数类型不同,或许两者都不同)。 其实,重载的概念并不属于“面向对象编程”,重载的实现是:编译器根据函数不同的参数表,对同名函数的名称做修饰,然后这些同名函数就成了不同的函数(至少对于编译器来说是这样的)。如,有两个同名函数:function func(p:integer):integer;和function func(p:string):integer;。那么编译器做过修饰后的函数名称可能是这样的:int_func、str_func。对于这两个函数的调用,在编译器间就已经确定了,是静态的(记住:是静态)。也就是说,它们的地址在编译期就绑定了(早绑定),因此,重载和多态无关!真正和多态相关的是“覆盖”。当子类重新定义了父类的虚函数后,父类指针根据赋给它的不同的子类指针,动态(记住:是动态!)的调用属于子类的该函数,这样的函数调用在编译期间是无法确定的(调用的子类的虚函数的地址无法给出)。因此,这样的函数地址是在运行期绑定的(晚邦定)。结论就是:重载只是一种语言特性,与多态无关,与面向对象也无关!引用一句Bruce Eckel的话:“不要犯傻,如果它不是晚邦定,它就不是多态。” 那么,多态的作用是什么呢?我们知道,封装可以隐藏实现细节,使得代码模块化;继承可以扩展已存在的代码模块(类);它们的目的都是为了——代码重用。而多态则是为了实现另一个目的——接口重用!多态的作用,就是为了类在继承和派生的时候,保证使用“家谱”中任一类的实例的某一属性时的正确调用。 概念讲解 泛化(Generalization)
js对象属性方法查询手册
windows对象 每个HTML文档的顶层对象. 属性 frames[] 子桢数组.每个子桢数组按源文档中定义的顺序存放. feames.length 子桢个数. self 当前窗口. parent 父窗口(当前窗口是中一个子窗口). top 顶层窗口(是所有可见窗口的父窗口). status 浏览器状态窗口上的消息. defaultStatus 当status无效时,出现在浏览器状态窗口上的缺省消息. name 内部名,为由window.open()方法打开的窗口定义的名字. wind ows方法 alert("message") 显示含有给定消息的"JavaScript Alert"对话框. confirm("message") 显示含有给定消息的"Confirm"对话框(有一个OK按钮和一个Cancel按钮).如果用户单击OK返回true,否则返回false. prompt("message") 显示一个"prompt"对话框,要求用户根据显示消息给予相应输入. open("URL","name") 打开一个新窗口,给予一个指定的名字. close() 关闭当前窗口. setInterval() 定时 clearInterval() 清楚定时器 document对象 含有当前文档信息的对象. 属性 title 当前文档标题,如果未定义,则包含"Untitled". location 文档的全URL. lastModified 含有文档最后修改日期. bgColor 背景色(#xxxxxx) fgColor 前景文本颜色. linkColor 超链接颜色. vlinkColor 访问过的超链颜色. alinkColor 激活链颜色(鼠标按住未放时). forms[] 文档中form对象的数组,按定义次序存储. forms.length 文档中的form对象数目.
面向对象的三大特性(封装-继承-多态)
一丶封装 1 权限修饰符 可以用来修饰成员变量和成员方法,对于类的权限修饰只可以用public和缺省default。 被public修饰的类可以在任意地方被访问;default类只可以被同一个包内部的类访问。 权限由大到小:public protected default(不写) private 被private修饰的成员只能在本类中访问,外界不能访问 2 set()/get()方法 (1)this关键字 a.可以用来调用变量,方法,构造方法; b.this.xx 理解为调用当前类的xx。 (2)成员变量和局部变量 1)在类中的位置不同 a:成员变量:在类中,方法外 b:局部变量:在方法声明上(形式参数),或者是在方法定义中
2)在内存中的位置不同 a:成员变量:在堆内存 b:局部变量:在栈内存 3)生命周期不同 a:成员变量:随着对象的创建而存在,随着对象的消失而消失 b:局部变量:随着方法调用而存在,随着方法的调用结束而消失 4)初始化值不同 a:成员变量:有默认值 b:局部变量:必须初始化值,否则报错!(在使用它之前,没有初始化) (3)set()/get()方法 当成员变量被private修饰时,不在本类中无法直接访问,便需要set()/get()方法来解决这个问题 3 封装性 封装:是面向对象的第一大特性,所谓封装,就是值对外部不可见(一般而言被private修饰),外部只能通过对象提供的接口(如set()/get()方法)来访问。 封装的好处:a.良好的封装能够减少耦合;
b.类内部的结构可以自己修改,对外部影响不大; c.可以对成员进行更精准的控制(防止出现与事实不符的情况); d.影藏实现细节。 注意:在开发中,类的成员变量全部要进行封装,封装之后通过set()/get()方法访问。 二丶继承extends 1 实现:通过 class Zi extends Fu{} 实现类的继承 (1)子类继承父类,父类中声明的属性,方法,子类都可以获取到; 当父类中有私有的属性方法时,子类同样可以获取到,由于封装性的设计,使得子类不能直接调用访问。 (2)子类除了可以继承父类的结构外,还可以定义直接特有的成员变量,成员方法; (3)Java中类的继承只支持单继承,一个类只能继承一个父类,父类可以有多个子类,但是可以多层继承; (4)子类不能继承父类的构造方法,可以间接的通过super关键字去访问父类的构造方法(super();); 在子类的构造方法中如果没有显示的调用父类的构造方法,会默认调用父类的无参构造(所以最好父类都写有无参构造方法)。 子类继承父类的访问特点:首先父类进行初始化,然后子类进行初始化;多层访问! 2 方法的重写(区别重载) 子类继承父类以后,若父类的方法对子类不适用,那么子类可以对父类方法重写(override) 规则:1)要求子类方法的返回值类型方法名(参数列表)与父类方法一致; 2)子类方法的权限修饰符不能小于父类方法的修饰权限; 3)若父类方法抛异常,那么子类方法抛的异常类型不能大于父类; 注意: a.当子类重写了父类的方法以后,可以用 super.方法调用父类被重写的内容; b.子父类的方法必须同为static或同为非static。 class Fu{ private int i; public Fu(){ //无参构造 super();可以省略 super(); } public Fu(int i){ //有参构造
面向对象的三大特性
面向对象的三大特性 收藏 面向对象的三个基本特征是:封装、继承、多态。 封装 封装最好理解了。封装是面向对象的特征之一,是对象和类概念的主要特性。 封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。 在Java中类中成员的属性有:public,protected,
js内置对象属性及方法
1.Date 属性(1):constructor 所建立对象的函数参考 prototype 能够为对象加入的属性和方法 方法(43):getDay() 返回一周中的第几天(0-6) getYear() 返回年份.2000年以前为2位,2000(包含)以后为4位 getFullYear() 返回完整的4位年份数 getMonth() 返回月份数(0-11) getDate() 返回日(1-31) getHours() 返回小时数(0-23) getMinutes() 返回分钟(0-59) getSeconds() 返回秒数(0-59) getMilliseconds() 返回毫秒(0-999) getUTCDay() 依据国际时间来得到现在是星期几(0-6) getUTCFullYear() 依据国际时间来得到完整的年份 getUTCMonth() 依据国际时间来得到月份(0-11) getUTCDate() 依据国际时间来得到日(1-31) getUTCHours() 依据国际时间来得到小时(0-23) getUTCMinutes() 依据国际时间来返回分钟(0-59) getUTCSeconds() 依据国际时间来返回秒(0-59) getUTCMilliseconds()依据国际时间来返回毫秒(0-999) getTime() 返回从1970年1月1号0:0:0到现在一共花去的毫秒数 getTimezoneoffset() 返回时区偏差值,即格林威治平均时间(GMT)与运行脚本的计算机
所处时区设置之间相差的分钟数) parse(dateString) 返回在Date字符串中自从1970年1月1日00:00:00以来的毫秒数 setYear(yearInt) 设置年份.2位数或4位数 setFullYear(yearInt)设置年份.4位数 setMonth(monthInt) 设置月份(0-11) setDate(dateInt) 设置日(1-31) setHours(hourInt) 设置小时数(0-23) setMinutes(minInt) 设置分钟数(0-59) setSeconds(secInt) 设置秒数(0-59) setMilliseconds(milliInt) 设置毫秒(0-999) setUTCFullYear(yearInt) 依据国际时间来设置年份 setUTCMonth(monthInt) 依据国际时间来设置月(0-11) setUTCDate(dateInt) 依据国际时间来设置日(1-31) setUTCHours(hourInt) 依据国际时间来设置小时 setUTCMinutes(minInt) 依据国际时间来设置分钟 setUTCSeconds(secInt) 依据国际时间来设置秒 setUTCMilliseconds(milliInt)依据国际时间来设置毫秒 setTime(timeInt)设置从1970年1月1日开始的时间.毫秒数 toGMTString()根据格林威治时间将Date对象的日期(一个数值)转变成一个GMT时间字符串,如:Weds,15 June l997 14:02:02 GMT toUTCString()根据通用时间将一个Date对象的日期转换为一个字符串 toLocaleString()把Date对象的日期(一个数值)转变成一个字符串,使用所在计算机上配置使用的特定日期格式 toSource()显示对象的源代码
面向对象程序设计期末复习分析
一、单项选择题( 在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内。每小题1 分,共20 分) 3.下列不属于面向对象技术的基本特征的是(B)。 A. 封装性 B. 模块性 C. 多态性 D. 继承性 4. 面向对象程序设计将描述事物的数据与(C ) 封装在一起,作为一个相互依存、不可分割的整体来处理。 A. 信息 B. 数据隐藏 C. 对数据的操作 D. 数据抽象 5. 关于面向对象方法的优点,下列不正确的叙述是(C )。 A. 与人类习惯的思维方法比较一致 B. 可重用性好 C. 以数据操作为中心 D.可维护性好 8. 下列不属于类的成员函数的是( C )。 A. 构造函数 B. 析构函数 C. 友元函数 D. 拷贝构造函数 9. 继承机制的作用是( C )。 A. 信息隐藏 B. 数据封装 C. 派生新类 D. 数据抽象 14. (D )是从用户使用系统的角度描述系统功能的图形表达方法。 A. 类图 B. 对象图 C. 序列图 D. 用例图 15. (C ) 是表达系统类及其相互联系的图示,它是面向对象设计的核心,建立状态图、协作 图和其他图的基础。 A.对象图 B. 组件图 C. 类图 D. 配置图 16.(D )描述了一组交互对象间的动态协作关系,它表示完成某项行为的对象和这些对 象之间传递消息的时间顺序。 A.对象图 B. 协作图 C. 状态图 D. 序列图 17.(D )就是用于表示构成分布式系统的节点集和节点之间的联系的图示,它可以表示 系统中软件和硬件的物理架构。 A. 组件图 B. 协作图 C. 状态图 D. 配置图 18. 在用UML进行数据库的分析与设计过程中,( B ) 就是进行数据库的需求分析,使用用 例图、类图、顺序图、活动图等建立业务模型。 A. 逻辑数据模型设计 B 业务Use Case模型设计 C. 物理数据模型设计 D. 物理实现设计 19. 使用UML进行关系数据库的(B )时,需要设计出表达持久数据的实体类及其联系,并把它们映射成为关系数据库表(Table)、视图(View)等。 A. 业务Use Case模型设计 B. 逻辑数据模型设计 C. 物理数据模型设计 C. 物理实现设计 20. UML的动态建模表示包含(C )种图。 A. 9 B. 5 C. 4 D. 2 二、填空题( 每空1 分,共20 分) 1. 面向对象开发方法一改过去传统的以_功能分析,面向过程_为基础的_对象_的结 构化分析与设计方法,它模拟人们理解和处理客观世界的方式来分析问题,把系统视为
JavaScript面向对象简介
JavaScript面向对象简介 JavaScript 的核心是支持面向对象的,同时它也提供了强大灵活的OOP 语言能力。本文从对面向对象编程的介绍开始,带您探索JavaScript 的对象模型,最后描述 JavaScript 当中面向对象编程的一些概念。 复习JavaScript 如果您对JavaScript 的概念(如变量、类型、方法和作用域等)缺乏自信,您可以在重新介绍JavaScript这篇文章里学习这些概念。您也可以查阅这篇JavaScript 1.5 核心指南。 面向对象编程 面向对象编程是用抽象方式创建基于现实世界模型的一种编程模式。它使用先前建立的范例,包括模块化,多态和封装几种技术。今天,许多流行的编程语言(如Java,JavaScript,C#,C+ +,Python,PHP,Ruby 和Objective-C)都支持面向对象编程(OOP)。 面向对象编程可以看作是使用一系列对象相互协作的软件设计,相对于传统观念,一个程序只是一些函数的集合,或简单的计算机指令列表。在OOP中,每个对象能够接收邮件,处理数据和发送消息给其他对象。每个对象都可以被看作是一个独立的小机器有不同的作用和责任。 面向对象程序设计的目的是促进更好的编程灵活性和可维护性,并在大型软件工程中广为流行。凭借其十分注重的模块化,面向对象的代码开发更简单,往后维护更容易理解,使其自身能更直接的分析,编码,理解复杂的情况和过程,比非模块化编程方法省事。1
术语 Namespace 命名空间 允许开发人员在一个专用的名称下捆绑所有功能代码的容器。 Class 类 定义对象的特征。 Object 对象 类的一个实例。 Property 属性 对象的特征,比如颜色。 Method 方法 对象的能力,比如行走。 Constructor 构造函数 实例化时调用的函数。 Inheritance 继承 一个类可以继承另一个类的特征。 Encapsulation 封装 类定义了对象的特征,方法只定义了方法如何执行。 Abstraction 抽象 结合复杂的继承,方法,属性,一个对象能够模拟现实的模型。 Polymorphism 多态 多意为‘许多’,态意为‘形态’。不同类可以定义相同的方法或属性。更多关于面向对象编程的描述,请参照维基百科的面向对象编程。 原型编程
面向对象的三大特性
面向对象的三大特性 类:属性(变量)和方法 一、封装 1.定义:封装最简单的理解就是包装,指隐藏对象的属性和实现细节,仅仅对外公开接口,即对象的内部状态对外界是透明的。 2.原则:“该隐藏的一定要隐藏,该公开的一定要公开。” *对象的属性尽可能的私有,根据需要配上相应的get/set方法。 *对象的方法根据需要决定是否公开,公开的是声明,隐藏的是实现。意义:使方法实现的改变对架构的影响最小化。 二、继承 1.定义:是一种由已存在的类型创建一个或多个子类型的机制. 2.父类到子类是从一般到特殊的关系。 *泛化:将不同子类中的共性抽象成父类的过程。 *特化:在原有父类的基础上加入一些个性的过程。 *原则:父类放共性,子类放个性。 3.继承的关键字:extends 4.Java 只支持单继承:一个类最多只有一个直接的父类。 *注:父子类之间的关系是树状关系,而多继承是网状关系。 5.父类中的私有属性可以继承但是不能访问,也可以说父类中的私有属性子类不能继承。 6. 访问权限: 宽 | public 全部类可见 | protected本类可见,同包类可见,子类可见 | default 本类可见,同包类可见 | private 本类可见
严 private:本类内部可以访问,不能继承到子类。 *能否继承到子类?不能 default:本类内部可以访问,同包其他类也可以访问。 protected:本类内部可以访问,不同包的子类也可 以访问,同包其他类也可以访问。 *能否继承到子类?能继承到子类 public:任何地方都可以访问 *能否继承到子类?能继承到子类 7.方法覆盖(Override): *方法名:相同 *参数表:相同 *访问限制符:相同或者更宽 *返回值类型:相同或者子类返回的类型是父类返回 的类型的子类(在JDK5.0 以后) *抛出的异常:以后再说。 8.属性遮盖:属性不能够被覆盖。 9.super 关键字 *super()表示调用父类的构造方法。 *super()也和this 一样必须放在方法的第一句。 *super 可以屏蔽子类属性和父类属性重名时带来的属性遮盖,super. 表示调用父类的方法或属性。 *在子类的构造函数中如果没有指定调用父类的哪一个构造方法,那么就会调用父类的无参构造方法,即super()。 10.带继承关系的子类对象创建的过程 1)类加载,初始化静态属性(零值)和执行静态代码 块,顺序为:先父类后子类; 2)分配空间; 3)初始化属性(零值)和执行普通代码块; 4)调用本类的某一个构造方法(递归地构造父类对 象),顺序为:先父类后子类。 三、多态(美女、汽车) 1.定义:指引用变量拥有许多不同形式的能力 2.多态分为两种:编译时多态和运行时多态。 *编译时类型:主观概念,把它看作什么。 *运行时类型:客观概念,实际它是什么。 例:Animal a=new Dog(); 指着狗问,这个动物是什么动物? 3.运行时多态的三原则: *对象类型不变。
JS中的event 对象详解
1.JS中的event 对象详解 标签:firefox文档ienullscroll浏览器 2012-09-24 15:38 368人阅读评论(0) 收藏举报 分类: javascript(9) Event属性和方法: 1. type:事件的类型,如onlick中的click; 2. srcElement/target:事件源,就是发生事件的元素; 3. button:声明被按下的鼠标键,整数,1代表左键,2代表右键,4代表中键,如果按下多个键,酒把这些值加起来,所以3就代表左右键同时按下;(firefox中 0代表左键,1代表中间键,2代表右键) 4. clientX/clientY:事件发生的时候,鼠标相对于浏览器窗口可视文档区域的左上角的位置;(在DOM标准中,这两个属性值都不考虑文档的滚动情况,也就是说,无论文档滚动到哪里,只要事件发生在窗口左上角,clientX和clientY都是 0,所以在IE中,要想得到事件发生的坐标相对于文档开头的位置,要加上 document.body.scrollLeft和 document.body.scrollTop) 5. offsetX,offsetY/layerX,layerY:事件发生的时候,鼠标相对于源元素左上角的位置; 6. x,y/pageX,pageY:检索相对于父要素鼠标水平坐标的整数; 7. altKey,ctrlKey,shiftKey等:返回一个布尔值; 8. keyCode:返回keydown何keyup事件发生的时候按键的代码,以及keypress 事件的Unicode字符;(firefox2不支持 event.keycode,可以用 event.which替代 ) 9. fromElement,toElement:前者是指代mouseover事件中鼠标移动过的文档元素,后者指代mouseout事件中鼠标移动到的文档元素; 10. cancelBubble:一个布尔属性,把它设置为true的时候,将停止事件进一步起泡到包容层次的元素;(e.cancelBubble = true; 相当于 e.stopPropagation();) 11. returnValue:一个布尔属性,设置为false的时候可以组织浏览器执行默认的事件动作;(e.returnValue = false; 相当于 e.preventDefault();) 12. attachEvent(),detachEvent()/addEventListener(),removeEventListener:为制定
面向对象的分析通常要建立三个模型,请问三个模型的作用
1.面向对象的分析通常要建立三个模型,请问三个模型的作用? 答:a)功能模型:表达系统的详细需求,为软件的进一步分析和设计打下基础。在面向对象方法中,由用例图和场景描述组成。 b)对象模型:表示静态的、结构化的系统“数据”性质。描述现实世界中实体的对象以及它们之间的关系,表示目标系统的静态数据结构。在面向对象方法中,类图是构建对象模型的核心工具。 c)动态模型:描述系统的动态结构和对象之间的交互,表示瞬时的、行为化的系统的“控制”特性。面向对象方法中,常用状态图、顺序图、合作图、活动图构建系统的动态模型。 2.请举例说明用例之间的包含关系和扩展关系的区别? 答:包含关系:通常是指一个大的用例包含了几个小的用例,几个小的用例组成一个大的用例; 扩展关系:两个独立的用例,完成一个后可以开启另一个,两个用例本身都是独立的。 例如:用户管理的用例包括用户添加和用户删除;用户登陆用例后可以进行用例退出。 3.软件设计中的抽象是什么意思? 答:它是一种思维工具,就是把事物本质的共同特性抽出来而不考虑其他细节,比如说我们可以把把男人女人老人小孩的共同本质特性抽出来之后形成一个概念"人",这个概念就是抽象的结果。在软件工程中就是这样,在每个阶段中,抽象的层次逐步降低,在软件结构设计中的模块分层也是由抽象到具体的分析和构造出来的。 4.活动图与状态图的区别? 答:状态图是描述某一对象的状态转化的,它主要表现的是该对象的状态。从状态图中可以看出,该对象在接受了外界的某种刺激之后,会做出什么样的反应。描述的是一个对象的事情。可以说是对类图的一种补充,帮助开发者完善某一类。 活动图是描述系统在执行某一用例时的具体步骤的,它主要表现的是系统的动作。从活动图中可以看出,系统是如何一步一步的完成用例规约的,主要用于业务建模阶段。活动图描述的是整个系统的事情。可以说活动图是对用例图的一种细化,帮助开发者理解业务领域。
js创建对象的几种方式及JSON
js中的json对象 默认分类2010-07-16 17:13:32 阅读730 评论0 字号:大中小订阅 使用JSON进行数据传输 一、选择的意义 在异步应用程序中发送和接收信息时,可以选择以纯文本和XML 作为数据格式。为了更好的使用ajax,我们将学习一种有用的数据格式JavaScript Object Notation(JSON),以及如何使用它更轻松地在应用程序中移动数据和对象。JSON是一种简单的数据交换格式,在某些方面,它的作用与XML非常类似,但比XML更为简单,JSON的语法简化了数据交换的难度,而且提供了一种伪对象的方式。 Java的对象< - >JavaScript对象(json数据格式) 二、JSON 基础 简单地说,JSON 可以将JavaScript 对象中表示的一组数据转换为字符串(伪对象),然后就可以在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串从Web 客户端传递给服务器端程序。这个字符串看起来有点儿古怪(稍后会看到几个示例),但是JavaScript 很容易解释它,而且JSON 可以表示比名称/值对更复杂的结构。例如,可以表示数组和复杂的对象,而不仅仅是键和值的简单列表。 关于JSON对象 1、使用JavaScript语法创建对象 //定义一个函数,作为构造函数 fucntion person(name,sex) { https://www.360docs.net/doc/6a1548178.html,=name; this.sex=sex; } //创建一个实例 var p=new Person(‘张三’,’男’); //输出Person实例 alert(https://www.360docs.net/doc/6a1548178.html,); 注意:通过该方式创建的对象是一般的脚本对象 2、从JavaScript1.2开始创建对象有了一种更快捷的语法(Json的语法),如下: var obj={name:"张三","sex":'男'}; alert(obj.sex); 关于数组 1、早期的JavaScript数组 var arr=new Array(); arr[0]=’a’; arr[1]=’bbc’ 我们也可以通过如下方式创建数组 var arr=new Array(‘a’,’bbc’); 2、使用JSON语法,则可以通过如下方式创建数组 var arr=[‘a’,’bbc’]; 简单JSON 示例 按照最简单的形式,可以用下面这样的JSON 表示名称/值对:
JAVASCRIPT常用对象参考
JavaScript常用对象参考 分类:WEB2008-08-2116:09160人阅读评论(0)收藏举报 JavaScript常用对象参考 Math document body selection window screen location history Date String Event Math对象 E返回欧拉常数e的值 LN1010的自然对数的值 LN22的自然对数的值 LOG2E基数为2的e的对数的值 LOG10E基数为10的e的对数的值 PI圆周率pai的值:3.14159265358979 SQRT1_2返回0.5的平方根 SQRT2返回2的平方根 abs(number)计算number的绝对值 cos(number)计算余弦值 acos(number)计算反余弦值 sin(number)计算正弦值 asin(number)计算反正弦值 tan(number)计算正切值 atan(number)计算反正切值 atan2(x,y)根据指定的坐标返回一个弧度值 ceil(number)返回大于或等于number的整数 floor(number)返回小于或等于number的整数 exp(value)计算以e为基数的value次方的值 log(value)是exp(value)的反方法 max(num1,num2,…)返回两个或多个参数中的最大值 min(num1,num2,…)返回两个或多个参数中的最小值 pow(m,n)计算m的n次方 random()生成0到1的随机数[0,1).生成n到m之间的随机数n+(m-n)*Math.random() round(number)取整(四舍五入) sqrt(number)开平方运算 document write() writeln() open()"打开文档以收集write或writeln方法的输 出:document.open([sURL][,sName][,sFeatures][bReplace]) sName:_blank,_media,_parent,_search,_self,_top sURL:可选项,字符串表达式,用于指定打开文档或窗口的URL地址sFeatures:可选项,字符串表达式,用于指定打开窗口的属性sReplace:true or false;" sFeatures:fullscreen,height,width,left,top,location,resizable,scrollbars,status,toolbar close()关闭输出流 createElement(tag)根据指定标记创建一个HTML标签getElementById(id)获得指定id的HTML元素removeChild(e)移除一个指定的子元素e replaceChild(new,e ) 用new元素替换子元素e appendChild(e)增加一个子元素e(最后) insertBefore(new,e ) 在子元素e前面插入一个new元素
面向对象的思想主要包括什么
1.面向对象的思想主要包括什么? 答:任何事物都可以理解为对象,其主要特征:继承。封装。多态。特点:代码好维护,安全,隐藏信息 2.什么是https://www.360docs.net/doc/6a1548178.html,中的用户控件 答:用户控件就是.ascx扩展名的东西喽,可以拖到不同的页面中调用,以节省代码.比如登陆可能在多个页面上有,就可以做成用户控件,但是有一个问题就是用户控件拖到不同级别的目录下后里面的图片等的相对路径会变得不准确,需要自已写方法调整. 3.列举一下你所了解的XML技术及其应用 答:XML可扩展标记语言,保存配置,站与站之间的交流,Web服务,https://www.360docs.net/doc/6a1548178.html, 4.值类型和引用类型的区别?写出C#的样例代码。 答:基于值类型的变量直接包含值。将一个值类型变量赋给另一个值类型变量时,将复制包含的值。这与引用类型变量的赋值不同,引用类型变量的赋值只复制对对象的引用,而不复制对象本身。 所有的值类型均隐式派生自System.ValueType。 与引用类型不同,从值类型不可能派生出新的类型。但与引用类型相同的是,结构也可以实现接口。 与引用类型不同,值类型不可能包含null 值。然而,可空类型功能允许将null 赋给值类型。 每种值类型均有一个隐式的默认构造函数来初始化该类型的默认值。 值类型主要由两类组成:结构、枚举 结构分为以下几类:Numeric(数值)类型、整型、浮点型、decimal、bool、用户定义的结构。 引用类型的变量又称为对象,可存储对实际数据的引用。声明引用类型的关键字:class、interface、delegate、内置引用类型:object、strin https://www.360docs.net/doc/6a1548178.html,中常用的对象有哪些?分别描述一下。 答: Connection 打开数据库连接 Command 执行数据库命令 DataAdapter 连接数据,执行数据库命令,填充DataSet DataSet 数据在内存中的缓存,数据结构 DataReader 只读向前的读取数据库