




已阅读5页,还剩41页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
深入 C# 数据类型,第二章,回顾与作业点评,.NET 框架结构包括哪两个部分? 公共语言运行时的核心组件? 使用VS2010,在类中快速引入命名空间的方式是什么?,预习检查,结构是值类型还是引用类型? 如何标识方法为静态方法?,本章任务,使用Visio绘制基本类图 实现项目经理给员工评分功能 实现给新购计算机编号 实现投票器,选举最佳员工,巩固类、对象、封装和方法调用 使用Visio绘制基本类图 理解结构 理解值类型和引用类型作为方法参数的区别 使用静态方法解决实际问题,本章目标,复习-类和对象,对象 现实世界存在的具体实体,皆有各自的状态和行为 类 具有相似状态和行为的集合 类是一种复杂的数据类型,是将不同类型的数据和与这些数据相关的操作封装在一起的集合体 类和对象的关系,类,对象,归纳共性,类的实例化,复习-类的属性,类的属性 只读、只写 设置验证逻辑,/ / 项目经理类 / class PM private string _name; /姓名 public string Name get return _name; set _name = value; /省略其他属性 ,private int _age; /年龄 public int Age /年龄必须大于30岁 get return _age; set if (value = 30 | value = 100) _age = value; else _age = 30; ,get、set访问器保障类中字段的安全,自动属性,自动属性 优点:简化属性代码 适用场合:不操作字段、不设置只读、只写、验证逻辑时,/ 姓名 public string Name get; set; ,private string _name; /姓名public string Name get return _name; set _name = value; ,简化,编译器自动生成Name的私有字段,prop + tab键 + tab键,封装,面向对象三大特征之一封装 类是封装的最基本单元 通过访问修饰符授权 封装的好处 保证数据安全性 提供清晰的对外接口 类内部实现可以任意修改,不影响其他类,封装:又称信息隐藏,指利用抽象数据类型将数据和数据的操作封 装在一起,使其构成一个不可分割的独立实体,尽可能隐藏内部的细节, 只保留一些对外接口使之与外部发生联系,类图,类图描述类的结构,VS2010的类图,“锁”表示私有,通用的类图,“-”表示私有 “+”表示公有,“:”后是变量类型,“:”后是返回类型,读懂类图是OOP的基本要求,练习绘制基本类图,需求说明 使用Visio绘制类图 项目经理类(PM) 程序员类( SE ),完成时间:15分钟,共性问题集中讲解,常见调试问题及解决办法 代码规范问题,共性问题集中讲解,复习-方法2-1,方法 表示类和对象的行为 方法定义:参数、返回值、方法体,计算器 用户注册验证,值类型和引用类型,下面代码的运行结果,/使用值类型 int age1 = 18; int age2 = age1; age2 = 20; Console.WriteLine(“age1: “ + age1); Console.WriteLine(“age2: “ + age2); /使用引用类型 SE se1 = new SE(); SE se2 = new SE(); se1.Age = 18; se2 = se1; se2.Age = 20; Console.WriteLine(“SE1 的年龄为 0“, se1.Age); Console.WriteLine(“SE2 的年龄为 0“, se2.Age);,值类型存储方式,值类型直接存储值,age1=18,age1 = 18,age1=18,age2=18,age2 = age1,age1=18,age2=20,age2 = 20,age1,age1,age2,age1,age2,Age=18,引用类型存储方式,se1,se1.Age = 18,Age=18,引用类型存储对象的引用,se1,se2,se2 = se1,Age=20,se1,se2,se2.Age = 20,两个变量都发生变化,结构,需要存储学生信息,具有ID和年龄,选用哪种数据类型?,public class Student public int id; /ID public int age; /年龄 ,public struct Student public int id; /ID public int age; /年龄 ,保存值类型字段,结构: 1、值类型 2、使用结构具有较快提取速度,结构定义,结构中有字段,也可以有方法,访问修饰符 struct 结构名 定义结构成员 ,public struct Student public int id; /ID public int age; /年龄 public void Show() Console.WriteLine(“ID:0n年龄:1“,id,age); ,字段不能直接赋初值,成员方法,Student stu; /创建学生结构 stu.id = 1001; /给学号赋值 stu.age = 20; /给年龄赋值 stu.Show();,结构的使用,定义结构可以不用new,为结构成员赋值,调用结构的方法,Student stu; stu.id = 1001; stu.age = 20; Student stu2; stu2 = stu;,值类型,存储为新的副本 占用较多存储空间; 类:存储地址,结构是值类型,提取速度快,但是频繁的赋值操作会占用较大空间, 在开发中多数情况下都定义为类!,小结2-1,编写一个存储长方形(Rec)属性的结构 长(Length) 宽(Width) 实例化一个结构长方形,并计算面积,参考答案,小结2-2,C#常用值类型和引用类型,装箱和拆箱,值类型和引用类型之间的转换,值类型,引用类型,装箱,拆箱,static void Main(string args) int i = 123; object o = i; / 装箱 i = 456; /改变i的内容 Console.WriteLine(“值类型的值为 0“, i); Console.WriteLine(“引用类型的值为 0“, o); ,static void Main(string args) int i = 123; object o = i; / 装箱 int j = (int)o; /拆箱 ,与值类型的变量类型要一致,不同类型参数传递,公司通过投票选举优秀员工,每获得一投票,人气值增加1,两次的人气值不同,值方式传递引用类型,值方式传递引用类型参数 参数在方法中被修改,/传递引用类型参数 SE zhang = new SE(); /省略其他赋值 zhang.Popularity = 10; Voter voter = new Voter(); voter.Vote(zhang); MessageBox.Show(zhang.SayHi();,public void Vote(SE se) /人气值增加1 se.Popularity+; ,按引用传递,参数zhang在Vote()调用后发生了变化,值方式传递值类型,值方式传递值类型参数 结构:StructSE 不会被修改,/传递值类型参数 StructSE structZhang = new StructSE(); /创建SE结构 /省略其他赋值 structZhang.Popularity = 10; Voter voter = new Voter(); voter.Vote(structZhang); MessageBox.Show(structZhang.SayHi();,public void Vote(StructSE se) /人气值增加1 se.Popularity+; ,人气加1,两次的人气值相同,参数在程序中未发生变化,值传递,引用方式传递,ref 引用方式传递值类型,传递引用类型,完全相同,public void Vote(ref StructSE se) /人气值增加1 se.Popularity+; ,ref 引用方式传递参数,调用Vote()前后人气值发生变化,保留对参数的修改,数组作为参数,阅读代码,写出运行结果,int odd = 1, 3, 5 ; ArrayOpr opr = new ArrayOpr(); opr.PrintArray(odd); opr.ChangeToEven(odd); opr.PrintArray(odd);,private void ChangeToEven(int arr) for (int i = 0; i arr.Length; i+) arri = i * 2; ,arr0=1 arr1=3 arr2=5 arr0=0 arr1=2 arr2=4,引用类型参数传递,数组是引用类型,指导项目经理评分3-1,训练要点 方法调用 引用类型作为参数 需求说明 实现项目经理给员工评分,指导项目经理评分3-2,实现思路 编写SE类 查看评分窗体中创建公有成员变量保存员工信息 SE对象数组 初始化员工信息并使用ListView控件显示 编写Init()方法和UpdateView()方法 PM类添加Judge(SE se)方法 选中某员工,双击打开评分窗体,实现事件处理方法,指导项目经理评分3-3,难点指导 ListView展示数据 窗体间信息传递,完成时间:30分钟,public void UpdateView() lvAssess.Items.Clear(); /清空信息 for (int i = 0; i engineers.Length; i+) ListViewItem item = new ListViewItem(); item.Text = engineersi.ID; item.SubItems.Add(engineersi.Name); /设置姓名 /省略设置年龄、评分、评价 this.lvAssess.Items.Add(item); /添加项 ,/对选中对象评分 FrmJudge frm = new FrmJudge(this,index); frm.Show();,FrmShow窗体对象,选中的SE对象的数组索引,练习生成设备ID,需求说明 为公司购买的3台不同型号的计算机进行编号 编号的规则是“计算机型号+4位随机号” 编号完毕后,输出每台计算机的信息,完成时间:15分钟,共性问题集中讲解,常见调试问题及解决办法 代码规范问题,共性问题集中讲解,为什么需要静态方法,使用DBHelper创建、关闭数据库连接,public class DBHelper private string connString = “; /连接字符串 /获得数据库连接 public SqlConnection GetConnection() SqlConnection connection = new SqlConnection(connString); return connection; /关闭数据库连接 public void CloseConnection(SqlConnection connection) connection.Close(); ,特点: 1、DBHelper类方法被频繁调用 2、提供的方法是对于所有类的实例都通用的特征,类似“工具类”,静态成员,静态成员:使用static修饰符,class 类名 public static 数据类型 变量名; public static 返回值 方法名(参数列表) 方法体; ,静态成员变量,例如:定义连接字符串、员工类定义员工总数,静态成员方法,例如:定义工具类的方法,提供独立于特定对象之外的普遍功能,静态成员为一个类的所有实体所共享,它属于类,而不属于类的某个对象! 例如:太阳,静态成员的使用,调用静态成员 以前使用过的静态成员 Console类实现控制台显示文本 Math类获取值,类名.变量名 = XX; /给变量赋值 类名.方法名(); /调用静态方法,Console.WriteLine(“你好!“);,Console.WriteLine(Math.PI);,静态方法,静态变量,静态成员示例,public class DBHelper private static string connString = “; /获得数据库连接 public static SqlConnection GetConnection() SqlConnection connection = new SqlConnection(connString); return connection; / ,应用场合:当类不会有多个对象而更像是一个公用类的时候, 或当方法或属性是“公用”信息的时候声明为静态的比较好!,常见错误,public class Student public string name; /姓名 public int age; /年龄 public static string country = “China“; /国籍 ,class Program static void Main(string args) SayHi(); Student stu = new Student(); Console.WriteLine(“学生的国籍 :“+stu.country); public void SayHi() Console.WriteLine(“hello world!“); ,运行错误,运行错误,静态成员与实例成员,使用static修饰的成员称为静态成员 使用实例对象调用的成员称为实例成员,指导实现投票3-1,训练要点 静态方法 动态加载控件 需求说明 实现给候选人投票功能 共有20个投票机会,显示已投票数和剩余投票机会,投票完毕,“投票”按钮不可用 查看候选人选票结果,指导实现投票3-2,实现思路 使用下拉列表绑定员工信息 编写Voter类Vote(SE se)方法 实现投票响应事件 动态添加控件显示投票结果 难点指导 实现投票,class Voter public static int clicks = 0; /投票次数 public static int total
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024四川航空股份有限公司成熟航权时刻协调员社会招聘笔试参考题库附带答案详解
- 七年级道德与法治上册 第四单元 生命的思考 第八课 探问生命 第一框 生命可以永恒吗教学设计 新人教版
- 九年级历史下册 第三单元 第9课 世界战火的重燃教学设计 冀教版
- 人教版三年级下册4 两位数乘两位数笔算乘法教案
- 人教版五至六年级第六章 球类运动第二节 小足球教学设计
- 五年级信息技术上册 第3课 未来的电脑教学设计 华中师大版
- 人教精通版三年级下册Recycle 1教案
- 初中物理第2节 光的反射教学设计及反思
- 服务话术规范与标准培训
- 人教部编版三年级上册18 富饶的西沙群岛表格教案及反思
- 门头广告合同协议
- 2024-2025学年人教新版七年级下册数学期中复习试卷(含详解)
- 2025年中国电船制造行业市场全景监测及投资前景展望报告
- 施工安全的教育培训记录表
- (正式版)SH∕T 3548-2024 石油化工涂料防腐蚀工程施工及验收规范
- MOOC 敦煌文学艺术-浙江师范大学 中国大学慕课答案
- 贯彻落实八项规定精神情况自查表
- GA/T 1073-2013生物样品血液、尿液中乙醇、甲醇、正丙醇、乙醛、丙酮、异丙醇和正丁醇的顶空-气相色谱检验方法
- 水利工程监理安全台账
- 《美丽的集邮册》朗诵
- 35kV-220kV架空送电线路维护管理方案
评论
0/150
提交评论