




已阅读5页,还剩91页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1章 绪论复习题1. 什么是程序设计?答:计算机程序设计又称为编程(programming),是一门设计和编写计算机程序的科学和艺术。程序是程序设计中最基本的概念,也是软件中最基本的概念。程序是计算任务的处理对象和处理规则的描述。所谓计算任务是指所有通过计算来解决实际问题的任务。处理对象是数据,如数字、文字和图像等。处理规则一般指处理动作和步骤。在低级语言中,程序是一组指令和相关的数据。在高级语言中,程序一般是一组说明和语句,它包括了算法和数据结构。程序设计就是为计算机设计和编写程序,使其按照人所规定的算法对数据进行处理。通常程序设计包括了问题建模、算法设计、编写代码和编译调试等过程。2. 当今的计算机是基于什么模型?答:现代计算机都是基于冯诺伊曼模型的。此模型着眼于计算机的内部结构,定义了处理机的运行过程。该模型把计算机分为四个子系统:存储器、算术/逻辑单元、控制单元和输入/输出单元。3. 为什么不称计算机为数据处理器?答:数据处理器。可以认为是一个接受输入数据,处理数据,产生输出数据的黑盒。尽管这个模型能够体现现代计算机的功能,但是它的定义还是太狭窄。这个模型并没有说明它处理的类型以及是否可以处理一种以上的类型。换句话说,它并没有清楚的说明一个基于这个模型的机器能够完成操作的类型和数量。它是专用机器还是通用机器呢?这种模型可以表示为一种设计用来完成特定任务的专用计算机(或者处理器),比如用来控制建筑物温度或汽车油料使用。但计算机作为一个当今使用的术语,是一种通用的机器。它可以完成各种不同的工作。4. 你所知道的程序设计语言有哪些?你知道它们有什么不同特点吗?(答案略)5. 位模式是如何表示一个构成文本的语言符号的?答所谓位(bit,binary digit 的缩写)是存储在计算机中的最小单位;它是0 或1。位代表设备的某一状态,这些设备只能处于两种状态中的某一种状态。计算机存储器并不知道所存储的位模式是表示哪种类型的数据。实际上计算机存储器仅仅将数据以位模式存储。至于解释位模式是数字类型、文本类型、或其它的数据类型,则是由输入/输出设备或程序的完成。换句话说,当数据输入计算机时,它们被编码,当呈现给用户时,它们被解码。位模式可以表示任何一个构成文本的语言符号。在一种语言中,位模式到底需要多少位来表示一个文本符号主要取决于该语言集中到底有多少不同的文本符号。例如,如果要创建的某个虚构的语言仅仅使用大写的英文字母,则只需要26个符号。相应的这种语言的位模式则至少需要表示26个符号。对另一种语言,如中文,可能需要更多的符号。在一种语言中,表示某一符号的位模式的长度取决于该语言中所使用的符号的数量。更多的符号意味着更长的位模式。6. 计算机程序设计语言是如何分类的?答:程序设计语言可划分为低级语言、中级语言和高级语言。低级语言或称机器语言,是程序设计语言中最基础的类型,能被计算机直接理解。机器语言的区别取决于制造商和计算机的型号。高级语言是在计算机能够理解和处理之前必须首先翻译成机器语言的程序设计语言。C、C+、Pascal 和FORTRAN 都是高级语言的例子。汇编语言是中级语言,非常接近于机器语言,没有其他高级语言所表现出的语言复杂程度,运行时仍然得先翻译成机器语言。7. C#是什么?答: C#(发音为:C sharp)是Microsoft公司开发的一种新的语言,也是.NET 公用语言运行环境的内置语言。它完美的结合了C/C+的强大功能、Java的面向对象特征和Visual Basic的易用性,从而构成一种类型安全的、简单的面向对象的编程语言。8. C#的集成开发环境包括那些组成部分?答:C#的集成开发环境主要由这几部分组成:通用语言运行时CLR(Common Language Runtime),它是整个开发框架的基础;由CLR所提供的一组基础类库;在开发技术方面,C#的集成开发环境提供了全新的数据库访问技术ADO.NET,以及网络应用开发技术ASP.NET和Windows编程技术Win Forms。9. 简述程序设计的过程。答:程序的设计过程包括:问题建模、算法设计、编写代码、编译调试。程序将以数据处理的方式解决客观世界中的问题,因此在程序设计之初,首先应该将实际问题抽象成一个求解模型,然后为该模型设计和制定算法。通过问题建模,可以清楚地描述各种概念、已知条件、所求结果,以及已知条件与所求结果之间的联系等各方面的信息。模型和算法的结合将给出问题的解决方案。具体的解决方案确定后,需要对所采用的算法进行描述,算法的初步描述可以采用自然语言方式,然后逐步将其转化为程序流程图或其他直观方式。这些描述方式比较简单明确,能够比较明显地展示程序设计思想,是进行程序调试的重要参考。使用计算机系统提供的某种程序设计语言,根据上述算法描述,将已设计好的算法表达出来,使得非形式化的算法转变为形式化的由程序设计语言表达的算法,这个过程称为程序编码。程序设计者可以通过常用的开发工具(如Java、Visual Basic 等)依据程序设计语言的语法规则编写程序,并将源代码编译成可执行程序。由于很少能保证程序第一次就能够正确运行,所以程序设计时经常需要使用调试程序来帮助查找程序错误,解决程序运行中存在的问题。调试程序能够在运行的程序中检测到一个事件,并向程序员指出该事件在程序由哪条代码的触发。只有编译调试成功了,才完成了程序的设计过程。测试题10. 以下关于计算机程序的描述不正确的是 。A、计算机程序是指按照时间顺序依次安排的计算机工作步骤。B、简单地讲,计算机程序也可以表示成:算法+数据结构。C、计算机程序是对计算步骤的编排和优化。D、计算机程序是计算任务的处理对象和处理规则的描述。答案:C(提示:计算机程序是对计算步骤的编排,但不一定优化)11. 现代的内部存储计算机程序的概念是由 提出来的。A、美籍匈牙利数学家约翰冯诺伊曼B、英国数学家奥古斯塔埃达拜伦 C、法国发明家约瑟夫D、英国数学家和发明家查尔斯巴比答案:A12. 以下程序设计语言在历史上出现的正确顺序是 。A、FORTRAN、BASIC、C#、JAVAB、FORTRAN、C、JAVA、C#C、LISP、BASIC、C#、C+D、COBOL、C#、Pascal、JAVA答案:B13. 以下的应用程序中,不能将源代码翻译成目标代码是 。A、编译器B、解释器C、汇编程序D、虚拟机答案:D14. 计算机内存中存储体的基本单位是 。A、字节B、字C、位D、字符答案:C15. 可用于表示来自世界上不同语言的符号。A、ASCII码B、扩展ASCII码C、扩展ASCII码和Unicode码D、Unicode码答案:D16. 以下有关计算机数据表示的说法不正确的是 。A、计算机中并没有采用文本的编码来表示数字。B、计算机存储器仅仅将数据以位模式存储,它并不知道其存储的数据是哪种类型。C、在一种语言中,位模式到底需要多少位来表示一个符号这主要取决于内存的大小。D、一个字中包含多个位,字可以是8位、16位、32位,甚至是64位。答案:C17. 程序设计语言通常分为 。A、面向过程的、函数式的、面向对象的或逻辑的语言B、机器语言、汇编语言、高级语言C、数据库语言、通用语言、嵌入式语言D、可视化语言、非可视化语言答案:B18. C#从 版本开始推出了C# for .NET集成开发环境。A、C# 7 B、C# 5C、C# 8D、C# 2005答案:D19. C#是 出品的一种优秀的集成开发工具。A、SUN公司B、Borland公司C、IBM公司D、Microsoft公司答案:D练习题20. 设计一个窗体,从组件面板中选择一些常见控件放置在其上。运行该程序,观察运行结果,并察看C#自动生成了那些代码。(答案略)21. 查阅资料,找出最近10年来新出现的程序设计语言,了解为什么人们要推出这些新的语言,并讨论程序设计与语言的关系。(答案略)22. 一种计算机程序设计语言有10种不同的指令。如果指令不重复,在这种语言能编出多少5条指令的程序?又能编出多少7条指令的程序?答: 5 条指令的程序:109876(种) 7 条指令的程序:10987654(种)讨论:今天对一个最终用户来说,硬件、软件和数据哪一个更有价值?第2章 程序设计基础复习题1. 简述C# 程序的基本框架结构。答:C#程序由一个或多个独立的类组成,每个类归属于某个命名空间。C#的类可以由一个或多个方法组成,其中类中的静态Main方法可用作程序运行的入口。2. 代码质量评审的原则是什么?撰写代码时如何使程序结构清晰,易于阅读?答:通过编程经验的总结和软件工程的研究,归纳出如下代码质量评审原则:正确性 指程序代码要实现软件设计所要求的功能;可靠性 指代码最后编译的程序要能够稳定、可靠、安全的运行;规范化 指代码书写的风格、命名规则等要符合规范;可读性 指代码要便于查看和理解;在程序代码中适当使用空格、空行、缩进以及必要的注释和规范的命名,可以使程序结构清晰,易于阅读。3. 什么是数据类型?以变量为例,阐述数据类型的意义。答:某种数据类型就好比是一套“用来解释存储于某内存位置上的值(好比变量的值)”的规则。举个例子,如果变量是个整数,存储于其中的位(bits)就被解释为一个整数;如果变量的数据类型是字符串,存储于其中的位(bits)就被解释为一组字符。当然,对编译器来说,数据类型的含义远不止于此。编译器还必须能够理解以下规则:定义每一种数据类型能够接受的值以及对这些值来说哪些操作合法。通过这些知识,编译器便能够决定一个特定数据类型的值是否被正确地使用。4. C# 数据类型可分为几大类?C# 值类型包括哪些?答:C# 中的数据类型可以分为值类型和引用类型两大类。其中值类型包括:简单类型、枚举类型和结构类型;引用类型包括:数组类型、类类型、接口类型和代理类型。测试题5. 以下声明常量的语句正确的是 。A、double PI = 3.14159;B、const double PI = 3.14159;C、static double PI = 3.14159;D、static const double PI = 3.14159;答案:B6. C# 中简单数据类型包括 。A、整数类型,字符类型,枚举类型和结构类型B、整数类型,字符类型,布尔类型和实数类型C、整数类型,字符类型,结构类型和类类型D、整数类型,字符类型,布尔类型,结构类型和类类型答案:B7. 以下类型在内存中所占大小从小到大排序,正确的是 。A、byte short longB、byte long shortC、char byte floatD、double float long答案:A8. 每个C# 语句以 结束。A、右大括号“”B、回车C、点号“. ”D、分号“; ”答案:D9. 下面可作为变量名的是 。A、 tryB、 continueC、 $500D、 24Hour答案:C10. 在C# 中,以下程序注释正确的是 。A、 注释行1 注释行2 注释行3 B、/ 注释行1 注释行2 注释行3 /C、(* 注释行1 注释行2 注释行3 *)D、/* 注释行1 注释行2 注释行3 */答案:D11. 关于以下两行代码,不正确的说法是 。float f = 3.2;int i = f;A、代码无法编译通过。B、代码可以编译通过,i 的值为3。C、第2 行应改为int i= (int)f;D、第1 行应改为float f = 3.2F; 答案:B12. 以下代码无法编译通过,是因为 。class Test static int myArg = 1;public static void Main(String args) int myArg;Console.WriteLine(myArg);A、Main 方法中的变量myArg 没有初始化。B、Main 方法中的变量myArg 与Test 类的myArg 字段同名。C、Test 类的myArg 字段不能在定义时就同时赋值。D、Console.WriteLine(myArg)语句不能使用整数类型的myArg,而应使用字符串类型的myArg。答案:A13. 以下的Main方法定义中,可用作公有类中程序运行入口的是 。A、public static void Main()B、public static void Main(string string)C、public static void Main(string args)D、static public int Main(string args)答案:B14. 已知a、b、c、d 都是int 类型的变量,而且已有互不相同的值,顺序执行下列语句后,条件等式为true 的是 。b=a;a=c;d=a;d=b;A、a= =cB、a= =dC、c= =dD、b= =a答案:A15. 下列实数表示方法中不正确的是 。A、8.625e+5B、5e-3FC、2345.34D、1000答案:D16. 以下语句中属于合法类型转换的是 。A、(int) AB、(char) AC、(bool)(2-2)D、(char)(651/12)答案:D17. 下列字符比较的结果为真(true)的是 。A、aAB、cA答案:D练习题18. 指出下面表达式的类型:a. 4567 b. true c. C d. 67.0e. 56F f. T g. 8 h. true答:a. int b. string c. char d. doublee. float f. string g. char h. bool19. 定义一个表示学生性别的枚举类型。答:enum TSexmale,female,unknown20. 定义一个表示图书信息的结构类型。要求包含:书名、作者、出版社、定价、页数、书号等字段。试编写一个简单的控制台程序,使用ReadLine语句为一个图书信息的各个字段赋值,并用WriteLine语句在屏幕上显示这些值。参考程序:using System;struct TBookpublic string Name;/书名public string Author;/作者public string Pub;/出版社public double Price;/定价public int Pages;/页数public string ISBN;/书号class Class1public static void Main(string args)TBook tb = new TBook();Console.WriteLine(请输入书名:);tb.Name = Console.ReadLine();Console.WriteLine(请输入作者:);tb.Author = Console.ReadLine();Console.WriteLine(请输入出版社:);tb.Pub = Console.ReadLine();Console.WriteLine(请输入定价:);tb.Price = double.Parse(Console.ReadLine();Console.WriteLine(请输入页数:);tb.Pages = int.Parse(Console.ReadLine();Console.WriteLine(请输入书号:);tb.ISBN = Console.ReadLine();Console.WriteLine(-);Console.WriteLine( + tb.Name + 作者: + tb.Author + , + tb.Pub+ 出版);Console.WriteLine(定价: + tb.Price.ToString() + 元,共计 + tb.Pages.ToString() + 页,书号: + tb.ISBN);界面如下:21. 阅读以下程序,分析运行结果。public static void Main(string args)bool b1 = true;bool b2 = false;bool b3 = (12);b3 = b2;b3 = (b2 = b1);System.Console.WriteLine(b3 is 0, b3);答:b3 is false第3章 程序设计进阶复习题1. 什么是表达式?C# 程序中复杂的表达式是如何建立的?答:一个表达式就是一个能够返回值的简单结构。最简单的表达式是变量和常量。在C#中也可以通过使用运算符、方法调用以及类型转换等,建立复杂的表达式。2. C# 语言中主要有哪些运算符?它们的优先级是怎样的?C# 语言中包括有赋值运算符、增减运算符、算术运算符、关系运算符、逻辑运算符、位运算符等。C# 语言中主要运算符及其优先级如下:优先级运算符类型运算符优先级最高一元运算符 . ()(方法调用)! + - + - new()(强制类型转换)优先级较高算术运算符位移运算符* / % + -优先级较低关系运算符位移运算符逻辑运算符 = !=& |& |?:(三元判断运算符,例如:AB?X:Y)优先级最低赋值运算符=+= -= *= /= %=3. 在程序设计的流程控制中,有哪些基本结构?这些结构在C# 语言中是如何实现的?答: 在程序设计的流程控制中,有如下三种基本控制结构:顺序结构、选择结构、循环结构。在C# 语言中顺序结构由顺序执行的各条语句实现;选择结构由if 语句、switch 语句实现;循环结构由while 语句、do-while 语句、for 语句实现。4. 在什么情况下循环过程会出现死循环?在C# 语言中使用哪条语句可以跳出循环体?答:当循环条件永远为真时,也就是说永远无法达到循环的边界时会出现死循环。使用break关键字可以强行跳出循环体。5. case语句有哪几种变形?他们又如何使用?答:case语句的几种变形有:简单的case语句、带缺省语句的case语句、带有多值分支的case语句、带有范围值分支的case语句。(使用方法略)6. 什么是算法?算法有哪些特征?答:算法是为了求解某一问题在有限步骤内、定义了具体操作序列的规则集合。通俗点说,算法就是针对一类特定问题,使用计算机解题的过程。一个算法应该具有以下五个重要的特征:确切性(No ambiguity) 算法的每一步骤必须有确切的定义。而不应该有二义性,例如,在算法中不能出现诸如“赋值为100或1000”。输入(Input) 有0个或多个输入,用于初始化运算对象。所谓0个输入是指无需输入条件,而算法本身定出了初始条件。输出(Output) 没有输出的算法是毫无意义的。一个算法应该有一个或多个输出,以反映对输入数据加工后的结果。可行性(Feasibility) 算法原则上能够精确地运行,而且对于算法中的每种运算,在原理上人们应该能用笔和纸做有限次运算后完成。有穷性(Finite) 算法必须保证执行有限步之后结束。只具有前面四个特征的规则集合,称不上算法。例如,尽管操作系统能完成很多任务,但是它的计算过程并不终止,而是无穷无尽的执行、等待执行,所以操作系统不是算法。7. 什么是排序算法?排序算法有哪些?答:为了更有效地使用数组,通过对数组中的元素进行排序,使其按一定的顺序排列的算法都称为排序算法。排序算法有很多,如:冒泡排序、选择排序、插入排序、快速排序、合并排序、希尔(Shell)排序、堆排序等8. 什么是查找算法?查找算法有哪些?答:查找就是从列表(list)或者数组中找出需要的数据项,确定目标所在位置的算法,也叫检索。查找的算法很多,有顺序查找、折半查找、散列值查找、转移表查找等。测试题9. 以下运算符按运算优先级从高到低排列顺序正确的是 。A、!、*、=C、!、*、&、=D、!=、*、&、=答案:A10. 以下循环语句的执行次数是 。int x=37;int y=3;while ( y = x ) y *= y;A、0B、1C、2D、3答案:C11. 下列字符串比较的结果为真(True)的是 。A、aAB、cA答案:D12. 设有以下声明,则合法的赋值语句是 。int i1,i2,i3;bool b1,b2,b3;A、i3 = i1/i2;B、b1= i1 & i2;C、b2 = i1n) m=m-n;while (nm) n=n-m;System.Console.WriteLine(m);A、4B、5C、6D、7 答案:D18. 下面程序执行后move的值是 。int move=0;int y = 68/8;if (y 8) move = y/ 2 + 5 ;elseint a = y;int b = 6;move = a % b;System.Console.WriteLine(move);A、1B、2C、3D、4答案:B19. 表达式 25 / 3 % 3 * 2的值是 。A、4B、4.0C、6D、8答案:A20. 在for循环语句中,循环控制变量的取值是如何变化的? A、自动增1B、自动减1C、根据for语句的不同形式来确定D、必须在循环体中给循环控制变量赋值答案:C21. 在While循环语句中执行的流程为 。A、先判断后执行B、先执行后判断C、由循环条件决定D、可以先判断,也可以先执行答案:A22. 指出下面程序的输出结果是什么? public static void Main(string args)const int A = 4;int a=2;switch (a*2) case A: System.Console.WriteLine(a);default: System.Console.WriteLine(a*2);A、2B、4C、2 和4D、程序出错答案:C23. 关于下面程序段的正确说法是 。char mychar =c;switch (mychar) default:case a: System.Console.WriteLine(a); break;case b: System.Console.WriteLine(b); break;A、程序出错,default 位置不对。B、程序出错,case 表达式必须是int 类型,不能使用char 类型。C、程序正确,屏幕显出输出字符a 。D、程序正确 ,屏幕无显出输出。答案:D24. 以下方式中,不方便表示算法的是 。A、伪代码B、流程图C、Pascal语言D、PAD图答案:C25. 累加求和是 。A、基本算法B、排序算法C、查找算法D、迭代和递归算法答案:A26. 是用于编写解决问题的算法的两种途径。A、求最大值和最小值B、函数和过程C、查找和排序D、迭代和递归答案:D27. 对一组数据(84,47,25,15,21)排序,数据的排列次序在排序的过程中变化如为:(1)84 47 25 15 21(2)15 47 25 84 21(3)15 21 25 84 47(4)15 21 25 47 84则采用的排序方法是 。A、选择排序B、冒泡排序C、快速排序 D、插入排序 答案:B练习题28. 阅读以下程序,分析运行结果。public class Total public static void Main(string args)int y,x=1,total=0;while (x=10)y=x*x;System.Console.WriteLine(y);total +=y;+x;System.Console.WriteLine(total is+total);答:110 的整数平方的和。29. 指出以下程序段的错误:int sex=2 % 3;if ( sex=1 )System.Console.WriteLine(Man);else System.Console.WriteLine(Woman);答:语法错误,应该改为sex = 1。30. 指出以下程序段的错误:public static void Main(string args)string say = I love my teacher. ;string str= say.Substring(7,10);if ( str=my teacher )System.Console.WriteLine(right! );else System.Console.WriteLine(wrong! );答:比较字符串是否相等应该使用equals 方法,而不能使用关系运算符=。t= my teacher 应该改为t.equals(my teacher)31. 指出以下程序段的错误:public static void Main(string args)int a = 4;int b=2;switch (b*2) case a: System.Console.WriteLine(a-b);break;case b: System.Console.WriteLine(a+b);答:switch 语句的case分支的值必须是常量。32. 指出以下程序段的错误:public static void Main(string args)int a = 3;int b = 6;for (int i=a;i=(b-a) i-;答:本题中没有语法错误,但在for语句的循环体内,对循环变量进行操作,造成死循环。33. 指出以下程序段的错误:public static void Main(string args)for ( float y = 0; y != 1.2; y += 0.1 ) System.Console.WriteLine( y );if (y1.5) break;答:因为浮点数的值不精确,y 只会等于1.,而永远不会等于1.2,造成死循环。34. 试编写一个程序,将1500间能同时被2,5,7整除的数打印出来。参考程序1整除法:class Program1public static void Main(string args)for (int i= 1;i= 500; i+)if (i % 2 = 0 ) & (i % 5 = 0) & (i % 7 = 0) System.Console.WriteLine(i);参考程序2公约数法:class Program2public static void Main(string args)int k=0;int i=1;while (k = 500) break;System.Console.WriteLine(k);i=i+1;35. 试编写一个程序,显示如图所示的一个数字金字塔。112112321214321参考程序:public class NewClass public static void Main(string args)int i=9;for (int row= 1;row =i;row+) for (int column=1;column =(i-row);column+) System.Console.Write( );for (int column= 1;column 0;column-) System.Console.Write(column);System.Console.WriteLine();36. 如果我国的经济增长以每年7.5%的速度保持稳定不变,试编写一个程序,计算过多少年可以实现总量翻两番?参考程序:public class DoubleTimes public static void Main(string args)int n=0;double inc=0.075,sum=1; /增长率inc 为7.5%,当前总量sum 为1while (sum 0)for(i = 1; i x;i+)j = j * i;result = j;return result;第4章 面向对象与对象模型复习题1. 面向对象的主要特点概括起来有哪些?答:面向对象的特点主要概括为抽象性、继承性、封装性和多态性。抽象性指对现实世界中某一类实体或事件进行抽象,从中提取共同信息,找出共同规律,反过来又把它们集中在一个集合中,定义为所设计目标系统中的对象。继承性新的对象类由继承原有对象类的某些特性或全部特性而产生出来,原有对象类称为基类(或称超类),新的对象类称为派生类(或子类),派生类可以直接继承基类的共性,又允许派生类发展自己的个性。继承性简化了对新的对象类的设计。封装性是指对象的使用者通过预先定义的接口关联到某一对象的服务和数据时,无需知道这些服务是如何实现的。即用户使用对象时无需知道对象内部的运行细节。这样,以前所开发的系统中已使用的对象能够在新系统中重新采用,减少了新系统中分析、设计和编程的工作量。多态性是指不同类型的对象可以对相同的激励做出适当的不同响应的能力。多态性丰富了对象的内容,扩大了对象的适应性,改变了对象单一继承的关系。2. 什么是建模语言?什么是UML?答:建模语言是一种图形化的文档描述性语言,利用它所期望解决的核心问题是沟通障碍的问题。而建模工具则是建模的辅助手段,利用它所期望解决的核心问题是生产力的问题。UML 是统一建模语言(The Unified Modeling Language)的英文缩写,UML 是一个通用的可视化建模语言,用于对软件进行描述、可视化处理、构造和建立软件系统制品的文档。它可以把人们对所需要构建系统的想法和理解记录下来,以便用于对系统的分析、设计、研究、配置和维护。UML适用于各种软件开发方法、软件生命周期的各个阶段、各种应用领域以及各种开发工具,是一种总结了以往建模技术的经验并吸收当今优秀成果的标准建模方法。3. 如何理解面向对象程序设计中的对象?答:我们可以从以下几个方面来理解面向对象程序设计中的对象:对象可以视为一组相关的操作代码和数据的组合 对象封装了方法和数据,并提供外部调用的接口。这使得对象可以作为一个独立的整体单元安全使用,维护了自身的完整性和可操作性。在面向对象程序设计中,过程和函数被称作方法,数据被称作属性。在对象模型中,可以用属性来表示对象的内容或状态,用方法来表示对象的操作。理论上,可以把所有要解决的问题分解成程序中的各个对象,由他们自己解决各自的问题。当然,对象的粒度划分仍然是面向对象编程中的难题。对象是类的实例 对象可以视为神奇的变量,它相当于类类型的变量。对象可以互相协作,共同完成任务 对象之间可以通过发送消息请求而相互联系,在消息请求中可以调用方法。面向对象程序设计中的一条典型的代码可以是一个对象发送的一条消息,消息由对象的名字后跟它的方法来表示。一个消息通常由三部分组成:接收对象的名字、对象方法的名字和方法成参数。即:对象.方法(参数);通过继承、组合或封装等方式可以产成新的对象 这种方式产生的新对象不仅最大限度地实现了代码的重用,并以此在程序中构建复杂的体系,将系统的复杂性隐匿于对象的简易性之中。对象根据特定的意义和用途有不同的划分方法 程序中的对象既可以划分账单对象、收银员对象这样的实体对象,也可以划分安全对象、协调对象、事务对象这样的功能对象。通常我们可以按照界面和逻辑分开的原则,将系统划分为系统逻辑对象和用户界面对象。4. 什么是类?类包括那些成员?答:类是对具有共同实现的一些对象或一系列对象的描述。类是用来创建对象的模板,类抽象出具体对象的相似性,定义它们的共同特征,包括数据和操作。类包括了数据成员和函数成员。5. 什么是方法?C#中哪些方法相当于函数,哪些方法相当于过程?答:方法是在类中定义,用来实现对象操作的过程或者函数。方法是属于一个给定对象的过程和函数,方法反映的是对象的行为而不是数据。通常C#中的方法可分为有返回值和没有返回值的两种,前者相当于传统程序中的函数,后者相当于传统程序中的过程。6. 对象之间有哪些关系?如何理解这些关系?答:对象之间的关系有:聚合关系(“hasa”)继承关系(“isa”)依赖关系(“usea”)聚合关系(“hasa”关系)从字面上很容易理解,它是指新对象由已有的对象组合而成,或新对象包含有其他对象。比如,一个班级就包含多个学生。也就是说,聚合关系意味着类A的对象包含类B的对象。从另一个角度看,聚合关系又表现为对象之间的相互关联,有人更喜欢用概念更宽泛的“关联关系”(association)。因此,可以认为聚合关系是关联关系的一种,只是聚合关系在语义上更加严格,甚至可以用来表示局部和整体的关系,例如要标识:一辆汽车(整体),和一个车身(局部)、一台引擎(局部)和四个(轮子)之间的关系,就可以使用聚合关系。继承关系(“isa”关系)用来表示对象与类之间所具有的泛化和特化关系。比如,TCar类和TBicycle类从TVehicle类继承而来。TVehicle称为TCar和TBicycle的基类。TCar类具有特定的方法,如:踩油门、点火熄火等。但它的其他方法,诸如:刹车、停车等,却都是从TVehicle类继承过来的,这些与具体什么类型的车无关。一般而言,如果类A扩展了类B,那么类A不仅继承类B中的方法,而且还具有更多的功能。依赖关系(“usea”关系)是最明显也最常见的关系。比如,由于Driver对象需要访问某一Car对象,以调用它的点火、踩油门、停车等方法,所以Driver对象要用到Car对象,两者间存在着依赖关系。这就是说,如果一个对象的方法操作了另一个对象,那么这个对象就依赖于另一个对象。所以在设计类的时候就应尽量将相互依赖的类的数量减少到最少。如果类A不知道类B的存在,那么它就不会关心类B的任何改变,这还意味着对类B的改变不会使类A产生任何bug。用软件工程术语来说,就是要使类间的耦合最小。测试题7. 以下关于对象的说法不正确的是 。A、组成客观世界(事物)的不同实体可以看成是对象。B、对象是一个具有封装性和信息隐藏的独立模块。C、对象可以分解和组合,还可以通过相似性原理进行分类和抽象。D、对象能更好地模拟计算机工作方式,体现计算机运行规律,提高程序执行效率。答案:D8. 面向对象的特点主要概括为 。A、可分解性、可组合性、可分类
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年个人房屋终止租赁合同书
- 2025附加信用贷款借款合同
- 2025委托检测合同协议书
- 医院药品管理规范及库存控制操作指南
- 二年级数学搭配教学课件设计
- 第二节 在线交流助学习说课稿小学信息技术冀教版2024三年级上册-冀教版2024
- 智慧旅游平台构建研究-洞察及研究
- 江西省创智协作体2026届高三上学期9月联合调研考试语文试题(含答案)
- 2025年建筑电气专业试题及答案
- 网络营销推广策略及执行计划书
- 学校教代会代表换届选举方案
- 现代交换原理第二章
- 2024版工业润滑油销售协议范例版
- 企业级智能数据分析系统开发与服务合同
- 2024数据要素典型案例
- Unit 3 She has long hair. (教学设计)-2024-2025学年湘鲁版英语五年级上册
- 部编版初中语文书下注释(全六册)
- 职业学校“十四五”发展规划
- 油漆作业风险和隐患辨识、评估分级与控制措施一览表
- 高血压知识水平量表
- 海南省2023年中考历史试题(含答案)
评论
0/150
提交评论