资源描述
《面向对象程序设计》考试样卷
该样卷只供考生了解题目类型使用,不作为复习资料和考试依据。
一、 基础知识填空题(每空1分,共10分)
主要考核语言所使用的各种关键字
1. 声明类的关键词是 Class
2. 若要把一个变量声明为私有变量,需要使用的关键词是 Private
二、 根据程序,填写输出结果(根据难易程度确定每个空的分值,共20分)
考查考生对语言的理解,程序设计的逻辑性
1. Sub Main()
Dim str As String
str=”Hello !”
Console.WriteLine(str)
End Sub
执行Main方法后,输出的结果为 Hello !
三、 根据要达成的功能要求或输出结果的要求,将下列程序补充完整(根据难易程度确定每个空的分值,共20分)
考查考生程序设计的基本能力
1. 程序要求在属性CourseName的Set过程中,进行数据校验,校验的规则为字符串长度不超过20个字符。
Set(ByVal value As String)
If value.Length<=20 Then
insCourseName=value
Else
insCourseName=value.Substring(0,20)
End If
End Set
四、 请编写程序,实现题目的要求
系统地考查考生对程序语言的掌握情况、程序设计的能力。该题目力求涵盖面向对象程序设计的所有要点,如类、属性、方法、继承、多态、构造函数、重写、重载、异常处理等。
完成类Employee、SalariedEmployee、CommissionEmployee和BasePlusCommissionEmployee定义。各个类之间的关系如下图所示。部分类或类中的部分属性、方法的定义已经给出,考生只需完成指定的类或方法、属性的定义即可。具体要求如下:
1. 类Employee包含两个属性Name和SocialSecurityNumber,分别代表雇员的姓名和社会保险号,属性的代码已经给出。还包含一个构造函数,CalculateEarnings和ToString方法。要求考生完成:
题目(1)(5分):改写继承自基类的ToString方法,该方法要求返回一个包含雇员姓名和社会保险号的字符串,字符串的格式如下。
姓名:张三
社会保险号:2201028975
题目(2)(3分):声明一个名为CalculateEarnings抽象方法,该方法返回一个Decimal类型的值。
Public MustInherit Class Employee
Private NameValue As String
Private socialSecurityNumberValue As String
' 构造函数
Public Sub New(ByVal name As String, ByVal last As String, _
ByVal ssn As String)
Me.Name = name
SocialSecurityNumber = ssn
End Sub
'属性Name
Public Property Name() As String
Get
Return NameValue
End Get
Set(ByVal first As String)
NameValue = first
End Set
End Property
'属性SocialSecurityNumber
Public Property SocialSecurityNumber() As String
Get
Return socialSecurityNumberValue
End Get
Set(ByVal ssn As String)
socialSecurityNumberValue = ssn
End Set
End Property
'返回一个包含雇员姓名和社会保险号的字符串
Public Overrides Function ToString() As String
题目(1)
End Function
' 声明一个CalculateEarnings抽象方法
题目(2)
End Class
2. 类SalariedEmployee继承自Employee类,代表拿固定薪水的雇员,薪水以周为周期。除继承的属性外,还包含一个属性WeeklySalary,代表雇员的周薪。要求考生完成:
题目(3)(6分):定义属性WeeklySalary及其对应的实例变量,Decimal型。要求属性在接收值时,进行数据检验,若接收的值小于0,则将属性值设为0.
题目(4)(6分):实现继承过来方法CalculateEarnings,该方法返回SalariedEmployee对象的周薪值。
Public Class SalariedEmployee
Inherits Employee
'构造函数
Public Sub New(ByVal first As String, ByVal last As String, _
ByVal ssn As String, ByVal salary As Decimal)
MyBase.New(first, last, ssn)
WeeklySalary = salary
End Sub
' 属性 WeeklySalary
题目(3)
' 方法CalculateEarnings
题目(4)
'属性ToString,返回包含姓名、社会保险号和周薪等信息的字符串,具体实现略
Public Overrides Function ToString() As String
End Class
3. 类CommissionEmployee继承自Employee类,代表按销售提成拿薪水的雇员。除继承的属性外,还包含属性GrossSales、CommissionRate分别代表销售量和提成的比例,GrossSales、CommissionRate的具体实现不用考虑。要求考生完成:
题目(5)(5分):实现继承过来方法CalculateEarnings,该方法返回CommissionEmployee对象的薪水值,薪水的计算方法为销售量×提成比例。
Public Class CommissionEmployee
Inherits Employee
Private grossSalesValue As Decimal
Private commissionRateValue As Double
' 构造函数
Public Sub New(ByVal first As String, ByVal last As String, _
ByVal ssn As String, ByVal sales As Decimal, ByVal rate As Double)
MyBase.New(first, last, ssn)
GrossSales = sales
CommissionRate = rate
End Sub
' 属性GrossSales,具体定义略
Public Property GrossSales() As Decimal
' 属性CommissionRate,具体定义略
Public Property CommissionRate() As Double
'方法 CalculateEarnings
题目(5)
'属性ToString,返回包含姓名、社会保险号和薪水等信息的字符串,具体实现略
Public Overrides Function ToString() As String
End Class
4. 类BasePlusCommissionEmployee继承自CommissionEmployee类,代表有基础薪水,同时还按销售提成拿薪水的雇员。除继承的属性外,还包含属性BaseSalary代表基础薪水,具体实现不用考虑。要求考生完成:
题目(6)(5分):实现继承过来方法CalculateEarnings,该方法返回BasePlusCommissionEmployee对象的薪水值,薪水的计算方法为:基础薪水+销售量×提成比例。
Public Class BasePlusCommissionEmployee
Inherits CommissionEmployee
Private baseSalaryValue As Decimal y
' 构造函数
Public Sub New(ByVal first As String, ByVal last As String, _
ByVal ssn As String, ByVal sales As Decimal, _
ByVal rate As Double, ByVal salary As Decimal)
MyBase.New(first, last, ssn, sales, rate)
BaseSalary = salary
End Sub
' 属性BaseSalary,具体实现略
Public Property BaseSalary() As Decimal
' 方法CalculateEarnings
题目(6)
'属性ToString,返回包含姓名、社会保险号和薪水等信息的字符串,具体实现略
Public Overrides Function ToString() As String
End Class
5. 编写一个Windows程序,用于测试前面的类。该窗体包含一个按钮(Button1)和一个能容纳多行文本的文本框(TextBox1)。点击标题“显示”的按钮时,要求显示测试用数据。窗体代码的一部分已经给出,考生按要求完成如下内容:
题目(7)(2分):在窗体类中,声明一个名为objE的全局一维数组,类型为Employee型,元素数量待定。
题目(8)(8分):在窗体类的Load事件中,为objE进行初始化,设定数值元素的数量为3,分别为每一个数组元素赋予不同类型对象的值。各元素的值和类型按下表赋值。
数组元素
值(按照构造函数接收的参数的次序)
类型
第一个元素
Tom 12345 8000
SalariedEmployee
第二个元素
Peter 33333 39000 0.05
CommissionEmployee
第三个元素
Jack 44444 459999 0.04 1000
BasePlusCommissionEmployee
题目(9)(10分):在Button1的Click事件中编写代码,实现当用换点击按钮时,显示各个数组元素的内容,数组元素之间使用横线分隔。要求使用循环结构完成。当数组元素为BasePlusCommissionEmployee类型时,还要特别将该元素的基础薪水(BaseSalary)提升50%,并显示提升后的薪水值,如图所示(假设不知道哪一个元素是BasePlusCommissionEmployee类型的内容)。『多态』
Public Class Form1
题目(7)
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
题目(8)
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
题目(9)
End Sub
End Class
展开阅读全文