深入平台和C编程2_第1页
深入平台和C编程2_第2页
深入平台和C编程2_第3页
深入平台和C编程2_第4页
深入平台和C编程2_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、深入深入 c# 数据类型数据类型第二章第二章回顾与作业点评.net 框架结构包括哪两个部分?框架结构包括哪两个部分?公共语言运行时的核心组件?公共语言运行时的核心组件?使用使用vs2010,在类中快速引入命名空间的方式,在类中快速引入命名空间的方式是什么?是什么?预习检查结构是值类型还是引用类型?结构是值类型还是引用类型?如何标识方法为静态方法?如何标识方法为静态方法?本章任务使用使用visio绘制基本类图绘制基本类图实现项目经理给员工评分功能实现项目经理给员工评分功能实现给新购计算机编号实现给新购计算机编号实现投票器,选举最佳员工实现投票器,选举最佳员工巩固类、对象、封装和方法调用巩固类、对

2、象、封装和方法调用使用使用visio绘制基本类图绘制基本类图理解结构理解结构理解值类型和引用类型作为方法参数的区别理解值类型和引用类型作为方法参数的区别使用静态方法解决实际问题使用静态方法解决实际问题本章目标复习-类和对象对象对象现实世界存在的具体实体,皆有各自的状态和行为现实世界存在的具体实体,皆有各自的状态和行为类类具有相似状态和行为的集合具有相似状态和行为的集合类是一种复杂的数据类型,是将不同类型的数据和类是一种复杂的数据类型,是将不同类型的数据和与这些数据相关的操作封装在一起的集合体与这些数据相关的操作封装在一起的集合体类和对象的关系类和对象的关系类类 对象对象 归纳共性归纳共性类的实

3、例化类的实例化复习-类的属性类的属性类的属性只读、只写只读、只写设置验证逻辑设置验证逻辑/ / 项目经理类项目经理类/ 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 = 3

4、0; 演示示例:实现经理问好演示示例:实现经理问好get、set访问器保障类中字段的安全访问器保障类中字段的安全自动属性自动属性自动属性优点:简化属性代码优点:简化属性代码适用场合适用场合:不操作字段、不设置只读、只写、:不操作字段、不设置只读、只写、验证逻辑时验证逻辑时/ 姓名姓名public string name get; set; private string _name; /姓名姓名public string name get return _name; set _name = value; 简化简化 演示示例:创建自动属性演示示例:创建自动属性编译器自动生成编译器自动生成name的

5、私有字段的私有字段 prop + tab键键 + tab键键封装面向对象三大特征之一面向对象三大特征之一封装封装类是封装的最基本单元类是封装的最基本单元通过访问修饰符授权通过访问修饰符授权封装的好处封装的好处保证数据安全性保证数据安全性提供清晰的对外接口提供清晰的对外接口类内部实现可以任意修改,不影响其他类类内部实现可以任意修改,不影响其他类封装封装:又称信息隐藏,指利用抽象数据类型将数据和数据的操作封:又称信息隐藏,指利用抽象数据类型将数据和数据的操作封装在一起,使其构成一个不可分割的独立实体,尽可能隐藏内部的细节,装在一起,使其构成一个不可分割的独立实体,尽可能隐藏内部的细节,只保留一些对

6、外接口使之与外部发生联系只保留一些对外接口使之与外部发生联系类图类图描述类的结构类图描述类的结构vs2010的类图的类图 查看一个查看一个类的类图类的类图“锁锁”表示私有表示私有演示示例:使用演示示例:使用visual studio生成类图生成类图通用的类图- age:int- name:string+ name:string类名类名pm+sayhi():void“-”表示私有表示私有“+”表示公表示公有有“:”后是变量后是变量类型类型“:”后是返回后是返回类型类型读懂类图是读懂类图是oop的基本要求的基本要求 演示示例:使用演示示例:使用visio绘制绘制pm类图类图练习绘制基本类图需求说明

7、需求说明使用使用visio绘制类图绘制类图项目经理类(项目经理类(pm)程序员类(程序员类( se )+ 年龄年龄 + 姓名姓名 + 性别性别 + 工号工号 + 人气值人气值 se类类+ 问好问好 + 年龄年龄 + 姓名姓名 + 性别性别 + 工号工号 + 资历资历 pm类类+ 问好问好 完成时间:完成时间:15分钟分钟共性问题集中讲解n常见调试问题及解决办法常见调试问题及解决办法n代码规范问题代码规范问题共性问题集中讲解共性问题集中讲解复习-方法2-1方法方法表示类和对象的行为表示类和对象的行为方法定义:参数、返回值、方法体方法定义:参数、返回值、方法体演示示例:计算器演示示例:计算器演示示

8、例:用户注册验证演示示例:用户注册验证计算器计算器用户注册验证用户注册验证值类型和引用类型下面代码的运行结果下面代码的运行结果/使用值类型使用值类型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

9、.age);console.writeline(se2 的年龄为的年龄为 0, se2.age);值类型存储方式值类型直接存储值值类型直接存储值age1 = 18 age2 = age1age2 = 20age1age1age2age1age2age=18引用类型存储方式se1se1.age = 18age=18引用类型存储对象的引用引用类型存储对象的引用se1se2se2 = se1age=20se1se2se2.age = 20两个变量都发生两个变量都发生变化变化结构需要存储学生信息,具有需要存储学生信息,具有id和年龄,选用哪种和年龄,选用哪种数据类型?数据类型?public class

10、 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; /年龄年龄 pub

11、lic 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 s

12、tu2;stu2 = stu;值类型,存储为新的副本值类型,存储为新的副本占用较多存储空间;占用较多存储空间;类:存储地址类:存储地址结构是值类型,提取速度快,但是频繁的赋值操作会占用较大空间,结构是值类型,提取速度快,但是频繁的赋值操作会占用较大空间, 在开发中多数情况下都定义为类!在开发中多数情况下都定义为类!小结2-1编写一个存储长方形(编写一个存储长方形(rec)属性的结构)属性的结构长(长(length)宽(宽(width)实例化一个结构长方形,并计算面积实例化一个结构长方形,并计算面积参考答案参考答案小结2-2 类别类别 数据类型数据类型 描述描述值类型值类型基本数据类型基本数据类

13、型整型:整型:int 长整型:长整型:long 浮点型:浮点型:float、double 字符型:字符型:char 布尔型:布尔型:bool枚举类型枚举类型枚举:枚举:enum结构类型结构类型结构:结构:struct引用类型引用类型类类基类:基类:system.object 字符串:字符串:string 自定义类:自定义类:class数组数组数组:数组:int, stringc#常用值类型和引用类型常用值类型和引用类型演示示例:演示示例:值类型和引用类型区别值类型和引用类型区别 装箱和拆箱值类型和引用类型之间的转换值类型和引用类型之间的转换值类型值类型 引用类型引用类型 装箱装箱拆箱拆箱sta

14、tic 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; /拆箱拆箱与值类型的变量与值类型的变量类型要一致类型要一致演示示例:装箱和拆箱演示示例:装箱和拆箱不同类型参数传递公司通

15、过投票选举优秀员工,每获得一投票,公司通过投票选举优秀员工,每获得一投票,人气值增加人气值增加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.

16、popularity+;按引用传递按引用传递参数参数zhang在在vote()调用后发生调用后发生了变化了变化演示示例:演示示例:投票增加人气值投票增加人气值 值方式传递值类型值方式传递值类型参数值方式传递值类型参数结构:结构:structse不会被修改不会被修改 /传递值类型参数传递值类型参数structse structzhang = new structse(); /创建创建se结构结构/省略其他赋值省略其他赋值structzhang.popularity = 10;voter voter = new voter();voter.vote(structzhang);messagebox.

17、show(structzhang.sayhi();public void vote(structse se) /人气值增加人气值增加1 se.popularity+;人气加人气加1两次的人气值相同,两次的人气值相同,参数在程序中未发参数在程序中未发生变化生变化值传递值传递演示示例:演示示例:使用结构投票增加人气值使用结构投票增加人气值 引用方式传递ref 引用方式传递值类型引用方式传递值类型 传递引用类型传递引用类型 完全相同完全相同 public void vote(ref structse se) /人气值增加人气值增加1 se.popularity+;ref 引用方式传递参数引用方式传递

18、参数调用调用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=1arr1=3arr2=5arr0=0arr1=2

19、arr2=4引用类型参数引用类型参数传递传递数组是引用类型数组是引用类型 指导项目经理评分3-1训练要点训练要点方法调用方法调用引用类型作为参数引用类型作为参数需求说明需求说明实现项目经理给员工评分实现项目经理给员工评分指导项目经理评分3-2实现思路实现思路编写编写se类类查看评分窗体中创建公有成员变量保存员工信息查看评分窗体中创建公有成员变量保存员工信息se对象数组对象数组初始化员工信息并使用初始化员工信息并使用listview控件显示控件显示编写编写init()方法和方法和updateview()方法方法pm类添加类添加judge(se se)方法方法选中某员工,双击打开评分窗体,实现事件

20、处理方法选中某员工,双击打开评分窗体,实现事件处理方法指导项目经理评分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); /设置姓名设

21、置姓名 /省略省略设置年龄设置年龄、评分、评价、评分、评价 this.lvassess.items.add(item); /添加项添加项 /对选中对象评分对选中对象评分 frmjudge frm = new frmjudge(this,index); frm.show();frmshow窗窗体对象体对象选中的选中的se对象对象的数组索引的数组索引练习生成设备id需求说明需求说明为公司购买的为公司购买的3台不同型号的计算机进行编号台不同型号的计算机进行编号编号的规则是编号的规则是“计算机型号计算机型号+4位随机号位随机号”编号完毕后,输出每台计算机的信息编号完毕后,输出每台计算机的信息完成时间:

22、完成时间:15分钟分钟共性问题集中讲解n常见调试问题及解决办法常见调试问题及解决办法n代码规范问题代码规范问题共性问题集中讲解共性问题集中讲解为什么需要静态方法使用使用dbhelper创建、关闭数据库连接创建、关闭数据库连接public class dbhelper private string connstring = ; /连接字符串连接字符串 /获得数据库连接获得数据库连接 public sqlconnection getconnection() sqlconnection connection = new sqlconnection(connstring); return connec

23、tion; /关闭数据库连接关闭数据库连接 public void closeconnection(sqlconnection connection) connection.close(); 特点:特点:1、dbhelper类方法被频繁调用类方法被频繁调用2、提供的方法是对于所有类的实例都通用的特征、提供的方法是对于所有类的实例都通用的特征类似类似“工具类工具类”静态成员静态成员:使用静态成员:使用static修饰符修饰符class 类名类名 public static 数据类型数据类型 变量名变量名; public static 返回值返回值 方法名(参数列表)方法名(参数列表) 方法体;方

24、法体; 静态成员变量,例如:静态成员变量,例如:定义连接字符串、员工定义连接字符串、员工类定义员工总数类定义员工总数静态成员方法,例如:定义工静态成员方法,例如:定义工具类的方法,提供独立于特定具类的方法,提供独立于特定对象之外的普遍功能对象之外的普遍功能静态成员为一个类的所有实体所共享,它属于类,而不属于类的某个对象!静态成员为一个类的所有实体所共享,它属于类,而不属于类的某个对象!例如:太阳例如:太阳静态成员的使用调用静态成员调用静态成员以前使用过的静态成员以前使用过的静态成员console类实现控制台显示文本类实现控制台显示文本math类获取类获取值值类名类名.变量名变量名 = xx;

25、/给变量赋值给变量赋值类名类名.方法名方法名(); /调用静态方法调用静态方法console.writeline(你好你好!);console.writeline(math.pi);静态方法静态方法静态变量静态变量静态成员示例public class dbhelper private static string connstring = ; /获得数据库连接获得数据库连接 public static sqlconnection getconnection() sqlconnection connection = new sqlconnection(connstring); return con

26、nection; /演示示例:完善演示示例:完善dbhelper应用场合应用场合:当类不会有多个对象而更像是一个公用类的时候,:当类不会有多个对象而更像是一个公用类的时候,或当方法或属性是或当方法或属性是“公用公用”信息的时候声明为静态的比较好!信息的时候声明为静态的比较好!常见错误public class student public string name; /姓名姓名 public int age; /年龄年龄 public static string country = china; /国籍国籍class program static void main(string args) sa

27、yhi(); student stu = new student(); console.writeline(学生的国籍学生的国籍 :+stu.country); public void sayhi() console.writeline(hello world!); 运行错误运行错误运行错误运行错误静态成员与实例成员使用使用static修饰的成员称为静态成员修饰的成员称为静态成员使用实例对象调用的成员称为实例成员使用实例对象调用的成员称为实例成员 静态方法静态方法 实例方法实例方法static 关键字关键字不需要不需要static关键字关键字使用类名调用使用类名调用使用实例对象调用使用实例对象

28、调用可以访问静态成员可以访问静态成员可以访问静态成员可以访问静态成员不可以直接访问实例成员不可以直接访问实例成员可以直接访问实例成员可以直接访问实例成员调用前初始化调用前初始化实例化对象时初始化实例化对象时初始化指导实现投票3-1训练要点训练要点静态方法静态方法动态加载控件动态加载控件需求说明需求说明实现给候选人投票功能实现给候选人投票功能共有共有20个投票机会,显示已投票数和剩余投票机会,投票个投票机会,显示已投票数和剩余投票机会,投票完毕,完毕,“投票投票”按钮不可用按钮不可用查看候选人选票结果查看候选人选票结果指导实现投票3-2实现思路实现思路使用下拉列表绑定员工信息使用下拉列表绑定员工信息编写编写voter类类vote(se se)方法方法实现投票响应事件实现投票响应事件动态添加控件显示投票结果动态添加控件显示投票结果难点指导难点指导实现投票实现投票class voter publi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论