C#教案(1-6)cx

更新时间:2024-01-09 23:32:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

教 案

2010-2011 学年第 一 学期

系 部 信息系 课 程 名 称 C#程序设计技术 授 课 班 级 计信管60901/2

主 讲 教 师 刘妮妮 职 称 助教

C#程序设计(C#2.0版)、第一版、

使 用 教 材

机械工业出版社

长江大学工程技术学院制

1

教案首页

课程 名称 C#程序设计语言 课程编号 学 分 4.5 总计: 64学时 讲课: 40学时 实验: 0学时 上机: 24学时 类别 必修课(√ ) 选修课( ) 理论课(√ ) 实验课( ) 任课 教师 授课 对象 基本 教材 和主 要参 考资 料 刘妮妮 职称 助教 专业班级: 计算机信息管理60901/2 共 2 个班 刘慧宁著、C#程序设计(C#2.0版)、第一版、机械工业出版社,2009年1月 刘慧宁著、C#程序设计(C#2.0版)实验指导及习题解答、第一版、机械工业出版社,2009年1月 教学 2.掌握面向对象的基本概念及类的设计等相关知识。 目的 3.掌握C#语言程序设计的方法及编程技巧,能正确编写控制台应用程序。 要求 4.掌握上机操作方法及调试程序的基本方法。 教学 多媒体讲解、案例讲解 手段 教学 讲授与上机相结合 方法 重点:1.C#语言的语法、语义。 1.理解C#语言的语法、语义、数据类型和控制结构的使用特点。 教学 2.面向对象的基本概念及类的设计等相关知识。 重点 难点:1.面向对象的基本概念及类的设计。 难点 2.上机操作方法及调试程序的基本方法。 考核 方式 课程结业考核方式:闭卷考试 课程过程考核细则:考勤、作业、上机、测验 其它 要求

2

长江大学工程技术学院章节备课

章 节 名 称 课 序 课前介绍、第一章(1-5节) 1 学时 备 注 2 本章主要参考文献基 本 1、介绍.NET系列课程的重要性。2、.NET平台简介。 内 容 3、C#语言的特点。4、面向对象简介。5、开发工具简介。 教学目的与教学思路 重教学重点 面向对象的初步理解。 .NET平台的特点,面向对象的初步理解。 掌握对.NET平台的基本认识;了解C#语言的特点;了解面向对象编程的三大特点。认识VS 2005开发环境。 资料: 点难点 难点 练习与思考题 (1)《Visual C#.NET程序设计教程》,邱锦伦著,清华大学出版社,2006年9月 (2)《C#程序设计语言》,微软公司著,高等教育出版社,2004年1月 举例说明对面向对象的理解。 过程考考勤 核要点 教 学 多媒体讲解、案例讲解 方 法 具体内容 1.1 .NET平台简介 (1).NET是一个支持软件开发与使用的平台。 (2).NET平台的核心是.NET框架。 (3).NET框架包含公共语言运行库和框架类库。 教学内1.1.1 公共语言运行库 容提要 (1)CLR是.NET框架的基础。 (2)CLR是一个与机器平台和语言无关的开发和运行环境,负责管理.NET应用程序的运行。 (3).NET应用程序编译时,首先被编译成MSIL。运行时,JIT编译器负责将MSIL翻译成机器代码。 (4)面向CLR的程序代码在.NET中被称为托管 3 时间分配 长江大学工程技术学院章节备课

具体内容 代码,其他程序代码称为非托管代码。 1.1.2 框架类库 (1)FCL是.NET框架提供的一个可重复使用的以面向对象方法设计成的类和结构等类型的集合。 (2)FCL提供了一个统一的、面向对象的、层次化的、可扩展的编程接口,可以被任何一种.NET语言使用。 1.2 程序集 (1) .NET应用程序编译生成的MSIL代码保存在程序集中。 (2) 程序集是.NET应用程序的构造块,是重用、版本控制和在.NET平台进行部署的基本单元。 (3) 程序集是.NET平台组织程序的逻辑方法,对应着一个或多个物理文件。 (4) 除MSIL外,程序集中还包含元数据和可选的资源。 时间分配 备注 教学内容提要 1.3 C#语言的特点 (1) 简洁的语法 (2) 精心的面向对象设计 (3) 与Web的紧密结合 (4) 完全的安全性与错误处理 (5) 版本管理技术 (6) 灵活性和兼容性 1.4 C#语言与面向对象编程 (1)封装 -类和结构 -对象 (2)继承 -基类与派生类 -单继承与多继承 (3)多态 -方法重写 -动态绑定 1.5 C#程序开发工具 安装Visual Stdio 2005及环境介绍。 4

长江大学工程技术学院章节备课

章 节 名 称 课 序 第一章(6-7节)、第二章(1-4节) 2 学时 备 注 2 本章主要参考文献基 本 1、C#程序的编译、运行操作。2、C#程序的结构。 内 容 3、标识符和各种数据类型。4、常量和变量的定义和使用。 教学目的与教学思路 重教学重点 开发C#程序的步骤。 编译、运行C#程序的步骤。常量和变量的定义。 掌握C#程序的编译、运行步骤。掌握C#程序的结构。掌握常见数据类型。掌握常量和变量的定义和使用。 资料: 点难点 难点 练习与思考题 (1)《Visual C#.NET程序设计教程》,邱锦伦著,清华大学出版社,2006年9月 (2)《C#程序设计语言》,微软公司著,高等教育出版社,2004年1月 简述开发C#控制台应用程序的步骤。 过程考考勤、上机 核要点 教 学 多媒体讲解 方 法 具体内容 1.6编辑、编译和运行C#程序 演示编写HelloWorld.cs代码 (1)编译程序: csc 文件名.cs 源代码文件->(编译程序)->MSIL 教学内(2)运行C#应用程序: 容提要 EXE文件名 MSIL->(JIT)->机器代码 —>执行 例1-1 编译: csc HelloWorld.cs HelloWorld 5 时间分配 运行:

长江大学工程技术学院章节备课

具体内容 1.7 C#程序的基本结构 注释、using指令、空白、类、方法、语句 第2章 C#语言编程基础 2.1 标识符和关键字 (1)标识符: -由字母、数字、下划线“_”组成。 -第1个字符必须是字母或下划线。 -对字母大、小写敏感。 -不能与关键字同名。 -带“@”前缀的标识符称作逐字标识符。 (2)关键字: -是C#编译器的保留字,不能用作标识符。 -C#语言共有77个关键字。 2.2 基本数据类型 整数类型: – sbyte、short、int、long – byte、ushort、uint、ulong 浮点数类型: – float、 double – decimal 字符型: – char 布尔型: – bool 字符串型: – string object型 2.3 变量 (1)变量声明的一般格式如下: 数据类型 变量名1,?,变量名n; double width; char c; int i, j, k; (2)声明变量时,可以同时初始化。 int i=1, j=2; double width=5.6,length; bool answer=true; char c= 'A'; 2.4 文字常量

6

时间分配 备注 教学内容提要 长江大学工程技术学院章节备课

具体内容 2.4.1 整型常量 十六进制表示: 以0X或0x开头,例: 0X5cD 十进制表示: 例:32,0222 注意: (1)整型常量没有八进制表示形式。 (2)整型常量的默认数据类型是int型,但当其值超出了int型的取值范围时,它将相应地被视为一个uint型、long型或ulong型常量。 (3)加后缀L(或l)可以将整型常量显式说明为long或ulong型;加后缀U(或u)可以将整型常量显式说明为uint或ulong型。如果同时加上这两种后缀,整型常量就是ulong型。 567892L //long型 36u //uint型 36ul //ulong型 2.4.2 浮点型常量 : 教学内(1)一般表示形式(小数表示形式)– 由整数和小数两部分组成。 容提要 – 可省略其中的整数部分。 例: 5.6,6.0,.9 (2)指数表示形式: – 由尾数、字母E(或e)、指数组成。 例: 4.1E12,.27e4,5.0E-2,5E-2 (3)浮点型常量的默认数据类型为double型。 要将其说明为float型,应加后缀F(或f)。 例: 5.6f,4.1E5F 要将其说明为decimal型,应加后缀M(或m)。 例: 4.1E5M 加后缀D(或d),可以将浮点型常量显式说明为double型。 例: 6.2D (4)用一般表示形式表示的浮点型常量,如果其后加有后缀F、f、M、m、D或d,则小数点和小数部分可以同时省略。 例:1F //float型 2M //decimal型 22D //double型

时间分配 备注 7

长江大学工程技术学院章节备课

具体内容 2.4.3 字符常量 (1)单引号括起来的一个字符 例: 'A', 'b', '$', '*' (2)转义字符 – 以反斜杠“\\”开头,后跟一个字符或Unicode码。 – 通常用来表示那些一般方法无法表示的字符。 – 常见转义字符(教材) (3)字符常量的数据类型是char。 (4)4位十六进制Unicode码表示: – 十六进制数字必须有4位。 例: '\G' //'A' '\' //beep声 2.4.4 字符串常量 用双引号括起来的一串字符。 – 串中的字符也可以是转义字符。 – 标识字符串的两个双引号应该在教学内同一行。 容提要 例: \ \ \注意: (1)逐字字符串表示法。 @\ (2)逐字字符串中的双引号必须双写。 @\ (3)标识逐字字符串的两个双引号不必在程序的同一行。 @\ two lines\ //正确 \ two lines\ //错误 2.4.5 布尔常量 -false(假)、true(真)。 -数据类型为bool。 例2-1 变量与文字常量的使用

时间分配 备注 8

长江大学工程技术学院章节备课

章 节 名 称 课 序 基 本 内 容 第二章(5-8节) 3 学时 备 注 2 本章主要参考文献资料: 1、各种常见运算符的使用。2、简单数据类型转换方法。3、结构的定义和使用。4、枚举的定义和使用。5、值类型和引用类型的理解。6、控制台输入语句。 (1)《Visual C#.NET程序设教学目计教程》,邱锦伦掌握类型转换的常见方法;掌握结构和枚举类型的定义;掌握值著,清华大学出的与教类型和引用类型的存储机制;掌握常用控制台输入语句的使用。 版社,2006年9学思路 月 (2)《C#程序设计重值类型和引用类型的存储机制;控制台输入语句的使用。 语言》,微软公司教学重点 著,高等教育出版社,2004年1点难点 难值类型和引用类型的存储机制。 月 点 练习与思考题 简述值类型与引用类型的区别。 过程考考勤、上机 核要点 教 学 多媒体讲解 方 法 具体内容 2.5 表达式 (1)由运算符和操作数组成。 (2)执行表达式操作所求的值称为表达式的值,它也可用作另一个表达式的操作数。 教学内容提要 (3)表达式值的类型由参加运算的数据的类型和运算符决定。 例: 3 6+5 x=4 x=2*6+2-4/2 时间分配 2.5.1 运算符

9

长江大学工程技术学院章节备课

具体内容 (1)用来实现操作数的加、减等运算。 (2)运算符具有优先级和结合性。 (3)按要求操作数的多少,运算符可分为一元运算符、二元运算符、三元运算符。 (4)按运算性质,运算符可分为算术运算符、关系运算符、条件逻辑运算符等。 各个运算符简单举例讲解: 基本赋值运算符 算术运算符 关系运算符 条件逻辑运算符 位运算符 复合赋值运算符 条件运算符 字符串连接运算符 教学内2.5.2 数值类型转换 容提要 (1)隐式转换 改变优先级运算符 时间分配 备注 I int 型常量表达式的值可隐式转换为 sbyte、byte、short、ushort、uint 或 ulong型,前提是常量表达式的值处于目标类型的取值范围之内。 II 对sbyte、byte、short、ushort或char型的变量进行算术或按位运算时,在正式运算前,这些变量的值会隐式转换为int型。 III char型的数值能隐式转换为ushort、int、uint、long、ulong、float、double或decimal型,但任何数据类型的值都不能隐式转换到char型。 例2-6 隐式数值类型转换 (2)显式转换 例: double x=5.5, y; y=x-(int)x;

//y=0.5 10

长江大学工程技术学院章节备课

具体内容 注意: 1. 显式转换是一种不安全的转换。 2. 转换并不实际改变操作数的数据类型。 2.6 结构与枚举 2.6.1 结构 (1)结构类型是一种复合类型,它将多个不同类型的成员组合为一种新类型,通常用来封装小型相关变量组。 例: struct Student { } public string Name; public char Sex; public int Age; public string Addr; 时间分配 备注 教学内(2)定义某种结构类型后,就可以声明这种类型容提要 的变量。 例: Student stud1,stud2; (3)访问一个结构变量包括两方面的内容:访问结构变量中的某个成员和访问整个结构变量。 (4)访问一个结构变量中的某个成员: 结构变量名.成员 例: stud1.Name=\李明\stud1.Sex='男'; stud1.Age=16; stud1.Addr=\北京海淀\(5)访问整个结构变量通常用于同一结构类型的变量之间的赋值。 例: stud2=stud1; (6)使用某个结构变量给另一变量赋值时,用于赋值的变量必须已经赋值。

11

长江大学工程技术学院章节备课

具体内容 例: Student stud1; Student stud2=stud1; //错误 时间分配 备注 例2-7 使用结构变量 2.6.2 枚举 (1)枚举类型是一种复合类型,定义时,需要把变量的可能取值一一枚举出来。 例: enum Weekday { Sunday,Monday,Tuesday, Wednesday,Thursday,Friday, Saturday } (2)定义某种枚举类型后,就可以声明这种类型的变量。 教学内 容提要 例: Weekday wd; (3)要为枚举变量赋一个枚举值,需要使用运算符“.”。 例: wd=Weekday.Friday; (4)每个枚举值实际上都被赋予一个整数类型常量值。默认情况下,第1个枚举值为0,其后枚举值依次增1,且数据类型是int型。 (5)可以显式为枚举值指定其他整数类型,也可以为枚举值指定特定整数类型常量表达式值。 例: enum Color:sbyte { Red=20,Blue=-10,White } (6)不能直接给枚举变量赋整数值(0值除外)或给一个整数类型变量赋枚举值,除非进行显式类型转换。

12

长江大学工程技术学院章节备课

具体内容 例: Weekday wd1=2; //错误 Weekday wd2=(Weekday)2; int i=Weekday.Sunday; //错误 int j=(int)Weekday.Sunday; 时间分配 备注 例2-8 使用枚举变量 2.6.3 结构与基本数据类型 C#基本数据类型是.NET框架中对应的数据类型的别名。 例: System.Int32 i; System.Double d; 例2-9 使用基本数据类型对应的结构 2.7 值类型与引用类型 教学内(1) 值类型是指这种类型的变量总是包含该容提要 类型的值。 (2) 引用类型是指这种类型的变量总是包含相应数据在内存中存放位置的引用,通过该引用可以间接访问相应的数据值。 (3) 结构和枚举属于值类型;类、接口、数组和委托等属于引用类型。 2.8 控制台输入 System.Console.Read() System.Console.ReadLine() 例2-10 控制台输入

13

长江大学工程技术学院章节备课

章 节 名 称 课 序 基 本 内 容 第三章 4 学时 备 注 2 本章主要参考文献资料: 选择语句if语句和switch语句;循环语句while语句 、do while语句和for语句;跳转语句break语句、continue语句 和goto语句。 (1)《Visual C#.NET程序设理解编程中解决流程问题的基本方法;掌握if和if-else选择结计教程》,邱锦伦教学目构的用法;掌握switch-case的使用;能运用循环控制while、著,清华大学出的与教do?while、for、foreach编程;掌握跳转语句break、continue版社,2006年9学思路 的作用;了解goto语句的使用。 月 (2)《C#程序设计重语言》,微软公司各种选择和循环语句的使用。 著,高等教育出教学重点 版社,2004年1点难点 难月 选择和循环语句的执行流程及设计。 点 练习与思考题 P55 4、6 过程考考勤、上机 核要点 教 学 多媒体讲解 方 法 具体内容 3.1 语句简介 int i; //声明语句 ; //空语句 i=10; //表达式语句(赋值语句) 时间分配 10+5; //错误,不是语句 教学内容提要 注意:C#语言中,一般来说,只有赋值表达式、自增表达式、自减表达式、方法调用表达式和对象创建表达式加上分号才能组成表达式语句。 (1)C#语言定义了选择语句、循环语句、跳转语句。这3种语句可以控制程序的执行流程。

14

长江大学工程技术学院章节备课

具体内容 (2)所谓语句块是指由0条或多条语句用括号“{}” 括起来组成的复合语句。不过,C#语言中,可以把它看成一条语句。 3.2 选择语句 3.2.1 if语句 if(布尔表达式) 语句1 语句2 else 时间分配 备注 其中,else分支可有可无。且if-else语句可以嵌套。例3-1 if语句 3.2.2 switch语句 switch(控制表达式) { 教学内容提要 } 注意:(1)控制表达式值的类型可以是整数类型、字符类型、字符串类型或枚举类型;常量表达式值的类型必须与控制表达式相容,且同一switch语句中的任意两个常量表达式的值都不能相等。 (2)default与随后的语句n+1可以没有,并且也可以不放在最后。 (3)只要某个case或default分支下有任何语句,那么该分支就必须以跳转语句结束。 (4)如果确实希望switch语句在执行完某个case或default分支后,继续执行另一分支,可以通过一条goto语句来显式跳转。 例3-2 switch语句 3.3 循环语句 3.3.1 while语句

15

case 常量表达式1:语句1; case 常量表达式2:语句2; ?; case 常量表达式n:语句n; default:语句n+1;

长江大学工程技术学院章节备课

具体内容 false 时间分配 布尔表达式 备注 while(布尔表达式) 语句 例3-3 while语句 3.3.2 do-while语句 do 语句 while (布尔表达式); 注意:分号不可缺少。 true 3.3.3 for语句 教学内容提要 调整变量值 true 语 句 后续语句 语 句 布尔表达式 false 后续语句 for(初始化变量;布尔表达式;调整变量值) 语句 初始化变量 false 布尔表达式 true 语 句 后续语句 (1)for语句的“初始化变量”、“布尔表达式”、“调整变量值”3个部分皆可省略,但是其后的分号不能省略。 (2)“初始化变量”部分一般用来初始化循环变量,但事实上,它也可以是其他赋值表达式、自增表达式、自减表达式、方法调用表达式、对象创建表达式或变量声明。不过,如果需要在其中声明多个变量时,这些变量的数据类型必须相同。 例:

for(int i=0,j=0;i<2&&j<3;i++,j++); 16

长江大学工程技术学院章节备课

具体内容 (3)“初始化变量”部分如果省略或者不是用来 给循环变量赋初值,则应在for语句前给循环变量赋初值。 (4)“布尔表达式”部分如果省略,则for语句的循环体内必须有其他控制循环执行的语句,否则会形成死循环。 (5)“调整变量值”部分一般用来修改循环变量的值。不过,它也可以是其他赋值表达式、自增表达式、自减表达式、方法调用表达式和对象创建表达式。如果它不是用来修改循环变量的值或者省略,则应在for语句的循环体内设置相应的语句。 例3-4 for语句 (6)“初始化变量”和“调整变量值”部分都可以存在由逗号分隔的多个表达式。 教学内 容提要 例: for(int i=0,j=0;i<2&&j<3;i++, Console.WriteLine(\注意:不可以在“初始化变量”部分同时出现时间分配 备注 变量声明和其他表达式,出现这种情况时,编译器会报告错误。 例: for(int i=0,i++;i<2;i++); //错误 3.4跳转语句 3.4.1 break语句 (1)break语句用在switch语句中的作用是使程序的执行流程从它所在的switch语句中跳出。 (2)break语句用在循环语句中的作用是中断当前循环体的执行,开始执行该循环后面的语句。对于多重循环, break语句只能使程序从其所在的那重循环中跳出。 例3-5 break语句 3.4.2 continue语句 continue语句用在循环语句的循环体内,它的作用是中断本次循环,直接回到当前循环的起始处,开始下一轮循环。 17 长江大学工程技术学院章节备课

具体内容 例3-6 continue语句 3.4.3 goto语句 (1)使程序无条件地跳转到当前方法中某个标签所标识的语句处继续执行。使用形式如下: 或 标签: 语句 goto 标签; 标签:语句 (2)标签标识语句的一般形式如下: 时间分配 备注 (3)使用goto语句一般不是一个好的习惯。 (4)goto语句一般用在switch语句中: 教学内 容提要 或 goto default; goto case 常量表达式; 例3-7 goto语句

18

长江大学工程技术学院章节备课

章 节 名 称 课 序 基 本 内 容 教学目的与教学思路 重教学重点 第四章(1-3节) 5 备 注 本章主要参考文献学时 2 方法的定义和调用,方法中参数的传递 资料: 掌握C#中方法的定义和调用,了解方法的形参和实参和结合,了解值传递和引用传递的区别 形参和实参的结合,值传递和引用传递 点难点 难点 练习与思考题 形参和实参的结合 P55 4,6 过程考考勤 核要点 教 学 多媒体讲解、案例讲解 方 法 具体内容 4.1 定义方法 1.方法签名 返回值类型 方法名(形式参数表) { 教学内容提要 方法体 } 2.C#语言中的方法与其他语言中的函数或过程类似。它用于实现类和结构的行为,只能作为类或结构的一部分存在。 时间分配 19

长江大学工程技术学院章节备课

具体内容 3.如果某个方法没有返回值,return语句就可有可无。如果没有return语句,该方法在被调用时,执行方法的最后一条语句后,就自动结束方法的执行。如果有return语句,这时,return语句应表示为: return; 4.一个方法中允许出现多条return语句,分别用于不同条件下的方法返回。 4.2 调用方法 1.方法调用的一般形式如下: 方法名(实际参数表) 2.方法调用是一个表达式,其中的括号是方法调用运算符。表达式的值是被调用方法的返回值,它的类型就是方法定义中指定的方法返回值的类型。 教学内容提要 4.3 参数传递 4.3.1 值传递 1.值传递时,系统首先为被调用方法的形参分配内存空间,并将实参的值按位置一一对应复制给形参,此后,被调用方法中形参值的任何改变都不会影响到相应的实参。 2.默认情况下,值类型的参数通过值传递方式结合。 3.默认情况下的参数通常被称作值参数。 4.当一个值参数是引用类型时,与值类型不同,传递引用类型参数时,不是将实参本身的值传递给形参,而是将其引用值按值传递方式传递给形参。因此,形参所引用的变量与传递的实参相同,方法体内相应形参值的任何改变,都会影响到作为参数传递的实参。 时间分配 备注

20

长江大学工程技术学院章节备课

具体内容 时间分配 备注 4.3.1 引用传递 1.引用传递时,系统不是将实参本身的值传递给形参,而是将其引用值传递给形参。因此,形参所引用的变量与传递的实参相同,方法体内相应形参值的任何改变,都会影响到作为参数传递的实参。 2. 要以引用传递方式传递值类型参数,就要使用关键字ref或out。使用关键字ref或out修饰的教学内参数以引用传递方式传递,不过,关键字ref修饰容提要 的实参在调用方法前必须已经初始化,而关键字out修饰的实参在调用方法前可以没有初始化。 3.输出参数(关键字out修饰的参数) 4.在定义一个带有输出参数的方法时,该参数必须被看作是一个未赋值的变量,必须在方法中给其赋值。它通常用来向调用方法输出一个值, 5.引用参数(关键字ref修饰的参数) 针对引用和输出参数的实参必须是变量。

21

长江大学工程技术学院章节备课

章 节 名 称 课 序 基 本 内 容 教学目的与教学思路 重教学重点 递归方法 方法的重载,结构方法 重点掌握方法的重载,了解递归方法和结构方法 7 第四章(4-6节) 学时 2 备 注 本章主要参考文献 递归方法,方法的重载以及结构中的方法的使用 资料: 点难点 难点 练习与思考题 过程考考勤 核要点 教 学 多媒体讲解、案例讲解 方 法 具体内容 4.4 递归 1.递归过程分两个阶段: 第1个阶段为“递推”。 4!=4*3! 3!=3*2! 2!=2*1! 教学内1!=1*0! 0!=1(已知) 容提要 第2个阶段为“回归”。 时间分配 0!=1(已知) 1!=1*0!=1 例4-6 用递归方法求Fibonacci数2!=2*1!=2 3!=3*2!=6 4!=4*3!=24 列的第n项 22

长江大学工程技术学院章节备课

具体内容 2. 使用递归调用编写的程序简洁清晰,容易理解。不过,时间和空间的开销比较大,有时甚至会引起栈溢出。 4.5 方法重载 1.是指在一个类或结构中建立多个同名的方法,但方法的形参表互不相同。 2.不能仅仅依据关键字ref和out来区分重载方法。 3.调用方法时,系统优先选择与实参完全匹配的方法,如果找不到完全匹配者,就进行隐式类型转换以使实参与形参匹配。 4. 重载方法的返回值类型可以相同,也可以不同。但如果仅仅是返回值类型不同,则是非法的。 教学内例: 容提要 class A{ } static int f(int a){ } static double f(int a){ } static void Main(){ } f(1); //无法判断调用哪个return 1.0; return 1; 时间分配 备注 方法 4.6 结构方法 方法也可以用作结构的成员,与类的方法的使用原则相同

23

长江大学工程技术学院章节备课

章 节 名 称 第五章(1-2节) 9 备 注 课 序 基 本 内 容 教学目的与教学思路 重教学重点 学时 2 本章主要参考文献 类和对象的概念,抽象与封装的概念 资料: 掌握类和对象的概念,抽象与封装的概念。 类和对象的概念,封装的概念,自定义类 点难点 难点 练习与思考题 类和对象的区别,自定义类 Cat类的定义 过程考考勤 核要点 教 学 多媒体讲解、案例讲解 方 法 具体内容 5.1 抽象与封装 1) 数据抽象描述某类对象的公共属性;行为抽象描述某类对象的行为特征。 教学内容提要 2) 数据抽象和行为抽象被封装成一个有机的整体。C#语言通过类和结构来实现封装 。 3) 类和结构是数据及其相关操作的封装体 ,是对对象的抽象和描述,对象是类或结构的实例。 4) 类和结构实现了数据的隐藏。 时间分配 24

长江大学工程技术学院章节备课

具体内容 5.2 类和对象的定义 1)举例说明猫类的定义 class Cat { } 2)创建类的对象的一般形式如下: 类名 对象名=new 类名() 注意:类的对象只能采用下述表达式创建: 教学内容提要 3)访问对象成员的形式如下: 对象名.成员 例: Cat cat=new Cat(); new 类名() 类名 对象名 而如下形式: 只是声明了一个用来操作该类对象的引用。 public int Age; //字段,描述猫的年龄 public int Weight; //字段,描述猫的重量 public void Meow() //方法,定义猫的行为 { } Console.WriteLine (\//定义猫类 时间分配 备注 cat.Age=2; cat.Weight=5; cat.Meow(); 注意:通过某对象引用访问对象成员前,必须确保它已经连接到了一个实际的对象。

25

长江大学工程技术学院章节备课

具体内容 例: Cat cat; //错误 cat.Age=2; cat.Weight=5; 4)如果单独创建一个对象,而没有将创建对象时返回的引用值赋给一个对象引用,这个对象就是一个匿名对象。 例: new Cat(); 时间分配 备注 cat=new Cat(); 注意:匿名对象没有相应的对象引用,程序中的其他语句将无法访问它,也即只能在创建匿名对象的同时访问其成员。 教学内容提要

例: new Cat().Meow(); 26

长江大学工程技术学院章节备课

章 节 名 称 第五章(3-5节) 10 备 注 课 序 基 本 内 容 教学目的与教学思路 重教学重点 方法的使用 学时 2 本章主要参考文献 字段的定义,常量的使用,方法的定义 资料: 掌握字段的定义,常量的使用与方法的使用 点难点 难点 练习与思考题 实参与形参的结合 银行客户类的定义—方法与字段 过程考考勤 核要点 教 学 多媒体讲解、案例讲解 方 法 具体内容 5.3 字段 1)静态字段 用关键字static修饰的字段是静态字段。 静态字段属于整个类。 教学内一个静态字段只有一份存储空间。 容提要 静态字段可以通过类名访问,但不能通过对象访问。 2)只读字段 用关键字readonly修饰的字段是只读字段。 只读字段只能在声明时或者在其所属类的构造函数中赋值。 时间分配 27

长江大学工程技术学院章节备课

具体内容 例: public readonly int X; readonly int Y=10; 5.4 常量 1) 常量的值必须在声明时指定,其后不能赋值。 2) 常量不占用对象的内存,编译时,其值将被替换到需要该常量的代码中。因此,常量只能用其他常量表达式来初始化 3) 当一个常量作为类的成员存在时,这个常量就隐含地成为类的静态成员。 4) 常量不能显式地使用关键字static修饰。 5) 通常只有基本数据类型(不包括object型)和枚举类型变量才被声明为常量。 6) 自定义结构类型变量不能声明为常量。 7) 在一个方法中声明的常量称为局部常量。 教学内容提要 例: public const int X=10; 5.5方法 5.5.1静态方法 1) 用关键字static修饰的方法是静态方法。 2) 静态方法属于整个类。对它的访问可以通过类名进行,但不能通过对象。 3) 静态方法中没有相应的this。 4) 静态方法中不能直接访问非静态成员。 5.5.2引用类型参数传递 1) 以值参数传递引用类型变量时,不是将变量本身的值传递给形参,而是将其引用值以值传递的方式传递给形参。因此,形参所引用的变量与传递的变量相同,方法体内相应形参成员内容的任何改变,都会影响到作为参数传递的原变量。

28

时间分配 备注 public static

长江大学工程技术学院章节备课

具体内容 2)使用运算符“=”、“==”、“!=”操作引用类型变量时,实际操作的是对象的引用。 例: Number n1=new Number(); Number n2=new Number(); n1.I=n2.I=0; bool b=(n1==n2); //b=false n1=n2; b=(n1==n2); //b=true 教学内容提要

29

时间分配 备注

长江大学工程技术学院章节备课

章 节 名 称 第五章(6-8节) 11 备 注 课 序 基 本 内 容 教学目的与教学思路 重教学重点 学时 2 本章主要参考文献 对象的初始化与构造函数,访问权限修饰符,程序集 资料: 掌握对象的初始化与构造函数的重载和访问权限修饰符 对象的初始化与构造函数,访问权限修饰符 点难点 难点 练习与思考题 访问权限修饰符 银行客户类的定义—构造函数 过程考考勤 核要点 教 学 多媒体讲解、案例讲解 方 法 具体内容 时间分配 5.6 对象的初始化与构造函数 1)局部变量没有默认值,使用前必须给它赋教学内容提要 值。 2)C#语言能确保每个字段的初始化。如果程序中没有明确地为某个字段提供初值,C#语言将为它取默认值。 30

长江大学工程技术学院章节备课

具体内容 例: class B { } 3)定义结构类型时,不能给实例字段指定初值 例: 教学内struct A 容提要 { } public int I=2; //错误 static int i=2; int j=3; int k=j*3; int m=f(); int n=i; int f() { } return 1; //错误 //正确 //错误 时间分配 备注 4)构造函数 1.构造函数一般用于初始化类的对象 2.构造函数可以重载 3.不带任何参数的构造函数称为默认构造函数。 4.如果某个类中没有明确定义任何构造方法,编译器会自动为之生成一个默认构造函数。 5)静态构造函数 1.静态构造函数也称为类构造函数,它会在第1次使用该类时由系统自动调用,通常用于初始化类的静态字段 2.静态构造函数总是公共的,不需要也不能显式指定。 3.静态构造函数不能带有任何参数。

31

长江大学工程技术学院章节备课

具体内容 4.静态构造函数中不能直接访问所属类的实例成员 5.7程序集与命名空间 1.一般来说,一个程序集对应一个EXE或DLL文件。 2.通常,每个EXE文件都是一个程序集,可以在其他程序中引用。 3.要引用某个程序集,需要在csc编译命令中加上/reference或/r选项,后跟程序集所在的文件名。如果需要引用多个程序集,则需要使用多个/reference或/r选项,或者使用单个/reference或/r选项,并且使用分号分隔的列表指定每个程序集。 5.8访问权限修饰符 1.如果某个数据类型不是在其他数据类型内部定义的,那么用于修饰该数据类型的访问权限修饰教学内容提要 符只能是public或internal。 2.如果将修饰符public放在某类型定义的最前面,该类型就是公共的,对它的访问没有任何限制; 3.如果将修饰符internal放在某类型定义的最前面(或保持默认),该类型就只能在包含它的程序集中使用,该程序集外不能使用。 4.如果某个类型是在另一类型内部定义的,该类型就是一个内部类型。其中,用于修饰类内部定义的类型的访问权限修饰符可以是public、internal、protected internal、protected和private;用于修饰结构内部定义的类型的访问权限修饰符可以是public、internal和private。且默认情况下,内部类型的访问权限是private。 5.修饰符public修饰的成员具有最大的使用权限,对它的访问没有任何限制。 32 时间分配 备注 长江大学工程技术学院章节备课

具体内容 6.修饰符private修饰的成员(或保持默认)只能在其所属的类中访问。 7.修饰符internal修饰的成员只能在其所属程序集中访问,该程序集外不能访问。 8.protected internal修饰的成员可以在所属程序集及所属类的派生类中访问。 9.protected修饰的成员可以在其所属类及所属类的派生类中访问。 10.结构成员不能用protected internal和protected修饰。 11.类的字段一般应声明为private,并在类中另外提供办法来读取和设置这些私有字段值。 12.按照C++等语言的传统,为了读取和设置私有字段值,类中应提供相应的公共成员方法。 教学内 容提要

33

时间分配 备注 长江大学工程技术学院章节备课

章 节 名 称 第五章(9-11节) 13 备 注 课 序 基 本 内 容 教学目的与教学思路 重教学重点 学时 2 本章主要参考文献 类的属性,成员作用域,this关键字 资料: 掌握属性的两种用法,类成员的作用域和this关键字的用法 读属性,写属性,类成员作用域 点难点 难点 练习与思考题 this关键字的用法 银行客户类的定义—属性 过程考考勤 核要点 教 学 多媒体讲解、案例讲解 方 法 具体内容 5.9 属性 1. 属性是为了对实现对字段的可访问读写 2. 属性在一定程序上实现了类的封装性 3. 属性分为读属性和写属性 教学内容提要 4. 属性是一种特殊的方法 5. 属性设置格式如下: public 属性名 {get{return 私有字段;} return {set 私有字段=value;} } 时间分配 34

长江大学工程技术学院章节备课

具体内容 例: public int Hour //属性Hour 教学内容提要 5.10作用域 1.类成员的作用域是整个类。因此,类定义中,成员之间的顺序是任意的。 例: class A { } public void Method() { i++; Console.WriteLine(i); { } get { return hour; } set { hour=((value>=0)&&(value<24)? } value:0); //set访问器 //get访问器 时间分配 备注 } private int i=2; 2.局部变量的作用域从它的声明开始延续到包含它的块尾。

35

长江大学工程技术学院章节备课

具体内容 例: 教学内容提要 void f() { int i=10; //变量i作用if(i>0) { ... int j=2; //变量j作用域的起... //变量j作用域的 //变量i作用域的 时间分配 备注 域的起始处 始处 } 结束处 } 结束处 3.同一个类中的数据成员以及数据成员与方法成员之间不能重名。不过,类成员与方法体内的局部变量(含常量)可以重名。当局部变量与类成员重名时,在该重名局部变量作用域内,局部变量是可见的,重名类成员则被隐藏起来。如果需要访问这个被隐藏的成员,就需要使用类名(对静态成员)或关键字this(对实例成员)来指定。 4.析构函数与垃圾回收 1)引用某个对象的所有对象引用都退出作用域后,该对象会依然存在,继续占用内存。不过,程序无法访问它,也即产生了垃圾对象。 2)为了回收垃圾对象所占内存,C#系统提供了一个被称作垃圾回收器的机制。垃圾回收器能自动监测所有对象,如果发现垃圾对象,便释放其所占内存。

36

长江大学工程技术学院章节备课

具体内容 5.11 this关键字 1.关键字this代表当前对象。 2.关键字this只能用在实例方法中(包括构造函数、析构函数、方法、属性、索引器和事件)。 3.静态方法对任何实例成员的访问都必须通过相应对象进行。 4.静态方法中可以直接访问所属类的其他静态成员。 教学内 容提要

时间分配 备注 37

长江大学工程技术学院章节备课

章 节 名 称 第六章(1-4节) 15 备 注 课 序 基 本 内 容 教学目的与教学思路 重教学重点 学时 2 本章主要参考文献 基类与派生类,重写与隐藏,引用类型转换 资料: 了解继承的机制,掌握基类与派生类的使用,了解多态中的重写与隐藏,引用类型转换 基类与派生类,重写与隐藏 点难点 难点 练习与思考题 基类与派生类,重写与隐藏 银客户类类—信用卡账户类 过程考考勤 核要点 教 学 多媒体讲解、案例讲解 方 法 具体内容 6.1继承简介 1. 继承是从一个类派生出一个新类的过程。 2. 通过继承,可以让一个类拥有另一个类的全部成员,也即让一个类继承另一个类的教学内容提要 全部成员。 3. 派生出来的新类称为派生类;而被继承的类称为基类。 4. 单继承是指从一个基类派生出一个派生类的过程,而多继承是指从一个以上的基类派生出一个派生类的过程。 5. C#语言仅支持单继承,其多继承只能通过接口等间接实现。

38

时间分配 长江大学工程技术学院章节备课

具体内容 6.2 基类与派生类 1.派生类自动获取基类的除构造函数和析构函数外的所有成员。 2.基类的公共成员被派生类继承后在派生类中可以直接访问,也可以在程序的任何地方通过派生类的对象或派生类名访问;基类的私有成员不能在派生类中访问,也不能通过派生类的对象或派生类名访问;基类的保护成员只能在基类和派生类中访问,不过在派生类中不能通过基类的对象访问。 3.当派生类与基类的定义不在同一程序集时,基类的internal成员不能在位于另一个程序集的派生类中访问,也不能通过该派生类的对象或派生教学内容提要 类名访问;基类的protected internal成员只能在所属程序集及所属类的派生类中访问,不能通过位于另一个程序集的派生类对象或派生名在派生类外访问,也不能在位于另一个程序集的派生类中通过基类对象访问。 4.派生类不能继承基类的构造函数。因此,创建派生类对象时,为了初始化从基类中继承来的字段,系统需要调用其基类构造函数。 使用关键字base调用基类构造函数的调用表达式只允许出现在构造函数的函数头之后,不能出现在函数体内。 class 派生类名 :基类名 { } 定义派生类新成员 时间分配 备注

39

长江大学工程技术学院章节备课

具体内容 时间分配 备注 5.调用基类构造函数时传递的参数不能是关键字this或当前对象的非静态成员。 6.在一个构造函数中不能同时调用所属类和其基类的构造函数,如果一个构造函数中调用了所属类的另一个构造函数,编译器就不会自动插入对其基类默认构造函数的调用。 6.3 重写与隐藏 1. 只有虚拟方法成员可以重写。 2. 要将某个方法显式声明为虚拟方法需要使用关键字virtual,而要重写某个虚拟方法则必须使用关键字override显式声明。 3. 方法重写时,派生类中的方法应该与基类中被教学内容提要 重写的方法有相同的方法名、返回值类型、参数列表和访问权限。 4. 如果某个类中的一个方法是其基类的重写方法,那么该方法也就隐式成为一个虚拟方法。 5. 派生类无法调用基类的私有方法,也就没有所谓的派生类对基类私有方法的重写,因此,类的私有方法不能声明为虚拟的。 6. 类的静态方法不能声明为虚拟的。 7. 成员隐藏并不局限于方法成员,它也能用于数据成员和内部数据类型。 8. 使用关键字new隐藏基类成员时并不要求基类中的成员是虚拟的。它通常用于改写基类中的非虚拟方法。

40

长江大学工程技术学院章节备课

具体内容 6.4 引用类型转换 一个类的对象在一定条件下可以转换成继承链中的另一个类的对象: 一个派生类对象的类型可以向上转换成它的基类类型,这种转换是安全的,C#编译器能隐式进行。 一个基类对象的类型一般不能向下转换成它的派生类类型。但有一种情况除外,如果一个基类对象引用实际引用的是一个派生类对象,就可以使用显式转换将这个基类对象转换成派生类类型。 将一个基类对象的类型转换成它的派生类类型时,必须确保其引用实际引用是该派生类的一个对象,否则会引发异常。为了防止这种情况发生,可以使用运算符is或as。 运算符is的作用是检查某个表达式值的实际类型教学内是否是某个指定的值类型、引用类型,或者派生于容提要 某个指定的类、实现了某个指定的接口,又或者由某个指定值类型装箱而来。如果是,且该对象不为null,则返回true,否则返回false。 使用运算符as可以将某个表达式的值转换成指定的引用类型,而且转换时,自动完成运算符is所作的检查。如果运算符as检测到不能进行转换,表达式的结果就为null,不会引发异常。 运算符as不能用于将某个表达式的值转换为值类型。 C c1=a1 as C;

//正确 int i= 2.4 as int; //错误 时间分配 备注 41

长江大学工程技术学院章节备课

章 节 名 称 课 序 基 本 内 容 教学目的与教学思路 重教学重点 第六章(5-7节) 17 备 注 本章主要参考文献学时 2 多态与动态绑定,抽象类和抽象方法,密封类和静态类 资料: 重点掌握多态与动态绑定,了解抽象类,静态类和密封类及其方法 多态与动态绑定,抽象类和抽象方法 点难点 难点 练习与思考题 多态与动态绑定,抽象类和抽象方法 过程考考勤 核要点 教 学 多媒体讲解、案例讲解 方 法 具体内容 6.5多态与动态绑定 1. 通过方法重写可以在具有继承关系的多个类中定义名称相同但操作不同的多个方教学内容提要 法,多态指的正是程序运行时判断执行其中哪个方法代码的能力。 2. C#语言的多态性是通过动态绑定实现的。所谓绑定是指建立方法调用语句和方法之间的关系,而动态绑定是指在程序运行时,根据对象的实际类型调用相应的方法。 3. 应用多态,可使程序具有良好的可扩充性。 时间分配 42

长江大学工程技术学院章节备课

具体内容 4.C#语言中,所有方法默认都是非虚拟的。非虚拟方法的调用在编译时绑定(即静态绑定),因此,调用非虚拟方法时,实际执行的总是用于调用的对象引用类型中定义(或其从基类继承来的)的方法。 5.虚拟方法的调用是动态绑定的,当通过某个对象引用调用一个虚拟方法时,程序运行时会根据该引用实际引用的对象类型,按继承链从对象引用类型到实际对象类型顺序搜索其重写方法,最终执行的是最后找到的重写方法。 6.成员隐藏不支持多态。 7.静态方法不能声明为虚拟的,静态方法也不能是重写的。 8.重写方法不能同时是隐藏方法。不过,虚拟方法可以同时是隐藏方法,虚拟的隐藏方法允许在派教学内生类中重写。 容提要 6.6抽象类和抽象方法 1. 抽象方法一种虚拟方法。 2. 抽象方法只有方法头,没有具体的方法体。 例: abstract void Method(); abstract int Weight { } get; set; 时间分配 备注 3.含有抽象方法的类是抽象类,抽象类必须使用关键字abstract修饰。不过,一个抽象类并不一定拥有抽象方法。 注意:抽象类只能用作其他类的基类,不能创建其对象

43

长江大学工程技术学院章节备课

具体内容 例: abstract class A { } public void Method(){} 时间分配 备注 4.继承于抽象类的类一般应该实现抽象类中的所有抽象方法(重写)。如果没有,那么该派生类也就成为抽象类。 5.静态方法不能声明为抽象的。 6.私有方法不能声明为抽象的。 6.7密封类 1.密封类不能被其他类继承。 sealed class A{} class B : A{} //错误 教学内容提要 2.因为密封类不能被继承,因此,其中的方法不能声明为虚拟或抽象的,否则就违背了声明密封类的初衷。 3.密封方法不能在派生类重写。 4.将某个方法声明为密封的是为了说明该方法不能被重写,因此,密封方法应该同时是一个重写方法,关键字sealed必须和override在方法声明时同时出现。 5.静态类既不能被继承,也不能创建其对象,其中所有成员都应是静态的。

44

长江大学工程技术学院章节备课

章 节 名 称 课 序 基 本 内 容 教学目的与教学思路 重教学重点 接口 第六章(8-11节) 19 备 注 本章主要参考文献学时 2 接口,object类,装箱与拆箱,DateTime与Math 资料: 重点掌握接口的使用,了解装箱与拆箱的概念,掌握 DateTime与Math的用法 接口,object类,装箱与拆箱 点难点 难点 练习与思考题 P114 17,20 过程考考勤 核要点 教 学 多媒体讲解、案例讲解 方 法 具体内容 6.8接口 1.接口中定义的成员可以是方法、属性、索引器和事件,但不能是字段、常量、构造函数、析构函数、运算符和内部数据类型,而且不能包含任何静态成员。 教学内2.接口本身并不提供它所定义成员的具体实容提要 现,它只是指定了实现该接口的类或结构必须实现的成员。接口中定义的成员的访问权限总是公共的,不过接口成员前一般不能有任何修饰符。但如果一个接口是另一接口的派生接口时,成员前可以使用关键字new显式声明某成员隐藏了基接口中的成员。 45 时间分配

长江大学工程技术学院章节备课

具体内容 interface ITest 3.通过继承,可以在现有接口的基础上定义派生接口。不过,与类不同,一个接口可以同时继承多个接口。 教学内4.除内部接口外,接口的访问权限只能是public容提要 或internal(默认)。内部接口的访问权限则可以是public、internal、protected internal 、protected 或private(默认)。 5.可以将接口想像成一个更纯粹的抽象类,不过,抽象类中还可以包含字段和具体方法等。在使用上,接口与抽象类有许多相似之处。比如,不能创建接口的对象,可以用作变量的数据类型,可以用作对象转换的类型,等等。 6. 接口中的所有方法都要靠使用接口的类或结构实现。但是与抽象方法不同,接口中的方法并不是虚拟方法,实现时不能使用关键字override。不过,它同样具有多态性。 7. 如果某个接口方法没有被实现,实现类中必须将它声明为抽象的,该类当然也必须声明为抽象的。 { } int X { } void Method(); get; set; 时间分配 备注

46

长江大学工程技术学院章节备课

具体内容 interface IMsg{ void Message(); } public abstract class MyClass : IMsg { public abstract void Message(); } 时间分配 备注 8. C#语言中,为了得到多继承的效果,允许在一个类中实现多个接口,甚至,还允许同时继承一个类。 6.9 object类 1.System.Object类是.NET框架的根类,C#语言中,所有的类或结构都直接或间接继承于它。 2. Equals方法用于比较两个对象是否相等。 3.对于值类型,Equals方法判断对象所包含的值是教学内容提要 否相等。不过,对于引用类型,Equals方法默认情况下支持引用相等。如果需要使用Equals方法判断两个引用类型对象是否值相等,必须在派生类中重写上述虚拟Equals方法。 6.10 装箱与拆箱 1.装箱是指将值类型转换为object 型或该值类型所实现的任何接口类型。 2.装箱转换可以隐式进行,转换时,系统会首先在堆中分配一个对象内存,然后将值类型的值复制到3.该对象中。拆箱是指从object型到值类型或从接口类型到实现该接口的值类型的转换。 4.拆箱必须显式进行,它包括以下两个步骤: 1)检查对象实例,确保它是给定值类型的一个装箱值。2)将该值从实例复制到值类型变量中。

47

长江大学工程技术学院章节备课

具体内容 6.11 DateTime与Math 1.DateTime结构用于表示值范围在公元0001年1月1日午夜12:00:00到公元9999年12月31日晚上11:59:59之间的日期和时间,时间值以100毫微秒为单位(该单位称为刻度)进行计量。 2.DateTime结构中定义有大量的公共属性和方法,使用它们可以操作相应的DateTime 对象。 教学内 容提要

时间分配 备注 48

本文来源:https://www.bwwdw.com/article/qzzo.html

Top