文档库 最新最全的文档下载
当前位置:文档库 › Chp6 面向对象三大特性_参考答案

Chp6 面向对象三大特性_参考答案

Chp6 面向对象三大特性_参考答案
Chp6 面向对象三大特性_参考答案

面向对象三大基本特性,五大基本原则

透切理解面向对象三大基本特性是理解面向对象五大基本原则的基础 三大特性是:封装,继承,多态 所谓封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。封装是面向对象的特征之一,是对象和类概念的主要特性。简单的说,一个类就是一个封装了数据以及操作这些数据的代码的逻辑实体。在一个对象内部,某些代码或某些数据可以是私有的,不能被外界访问。通过这种方式,对象对内部数据提供了不同级别的保护,以防止程序中无关的部分意外的改变或错误的使用了对象的私有部分。 所谓继承是指可以让某个类型的对象获得另一个类型的对象的属性的方法。它支持按级分类的概念。继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。通过继承创建的新类称为“子类”或“派生类”,被继承的类称为“基类”、“父类”或“超类”。继承的过程,就是从一般到特殊的过程。要实现继承,可以通过“继承”(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)实现了信息的隐藏:通

《面向对象程序设计》第03章在线测试

《面向对象程序设计》第03章在线测试 《面向对象程序设计》第03章在线测试剩余时间:53:29 答题须知:1、本卷满分20分。 2、答完题后,请一定要单击下面的“交卷”按钮交卷,否则无法记录本试卷的成绩。 3、在交卷之前,不要刷新本网页,否则你的答题结果将会被清空。 第一题、单项选择题(每题1分,5道题共5分) 1、类的指针成员的初始化是通过函数完成的,这个函数通常是 A、析构函数 B、构造函数 C、其它成员函数 D、友元函数 2、在 c++ 中实现封装是借助于 ( ) A、枚举 B、类 C、数组 D、函数 3、一段程序的定义如下,在函数f()中将动态对象的成员n的值改为34的语句应该为 ( ) class A { int n; public: setn(int nl) {n=nl;} A(int x) {n = x; } } int f() {A * ptr = new A(45);... } A、A.n=34; B、ptr.setn(34); C、ptr->setn(34); D、setn(34); 4、假定AB为一个类,则执行“AB *p=new AB(1,2);”语句时共调用该类构造函数的次数为( )。 A、0 B、1 C、2 D、3 5、假定AB为一个类,px为指向该类的一个含有n个对象的动态数组的指针,则执行“del_ete []px;”语句时共调用该类析构函数的次数为( )。 A、0 B、1 C、n D、n+1 第二题、多项选择题(每题2分,5道题共10分) 1、下面有关类说法正确的是( ) A、一个类可以有多个构造函数 B、一个类只有一个析构函数 C、析构函数需要指定参数

面向对象的高级特性_参考答案

Ⅰ.选择题 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)

第3章 面向对象程序设计基础

第3章面向对象程序设计基础

第3章面向对象程序设计基础 【1】什么是Java程序使用的类?什么是类库? 答:类是将一类事物的特性描述出来,然后如果用这个类来定义对象,则该对象就拥有了这个类所描述的所有特性。 在Java系统中,系统定义好的类根据实现的功能不同,可以划分成不同的集合,每个集合称为一个包,所有包合称为类库。 【2】如何定义方法?在面向对象程序设计中方法有什么作用? 答:方法的定义由两部分组成:方法声明和方法体。 方法的声明如下: 返回值类型方法名(参数类型形式参数1,参数类型形式参数2…){ 程序代码; 返回值; } 在面向对象程序设计中,方法的作用是完成对类和对象属性操作。 【3】简述构造方法的功能和特点。下面的程序片段是某学生为student类编写的构造方法,请指出其中的错误。 void Student(int no,String name) {

studentNo=no; studentName=name; return no; } 答:构造方法的功能是:构造方法是一个特殊的方法,主要用于初始化新创建的对象; 特点:构造方法的方法名要求与类名相同,用户不能直接调用,只能通过new运算符调用,而且构造方法是不返回任何数据类型,甚至也不返回void数据类型,即不能在构造方法前加void。 错误之处:(1)构造方法Student()前不能加void,(2)不能用return语句,(3)类名Student 首字母S改成小写s. 【4】定义一个表示学生的student类,包括的域有学号、姓名、性别、年龄,包括的方法有获得学号、姓名、性别、年龄及修改年龄。编写Java程序创建student类的对象及测试其方法的功能。 class Student { String id; String name; String sex; int age; void talk(){

《面向对象程序设计》第03章在线测试

《面向对象程序设计》第03章在线测试 A B C D 、静态成员函数 A B C D 、在关键字public)成员。 A B C D class 类中的所有成员在定义时都没有使用关键字 pubilc,private,protected A B C D AA是一个类,是该类的一个成员函数,则参数表中隐含的第一个参数为( A B C D

D、函数体中必须有 del_ete 语句 2、下列描述属于类的成员函数的是( ) A、构造函数 B、析构函数 C、友元函数 D、拷贝构造函数 3、假定AB为一个类,则执行“AB *s=new AB(a,5);”语句的结果是 A、动态生成对象AB赋值给变量s B、动态生成对象s C、如果对象AB中有公有成员a,则s->a可以访问该成员 D、动态生成对象AB,该对象的地址赋值给变量s 4、使类中的一个指针成员指向一块动态存储空间时,通常不能在下面哪些函数中实现() A、析构 B、构造 C、任一函数成员 D、友元 5、下面关于常对象的说法正确的是() A、在定义常对象时必须进行初始化。 B、常对象的数据成员不能被更新。 C、常对象不能作为类的成员。 D、通过常对象可以调用该对象的成员函数。 第三题、判断题(每题1分,5道题共5分) 1、所谓数据封装就是将一组数据和与这组数据有关操作组装在一起,形成一个实体,这实体也就是数据类型。 正确错误 2、若Sample类中的一个成员函数说明如下: Void set(Sample &a) 其中Sample &a表示的含义是.a是类Sam ple的对象引用,用来作函数Set()的形参。

正确错误 、某类中的友元类的所有成员函数可以存取或修改该类中的私有成员。 正确错误 、静态成员函数允许访问类的数据成员。 正确错误 是一个隐含于每一个类的成员函数的特殊指针,它是一个指向正在被某个成员函数操作的对象的指针正确错误

面向对象的三大特性(封装-继承-多态)

一丶封装 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,,private,这四个属性的访问权限依次降低。 继承 面向对象编程(OOP) 语言的一个主要功能就是“继承”。继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。 通过继承创建的新类称为“子类”或“派生类”。 被继承的类称为“基类”、“父类”或“超类”。 继承的过程,就是从一般到特殊的过程。 要实现继承,可以通过“继承”(Inheritance)和“组合”(Composition)来实现。 在某些OOP 语言中,一个子类可以继承多个基类。但是一般情况下,一个子类只能有一个基类,要实现多重继承,可以通过多级继承来实现。 继承概念的实现方式有三类:实现继承、接口继承和可视继承。 ?实现继承是指使用基类的属性和方法而无需额外编码的能力; ?接口继承是指仅使用属性和方法的名称、但是子类必须提供实现的能力; ?可视继承是指子窗体(类)使用基窗体(类)的外观和实现代码的能力。 在考虑使用继承时,有一点需要注意,那就是两个类之间的关系应该是“属于”关系。例如,Employee 是一个人,Manager 也是一个人,因此这两个类都可以继承Person 类。但是Leg 类却不能继承Person 类,因为腿并不是一个人。

面向对象程序设计期末复习分析

一、单项选择题( 在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内。每小题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. 面向对象开发方法一改过去传统的以_功能分析,面向过程_为基础的_对象_的结 构化分析与设计方法,它模拟人们理解和处理客观世界的方式来分析问题,把系统视为

面向对象特征提取

面向对象特征提取 1、启动eCognition,选择Rule Set Mode。 2、新建工程:File -> New Project或者点击按钮,选择影像or_196560080.tif,确定。

3、界面布局:选择Classification -> Class Hierarchy,打开类层次视图;选择Image Objects -> Image Objects Information,打开目标信息视图;选择Process -> Process Tree,打开进程树视图;选择Tools -> Feature View,打开特征视图。通过拖拽,形成下面的工作界面:

4、设置尺度参数:设置三个分割尺度,分别是100,70,50,三个尺度对应的层次分别命名为L1,L2,L3。 5、第一尺度(100)分割:在Process Tree中右键,选择Append New,在Algorithm中选择Segmentation -> multiresolution segmentation,Image Object Domain中选择Pixel Level,而Algorithm parameters中的Level Name命名为L1,Scale Parameter设为100,Shape设为0.2, Compactness设为0.5,如下图所示: 点击OK后,Process Tree中会多出一条记录,如下:

在该记录上点击右键,选择Execute,即按照设定的参数进行分割,分割的效果如下: 6、第二尺度(70)分割:在eCognition的尺度分层规则中,大尺度对应的层摆在最上面,小尺度的层摆在下面。在Process Tree中右键,选择Append New,在Algorithm中选择Segmentation -> multiresolution segmentation。由于第二尺度对应为第二层次,因此其应该在第一层(L1)下面,所以Image Object Domain中选择image object level,Level设置为L1,而Algorithm parameters中的Level Name命名为L2,Level Usage 设置为Create below,Scale Parameter设为70,Shape设为0.2,Compactness设为0.5,如下图所示: 按第5步的步骤运行该尺度的分割,可以得到该尺度下的分割结果。 7、第三尺度(50)分割:与第6步一样,只不过Image Object Domain中的Level设置为L2,Algorithm parameters中的Level Name设置为L3,Scale parameter设置为50,如下图:

面向对象的三大特性

面向对象的三大特性 类:属性(变量)和方法 一、封装 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.运行时多态的三原则: *对象类型不变。

面向对象的分析通常要建立三个模型,请问三个模型的作用

1.面向对象的分析通常要建立三个模型,请问三个模型的作用? 答:a)功能模型:表达系统的详细需求,为软件的进一步分析和设计打下基础。在面向对象方法中,由用例图和场景描述组成。 b)对象模型:表示静态的、结构化的系统“数据”性质。描述现实世界中实体的对象以及它们之间的关系,表示目标系统的静态数据结构。在面向对象方法中,类图是构建对象模型的核心工具。 c)动态模型:描述系统的动态结构和对象之间的交互,表示瞬时的、行为化的系统的“控制”特性。面向对象方法中,常用状态图、顺序图、合作图、活动图构建系统的动态模型。 2.请举例说明用例之间的包含关系和扩展关系的区别? 答:包含关系:通常是指一个大的用例包含了几个小的用例,几个小的用例组成一个大的用例; 扩展关系:两个独立的用例,完成一个后可以开启另一个,两个用例本身都是独立的。 例如:用户管理的用例包括用户添加和用户删除;用户登陆用例后可以进行用例退出。 3.软件设计中的抽象是什么意思? 答:它是一种思维工具,就是把事物本质的共同特性抽出来而不考虑其他细节,比如说我们可以把把男人女人老人小孩的共同本质特性抽出来之后形成一个概念"人",这个概念就是抽象的结果。在软件工程中就是这样,在每个阶段中,抽象的层次逐步降低,在软件结构设计中的模块分层也是由抽象到具体的分析和构造出来的。 4.活动图与状态图的区别? 答:状态图是描述某一对象的状态转化的,它主要表现的是该对象的状态。从状态图中可以看出,该对象在接受了外界的某种刺激之后,会做出什么样的反应。描述的是一个对象的事情。可以说是对类图的一种补充,帮助开发者完善某一类。 活动图是描述系统在执行某一用例时的具体步骤的,它主要表现的是系统的动作。从活动图中可以看出,系统是如何一步一步的完成用例规约的,主要用于业务建模阶段。活动图描述的是整个系统的事情。可以说活动图是对用例图的一种细化,帮助开发者理解业务领域。

遥感专题讲座——影像信息提取(四、面向对象特征提取)

面向对象的影像分类技术 “同物异谱,同谱异物”会对影像分类产生的影响,加上高分辨率影像的光谱信息不是很丰富,还有经常伴有光谱相互影响的现象,这对基于像素的分类方法提出了一种挑战,面向对象的影像分类技术可以一定程度减少上述影响。 本小节以ENVI中的面向对象的特征提取FX模块为例,对这种技术和处理流程做一个简单的介绍。 本专题包括以下内容: ??●面向对象分类技术概述 ??●ENVI FX简介 ??●ENVI FX操作说明 1、面向对象分类技术概述 面向对象分类技术集合临近像元为对象用来识别感兴趣的光谱要素,充分利用高分辨率的全色和多光谱数据的空间,纹理,和光谱信息来分割和分类的特点,以高精度的分类结果或者矢量输出。它主要分成两部分过程:影像对象构建和对象的分类。

影像对象构建主要用了影像分割技术,常用分割方法包括基于多尺度的、基于灰度的、纹理的、基于知识的及基于分水岭的等分割算法。比较常用的就是多尺度分割算法,这种方法综合遥感图像的光谱特征和形状特征,计算图像中每个波段的光谱异质性与形状异质性的综合特征值,然后根据各个波段所占的权重,计算图像所有波段的加权值,当分割出对象或基元的光谱和形状综合加权值小于某个指定的阈值时,进行重复迭代运算,直到所有分割对象的综合加权值大于指定阈值即完成图像的多尺度分割操作。 影像对象的分类,目前常用的方法是“监督分类”和“基于知识分类”。这里的监督分类和我们常说的监督分类是有区别的,它分类时和样本的对比参数更多,不仅仅是光谱信息,还包括空间、纹理等信息。基于知识分类也是根据影像对象的熟悉来设定规则进行分类。 目前很多遥感软件都具有这个功能,如ENVI的FX扩展模块、易康(现在叫Definiens)、ERDAS的Objective模块、PCI的FeatureObjeX(新收购)等。 表1为三大类分类方法的一个大概的对比。

面向对象的三个基本特征和概念

面向对象的三个基本特征(讲解) 面向对象的三个基本特征是:封装、继承、多态。 封装 封装最好理解了。封装是面向对象的特征之一,是对象和类概念的主要特性。 封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。 继承 面向对象编程 (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的话:“不要犯傻,如果它不是晚邦定,它就不是多态。” 那么,多态的作用是什么呢?我们知道,封装可以隐藏实现细节,使得代码模块化;继承可以扩展已存在的代码模块(类);它们的目的都是为了——代码重用。而多态则是为了实现另一个目的——接口重用!多态的作用,就是为了类在继承和派生的时候,保证使用“家谱”中任一类的实例的某一属性时的正确调用。

《面向对象程序设计》第03章在线测试.docx

A B C D ab 为一个类,则执行 ( ) 。 A B C D 、类的构造函数被自动调用执行的情况是在定义该类的 A B C D 、一段程序的定义如下,在函数的值改为34的语句应该为 A B C D 为一个类,个对象的动态数组的指针,则执行“ A B C D

D、另一个类的对象 2、下面关于成员函数的说法错误的是() A、类定义中只能说明函数成员的函数头,不能定义函数体 B、类中的函数成员可以在类体中定义,也可以在类体之外定义 C、类中的函数成员在类体之外定义时必须要与类声明在同一文件中 D、在类体之外定义的函数成员不能操作该类的私有数据成员 3、下面关于静态数据成员的说法错误的是() A、静态数据成员是类的所有对象所共有的 B、静态数据成员要在构造函数内初始化 C、类的每个对象有自己的静态数据成员 D、静态数据成员不能通过类的对象调用 4、假定AB为一个类,则执行“AB *s=new AB(a,5);”语句的结果是 A、动态生成对象AB赋值给变量s B、动态生成对象s C、如果对象AB中有公有成员a,则s->a可以访问该成员 D、动态生成对象AB,该对象的地址赋值给变量s 5、下面关于常对象的说法正确的是() A、在定义常对象时必须进行初始化。 B、常对象的数据成员不能被更新。 C、常对象不能作为类的成员。 D、通过常对象可以调用该对象的成员函数。 第三题、判断题(每题1分,5道题共5分) 1、若Sample类中的一个成员函数说明如下: Void set(Sample &a) 其中Sample &a表示的含义是.a是类Sample的对象引用,用来作函数Set()的形参。 正确错误

面向对象的思想主要包括什么

1.面向对象的思想主要包括什么? 答:任何事物都可以理解为对象,其主要特征:继承。封装。多态。特点:代码好维护,安全,隐藏信息 2.什么是https://www.wendangku.net/doc/aa6205755.html,中的用户控件 答:用户控件就是.ascx扩展名的东西喽,可以拖到不同的页面中调用,以节省代码.比如登陆可能在多个页面上有,就可以做成用户控件,但是有一个问题就是用户控件拖到不同级别的目录下后里面的图片等的相对路径会变得不准确,需要自已写方法调整. 3.列举一下你所了解的XML技术及其应用 答:XML可扩展标记语言,保存配置,站与站之间的交流,Web服务,https://www.wendangku.net/doc/aa6205755.html, 4.值类型和引用类型的区别?写出C#的样例代码。 答:基于值类型的变量直接包含值。将一个值类型变量赋给另一个值类型变量时,将复制包含的值。这与引用类型变量的赋值不同,引用类型变量的赋值只复制对对象的引用,而不复制对象本身。 所有的值类型均隐式派生自System.ValueType。 与引用类型不同,从值类型不可能派生出新的类型。但与引用类型相同的是,结构也可以实现接口。 与引用类型不同,值类型不可能包含null 值。然而,可空类型功能允许将null 赋给值类型。 每种值类型均有一个隐式的默认构造函数来初始化该类型的默认值。 值类型主要由两类组成:结构、枚举 结构分为以下几类:Numeric(数值)类型、整型、浮点型、decimal、bool、用户定义的结构。 引用类型的变量又称为对象,可存储对实际数据的引用。声明引用类型的关键字:class、interface、delegate、内置引用类型:object、strin https://www.wendangku.net/doc/aa6205755.html,中常用的对象有哪些?分别描述一下。 答: Connection 打开数据库连接 Command 执行数据库命令 DataAdapter 连接数据,执行数据库命令,填充DataSet DataSet 数据在内存中的缓存,数据结构 DataReader 只读向前的读取数据库

js的面向对象的三大特征

◆js的面向对象的三大特征 1.封装性 所谓封装,就是把我们抽象出的属性和对属性的操作写到类的定义中,称为封装. js 中实现封装主要有两种封装( 公开,私有) class Person(name,sal){ https://www.wendangku.net/doc/aa6205755.html,=name; //公开 var sal=sal;//私有 this.showInfo=function(){ //公开 window.alert(https://www.wendangku.net/doc/aa6205755.html,+””+sal); } showInfo2(){ //把函数私有化. window.alert(“你好”+https://www.wendangku.net/doc/aa6205755.html,+””+sal) } } ◆通过构造函数添加成员方法和通过原型法添加成员方法的区别 1.通过原型法分配的函数是所有对象共享的. 2.通过原型法分配的属性是独立.(如果你不修改属性,他们是共享) 3.建议,如果我们希望所有的对象使用同一一个函数,最好使用原型法添加函 数,这样比较节省内存. function Dog(){ this.shout=function(){ } } //原型法 Dog.prototype.shout=function (){ window.alert("小狗尖叫"+https://www.wendangku.net/doc/aa6205755.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面相对象的继承 看一段代码->问题是什么? ①对象冒充 代码如下:

相关文档
相关文档 最新文档