C#程序设计项目化教程-电子教案-郑广成 ch06

上传人:E**** 文档编号:89370295 上传时间:2019-05-24 格式:PPT 页数:21 大小:995.50KB
返回 下载 相关 举报
C#程序设计项目化教程-电子教案-郑广成 ch06_第1页
第1页 / 共21页
C#程序设计项目化教程-电子教案-郑广成 ch06_第2页
第2页 / 共21页
C#程序设计项目化教程-电子教案-郑广成 ch06_第3页
第3页 / 共21页
C#程序设计项目化教程-电子教案-郑广成 ch06_第4页
第4页 / 共21页
C#程序设计项目化教程-电子教案-郑广成 ch06_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《C#程序设计项目化教程-电子教案-郑广成 ch06》由会员分享,可在线阅读,更多相关《C#程序设计项目化教程-电子教案-郑广成 ch06(21页珍藏版)》请在金锄头文库上搜索。

1、C#程序设计 单元6 设计面向对象程序,主讲教师:C#课程组 授课专业:软件技术,单元6 设计面向对象程序,本,章,要,点,类和对象的创建方法 字段和属性的声明和使用 构造函数的创建 方法重载的实现 静态成员和实例成员的使用,技,能,目,标,学会创建类与对象 理解并会编写类的构造函数 会实现方法重载 能区别静态成员和实例成员,单元6 设计面向对象程序,单元6 设计面向对象程序,6.2 技术与知识准备 6.2.1类、对象和封装 6.2.1.1类和对象 类是一些内容的抽象表示形式,对象是类所表示内容的真实实例。类和对象有着本质区别,它们之间的关系如下: (1)由对象归纳为类,是归纳对象共性的过程。

2、 (2)在类的基础上,将状态和行为实体化为对象的过程称为实例化。 6.2.1.2封装 封装又称信息隐藏,是面向对象的三大特征之一,指利用类将数据(属性)和方法(行为)结合在一起,使其构成一个不可分割的独立实体,只保留一些对外接口(与我们将来要学习的interface并不相同,可以理解为公开的方法和属性),使之与外部发生联系。 封装主要给我们带来了如下好处: (1)保证数据的安全性。 (2)提供清晰的对外接口。 (3)类内部实现可以任意修改,不影响其他类。,单元6 设计面向对象程序,6.2.2字段和属性 6.2.2.1字段 字段是与对象或类相关联的变量,用来存储对象状态的值或属性的值,即字段用来

3、存储对象的数据。所有类和字段都具有可访问级别,用来控制能够访问该类和字段的程序代码区域。表6.1列出了这些控制类和字段的可访问性的修饰符及其意义。,单元6 设计面向对象程序,6.2.2.2属性 一般情况下,不提倡将字段的访问级别直接设为public,这样用户可以随意访问该字段。也不提倡设为private,这样用户就无法访问字段。在很多情况下,既考虑安全问题,又考虑可访问性,需要把字段对外封装起来,通过属性来访问这些字段。 属性是字段的自然扩展,两者都具有关联类型的命名成员,而且访问字段和属性的语法是相同的。然而,属性与字段不同,属性不表示存储位置。相反,属性有访问器,这些访问器指定在它们的值被

4、读取或写入时需执行的语句。Visual C# 2010的属性成员一般具有get和set两种访问器。读取属性时,执行get访问器的代码块;向属性分配新值时,执行set访问器的代码块。同时包含get访问器和set访问器的属性称为可读写属性,只具有get访问器的属性称为只读属性,只具有set访问器的属性称为只写属性。 定义属性的一般语法形式如下所示,这里定义的属性名为Color: public string Color get /获得属性的代码 set /设置属性的代码 ,单元6 设计面向对象程序,6.2.3构造函数 6.2.3.1构造函数概述 static void Main(string arg

5、s) TimePeriod t=new TimePeriod(); t.Hours=24; Console.WriteLine(“共有“+t.Hours+”秒”); 我们知道要使用类的属性和方法来完成程序功能,首要的任务是将类进行实例化。在示例中通过TimePeriod t=new TimePeriod()产生时间对象,这种产生类实例的方法被称为构造函数。 构造函数是类中的一种特殊方法,有以下几个特点: (1)它的方法名和类名相同。 (2)没有返回类型,但可以带有参数。 (3)主要作用是完成对象的初始化工作。 6.2.3.2无参构造函数 默认情况下,系统将会给类分配一个无参数的构造函数,并且没

6、有方法体。我们可以自己编写无参构造函数,在方法体中对类的属性进行赋值。,单元6 设计面向对象程序,6.2.3.3带参构造函数 语法: public 类名(参数列表) /方法体 参数列表一般用来给类的属性赋值。,单元6 设计面向对象程序,6.2.4方法重载 6.2.4.1构造函数的重载 要解决示例6.6中的问题,我们只需要给Vehicle类再添加一个无参的构造函数就可以了。此时Vehicle类的结构如下。 public class Vehicle /带参构造函数 public Vehicle(string no,string username) this.No=no; this.UserName

7、=username; /无参构造函数 public Vehicle() /车牌号 private string no; public string No get return no; set no = value; / 从这段程序我们可以明显看出,现在Vehicle类有两个名字相同但参数个数不同的构造函数。很显然多个构造函数提供了多种实例化一个类的方式,这种方式被称为方法重载。构造函数的重载是方法重载的一种特殊方式。,单元6 设计面向对象程序,6.2.4.2方法重载 方法重载表示在同一个类中,两个或两个以上的方法具有相同的名称,但具有不同的参数列表(包括参数类型和参数个数),调用时根据不同的参

8、数列表来识别。 例如前面介绍控制台应用程序时介绍的Console类中的WriteLine()方法,具有19个不同的版本,也就是说WriteLine()方法被重载了。WriteLine()方法的每个版本都具有一套不同的参数,编译器根据不同的参数调用相应的WriteLine()方法。,4.2.5 C#中的String类,单元6 设计面向对象程序,6.2.5静态成员 6.2.5.1静态成员的定义和应用 在前面的ADO.NET操作数据库的学习中,我们经常创建DBHelper类,用这个类的对象去建立和关闭数据库。由于对数据库的操作非常频繁,于是DBHelper对象经常被创建调用。实际上DBHelper对

9、于整个项目中的其他的类来说是共享的。C#提供了静态(static)成员来满足这一要求。 1.静态成员的定义 定义类中静态成员的语法如下。 class 类名 public static 数据类型 变量名; public static 返回值 方法名(参数列表) /方法体; 定义中给我们展示了静态成员的两种形式:静态成员变量和静态成员方法。即类中的变量和方法都可以声明为静态的。静态成员是一种特殊的成员,它不属于类的某一个具体的实例,不能用类的实例来调用,只能通过类名用点(.)运算符进行访问或调用,语法如下。 类名.变量名;/访问静态变量 类名.方法名;/调用静态方法,单元6 设计面向对象程序,2.

10、静态成员的应用 明确了静态成员的定义,我们就可以把DBHelper的成员声明为静态的,代码如下所示。 public class DBHelper private string connString=”; /获得数据库连接 public static SqlConnection GetConnection() SqlConnection connection=new SqlConnection(connString); return connection; /关闭数据库连接 public static void CloseConnection(SqlConnection connection)

11、connection.Close(); 把GetConnection()和CloseConnection声明为静态后,就可以直接用类名调用它们。所以静态成员通常适用于一些不会经常变化而又操作频繁的数据,比如获取数据库连接,网站的某些配置信息等。这些内容经过一次获取,以后就可以方便的使用了,同时也节约了资源。 如: DBHelper.GetConnection();,单元6 设计面向对象程序,6.2.5.2静态方法和实例方法 静态方法需要用类名来访问,反过来,用类的实例来访问的方法我们称之为实例方法。静态方法和实例方法的区别见表6.2所示。,单元6 设计面向对象程序,6.3回到工作场景 通过6.

12、2的内容的学习,应该掌握了类的创建方法,如何编写构造函数,如何实现方法重载以及静态成员的使用。下面我们将回到6.1节中介绍的工作场景中,完成工作项目。 【步骤1】新建一个windows窗体应用程序,取名为sumprice。 【步骤2】创建一个类price,包含sumprice方法。 【步骤3】编写类-price。 【步骤4】设计如图6.1所示的界面。,单元6 设计面向对象程序,【步骤5】主界面的关键代码。 private void btnCal_Click(object sender, EventArgs e) if (txtNum1.Text != null | txtNum2.Text !

13、= null | txtP1.Text != null | txtP2.Text != null) price jisuan = new price(); jisuan.Price1 = Convert.ToInt32(txtP1.Text); jisuan.Price2 = Convert.ToInt32(txtP2.Text); jisuan.Num1=Convert.ToInt32(txtNum1.Text); jisuan.Num2 = Convert.ToInt32(txtNum2.Text); txtSumPrice.Text = jisuan.sumprice().ToStrin

14、g(); ,单元6 设计面向对象程序,6.4工作训练营 6.4.1项目训练 1、训练内容 设计一个工资计算器:其中工资大于1600且小于或等于5000的需要扣5%的个人所得税,工资大于5000的扣10%的个人所得税。设计应用程序,输入员工的姓名和工资,输出计税后的工资。运行效果如图6.9所示。,单元6 设计面向对象程序,2、训练目的 掌握面向对象思想,学会类的创建、字段和属性的定义、方法编写;学会对象的创建及成员的访问。 3、训练过程 【步骤1】新建一个名为“Office”的Windows应用程序。 【步骤2】添加一个职工类Employee,定义字段name和pay,属性Pay以及用于返回扣税

15、后工资的方法ShowPay()。,单元6 设计面向对象程序,【步骤3】设计程序界面。如图6.10所示。,单元6 设计面向对象程序,【步骤4】编写【显示税后工资】按钮的单击事件。关键代码如下。 private void button1_Click(object sender, EventArgs e) string name; float pay; name = txtName.Text; pay = float.Parse(txtPay.Text); Employee employee = new Employee(); employee.name = name; employee.Pay =

16、 pay; if (pay = 1600) lblShowPay.Text = employee.name + “,不扣税工资为:“ + employee.ShowPay().ToString(); else lblShowPay.Text = employee.name + “的税后工资为:“ + employee.ShowPay().ToString(); ,单元6 设计面向对象程序,6.4.2工作实践常见问题解析 【问题1】构造函数没有返回类型,是不是可以定义为void? 【答】void修饰的方法表示返回类型为空,并不代表没有返回类型,所以不能将构造函数定义为void。 【问题2】通过静态方法返回的对象,是不是也是静态的? 【答】不是,返回对象的类型只和这个对象的类型定义有关,并不会因为调用它的方法是静态的而变成静态

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号