Net面向对象程序设计-4-使用决策语句-2010-2011-2 - 副本
什么是面向对象程序设计方法

什么是面向对象程序设计方法面向对象程序设计方法(Object-Oriented Programming, OOP)是一种程序设计范式,它以对象为中心,通过对现实世界中的事物进行抽象和建模,来进行程序设计和开发。
面向对象程序设计方法是一种比较先进的程序设计思想,它具有很强的灵活性、可维护性和可扩展性,因此在软件开发领域得到了广泛的应用。
面向对象程序设计方法的核心思想是将现实世界中的事物抽象为对象,通过对象之间的交互来实现程序的功能。
在面向对象程序设计方法中,对象是程序的基本单位,每个对象都有自己的属性和行为。
属性是对象的状态和特征,行为是对象能够进行的操作和动作。
通过封装、继承和多态这三个特性,面向对象程序设计方法可以更好地实现程序的模块化、复用和扩展。
封装是面向对象程序设计方法的重要特性之一,它可以将对象的属性和行为封装在一起,对外部隐藏对象的内部实现细节。
这样可以提高程序的安全性和可靠性,同时也方便程序的维护和修改。
继承是面向对象程序设计方法的另一个重要特性,它可以使一个类(对象)获取另一个类(对象)的属性和行为,从而实现代码的复用和扩展。
多态是面向对象程序设计方法的另一个重要特性,它可以使不同的对象对同一个消息做出不同的响应,从而提高程序的灵活性和可扩展性。
面向对象程序设计方法具有很强的适应性和灵活性,可以很好地应对复杂的软件开发需求。
在面向对象程序设计方法中,程序可以被分解为多个对象,每个对象负责完成一部分功能,通过对象之间的交互来实现整个程序的功能。
这样可以使程序的结构更加清晰,代码更加易于理解和维护。
同时,面向对象程序设计方法也可以很好地支持软件的扩展和修改,通过继承和多态可以很方便地添加新的功能和改进现有的功能。
总之,面向对象程序设计方法是一种先进的程序设计思想,它通过对现实世界中的事物进行抽象和建模,来进行程序设计和开发。
面向对象程序设计方法具有很强的灵活性、可维护性和可扩展性,因此在软件开发领域得到了广泛的应用。
面向对象程序设计

1.1 面向对象程序设计概述
•在程序的实施过程中,由于大型系统必须由 多人合作完成,各人或各小组完成程序中的 一个或几个模块,如何划分任务、估计和分 配资源、掌握每个程序员的进度等就构成了 进行大型系统设计时管理的复杂性,另外, 即使每个人或小组所设计的模块都无可挑剔, 但将这些模块整合在一起时未必不会出现问 题,因此如何权衡模块内聚度和模块间的耦 合度,也是编程人员必须面对的问题之一。
1.1 面向对象程序设计概述
简单的说,通过使用面向对象的方法可以把 一组看似相互之间毫无联系的对象有效地集成在 一起,这些对象都包含代表各自特征的数据以及 对数据的操作即对象的行为。通过面向对象方法, 可以把与该对象相关的数据和操作封装在一个相 对独立的实体中,该实体有自己的功能和特征, 它也可以采用某种机制与外界交互。
1.1 面向对象程序设计概述
面向对象设计方法追求的是现实问题空 间与软件系统解空间的近似和直接模拟。它 希望用户用最小的力气,最大限度地利用软 件系统进行求解。
在具体学习OOP之前,请先注意一下两 点:
记忆的特征或数据,这些特征或数据能反映对象的基本性质。 找出对象和类中存在的各种整体-部分结构和一般-特殊结构,并进一步确定这些结构组合而成的多重结构。
的处理这些系统状态以及中间状态、组织高 这种环境最主要的特征就是以对象作为程序的主要单位,它将数据及对这些数据的操作功能以及与其他对象的通信的能力都封装在了
最新国家开放大学电大本科《面向对象程序设计》期末题库及答案

最新国家开放大学电大本科《面向对象程序设计》期末题库及答案考试说明:本人针对该科精心汇总了历年题库及答案,形成一个完整的题库,并且每年都在更新。
该题库对考生的复习、作业和考试起着非常重要的作用,会给您节省大量的时间。
做考题时,利用本文档中的查找工具,把考题中的关键字输到查找工具的查找内容框内,就可迅速查找到该题答案。
本文库还有其他网核及教学考一体化答案,敬请查看。
《面向对象程序设计》题库及答案一一、单项选择题(每小题2分,共20分)1.设x和y均为bool量,则x||y为假的条件是( )。
A.它们均为真 B.其中一个为真C.它们均为假 D.其中一个为假2.假定一个二维数组的定义语句为“int a[3][4]={{3,4},{2,8,6}}”,则元素a[1][2]的值为( )。
A.2 B.4 C.6 D.83.假定P是具有int* *类型的指针变量,则给P赋值的正确语句为( )。
A.p=new int B.p=new int*C.p=new int** D.p=new int[10]4.软件产品在需求发生变化、运行环境发生变化或发现软件产品本身的错误或不足时进行相应的软件更新的难易程度叫做软件的( )。
A.可维护性 B.可复用性C.兼容性 D.正确性5.若需要把一个类外定义的成员函数指明为内联函数,则必须把关键字( )放在函数原型或函数头的前面。
‘A.in B.inlineC.inLine D.InLiner .6.在一个用数组实现的队列类中,假定数组长度为MS,队首元素位置为first,队列长度为length,则队尾的后一个位置为( )。
A.1ength+1 B first+lengthC.(first+1ength—1)%MS D.(first+length)%MS7.假定一个类的构造函数为“A(int aa,int bb){a=aa;b=aa*bb;)”,则执行“A x(4,5);”语句后,X.a和x.b的值分别为( )。
面向对象程序设计第四部分

假如Jerry与Tom是同一个包中的类,那么,下述Jerry 假如Jerry与Tom是同一个包中的类,那么,下述Jerry Jerry 是同一个包中的类 类中的”cat.weight”, cat.f(3,4) 都是合法的. cat.f(3,4)”都是合法的 类中的”cat.weight ,”cat.f(3,4) 都是合法的.
2 子类和父类不在同一包中的继承性
如果子类和父类不在同一个包中,那么, 如果子类和父类不在同一个包中,那么,子类继承 了父类的protected,public 了父类的protected,public 成员变量做为子类的 成员变量,并且继承了父类的protected,public 成员变量,并且继承了父类的protected,public 方法为子类的方法. 方法为子类的方法.如果子类和父类不在同一个包 子类不能继承父类的友好变量和友好方法. 里,子类不能继承父类的友好变量和友好方法.
当在另外一个类中用类Tom 创建了一个对象后, 当在另外一个类中用类Tom 创建了一个对象后,如果这个 类与类Tom 在同一个包中, 类与类Tom 在同一个包中,那么该对象能访问自己的 变量和protected 方法.在任何一个与Tom protected 变量和protected 方法.在任何一个与Tom 同 一包中的类中,也可以通过Tom类的类名访问Tom Tom类的类名访问Tom类的 一包中的类中,也可以通过Tom类的类名访问Tom类的 类变量和protected 类方法. protected 类变量和protected 类方法. 假如Jerry Tom是同一个包中的类 那么, Jerry与 是同一个包中的类, 假如Jerry与Tom是同一个包中的类,那么, Jerry类中的 cat.weight”, cat.f(3,4)”都是合法的 类中的” 都是合法的. Jerry类中的”cat.weight ,”cat.f(3,4) 都是合法的.
第4讲 面向对象的程序设计

(3)私有成员 私有成员通过在成员声明中使用private修饰 符来定义.C#中的私有成员只有类中的成员 可以访问,在类的外部是禁止直接访问私有 成员的.这也是C#中成员声明的默认方式, 即若在成员声明时没有使用任何访问修饰符, 那么C#自动将它限定为私有成员. (4)内部成员 内部成员通过在成员声明中使用internal修饰 符来定义.该成员只能被程序集中的代码访 问,而程序集之外的代码无法访问.
(3)不能显式地调用析构函数. (4)析构函数的命名规则是在类名前加上一个"~"号. 如上例的Example1类的析构函数为: ~Example1() { }; (5)析构函数在对象销毁时自动调用. 【例7-3】 类的构造函数和析构函数的演示.(程序代 码详见例7-3)[执行结果]
using System; class Exam { static public int a;//静态成员 public int b;//实例成员 public Exam()//构造函数,没有参数,用来给成员变量赋初值0 { a=0; b=0; } public Exam(int m,int n)//构造函数,有参数,用来给成员变量赋特定的初值 { a=m; b=n; } ~Exam()//析构函数 {} } class A_7_3 { public static void Main() { Exam E1=new Exam();//产生类的实例E1,自动调用无参数的构造函数 Console.WriteLine("a={0},b={1}",Exam.a,E1.b); Exam E2=new Exam(10,20);//产生类的实例E2,自动调用有参数的构造函数 Console.WriteLine("a={0},b={1}",Exam.a,E2.b); } }
《面向对象程序设计》知识点

《面向对象程序设计》知识点《面向对象程序设计》是计算机科学中的重要概念,它是一种软件开发方法,将软件模型作为一个系统的集合来设计、分析和实现。
本文将重点介绍面向对象程序设计中的关键知识点,包括面向对象的基本概念、类与对象、继承与多态、封装和抽象等内容,以便读者全面了解和掌握面向对象程序设计的核心概念和方法。
一、面向对象的基本概念1. 面向对象编程的起源:面向对象编程(Object-Oriented Programming,简称OOP)起源于20世纪60年代,是一种基于对象的软件开发范式,它将数据和操作数据的方法组合到一个对象中,以及通过对象之间的交互来完成程序的设计。
2. 面向对象的特征:面向对象的程序设计具有封装、继承和多态的特征。
封装指的是将数据和处理数据的方法封装在对象中,继承指的是子类可以继承父类的属性和方法,多态指的是同一操作作用于不同对象上时可以有不同的行为。
3. 面向对象的优势:面向对象的程序设计具有代码复用性高、可维护性强、扩展性好、可靠性高等优势,可以提高程序的设计效率和质量。
二、类与对象1. 类的定义:类是一种抽象数据类型,用来描述具有相同属性和行为的对象的集合。
类用来创建对象的模板,包含数据成员和成员函数。
2. 对象的创建:对象是类的一个实例,是具体的数据和行为的封装体。
通过类实例化,可以创建多个对象来表示真实世界的实体。
3. 类的成员:类包含数据成员和成员函数。
数据成员表示对象的属性,成员函数表示对象的行为,可以进行数据的操作和处理。
三、继承与多态1. 继承:继承是指一个新类从现有类中派生出来,并且拥有现有类的属性和行为。
继承可以实现代码的复用,并且可以建立类之间的关系。
2. 多态:多态是指同一操作作用于不同对象上时可以有不同的行为。
多态通过虚函数和动态绑定实现,可以使程序具有更好的灵活性和扩展性。
四、封装和抽象1. 封装:封装是指将数据和数据的操作封装在类的内部,外部无法直接访问和修改类的数据。
面向对象程序设计思想

面向对象程序设计思想面向对象程序设计(Object-Oriented Programming,简称OOP)是一种以对象为中心的编程范式,它将现实世界中的事物抽象为对象,并通过对象之间的交互来实现程序的运行。
面向对象程序设计的核心思想包括封装、继承和多态。
封装封装是面向对象程序设计中最基本的概念之一。
它指的是将数据(属性)和操作数据的方法(行为)组合在一起,形成一个对象。
封装的目的是隐藏对象的内部细节,只暴露出一个可以被外界访问的接口。
这样,对象的使用者不需要了解对象内部的实现细节,只需要通过接口与对象进行交互。
例如,在一个银行系统中,我们可以创建一个`Account`类,该类封装了账户的基本信息(如账号、余额)和对账户的操作(如存款、取款)。
用户在使用`Account`类时,只需要调用相应的方法,而不需要关心这些方法是如何实现的。
继承继承是面向对象程序设计中另一个重要的概念。
它允许一个类(子类)继承另一个类(父类)的属性和方法。
通过继承,子类可以扩展或修改父类的行为,而不需要重新编写代码。
继承支持代码的复用,使得程序设计更加简洁和高效。
例如,假设我们有一个`Animal`类,它定义了所有动物共有的属性和方法。
我们可以创建一个`Dog`类,它继承自`Animal`类。
`Dog`类将继承`Animal`类的所有属性和方法,并且可以添加一些特有的属性和方法,如`bark`。
多态多态是面向对象程序设计中的一个重要特性,它允许不同类的对象对同一消息做出响应,但具体的行为会根据对象的实际类型而有所不同。
多态性使得程序设计更加灵活和可扩展。
多态性通常通过抽象类和接口来实现。
抽象类定义了一个或多个抽象方法,而具体的子类则提供了这些抽象方法的实现。
接口则定义了一组方法规范,不同的类可以实现同一个接口,但提供不同的实现。
例如,假设我们有一个`Shape`接口,它定义了一个`draw`方法。
我们可以创建`Circle`、`Square`等类,它们都实现了`Shape`接口。
面向对象程序设计

面向对象程序设计面向对象程序设计(Object-Oriented Programming,简称OOP)是一种编程范式,它使用“对象”来设计软件。
对象可以包含数据(通常称为属性)和代码(通常称为方法或函数)。
面向对象程序设计的核心概念包括封装、继承、多态和抽象。
封装封装是将数据(属性)和操作这些数据的方法(行为)绑定在一起的过程。
封装的目的是隐藏对象的内部状态和实现细节,只暴露出一个可以被外界访问的接口。
这样,对象的使用者不需要了解对象内部的复杂性,只需要通过公共接口与对象交互。
继承继承是一种机制,允许新创建的类(子类)继承现有类(父类)的属性和方法。
这使得代码重用变得可能,同时也支持层次结构的创建。
子类可以扩展或修改父类的行为,但通常保持父类的大部分功能。
多态多态性是指允许不同类的对象对同一消息做出响应,但具体的行为会根据对象的实际类型而有所不同。
在面向对象编程中,多态性通常是通过方法重载(同一个类中多个同名方法,参数不同)和方法重写(子类重写父类的方法)实现的。
抽象抽象是简化复杂的现实世界问题的过程,只关注对于当前目标重要的方面,忽略不相关的细节。
在面向对象编程中,抽象通常是通过创建抽象类和接口来实现的。
抽象类可以包含抽象方法,这些方法没有具体的实现,必须由子类提供。
类和对象类是创建对象的蓝图或模板,定义了对象的结构和行为。
对象是根据类创建的实例,具有类定义的属性和方法。
每个对象都是唯一的,即使它们是同一个类的实例。
面向对象设计原则在面向对象设计中,有几个关键的设计原则,如单一职责原则、开放-封闭原则、里氏替换原则、接口隔离原则和依赖倒置原则等。
这些原则帮助开发者创建灵活、可维护和可扩展的系统。
面向对象的优势- 代码重用:通过继承和多态性,可以减少代码重复。
- 易于维护:封装和抽象使得修改系统的一部分不会影响其他部分。
- 模块化:系统被分解为独立的模块,每个模块负责特定的功能。
- 可扩展性:系统可以容易地扩展新功能,而不需要重写现有代码。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
!10 > 20
//Valid //Invalid
应尽量避免使用!操作符
11
有时,根本没必要将两个操作数都求值出来 例如:
(percent >= 0) && (percent <= 100) (percent < 0) || (percent > 100)
05: WriteLine("The account has a positive balance");
比较操作符可以组合包含数字表达式的操作数
5
提示:新手常犯的一个错误是在合并两个测试的时候
,只对percent命名一次
percent >= 0 && <= 100 // this statement will not compile
Example
false false true true
(5>10) || (10<3) (5==2) || (10>2) (5!=0) || (3!=3) (7>4) || (9<10)
10
逻辑非操作符
!操作符不改变表达式的值,它只改变由此表达式生
成的值 !的优先级比所有的算术或比较操作符都高。所以, 在对一个布尔表达式取反之前,必须将包含其他操作 符的布尔表达式放在圆括号中
23
建议: 当构建多分支支else语句时,可使用if-else来发现错误。 技巧: 要避免太深的嵌套if-else语句。在许多情况下,程序员 理解多于3到4级的嵌套if-else语句就会感到吃力。 深度嵌套可以通过下面方法来避免: 重新设计布尔表达式。这一过程可以使用逻缉操作符来 完成。 将代码分解成更简单的方法。
26
4.1.1理解switch语法
switch ( controllingExpression ) {
case constantExpression : statements break; case constantExpression : statements break; ... default : statements break;
1
第4章 使用决策语句
After completing this chapter, you will be able to: Declare Boolean variables. Use Boolean operators to create expressions whose outcome is either true or false. Write if statements to make decisions based on the result of a Boolean expression. Write switch statements to make more complex decisions.
使用圆括号有助于避免这种类型的错误,同时也有助
于澄清表达式,例如:
validPercentage = percent >= 0 && percent <= 100 validPercentage = (percent >= 0) && (percent <= 100)
可使用圆括号提高可读性
if语句中的表达式必须放在一对圆括号中
表达式必须是布尔表达式,C# 中不允许其他的形式,否
则,编译器会报错 C#允许在代码中包含所谓的空语句,一个空语句,不做任 何事,仅有一个分号。 如果将空语句错误地放在if语句布尔表达式右边括号的后 面,它的存在就舍导致非常隐秘的措误。
14
例如:
Equality Equality
4
可以用一个bool类型变量保存布尔表达式的结果
例如:01: bool isPositive;
02: decimal balance = 100; 03: isPositive = (balance > 0);
可以在if语句内使用bool类型变量
例如:04: if (isPositive)
>=
Greater-than-orequal-to Less-than
x >= y
Relational
<
<
x<y
Relational
<=
Less-than-orequal-to equal to Equal-to Not-equal-to
x <= y
Relational
=
== !=
x == y x != y
3
4.2使用布尔操作符
6个主要的比较操作符
Math Notation > C# Syntax > Name Greater-than Example x>y Category Relational Explanation Returns true if x is greater than y; otherwise, returns false Returns true if x is greater than or equal to y; otherwise, returns false Returns true if x is less than y, otherwise; returns false Returns true if x is less than or y; otherwise, returns false Returns true if x is equal to y; otherwise, returns false Returns true if x is not equal to y; otherwise, returns false
16
多分支if-else语句
编写嵌套if-else结构的标准化系统--多分支if-else语句 只有从一个决策符号出发的false箭头才能与另一个决策 符号相连。 每个从决策符号出发的true箭头与一个动作符号相连, 并且从动作符号出发移到程序的下一个语句。
21
using System; class PreMultibranch { public static void Main() { decimal balance; Console.Write("Enter balance: "); balance = Convert.ToDecimal(Console.ReadLine()); if(balance < 5000) Console.WriteLine("balance < 5000. Category C"); else if(balance <= 20000) Console.WriteLine("5000 <= balance <= 20000. Category A"); else if(balance < 60000) Console.WriteLine("20000 < balance < 60000. Category C"); else if(balance <= 75000) Console.WriteLine("60000 <= balance <= 75000 "); else Console.WriteLine("Balance is in category C"); } }
}
27
4.2.2遵守switch语句规则
switch (trumps) 只能将 switch语句用于基本数据类型,例如,int或string
{ ,对于其他的任何类型(float,double),只能用if语句 case Hearts : case 标签必须是常量表达式,如果需要在运行时计算 case case Diamonds : 标签,则必须使用 color = "Red"; if语句 break; case标签必须具有唯一性,即不允许两个 case标签具有相 case Clubs : 同的值 color = "Black"; 可以连续写一些列 case标签,指定在多种情况下都运行相 case Spades : color = "Black"; 同的语句,这样,最后一个 case之后的所有代码将使用于 break; 所有case }
标准缩进样式的if-else程序
01: using System; 02: 03: class MultibranchBalanceAssessment 04: { 05: public static void Main() 06: { 07: decimal balance; 08: 09: Console.Write("Enter balance: "); 10: balance = Convert.ToDecimal(Console.ReadLine()); 11: if(balance < 5000) 12: Console.WriteLine("balance < 5000. Category C"); 13: else if(balance <= 20000) 14: Console.WriteLine("5000 <= balance <= 20000. Category A"); 15: else if(balance < 60000) 16: Console.WriteLine("20000 < balance < 60000. Category C"); 17: else if(balance <= 75000) 18: Console.WriteLine("60000 <= balance <= 75000. Category B"); 19: else 20: Console.WriteLine("balance > 75000. Category C"); 21: } 22: }