20100609面向对象程序设计基础-A

合集下载

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

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

第4章面向对象的程序设计基础如前所述,Java语言是一种纯面向对象的编程语言,面向对象的程序设计是以类为基础的。

从本章开始,我们将从类入手,详细介绍面向对象程序设计的基本思想和方法。

本章将简要介绍面向对象的基本概念、定义类、构造对象等。

4.1 面向对象的基本概述随着计算机应用的深入,软件的需求量越来越大,另一方面计算机硬件飞速发展也使得软件的规模越来越大,导致软件的生产、调试、维护越来越困难,因而发生了软件危机。

人们期待着一种效率高、简单、易理解且更加符合人们思维习惯的程序设计语言,以加快软件的开发步伐、缩短软件开发生命周期,面向对象就是在这种情况下应运而生的。

4.1.1 类和对象我们可以把客观世界中的每一个实体都看作是一个对象,如一个人、一辆汽车、一个按钮、一只鸟等等。

因此对象可以简单定义为:“展示一些定义好的行为的、有形的实体”。

当然在我们的程序开发中,对象的定义并不局限于看得见摸得着的实体,诸如一个贸易公司,它作为一个机构,并没有物理上的形状,但却具有概念上的形状,它有明确的的经营目的和业务活动。

根据面向对象的倡导者Grady Booch的理论,对象具有如下特性:1)它具有一种状态;2)它可以展示一种行为;3)它具有唯一的标识。

对象的状态通过一系列属性及其属性值来表示;对象的行为是指在一定的期间内属性的改变;标识是用来识别对象的,每一个对象都有唯一的标识,诸如每个人都有唯一的特征,在社会活动中,使用身份证号码来识别。

我们生活在一个充满对象的世界中,放眼望去,不同形状、不同大小和颜色各异的对象;静止的和移动的对象。

面对这些用途各异、五花八门的对象,我们该如何下手处理它们呢?借鉴于动物学家将动物分成纲、属、科、种的方法。

我们也可以把这些对象按照它们所拥有的共同属性进行分类。

例如,麻雀、鸽子、燕子等都叫作鸟。

它们具有一些共同的特性:有羽毛、有飞翔能力、下蛋孵化下一代等。

因此我们把它们归属为鸟类。

面向对象程序设计试卷A

面向对象程序设计试卷A

⾯向对象程序设计试卷A武汉⼤学测绘学院2008-2009学年度第⼆学期期末考试《⾯向对象程序设计》课程试卷(A卷) 出题者李军, 李英冰,艾松涛审核⼈班级学号姓名成绩⼀、选择题(以下各题中只有⼀个正确答案。

每⼩题2分,共40分)1.C#中的数据类型long是( C)A.Int32B. Int16C. Int64D. int2. C#中的char数据类型是(B )A.ASCII字符集B. unicode字符集C. 其他字符集3. C#中封装⼀组API函数是⽤( C)A. 抽象类B. 分部类C. 静态类4.”委托”是( D)A.接⼝B. 函数C. 抽象类D. 密封类5. ”事件”是( BC)A.接⼝B. 函数C. 属性D. 密封类6.C#中的类继承( SonClass : BaseClass )指的是( B)A. private继承B. public继承C. protected继承7.+运算符的重载,正确的定义是(B )A. static double operator +( double a, double b){ }B. public static double operator +( double a, double b){ }C. public double operator +( double a, double b){ }D. protected double operator +( double a, double b){ }8. C#中的属性是(D )A.变量B.私有函数C.字段D. get/set⽅法9. C#中的接⼝是(B )A.属性B.对不同对象相同功能的封装C.构造函数D.变量10. string st, st1 = ”I am”, st2 = ” here.”; 不正确的语句是(B)A. st=st1+st2;B. st=strcat(st1, st2);C. st=string.Concat(st1, st2);11. C#⼯具箱中放的是(C )A.都是控件B. 都是组件C.有控件,也有组件12. 控件类Button的Text是( C)A. private变量B. public变量C. 属性13. 在/doc/2be7a50843323968011c924f.html 中,⽤( B)对象进⾏SQL Server数据库的连接。

面向对象的程序设计基础课件

面向对象的程序设计基础课件
2. AddObject方法是在运行时向容器对象中添加对象。 3. Clear方法是清除组合框或列表框中的内容。 4. Refresh方法是重画表单或控件,并刷新所有值。 5.Setall方法是为容器对象中的控件或某类控件指定属性
设置。 6. SetFocus方法是为一个控件指定焦点 7.Show方法是显示一个表单,并且确定是模式表单还是无
如按【Tab】键或单击,或者在代码中使用 SetFocus方法
VFP的核心事件集
• Lostfocus:对象失去焦点,由用户动作引起,如按【 Tab】键或单击,或者在代码中使用SetFocus方法
• KeyPress:用户按下或释放键 • MouseDown:当鼠标指针停在一个对象上时,用户按
下鼠标按钮。 • MouseMove:用户在对象上移动鼠标 • MouseUp:当鼠标指针停在一个对象上时,用户释放
对象
1每个对象都具有属性以及与之相关的事件和方法,通过对象的属 性、事件和方法来处理对象。
§ 属性 定义对象的特征或某一方面的行为,如大小、颜色、所处 的位置等。
§ 事件 是由对象识别的一个动作,可以编写相应的代码,以对此 动作进行响应。事件是一种预先定义好的特定动作,被用户或系 统激活,每个对象都可以对事件的动作进行识别和响应。在多数 情况下,事件是由用户的交互行为产生的 (用户不能创建新的事 件)
返 回
类的分类
v 基类 ( base class ) ——VFP 系统提供的内部定义的类, 用做其他用户自定义类的基础。(如表单和所有控件)
v 子类(Subclass)——以其他类定义为起点,为某一种对象 所建立的新类。子类将继承任何对父类(即子类所基于的 类)所做的修改。
v 用户自定义类——与基类相似,但由用户定义,并且可用 来派生子类。这种类没有可视化表示形式。

面向对象程序设计基础ppt课件

面向对象程序设计基础ppt课件

软件对象通过相互间传递消息来相互作用和通信,一个消息由三部分组成:
1. 发送消息的对象
2. 接收发送消息
(调用发送对
第7页
对象 A
对象B
2021/3/30
面向对象的概念
❖ 一个例子
class Hello {
变量
方法showString()
private String s;
第3章 面向对象程序设计基础
;.
1
面向对象的概念
❖ 所谓面向对象的方法,就是使我们分析、设计和实现一个系统的方法尽可能自然地使用我们 在生活中用到的以对象为中心的思想,分析、认识、设计一个系统的方法。包括: ➢ 面向对象分析(OOA, Object-Oriented Analysis) ➢ 面向对象设计(OOD, Object-Oriented Design) ➢ 面向对象程序设计(OOP, Object-Oriented Program)
❖ 面向对象技术主要围绕以下几个概念讨论: ➢对象的封装(抽象数据类型)、类与对象、 继承性、多态性。
第2页
2021/3/30
面向对象的概念
❖ 对象(Object) 有两个层次的概念: ➢ 现实生活中对象指的是客观世界的实体,它由状态(State)和行为(Behavior)构成 ; ➢ 程序中对象是现实世界对象的模型,是一组变量和相关方法的集合。变量 (Variables)表示现实对象的状态,方法(Methods)表现现实世界对象的行为,这些变 量和方法叫做这个对象的成员(Member)。
变量
第3页
方法
2021/3/30
面向对象的概念
可将现实生活中的对象经过抽象,映射为 程序中的对象。对象在程序中通过一种抽象 数据类型来描述,就称为类(Class)。

《面向对象程序设计基础》题库

《面向对象程序设计基础》题库
16 质数是指该数除了 1 之外没有其他因子。试给出一个算法,判断一个整数是否为质数。
难易程度∶ C∶较难 认知程度∶ Ⅳ∶综合运用 预计答题时间∶ 10 分钟 参考答案∶
17 完全数是指该数的所有因子之和等于它自身的数。例如 6 是完全数(1+2+3),28 也是完 全数(1+2+4+7+14)。试给出一个算法,判断一个整数是否为完全数。
11 给出十进制数 496 的二进制、八进制和十六进制的表示。 难易程度∶ B∶中等 认知程度∶ Ⅲ∶简单应用 预计答题时间∶ 3 分钟 参考答案∶49610=(111110000)2=(760)8=(1F0)16
12 我们可将仓库中存储的商品看成实体,试描述该实体。 难易程度∶ B∶中等 认知程度∶ Ⅱ∶理解
7 变量的值主要通过赋值运算改变。赋值运算由赋值符号“=”将赋值表达式分为左右两 边,左边必须是 A ,不能是 B 、 C 或其他表达式 。能放在赋值号左边的语 法单位又称为 D 。 难易程度∶ A∶较易 认知程度∶ Ⅰ∶识记 预计答题时间∶ 0.5 分钟 参考答案∶ A∶变量;B∶常量;C∶符号常量;D∶左值
B ,而有符号整数的取值
6 对数据进行操作是通过运算完成的, A 与 B 组成表达式。一个表达式有两 个重要内容∶ C 和 D 。其中C不仅取决与运算符的语义,而且还与运算符执行次 序密切相关,而运算符的执行次序由运算符的 E 和 F 决定。 难易程度∶ A∶较易 认知程度∶ Ⅰ∶识记
5
预计答题时间∶ 0.5 分钟 参考答案∶ A∶运算符;B∶操作数;C∶表达式的求值结果;D∶表达式结果的类型;E∶ 优先级;F∶结合性
参考答案∶ A∶顺序;B∶选择;C∶循环
4 面向对象程序设计建立在结构化程序设计的基础上,它围绕 A 来设计程序,而不是 操作本身,且以 B 为构造程序的基本单位,具有 C 、 D 、 E 、 F 等特点。 难易程度∶ B∶中等 认知程度∶ Ⅰ∶识记 预计答题时间∶ 1 分钟 参考答案∶ A∶被操作的数据;B∶类;C∶封装;D∶数据抽象;E∶继承;F∶多态性

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

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

第4章 面向对象程序设计基础
2.每个对象都有自己的非静态方法,这些非静态方
法是多个副本;对于静态成员,在内存中只有一个
副本。(当使用一个数据副本就足够时,使用静态 成员来节省空间。) 3.非静态方法可以直接访问类中的任意成员;静态 方法可以直接访问静态成员或通过类访问静态成员,
但是不能直接访问非静态成员,只能通过类的实例
第4章 面向对象程序设计基础
class ClassB:ClassA //ClassB是类ClassA的派生类 { public void SetB() { ClassA BaseA=new ClassA(); //创建了ClassA的实例BaseA BaseA.a=11; //正确,允许访问基类公有成员 BaseA.b=22; //错误,不允许访问基类私有成员 BaseA.c=33; //正确,允许访问基类保护成员 } };
第4章 面向对象程序设计基础
public void SetColor(string newColor) { Color=newColor; } public string GetColor() { return Color; } } class Test { public static void Main() {Pen myPen=new Pen() ; Console.WriteLine("The price is {0}",myPen.GetPrice()); Console.WriteLine("The Color is {0}",myPen.Color); } }
第4章 面向对象程序设计基础
4.1 面向对象概述 面向对象的程序设计(OOP,Object-Oriented Programming)是一种基于结构分析的、以数据 为中心的程序设计方法。它的主要思想是将数据及 处理这些数据的操作都封装(Encapsulation)到 一个称为类(Class)的数据结构中。使用这个类 时,只需要定义一个类的变量即可,这个变量叫做 对象(Object)。通过调用对象的数据成员完成对 类的使用。

面向对象程序设计

面向对象程序设计

面向对象程序设计面向对象程序设计(Object-Oriented Programming,简称OOP)是一种编程范式,它使用“对象”来设计软件。

对象可以包含数据(通常称为属性)和代码(通常称为方法或函数)。

面向对象程序设计的核心概念包括封装、继承、多态和抽象。

封装封装是将数据(属性)和操作这些数据的方法(行为)绑定在一起的过程。

封装的目的是隐藏对象的内部状态和实现细节,只暴露出一个可以被外界访问的接口。

这样,对象的使用者不需要了解对象内部的复杂性,只需要通过公共接口与对象交互。

继承继承是一种机制,允许新创建的类(子类)继承现有类(父类)的属性和方法。

这使得代码重用变得可能,同时也支持层次结构的创建。

子类可以扩展或修改父类的行为,但通常保持父类的大部分功能。

多态多态性是指允许不同类的对象对同一消息做出响应,但具体的行为会根据对象的实际类型而有所不同。

在面向对象编程中,多态性通常是通过方法重载(同一个类中多个同名方法,参数不同)和方法重写(子类重写父类的方法)实现的。

抽象抽象是简化复杂的现实世界问题的过程,只关注对于当前目标重要的方面,忽略不相关的细节。

在面向对象编程中,抽象通常是通过创建抽象类和接口来实现的。

抽象类可以包含抽象方法,这些方法没有具体的实现,必须由子类提供。

类和对象类是创建对象的蓝图或模板,定义了对象的结构和行为。

对象是根据类创建的实例,具有类定义的属性和方法。

每个对象都是唯一的,即使它们是同一个类的实例。

面向对象设计原则在面向对象设计中,有几个关键的设计原则,如单一职责原则、开放-封闭原则、里氏替换原则、接口隔离原则和依赖倒置原则等。

这些原则帮助开发者创建灵活、可维护和可扩展的系统。

面向对象的优势- 代码重用:通过继承和多态性,可以减少代码重复。

- 易于维护:封装和抽象使得修改系统的一部分不会影响其他部分。

- 模块化:系统被分解为独立的模块,每个模块负责特定的功能。

- 可扩展性:系统可以容易地扩展新功能,而不需要重写现有代码。

面向对象程序设计基础

面向对象程序设计基础

允许声明重载函数和带默认形参值的函

19
内联成员函数
类 为了提高运行时的效率,对于较简单 和 的函数可以声明为内联形式。 对 内联函数体中不要有复杂结构(如循 象 环语句和switch语句)。
在类中声明内联成员函数的方式:
将函数体放在类的声明中。 使用inline关键字。
20
内联成员函数举例(一)

int NewS);

void ShowTime();

private: int Hour,Minute,Second;
};
特定的访问权限
边界
8
继承与派生
OOP
继承是指一个类(派生类)从另一个
的 类(基类)中获得属性的过程,是C++
基 本
中支持层次分类的一种机制,允许程序
特 员在保持原有类特性的基础上,进行更
int Hour, Minute, Second;
};
成员数据
16
void Clock :: SetTime(int NewH, int NewM, int NewS)
{ Hour=NewH; Minute=NewM; Second=NewS;
} void Clock :: ShowTime() {
的 述的过程。

先注意问题的本质及描述,其次是实现

过程或细节。
特 点
数据抽象:描述某类对象的属性或状态 (对象相互区别的物理量)。
代码抽象:描述某类对象的共有的行为
特征或具有的功能。
抽象的实现:通过类的声明。
3
OOP
抽象实例——钟表
数据抽象:

int Hour, int Minute, int Second
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

封面作者:Pan Hongliang东莞理工学院(本科)试卷(A卷)2009 --2010 学年第2 学期《面向对象程序设计基础》试卷开课单位:计算机学院,考试形式:闭、开卷,允许带入场Ⅰ选择题(全部为单选,请把结果写在本大题后面的答题纸内相应的横线上,写在其它地方无效,每小题2分,共50分)1 以下叙述中不正确的是:()A 函数名属于用户标识符,其起名规则与变量相同B 形参只能是变量C 为保证程序的正确运行,函数中定义的变量不能与其他函数中定义的变量同名D 函数中定义的变量可以与其他函数中定义的变量同名2 有定义语句:int a[]={1,2,3,4,5,6,7},*p=A *q=&a[5]; ()则下列表达式中值不等于5的是A *q--B *--qC --*qD q-p3 以下叙述中错误的是:()A 局部变量的定义可以在函数体内部B 全局变量的定义可以在函数以外的任何位置C 同一程序中,全局变量和局部变量不能同名D 函数的形参属于局部变量4 以下叙述中错误的是:()A 变量的作用域取决于变量定义语句出现的位置B 同一程序中,全局变量的作用域一定比局部变量的作用域大C 局部变量的作用域是在定义它的函数体内D 全局变量的作用域是从定义位置开始至源文件结束5 关于VC6建立的工程的说法,正确的是:()A 工程只能包含.cpp和.h类型的文件B 工作区文件的后缀是.dspC 用鼠标双击工作区文件可以打开整个工程D 在VC的FileView中可以看到工程中所有的文件,包括工作区文件,项目文件等6 下面关于在VC6环境下调试运行的说法错误的是()A 设置合适的断点(F9),按Ctrl+F5开始调试运行B 设置合适的断点,按F5开始运行C 调试时,可以随时观察断点处的变量值D 在调试运行过程中,可随时按下Stop Debugging(Shift+F5)结束调试运行7 下列情况中,哪一种情况不会调用拷贝构造函数()A 用派生类的对象去初始化基类对象时B 将类的一个对象赋值给该类的另一个对象时C 函数的形参是类的对象,调用函数进行形参和实参结合时D 函数的返回值是类的对象,函数执行返回调用者时8 以下哪一关键字可用于重载函数的区分()A externB staticC constD virtual9 下列有关内联函数的叙述中,正确的是()A 内联函数在调用时发生控制转移B 使用内联函数有利于代码重用C 必须通过关键字inline来定义D 是否最后内联由编译器决定10 实现运行时多态的机制是()A 虚函数B 重载函数C 静态函数D 模版函数11 以下哪个符号(或组合)是作用域限定符()A ->B .C ::D []12 下列关于this指针的说法正确的是()A this指针存在于每个函数之中B 在类的非静态函数中this指针指向调用该函数的对象C this指针是指向虚函数表的指针D this指针是指向类的函数成员的指针13 若有以下类定义class MyClass {public:MyClass() { cout << 1; }};则执行语句MyClass a,b[2],*p[2];后,程序的输出结果是()A 11B 111C 1111D 1111114 下面程序的输出结果是()#include <iostream>using namespace std;int i = 0;int fun(int n){static int a = 2;a++;return a+n;}void main(){int k = 5;{int i = 2;k += fun(i);}k += fun(i);cout << k;}A 13B 14C 15D 1615 下面程序的输出结果是()#include <iostream>using namespace std;class A{public:A (int i) { x = i; }void dispa () { cout << x << “,”; }private :int x ;};class B : public A{public:B(int i) : A(i+10) { x = i; }void dispb() { dispa(); cout << x << endl; } private :int x ;};void main(){B b(2);b.dispb();}A 10,2B 12,10C 12,2D 2,216 下面程序的输出结果是()#include <iostream>using namespace std;class Base{public:Base(int i) { cout << i; }~Base () { }};class Base1: virtual public Base{public:Base1(int i, int j=0) : Base(j) { cout << i; }~Base1() {}};class Base2: virtual public Base{public:Base2(int i, int j=0) : Base(j) { cout << i; }~Base2() {}};class Derived : public Base2, public Base1{public:Derived(int a, int b, int c, int d) : mem1(a), mem2(b), Base1(c), Base2(d), Base(a){ cout << b; }private:Base2 mem2;Base1 mem1;};void main() { Derived objD (1, 2, 3, 4); }A 134122B 123412C 14302012D 14321217 下面程序的输出结果是()#include <iostream>using namespace std;int countp=0;class Point{int X,Y;public:Point(int x=0,int y=0) { X=x; Y=y;}Point(Point &p){X=p.X;Y=p.Y;countp++;}friend Point myfun(Point p1 ,Point p2 ,const Point &p3);};Point myfun(Point p1,Point p2,const Point &p3){Point tmp(p1.X+p2.X+p3.X,p1.Y+p2.Y+p3.Y);return tmp;}void main(){Point pp0,pp1(1,2),pp2(1);myfun(pp0,pp1,pp2);std::cout<<countp<<endl;}A 0B 4C 3D 618 下面程序的输出结果是()#include <iostream >using namespace std;void swap1( int &v1, int &v2){int tmp = v2;v2 = v1;v1 = tmp;}void swap1( int *v1, int *v2){int tmp= *v2;*v2 = *v1;*v1 = tmp;}void main(){int i = 10, j = 20; swap1(i,j); swap1(&i,&j);cout<<i<<”,”<<j<<endl;}A 10,20B 20,10C 10,10D 20,2019 下面的程序段的运行结果为()char str[] = "job", *p = str;cout << *(p+2) << endl;A 98B 无输出结果C 字符’b’的地址D 字符’b’20 double型数据所占字节数是()A 2B 4C 6D 821 若变量都已经正确定义,以下表达式中非法的是()A a/=b+cB a % 4.0C a=1/2*(x=y=10 , x*3) Da=b=c22 以下选项中不是字符常量的是()A ‘\v’B ‘\x6d’C ‘w’D “0”23 以下非法的字符串常量为()A “\\ \\”B “It’s”C “m=\abc”D “$12.8”24 对于类的常成员函数的描述正确的是()A 常成员函数不修改类的数据成员B 常成员函数可以对类的数据成员进行修改C 常成员函数只能由常对象调用D 常成员函数不能访问类的数据成员25 使用如setw()的操作符对数据进行格式输出时,应包含的头文件是()A iostreamB fstreamC stdioD iomanip选择题答题纸:1 212 223 234 245 2567891011121314151617181920Ⅱ上机编码试题,共5小题,共50分,请按要求答在给定的项目文件中提交。

(本页不得撕掉! 答本大题前请先交卷!) ! 请于考试结束前关闭你的项目,删去你的文件夹下的Debug文件夹,然后把你的整个项目文件夹打包成一个“.rar”文件提交到下面服务器中相应的地方。

! 服务器ftp://219.222.170.198提交考试结果的用户名及密码username/password: cs2009w/ cs2009w! 你的程序不能有编译错误,否则以0分记!以“200941404101 陈晓雪”为例,提交的文件名应为“200941404101陈晓雪_面向对象A.rar”,解压后的文件夹也应为“200941404101陈晓雪_面向对象A”。

(注:中间没有空格!)1 创建一个VC6.0项目。

要求:以你的学号+姓名+”_面向对象A”为项目名创建一个带“Hello World”的win32控制台应用程序。

以“200941404101 陈晓雪”为例,所创建项目的名称为“200941404101陈晓雪_面向对象A”(10分)2 声明一个Point类,该类描述了直角坐标系中的一个点。

成员变量为私有的double x,y; 成员函数包括不带参数的构造函数;带两个参数(double x, double y)的构造函数,拷贝构造函数,分别取得x和y值的函数getX和getY。

(10分)3 从第2题的Point类派生出一个新类(名为Circle),该新类是描述圆的一个类,成员变量为私有的表示圆的半径double r。

相关文档
最新文档