《《C#面向对象程序设计》第2章:C#编程基础.ppt》由会员分享,可在线阅读,更多相关《《C#面向对象程序设计》第2章:C#编程基础.ppt(33页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第2章章 C#编程基础编程基础主要内容与学习目标主要内容与学习目标2.1 变量与常数变量与常数2.2 基本数据类型基本数据类型2.3 面向对象程序设计初步面向对象程序设计初步主要内容与学习目标主要内容与学习目标l主要内容:主要内容:(1)变量与常数、声明变量、给变量赋值、读取变量的值、变量与常数、声明变量、给变量赋值、读取变量的值、MessageBox.Show方法、连接字符串、换行符。方法、连接字符串、换行符。(2)基本数据类型、整型、读取从文本框中输入的值、将计算结果显示在文本框中、将数字字符串转换为整数、异基本数据类型、整型、读取从文本框中输入的值、将计算结果显示在文本框中、将数字字符
2、串转换为整数、异常常(格式异常、溢出异常格式异常、溢出异常)处理。处理。(3)字符数据类型、将指定字符串转换为字符、将字符转换为字符串、字符数据类型、将指定字符串转换为字符、将字符转换为字符串、Char数据类型和数值类型之间的转换、数据类型和数值类型之间的转换、Char.IsLetter方法、方法、Char.IsDigit方法。方法。(4)非整型数据类型、非整型数据类型、Single.Parse(s)方法、方法、Decimal.Parse(s)方法、格式化字符串、求幂运算、非整数数据类型方法、格式化字符串、求幂运算、非整数数据类型比较。比较。(5)格式化输出。格式化输出。(6)算术表达式与算术
3、运算符、算术运算符优先级规则。算术表达式与算术运算符、算术运算符优先级规则。(7)基本数据类型的相互转换、隐式数值转换、显式转换。基本数据类型的相互转换、隐式数值转换、显式转换。(8)bool类型变量、关系运算符、关系表达式、关系表达式的值。类型变量、关系运算符、关系表达式、关系表达式的值。(9)面向对象程序设计初步、类和对象、消息和方法、创建自己的类、声明类、声明字段、了解修饰符面向对象程序设计初步、类和对象、消息和方法、创建自己的类、声明类、声明字段、了解修饰符private和和public、声明方法、声明对象与创建对象、调用方法。、声明方法、声明对象与创建对象、调用方法。(10)局部变量
4、、局部变量的作用范围和实例字段的作用范围。局部变量、局部变量的作用范围和实例字段的作用范围。l学习目标:学习目标:(1)掌握变量与常数的含义、声明和使用。掌握变量与常数的含义、声明和使用。(2)了解数据类型及使用。了解数据类型及使用。(3)了解数据类型的转换及溢出。了解数据类型的转换及溢出。(4)初步掌握初步掌握MessageBox.Show方法的使用。方法的使用。(5)掌握如何向项目中添加类和引用。掌握如何向项目中添加类和引用。(6)掌握赋值运算符的使用。掌握赋值运算符的使用。(7)掌握算术运算符和关系运算符的使用。掌握算术运算符和关系运算符的使用。(8)初步掌握类和对象的使用。初步掌握类和
5、对象的使用。2.1 变量与常数变量与常数2.1.1 变量的含意变量的含意2.1.2 变量声明变量声明2.1.3 常数常数2.1.1 变量的含意变量的含意 假设有两数为假设有两数为x、y,我们想求出两者之和,这在数学中表示为:,我们想求出两者之和,这在数学中表示为:x+y。要在程序中计算要在程序中计算x、y的和,我们必须首先声明将要指定给它们的数据类型。为其赋的和,我们必须首先声明将要指定给它们的数据类型。为其赋值之后,才能计算其和。值之后,才能计算其和。假设假设x、y都是整数。为了声明指定给它们的数据类型是整数,可编写如下语句:都是整数。为了声明指定给它们的数据类型是整数,可编写如下语句:in
6、t x;int y;进行此声明后,即为进行此声明后,即为x和和y分配了存储数据值的存储位置,内存状态分配了存储数据值的存储位置,内存状态如图如图2.1所示所示。这些存储位置称为这些存储位置称为“变量变量”。而。而x和和y是与存储位置关联的名称,称为变量名。是与存储位置关联的名称,称为变量名。做做出上述声明之后,出上述声明之后,x和和y的值只能是整数值。我们使用赋值运算符的值只能是整数值。我们使用赋值运算符“=”给给x和和y赋值。赋值。例如:例如:x=100;y=98;此时此时x的值是的值是100,y的值是的值是98。内存状态。内存状态如图如图2.2所示所示。图2.1 声明整型变量的结果 图2.
7、2 整型变量x、y赋值的结果2.1.2 变量声明变量声明 在在C#中,使用变量之前,必须首先声明它。声明变量的一般格式为:中,使用变量之前,必须首先声明它。声明变量的一般格式为:数据类型数据类型 变量名变量名;l任务任务2.1 计算路程计算路程问题描述:问题描述:l有一辆汽车每小时可以行驶有一辆汽车每小时可以行驶x公里,欲计算公里,欲计算y小时能行驶多少公里小时能行驶多少公里(假设假设x和和y均为整均为整数数)。编写一程序解决该问题。编写一程序解决该问题。l解决此问题需要使用公式:路程解决此问题需要使用公式:路程=速度速度 时间。时间。l要编写解决该问题的程序,可以使用要编写解决该问题的程序,
8、可以使用3个变量:个变量:v、t和和s。变量。变量v用于存放速度的值,用于存放速度的值,变量变量t用于存放时间的值,变量用于存放时间的值,变量s用于存放路程的值。用于存放路程的值。2.1.3 常数常数l1.常数的含义常数的含义l2.声明常数声明常数注意:尽管常数与变量有些相像,但不能像变量一注意:尽管常数与变量有些相像,但不能像变量一样更改其值或给它们赋新值。样更改其值或给它们赋新值。2.2 基本数据类型基本数据类型每个变量都具有一个类型,以确定哪些值可以存储在该变量中。每个变量都具有一个类型,以确定哪些值可以存储在该变量中。2.2.1 整型整型2.2.2 字符数据类型字符数据类型2.2.3
9、非整型非整型2.2.4 格式化输出格式化输出2.2.5 算术运算算术运算2.2.6 基本数据类型的相互转换基本数据类型的相互转换2.2.7 算术溢出及显式转换溢出算术溢出及显式转换溢出2.2.8 布尔类型布尔类型2.2.1 整型整型 C#支持支持9种整型:种整型:sbyte(8位有符号整型位有符号整型)、byte(8位无符号整型位无符号整型)、short(16位有符号整型位有符号整型)、ushort(16位无符号整型位无符号整型)、int(32位有符号整型位有符号整型)、uint(32位无位无符号整型符号整型)、long(64位有符号整型位有符号整型)、和、和ulong(64位无符号整型位无符
10、号整型)。如果整数表示的值超出了如果整数表示的值超出了 ulong 的范围,就会产生编译错误。的范围,就会产生编译错误。如果某个变量总是存储整数而不是带小数的数字,则将它声明为以上类型中如果某个变量总是存储整数而不是带小数的数字,则将它声明为以上类型中的一种。没有一个数值类型是存放在单个字节中的。但有时数据要存放成字节,的一种。没有一个数值类型是存放在单个字节中的。但有时数据要存放成字节,必须能访问各个字节。这时该数据可存放在必须能访问各个字节。这时该数据可存放在byte、sbyte类型的变量中,如果某类型的变量中,如果某个变量包含二进制数据或未知种类的数据,则将其声明为个变量包含二进制数据或
11、未知种类的数据,则将其声明为byte类型。类型。l任务任务2.2:整数相乘:整数相乘主要知识点:主要知识点:读取从文本框中输入的值。读取从文本框中输入的值。将计算结果显示在文本框中。将计算结果显示在文本框中。将数字字将数字字符串转换为整数。符串转换为整数。异常异常(格式异常、溢出异常格式异常、溢出异常)处理。处理。问题描述:用户从键盘输入整数问题描述:用户从键盘输入整数(如图如图2.7所示所示),当单击,当单击【相乘相乘】按钮时,计算它们的按钮时,计算它们的积,并显示结果。积,并显示结果。l1.创建项目和窗体创建项目和窗体l2.编写应用程序的代码编写应用程序的代码l3.测试应用程序测试应用程序
12、图2.7 整数相乘2.2.2 字符数据类型字符数据类型 字符数据类型字符数据类型char用来处理用来处理Unicode字符。字符。Unicode 字符是字符是 16 位字符,用位字符,用于表示世界上多数已知的书面语言。于表示世界上多数已知的书面语言。char变量以无符号的变量以无符号的16位位(两个字节两个字节)数字的数字的形式存储,取值范围为形式存储,取值范围为0到到65535。每个数值代表一个。每个数值代表一个Unicode字符。字符。Unicode的前的前128个数值个数值(0127)对应于标准美国键盘上的字母和符号。这前对应于标准美国键盘上的字母和符号。这前 128 个数值与个数值与A
13、SCII字符集中定义的数值相同。随后的字符集中定义的数值相同。随后的128个数值个数值(128到到 255)表表示特殊字符,如拉丁字母、重音符号、货币符号以及分数。其余的数值用于表示示特殊字符,如拉丁字母、重音符号、货币符号以及分数。其余的数值用于表示不同种类的符号,包括世界范围的各种文本字符、音调符号以及数学和技术符号。不同种类的符号,包括世界范围的各种文本字符、音调符号以及数学和技术符号。l任务任务2.3:字符检:字符检问题描述:从键盘输入一个字符,检查输入字符是否为字母字符或数字,如果不是,则问题描述:从键盘输入一个字符,检查输入字符是否为字母字符或数字,如果不是,则输出输出“输入的字符
14、不是字母字符或数字输入的字符不是字母字符或数字”。如果输入的字符是字母字符,则输出该字母。如果输入的字符是字母字符,则输出该字母字符的整数值。在任何一种情况下,都会显示适当的消息。字符的整数值。在任何一种情况下,都会显示适当的消息。解决方案:解决方案:l1.创建项目和窗体创建项目和窗体l2.编写应用程序的代码编写应用程序的代码l3.测试应用程序测试应用程序2.2.3 非整型非整型 非整型数据类型是同时使用整数部分和小数部分来表示数值的类型。非整型数据类型有:非整型数据类型是同时使用整数部分和小数部分来表示数值的类型。非整型数据类型有:float(7位有效位位有效位)、double(15到到16
15、位有效位位有效位)和和decimal(28到到29位有效位位有效位)。它们都是有符号类型。如果某个变量可以包含小数,则将其声明为这些类型之一。它们都是有符号类型。如果某个变量可以包含小数,则将其声明为这些类型之一。如果希望实数被视为非整型类型,请使用文本类型字符,文本类型字符用如果希望实数被视为非整型类型,请使用文本类型字符,文本类型字符用M表示表示 decimal,用,用F表示表示float,用,用D表示表示double。l任务任务2.4:贷款计算器:贷款计算器 主要知识点:主要知识点:Single.Parse(s)方法。方法。Decimal.Parse(s)方法。方法。格式化字符串。格式化
16、字符串。求幂运算。求幂运算。问题描述:编写一贷款计数器程序问题描述:编写一贷款计数器程序(如图如图2.9所示所示),对于特定的贷款数量、年利率和贷款周期,计算,对于特定的贷款数量、年利率和贷款周期,计算月付款和总付款。月付款和总付款。l计算月付款的公式为:月付款计算月付款的公式为:月付款=p*r/(1-(1+r)-n)l其中其中p为贷款金额;为贷款金额;r为月利率为月利率(年利率除以年利率除以12),以,以0到到1(100%)之间的数给出;之间的数给出;n是还完贷款需要的时间是还完贷款需要的时间(以月为单以月为单位位)。解决方案:解决方案:l1.创建项目和窗体创建项目和窗体l2.编写应用程序的
17、代码编写应用程序的代码l3.测试应用程序测试应用程序图2.9 贷款计算2.2.4 格式化输出格式化输出 可通过调用可通过调用String.Format方法格式化输出信息。方法格式化输出信息。String.Format方法的一般方法的一般格式为:格式为:String.Format(formats,参数列表参数列表);其中其中formats为包含一个或多个格式规范为包含一个或多个格式规范N,M:Sn的字符串,的字符串,String.Format方法返回方法返回formats字符串,只不过将字符串,只不过将formats字符串中的第一个格字符串中的第一个格式规范替换为参数列表中的第一个参数的值式规范
18、替换为参数列表中的第一个参数的值(该值被转换为字符串该值被转换为字符串),第二个格式,第二个格式规范替换为参数列表中的第二个参数的值规范替换为参数列表中的第二个参数的值(该值被转换为字符串该值被转换为字符串),依此类推。,依此类推。在格式规范在格式规范N,M:Sn中,中,N是从零开始的整数,表示要格式化的参数,是从零开始的整数,表示要格式化的参数,0表表示要格式化的参数是参数列表中的第一个参数,示要格式化的参数是参数列表中的第一个参数,1表示要格式化的参数是参数列表示要格式化的参数是参数列表中的第二个参数,依此类推。表中的第二个参数,依此类推。M是整数是整数(可选可选),指示包含格式化值的区域
19、的宽,指示包含格式化值的区域的宽度,剩余部分用空格填充。如果度,剩余部分用空格填充。如果 M 的符号为负,则格式化值在区域中左对齐;的符号为负,则格式化值在区域中左对齐;如果如果 M 的符号为正,则该值右对齐。的符号为正,则该值右对齐。S是格式字符是格式字符(可选可选),n为整数为整数(可选可选),指,指定小数位数。在格式规范定小数位数。在格式规范N,M:Sn中,只有中,只有N是必需的,其他两项可有可无。是必需的,其他两项可有可无。格式化输出说明格式化输出说明如表如表2.3所示所示。表2.3 格式化输出说明2.2.5 算术运算算术运算l1.算术表达式与算术运算符算术表达式与算术运算符在前面的示
20、例中,在前面的示例中,op1*op2、op1/op2、5/3 都是算术表达式,都是算术表达式,因为它们都由算术运算符和操作数组成。算术运算符因为它们都由算术运算符和操作数组成。算术运算符(如如*)指定指定了数值计算。了数值计算。表表2.4归纳了归纳了C#中所使用的算术运算符。中所使用的算术运算符。l2.算术运算符优先级规则算术运算符优先级规则在在C#中,算术运算符优先级规则与我们所学的标准代数中的算中,算术运算符优先级规则与我们所学的标准代数中的算术运算规则是一样的。术运算规则是一样的。如表如表2.5所示所示。表2.4 算术运算符表2.5 算术运算符的优先级2.2.6 基本数据类型的相互转换基
21、本数据类型的相互转换l程序中在给变量赋值或进行数据间混合运算时,要注意所赋值的程序中在给变量赋值或进行数据间混合运算时,要注意所赋值的数据类型是否与变量的数据类型一致、进行混合运算的数据的类数据类型是否与变量的数据类型一致、进行混合运算的数据的类型是否一致。如果它们的类型不同,则有两种情况:隐式转换和型是否一致。如果它们的类型不同,则有两种情况:隐式转换和显式转换。下面我们对隐式转换和显式转换进行讨论。显式转换。下面我们对隐式转换和显式转换进行讨论。l1.隐式数值转换隐式数值转换表表2.6显示了预定义的隐式数值转换。隐式转换可能在多种情形下发显示了预定义的隐式数值转换。隐式转换可能在多种情形下
22、发生,包括在赋值语句中和数据间混合运算时及调用方法时。生,包括在赋值语句中和数据间混合运算时及调用方法时。前面讲过数据间混合运算时,可能发生隐式转换,称为前面讲过数据间混合运算时,可能发生隐式转换,称为“数据提升数据提升”的隐式转换应用于算术操作符的操作数。提升基于的隐式转换应用于算术操作符的操作数。提升基于表表2.7的规则,的规则,这种转换之所以称为这种转换之所以称为“提升提升”,是因为操作数是从低精度转换为高,是因为操作数是从低精度转换为高精度。精度。l2.显式转换显式转换任务任务2.5:隐式和强制数值转换:隐式和强制数值转换l问题描述:创建一简单的程序,测试隐式和强制数值转换。问题描述:
23、创建一简单的程序,测试隐式和强制数值转换。表2.6 隐式数值转换表2.7 算术提升规则2.2.7 算术溢出及显式转换溢出算术溢出及显式转换溢出l算术运算符算术运算符(+、-、*、/)产生的结果及显式数值转换的结果可能产生的结果及显式数值转换的结果可能会超出目标类型可能值的范围。在一般情况下:可能会丢失数据会超出目标类型可能值的范围。在一般情况下:可能会丢失数据或引发异常。或引发异常。l任务任务2.6:算术溢出及显式转换溢出:算术溢出及显式转换溢出问题描述:创建一简单的程序,测试算术溢出及显式转换溢问题描述:创建一简单的程序,测试算术溢出及显式转换溢出。出。2.2.8 布尔类型布尔类型lbool
24、数据类型是被解释为数据类型是被解释为true 或或false的无符号值。如果某个变量只能的无符号值。如果某个变量只能包含包含“真真/假假”、“是是/否否”或或“开开/关关”信息,则将它声明为信息,则将它声明为bool类型。类型。lbool没有文本类型字符。没有文本类型字符。l关系运算符都返回关系运算符都返回bool类型的结果。类型的结果。l关系运算符为关系运算符为=、!=、=,关系运算符将值彼此比较,结,关系运算符将值彼此比较,结果为一果为一bool类型的值,详见类型的值,详见表表2.8。l任务任务2.7:数值比较:数值比较问题描述:创建一简单的程序,测试布尔型变量、关系运算符及关问题描述:创
25、建一简单的程序,测试布尔型变量、关系运算符及关系表达式。系表达式。表2.8 关系运算符2.3 面向对象程序设计初步面向对象程序设计初步2.3.1 类和对象类和对象2.3.2 消息和方法消息和方法2.3.3 使用现有的类使用现有的类2.3.4 创建自己的类创建自己的类2.3.1 类和对象类和对象l面向对象程序设计中两个最重要的概论是类和对象。从广义的术语来讲,对象是面向对象程序设计中两个最重要的概论是类和对象。从广义的术语来讲,对象是一个可以想象的物体,它既可是有形的也可是无形的。对象具有属性。例如,按一个可以想象的物体,它既可是有形的也可是无形的。对象具有属性。例如,按钮或标签之类的钮或标签之
26、类的GUI对象具有属性,属性是对象的特性。如按钮具有名称、宽度、对象具有属性,属性是对象的特性。如按钮具有名称、宽度、高度和标题等属性。窗口具有名称、宽度、高度、标题和背景颜色等属性。对象高度和标题等属性。窗口具有名称、宽度、高度、标题和背景颜色等属性。对象具有行为方式具有行为方式(方法方法),它们用来描述对象可以执行的操作。例如,按钮可以被禁,它们用来描述对象可以执行的操作。例如,按钮可以被禁用、可以设置标题。标签可以显示文本。窗口可以改变大小,还可以出现或消失。用、可以设置标题。标签可以显示文本。窗口可以改变大小,还可以出现或消失。表表2.9列出了某些列出了某些GUI对象及其属性和方法。对
27、象及其属性和方法。l又如,人具有姓名、性别、年龄等属性。又如,人具有姓名、性别、年龄等属性。l类是对象的符号表示形式,它是计算机用来创建对象的模板。与蓝图描述构成建类是对象的符号表示形式,它是计算机用来创建对象的模板。与蓝图描述构成建筑的项一样,类以同样的方式描述组成对象的属性和方法等。就像一幅蓝图可以筑的项一样,类以同样的方式描述组成对象的属性和方法等。就像一幅蓝图可以用于建成多座建筑一样,一个类也可以用于根据需要创建多个对象。如果使用蓝用于建成多座建筑一样,一个类也可以用于根据需要创建多个对象。如果使用蓝图类比,类就是蓝图,对象就是基于该蓝图的建筑。又如人是一个类,你是人,图类比,类就是蓝
28、图,对象就是基于该蓝图的建筑。又如人是一个类,你是人,我是人,都是人类的实例或称对象。一个类描述一类事物,描述这些事物所应具我是人,都是人类的实例或称对象。一个类描述一类事物,描述这些事物所应具有的属性,如人有姓名、性别、年龄等属性。一个对象是类的一个实例,它具有有的属性,如人有姓名、性别、年龄等属性。一个对象是类的一个实例,它具有确定的属性值,如王飞确定的属性值,如王飞(人的实例人的实例)年龄是年龄是20,性别是男。人类只有一个,人类的,性别是男。人类只有一个,人类的实例可以有无数多个。实例可以有无数多个。表2.9 GUI对象及其属性和方法2.3.2 消息和方法消息和方法l在编写面向对象程序
29、的过程中,我们首先定义类,当程序开始运行时,由这些类创建对象以在编写面向对象程序的过程中,我们首先定义类,当程序开始运行时,由这些类创建对象以完成任务。任务可以是计算月付款、计算总付款、格式化字符串等。为了命令类或对象执行完成任务。任务可以是计算月付款、计算总付款、格式化字符串等。为了命令类或对象执行一项任务,我们要为其发送一个消息,例如,我们发送消息一项任务,我们要为其发送一个消息,例如,我们发送消息pow给给Math类,以计算指数。类,以计算指数。l处理消息的类或对象必需相应编程,不能将消息随便发送给一个类或对象,而只能将消息发处理消息的类或对象必需相应编程,不能将消息随便发送给一个类或对
30、象,而只能将消息发送给能够理解这个消息的类或对象。处理所收到消息的类或对象必须有对应的方法,也就是送给能够理解这个消息的类或对象。处理所收到消息的类或对象必须有对应的方法,也就是类或对象为完成一项任务而执行的指令序列。只能有对象调用的方法为实例方法,否则是静类或对象为完成一项任务而执行的指令序列。只能有对象调用的方法为实例方法,否则是静态方法,静态方法将在第态方法,静态方法将在第5章详细讲述。向对象发送消息使对象调用方法,向类发送消息将章详细讲述。向对象发送消息使对象调用方法,向类发送消息将调用类的方法。注意,发送给类或对象的消息必须与方法的名称相同。向类或对象发送调用调用类的方法。注意,发送
31、给类或对象的消息必须与方法的名称相同。向类或对象发送调用方法的消息,可能以参数的形式来发送值。方法的消息,可能以参数的形式来发送值。l再看一个静态方法的例子。再看一个静态方法的例子。Math类定义了静态方法类定义了静态方法pow,该方法按参数指定的值,计算指数。,该方法按参数指定的值,计算指数。由于由于Math类有静态方法类有静态方法pow的定义,我们可以向的定义,我们可以向Math类发送类发送pow消息,按参数指定的值,消息,按参数指定的值,计算指数。如以下代码计算计算指数。如以下代码计算23的值,并赋给变量的值,并赋给变量b:ldouble b=Math.pow(2,3);l图图2.14描
32、述了消息的发送过程。描述了消息的发送过程。l方法可能返回值也可能不返回值,这要看方法的定义。在后面的章节中我们将讲述方法的定方法可能返回值也可能不返回值,这要看方法的定义。在后面的章节中我们将讲述方法的定义。义。图2.14 发送消息给类或对象2.3.3 使用现有的类使用现有的类l前面章节我们已经使用了前面章节我们已经使用了.NET类库中的类,如类库中的类,如Math类、类、MessageBox类。下面我们使用类。下面我们使用.NET类库中的类类库中的类String。1.String类类l任务任务2.8:文字游戏:文字游戏l 编写一个与用户一起玩的编写一个与用户一起玩的Eggy-Peggy文字游
33、戏的应用文字游戏的应用程序,该程序把用户指定的字符串转换为新字符串,在指程序,该程序把用户指定的字符串转换为新字符串,在指定字符串的所有元音字母前增加定字符串的所有元音字母前增加“egg”单词。单词。如图如图2.15所示。所示。2.String类的常用属性及方法类的常用属性及方法图2.15 输出结果2.3.4 创建自己的类创建自己的类l到目前为止,我们已经编写的示例应用程序都仅包含一个类,即程序的主程序类,而主程序到目前为止,我们已经编写的示例应用程序都仅包含一个类,即程序的主程序类,而主程序类只有一个方法,即类只有一个方法,即Main方法。在这个方法。在这个Main方法中,我们仅使用方法中,
34、我们仅使用.NET类库中的一些预先定类库中的一些预先定义的类。对于简单的小程序,这种配置是可以接受的。但对于大型程序,则不可以接受,其义的类。对于简单的小程序,这种配置是可以接受的。但对于大型程序,则不可以接受,其主要原因有如下两个:主要原因有如下两个:l将一个大型应用程序的全部代码放入一个单独的将一个大型应用程序的全部代码放入一个单独的Main方法中将使得该方法非常巨大,而且程方法中将使得该方法非常巨大,而且程序很难管理和扩展。序很难管理和扩展。l预先定义的类本身不能够满足编写大型应用程序过程中的所有程序设计要求。预先定义的类本身不能够满足编写大型应用程序过程中的所有程序设计要求。l现在我们
35、开始学习如何编写更复杂应用程序所需要的类,这些类通常不具有现在我们开始学习如何编写更复杂应用程序所需要的类,这些类通常不具有Main方法,而具方法,而具有自己的属性和方法。要创建一个完整的程序,我们需要把几个类组合起来,其中某一个类有自己的属性和方法。要创建一个完整的程序,我们需要把几个类组合起来,其中某一个类具有具有Main方法。方法。l任务任务2.9:使用可实例化类的贷款计算器:使用可实例化类的贷款计算器前面我们曾经编写过一个贷款计算器程序。对于给定的贷款数量、年利率和贷款周期,计算月付款和前面我们曾经编写过一个贷款计算器程序。对于给定的贷款数量、年利率和贷款周期,计算月付款和总付款,那里
36、使用简化的程序结构编写程序,它只有一个主程序类,带有一个总付款,那里使用简化的程序结构编写程序,它只有一个主程序类,带有一个Main方法。这里再次实方法。这里再次实现该程序,但是这次将使用一个称为现该程序,但是这次将使用一个称为“LoanCalculator”的可实例化类。的可实例化类。问题描述:问题描述:编写一贷款计算器程序,对于特定的贷款数量、年利率和贷款周期,计算月付款和总付款。编写一贷款计算器程序,对于特定的贷款数量、年利率和贷款周期,计算月付款和总付款。l为了使读者容易理解该示例所包含的概念、原理和方法,我们来讲解该程序的创建。为了使读者容易理解该示例所包含的概念、原理和方法,我们来讲解该程序的创建。1.创建贷款计算器类的简单版本创建贷款计算器类的简单版本2.创建完整定义贷款计算器的类创建完整定义贷款计算器的类