收藏 分享(赏)

C#数据库编程ppt课件.ppt

上传人:顺达 文档编号:3267673 上传时间:2020-12-18 格式:PPT 页数:58 大小:389.50KB
下载 相关 举报
C#数据库编程ppt课件.ppt_第1页
第1页 / 共58页
C#数据库编程ppt课件.ppt_第2页
第2页 / 共58页
C#数据库编程ppt课件.ppt_第3页
第3页 / 共58页
C#数据库编程ppt课件.ppt_第4页
第4页 / 共58页
C#数据库编程ppt课件.ppt_第5页
第5页 / 共58页
亲,该文档总共58页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、第第5 5章章 面向对象编程基础面向对象编程基础 本章要点本章要点 通过本章的学习,使读者:通过本章的学习,使读者: 了解并掌握类的概念和定义方法了解并掌握类的概念和定义方法 掌握类的实例对象的创建和使用方法掌握类的实例对象的创建和使用方法 了解并掌握构造函数的定义和使用方法了解并掌握构造函数的定义和使用方法 理解和掌握方法的参数传递和方法的重载理解和掌握方法的参数传递和方法的重载 了解了解静态方法与实例方法的区别及特点静态方法与实例方法的区别及特点 1 5.2 5.2 类类 5.2.1 类的声明 类是C#的一种自定义数据类型,其声明格式为: 属性 类修饰符 class 类名 字段声明 构造函

2、数 方法 属性 2 class Personclass Person private string name; private string name; private int age; private int age; private long ID; private long ID; public Person(string n, int a, long i) public Person(string n, int a, long i) name = n; name = n; age = a; age = a; ID = i; ID = i; public void Display() p

3、ublic void Display() Console.WriteLine(Name:0, name); Console.WriteLine(Name:0, name); Console.WriteLine(Age:0, age); Console.WriteLine(Age:0, age); Console.WriteLine(Name:0, ID); Console.WriteLine(Name:0, ID); 【例【例5-15-1】声明一个】声明一个PersonPerson类,包含姓名、年龄和身份证号类,包含姓名、年龄和身份证号 。 3 5.2.2 5.2.2 创建类实例创建类实例 类

4、实例创建格式:类实例创建格式: 类名类名 实例名实例名 = = new new 类名(类名( 参数参数 );); 例如,创建例如,创建PersonPerson类的实例:类的实例: Person myTest1 = new Person( Person myTest1 = new Person(“ “张三张三” ”,21,60012);,21,60012); 也可以分两步创建也可以分两步创建PersonPerson类的实例:类的实例: Person myTest2 Person myTest2; MyTest2 = new Person( MyTest2 = new Person(“ “三三”

5、”,21,60012);,21,60012); (1) myTest1和myTest2都是类Person的实例化,分配了两块不同的存储空 间。但它们的结构相同。 (2) myTest1和myTest2就可以分别访问各自类中的公有类型数据或成 员函数。 4 5.2.3 5.2.3 类成员类成员 类成员包括数据成员和函数成员。类成员包括数据成员和函数成员。 数据成员包括数据成员包括: : 类要处理的数据,它包括常数和字段。类要处理的数据,它包括常数和字段。 函数成员包括:函数成员包括: 方法、属性、事件、索引器、运算符、实例构造方法、属性、事件、索引器、运算符、实例构造 函数、析构函数和静态构造函

6、数。函数、析构函数和静态构造函数。 5 类的具体成员有以下类型:类的具体成员有以下类型: 常量:代表与类相关的常数值,是在类中声明的值不变的常量:代表与类相关的常数值,是在类中声明的值不变的 变量。变量。 字段:类中的变量,相当于字段:类中的变量,相当于C+C+中的成员变量。中的成员变量。 方法:完成类中各种计算或功能操作。方法:完成类中各种计算或功能操作。 属性:定义类的值,并对它们提供读写操作。属性:定义类的值,并对它们提供读写操作。 事件:由类产生的通知,用于说明发生了什么事情。事件:由类产生的通知,用于说明发生了什么事情。 索引器:又称下标指示器,允许编程人员访问数组时,通索引器:又称

7、下标指示器,允许编程人员访问数组时,通 过索引器访问类的多个实例。过索引器访问类的多个实例。 运算符:定义类的实例能使用的运算符。运算符:定义类的实例能使用的运算符。 构造函数:在类被实例化时首先执行的函数,主要完成对构造函数:在类被实例化时首先执行的函数,主要完成对 象初始化操作。象初始化操作。 析构函数:在对象被销毁之前最后执行的函数,主要完成析构函数:在对象被销毁之前最后执行的函数,主要完成 对象结束时的收尾工作。对象结束时的收尾工作。 6 【例【例5-25-2】创建一个学生类,学生类有年龄字段、年龄属性】创建一个学生类,学生类有年龄字段、年龄属性 和所属系部常量和所属系部常量 clas

8、s Student /class Student /定义学生类定义学生类 private int nAge;/private int nAge;/定义字段定义字段nAgenAge private const string sDepartment=Computer;/ private const string sDepartment=Computer;/定义常量定义常量 sDepartmentsDepartment public int Age / public int Age /定义属性定义属性AgeAge get / get /获取属性值(字段值)获取属性值(字段值) return nAge

9、; return nAge; set/ set/设置属性值(字段值)设置属性值(字段值) this.nAge = value;this.nAge = value; public string Department/ public string Department/只读属性只读属性DepartmentDepartment getget return sDepartment; return sDepartment; 7 static void Main(string args) static void Main(string args) Student s = new Student();/ S

10、tudent s = new Student();/创建对象创建对象 s.Age = 20; /s.Age = 20; /设置属性值设置属性值 Console.WriteLine(s.Age); /Console.WriteLine(s.Age); /获取属性值获取属性值 Console.WriteLine(s.Department);Console.WriteLine(s.Department); Console.ReadLine(); Console.ReadLine(); 8 5.2.4 5.2.4 静态成员与实例成员静态成员与实例成员 1. 1. 当用当用staticstatic修饰符

11、声明成员叫静态成员,静态成修饰符声明成员叫静态成员,静态成 员属于类,为这个类的所有实例所共享。静态成员属于类,为这个类的所有实例所共享。静态成 员员只能由类来调用,不能由对象调用。只能由类来调用,不能由对象调用。 2. 2. 不用不用staticstatic修饰符声明成员,称为实例成员,修饰符声明成员,称为实例成员, 实例成员属于类的实例。实例成员属于类的实例。 9 【例【例5-35-3】声明一个含有静】声明一个含有静成成和一个和一个例成例成的的StudentStudent class Studentclass Student public int SNO; public int SNO;

12、public static int count; public static int count; public Student(int s) public Student(int s) SNO=s; SNO=s; count+; count+; public void display() public void display() Console.WriteLine(count=0,SNO=1, count, SNO); Console.WriteLine(count=0,SNO=1, count, SNO); 10 class Program class Program static vo

13、id Main(string args) static void Main(string args) Student s1 = new Student( 12); Student s1 = new Student( 12); s1.display(); s1.display(); Student s2= new Student(20); Student s2= new Student(20); s2.display(); s2.display(); 程序输出结果为:程序输出结果为: count= 1,SNO=12;count= 1,SNO=12; count= 2,SNO=20;count=

14、2,SNO=20; 说说 明:明: (1) (1) 在本例中,在本例中,countcount是静态成员,属于类是静态成员,属于类StudentStudent,所以所以, , 每生成一个每生成一个 学生实例,静态成员学生实例,静态成员countcount就自动增一,记录学生总数。就自动增一,记录学生总数。 (2) (2) SNOSNO是实例成员,随实例的不同而不同。是实例成员,随实例的不同而不同。 11 5.2.5 5.2.5 访问修饰符访问修饰符 (1) (1) publicpublic 声明公有成员,对公有成员访问不受限制,可以从类的外部、内部和派声明公有成员,对公有成员访问不受限制,可以从

15、类的外部、内部和派 生类访问公有成员;生类访问公有成员; (2) (2) privateprivate 声明私有成员,私有成员只能被类中的成员访问,外部无法访问。声明私有成员,私有成员只能被类中的成员访问,外部无法访问。 (3) (3) protectedprotected 声明保护成员,保护成员可以被类中成员和派生类访问。声明保护成员,保护成员可以被类中成员和派生类访问。 (4) (4) internalinternal 声明内部成员,内部成员只有在同一工程中的文件内才是可访问的。声明内部成员,内部成员只有在同一工程中的文件内才是可访问的。 (5) (5) protected interna

16、lprotected internal 只限于当前项目,或者从该项目的类继承的类才可以访问。只限于当前项目,或者从该项目的类继承的类才可以访问。 12 5.3 5.3 构造函数和析构函数构造函数和析构函数 5.3.1 构造函数 构造函数是特殊的成员函数,它主要用于为对 象分配空间,完成初始化工作。构造函数特殊性 表现在以下几方面。 构造函数的名字必须与类名相同; 构造函数可以带参数,但没有返回值; 构造函数在对象定义时被自动调用; 构造函数也可以重载,但不可以被继承; 如果没有给类定义构造函数,则编译系统会自动 生存一个默认的构造函数; 13 5.3 5.3 构造函数和析构函数构造函数和析构函

17、数 5.3.4 析构函数 析构函数是特殊的成员函数,它主要用于释放类 实例。析构函数特殊性表现在以下几方面。 析构函数的名字与类名相同,但它前面加了一个“” 符号; 析构函数不能带参数,也没有返回值; 当撤消对象时,析构函数被自动调用; 析构函数不能被继承,也不能重载。 如果没有给类定义析构函数,则编译系统会自动生 存一个默认的析构函数; 14 5.4 5.4 方法方法 5.4.1 5.4.1 方法的声明方法的声明 方法的声明的语法形式:方法的声明的语法形式: 方法修饰符方法修饰符 返回类型返回类型 方法名(方法名( 形参表形参表 ) 方法体方法体 15 【例5-6】 在下面程序中,MyAre

18、a类定义了两个方法以求三 角形和圆的面积 class MyAream public double TangleArea(double a, double h) double s; s = a * h /2 ; return s; public double CircleArea(double r) double s; s = 3.14 * r * r ; return s; 16 5.4.2 5.4.2 方法的参数方法的参数 1 1值参数值参数 在方法声明时不加修饰的形参数,它表明实参与形在方法声明时不加修饰的形参数,它表明实参与形 参之间按值传递。参之间按值传递。 【例【例5-75-7】 下

19、面的程序演示了当方法下面的程序演示了当方法SortSort 的是的是 参数参数,形参的修改不影响其形参的修改不影响其参。参。 17 5.4.2 5.4.2 方法的参数方法的参数 class Program class Program static void Sort(int x, int y, int z) static void Sort(int x, int y, int z) int temp; int temp; / /将将x,y,zx,y,z按从小到大排序按从小到大排序 if (x y) temp = x; x = y; y = temp; if (x y) temp = x; x

20、= y; y = temp; if (x z) temp = x; x = z; z = temp; if (x z) temp = x; x = z; z = temp; if (y z) temp = y; y = z; z = temp; if (y z) temp = y; y = z; z = temp; Console.WriteLine(a=0,b=1,c=2, x, y, z); Console.WriteLine(a=0,b=1,c=2, x, y, z); static void Main(string args) static void Main(string args)

21、 int a, b, c; int a, b, c; a = 20; b = 10; c = 5; a = 20; b = 10; c = 5; Sort(a, b, c); Sort(a, b, c); Console.WriteLine(a=0,b=1,c=2, a, b, c); Console.WriteLine(a=0,b=1,c=2, a, b, c); 18 5.4.2 5.4.2 方法的参数方法的参数 2 2引用参数引用参数 如果调用一个方法,期望能够对传递给它的实如果调用一个方法,期望能够对传递给它的实 际变量进行操作,按值传递是不可能实现的。所际变量进行操作,按值传递是不可

22、能实现的。所 以以C#C#用了用了refref修饰符来解决此类问题,它告诉编译修饰符来解决此类问题,它告诉编译 器,实参与形参的传递方式是引用。器,实参与形参的传递方式是引用。 引用与引用与参数不同,引用参数并不参数不同,引用参数并不建新建新 的存的存 元,它与方法元,它与方法用中的用中的参参量同量同一一 个存个存 元。因此,在方法内元。因此,在方法内形参的修改就是形参的修改就是 外部外部参参量的修改。量的修改。 19 【例【例5-85-8】将例】将例5-75-7程序中程序中SortSort方法的值参传递方式改成引用参数传递,方法的值参传递方式改成引用参数传递, 观察运行结果。观察运行结果。

23、class Myclass class Myclass public void Sort(ref int x,ref int y,ref int z) public void Sort(ref int x,ref int y,ref int z) int temp; / int temp; /将将x,y,zx,y,z按从小到大排序按从小到大排序 if (x y) temp = x; x = y; y = temp; if (x y) temp = x; x = y; y = temp; if (x z) temp = x; x = z; z = temp; if (x z) temp = x;

24、 x = z; z = temp; if (y z) temp = y; y = z; z = temp; if (y z) temp = y; y = z; z = temp; Console.WriteLine(a=0,b=1,c=2, x, y, z); Console.WriteLine(a=0,b=1,c=2, x, y, z); class Program class Program static void Main(string args) static void Main(string args) Myclass m = new Myclass(); Myclass m = n

25、ew Myclass(); int a, b, c; int a, b, c; a = 20; b = 10; c = 5; a = 20; b = 10; c = 5; m.Sort(ref a, ref b, ref c); m.Sort(ref a, ref b, ref c); Console.WriteLine(a=0,b=1,c=2, a, b, c); Console.WriteLine(a=0,b=1,c=2, a, b, c); 20 5.4.2 5.4.2 方法的参数方法的参数 3. 3. 出参数出参数 在参数前加在参数前加outout修修符的被称符的被称 出参出参 数,它

26、与数,它与refref参数很相似,只有一点除外,参数很相似,只有一点除外, 就是它只能从方法中就是它只能从方法中出出,而不能从方,而不能从方 法法用用接受接受参数据。在方法内参数据。在方法内outout参数参数 被被 是未是未 的,所以在方法的,所以在方法束之束之 前前 outout参数参数 。 21 【例【例5-95-9】 求一个数求一个数元素中的最大元素中的最大、最小、最小和平均和平均。 class Myclass class Myclass public void MaxMinArray(int a,out int max,out int min,out public void MaxM

27、inArray(int a,out int max,out int min,out double avg)double avg) int sum; sum = max = min = a0; int sum; sum = max = min = a0; for (int i = 1; i max) max = ai; if (ai = 0) xabs = x; else xabs = -x; else xabs = -x; return xabs; return xabs; public float Myabs(float x) public float Myabs(float x) floa

28、t xabs; float xabs; if (x = 0) xabs = x; if (x = 0) xabs = x; else xabs = -x; else xabs = -x; return xabs; return xabs; public long Myabs(long x) public long Myabs(long x) long xabs; long xabs; if (x = 0L) xabs = x; if (x = 0L) xabs = x; else xabs = -x; else xabs = -x; return xabs; return xabs; 24 c

29、lass Program class Program static void Main(string args) static void Main(string args) Myclass m = new Myclass(); Myclass m = new Myclass(); int a = -54; int a = -54; float b = -89.54f; float b = -89.54f; long c = -23456L; long c = -23456L; Console.WriteLine(|a|=0,|b|=1, Console.WriteLine(|a|=0,|b|=

30、1, |c|=2, |c|=2, m.Myabs(a),m.Myabs(b),m.Myabs(c);m.Myabs(a),m.Myabs(b),m.Myabs(c); 运行结果如下:运行结果如下: 25 2. 2. 参数个数重载的方法参数个数重载的方法 class Myclass public float MyArea(float r) return (r * r * 3.14f); public float MyArea(float a,float h) return (a * h * 0.5f); public float MyArea(float a,float b,float h) r

31、eturn (a+b) * h * 0.5f); 【例【例5-135-13】 参数个数的方法重载。参数个数的方法重载。 参数个参数个 数重载数重载 26 class Program class Program static void Main(string args) static void Main(string args) Myclass m = new Myclass(); Myclass m = new Myclass(); float r = 1.5f; float r = 1.5f; float a = 2.0f, b = 2.5f, h = 1.2f; float a = 2.0

32、f, b = 2.5f, h = 1.2f; Console.WriteLine( Console.WriteLine(“ “圆面积圆面积=0,=0,梯面积梯面积=1,=1, 三角面积三角面积=2=2“ “, , m.MyArea(r),m.MyArea(a,b,h),m.MyArea(r),m.MyArea(a,b,h), m.MyArea(a,h);m.MyArea(a,h); 运行结果如下:运行结果如下: 27 5.5 5.5 属性属性 5.5.1属性的定义和使用 通常,创建一个属性包含两个步骤: 声明一个私有字段来存储属性值 编写一个属性声明,为属性值提供访问接口。 声明属性的一般形式

33、为: 访问修饰符访问修饰符 类型名类型名 属性名属性名 get get return return 私有字段;私有字段; setset 私有字段私有字段 = = value;value; 28 【例【例5-155-15】属性的最基本形式和用法】属性的最基本形式和用法( (属性的读写控制属性的读写控制) ) public class Student private string studName; private int studID; public string StudentName get return studName; set studName = value;/value是关键字 p

34、ublic class Test public static void Main(string args) Student Astudent = new Student(); Astudent.StudentName = “Zhang San”; string aName = Astudent.StudentName; Console.WriteLine(aName); 29 5.5.25.5.2属性的读写控制属性的读写控制 【例【例5-165-16】 属性的读写控制。属性的读写控制。 public class Studentpublic class Student string studNa

35、me;int studID;string studName;int studID; pulic Student(string strName)pulic Student(string strName) studName = strName; studName = strName; public string StudentNamepublic string StudentName get return studName; get return studName; public class Testpublic class Test public static void Main(string

36、args)public static void Main(string args) Student Astudent = new Student(Student Astudent = new Student(“ “Zhang SanZhang San” ”);); string aName = Astudent.StudentName;string aName = Astudent.StudentName; Console.WriteLine(aName);Console.WriteLine(aName); 30 课堂实训课堂实训 1 1设计一个表示猫的类,包括猫的颜色,体重,年龄等数据,具有

37、设置猫的设计一个表示猫的类,包括猫的颜色,体重,年龄等数据,具有设置猫的 颜色,修改和显示猫的体重,年龄等操作。颜色,修改和显示猫的体重,年龄等操作。 2 2设计一个表示学习成绩的类,至少包括设计一个表示学习成绩的类,至少包括3 3门课程的成绩,可以设置,显示每门门课程的成绩,可以设置,显示每门 课程的成绩,可以计算,显示平均成绩课程的成绩,可以计算,显示平均成绩 3 3使用方法重载设计一个求面积的类,包括圆、三角形和梯形。并设计一个输使用方法重载设计一个求面积的类,包括圆、三角形和梯形。并设计一个输 入成员方法和输出成员方法。入成员方法和输出成员方法。 4 4编写程序,用来判断学生能否通过某

38、个级别的考试,全部操作在来编写程序,用来判断学生能否通过某个级别的考试,全部操作在来GradeGrade 中实现。要求:中实现。要求: (1) (1) 在定义对象时指定学生的姓名和分数。在定义对象时指定学生的姓名和分数。 4 4个学生的姓名和分数分别为:个学生的姓名和分数分别为: Wang l00Wang l00 Zhang 90 Zhang 90 Li 52 Li 52 Zhao 0 Zhao 0 (2) (2) 编写一个私有成员方法编写一个私有成员方法idPassidPass,判断能否通过。判断能否通过。 (3) (3) 编写一个成员方法编写一个成员方法PrintDataPrintData

39、输出结果,包含学生姓名、分数、是否能通过输出结果,包含学生姓名、分数、是否能通过 。 31 桼桼并确定分 析方案。 26 CAE角色及 CAE是算 命的? ? “工程是一种近似 而不是完全的 ” “Engineering is the art of being approximately right rather than exactly wrong” 引自 英国皇家工程院院士,英国机械工程 会主 席- Rod A. Smith 教授,1990年 27 CAE角色及 数数数 算算算 工程工程工程 CAECAE 修正修正修正 28 化验分析 识别问题 开具处方 指引方向 CAE角色及 29 Thank you very much! Q&A 30

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

当前位置:首页 > 应用文书 > PPT文档

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:文库网官方知乎号:文库网

经营许可证编号: 粤ICP备2021046453号世界地图

文库网官网©版权所有2025营业执照举报