教学课件第8章 面象对象程序设计基础.ppt
《教学课件第8章 面象对象程序设计基础.ppt》由会员分享,可在线阅读,更多相关《教学课件第8章 面象对象程序设计基础.ppt(57页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C#程序设计案例教程程序设计案例教程第第8章章 面向对象程序设计基础面向对象程序设计基础 第第8章章 面向对象程序设计基础面向对象程序设计基础 学习目标学习目标了解面向对象概念。了解面向对象概念。掌握类的定义和使用。掌握类的定义和使用。掌握对象的使用。掌握对象的使用。掌握属性的使用。掌握属性的使用。了解索引器。了解索引器。掌握方法的重载。掌握方法的重载。熟悉构造函数的使用和重载。熟悉构造函数的使用和重载。熟悉析构函数的使用。熟悉析构函数的使用。掌握静态类和静态成员的使用。掌握静态类和静态成员的使用。第第8章章 面向对象程序设计基础面向对象程序设计基础 8.1 面向对象程序设计概述面向对象程序设
2、计概述8.1.1 对象对象对象是面向对象的程序设计中涉及的核心概念。它代对象是面向对象的程序设计中涉及的核心概念。它代表着真实世界中一个实体或概念。例如,汽车、公司表着真实世界中一个实体或概念。例如,汽车、公司等都可以建模成对象。等都可以建模成对象。对象具有状态、行为和身份。例如:现实中我们用唯对象具有状态、行为和身份。例如:现实中我们用唯一的车牌号来标识这台汽车的身份。一的车牌号来标识这台汽车的身份。第第8章章 面向对象程序设计基础面向对象程序设计基础 8.1.2 类类类是对对象进行分类的声明,是人们对客观对象的不类是对对象进行分类的声明,是人们对客观对象的不断认识而抽象出来的概念。断认识而
3、抽象出来的概念。类和对象具有不同的概念。类定义对象的类型,是基类和对象具有不同的概念。类定义对象的类型,是基于对象的抽象,但它不是对象本身。于对象的抽象,但它不是对象本身。在在C#中,根据类的来源可分为系统类和自定义类。系中,根据类的来源可分为系统类和自定义类。系统类是由系统预先定义在统类是由系统预先定义在.NET框架类库中。自定义类框架类库中。自定义类则是由程序员根据系统开发的需要而创建的类。则是由程序员根据系统开发的需要而创建的类。类在本质上是一种数据类型,所以类的用法和基本数类在本质上是一种数据类型,所以类的用法和基本数据类型的用法基本相同。据类型的用法基本相同。第第8章章 面向对象程序
4、设计基础面向对象程序设计基础 8.1.3 消息和方法消息和方法在面向对象的程序设计中,对象不是独立存在的,对在面向对象的程序设计中,对象不是独立存在的,对象之间要进行交互,交互通过消息发生。象之间要进行交互,交互通过消息发生。行为(在面向对象的程序设计中,又称行为(在面向对象的程序设计中,又称“方法方法”),),根据根据Grady Booch的定义:行为是对象根据其状态的的定义:行为是对象根据其状态的更改和消息的传递进行的作用和反作用。更改和消息的传递进行的作用和反作用。第第8章章 面向对象程序设计基础面向对象程序设计基础 8.1.4 类的封装性类的封装性在面向对象的程序设计中,在面向对象的程
5、序设计中,“封装封装”就是隐藏了类的就是隐藏了类的实现细节,程序员在使用类时,只要知道该类公有成实现细节,程序员在使用类时,只要知道该类公有成员的功能并执行相关的操作,而不需要知道该类公有员的功能并执行相关的操作,而不需要知道该类公有成员是如何实现的。成员是如何实现的。第第8章章 面向对象程序设计基础面向对象程序设计基础 8.2 对象对象 【课堂案例课堂案例8-1】在学生成绩管理系统中,需要对学生的基本信息进在学生成绩管理系统中,需要对学生的基本信息进行管理,现要求使用面向对象的方法接收学生信息并显示。一个学生行管理,现要求使用面向对象的方法接收学生信息并显示。一个学生的基本信息包括:学号、姓
6、名、出生年月、性别、入学时间、所在班的基本信息包括:学号、姓名、出生年月、性别、入学时间、所在班级、家庭住址、联系电话、手机以及备注。级、家庭住址、联系电话、手机以及备注。【案例学习目标案例学习目标】掌握类及成员的使用掌握类及成员的使用掌握访问修饰符的使用掌握访问修饰符的使用掌握对象的创建和访问掌握对象的创建和访问【案例知识要点案例知识要点】类的定义、字段、方法的定义、创建对象类的定义、字段、方法的定义、创建对象【案例完成步骤案例完成步骤】(1)定义类)定义类(2)定义类的成员字段)定义类的成员字段(3)定义类的成员方法)定义类的成员方法(4)加载访问修饰符)加载访问修饰符(5)创建对象并访问
7、对象成员)创建对象并访问对象成员(6)实现应用程序)实现应用程序第第8章章 面向对象程序设计基础面向对象程序设计基础 8.2.1 定义类定义类 在在C#中,定义类需要使用关键字中,定义类需要使用关键字Class,类定义的格式如下:,类定义的格式如下: class 类名类名 /类成员类成员 说明:说明:(1)类名必须是合法的)类名必须是合法的C#命名命名(2)“类成员类成员”包括类中所有的数据以及对数据的操作,如字段、包括类中所有的数据以及对数据的操作,如字段、属属 性、方法和构造函数等。性、方法和构造函数等。 第第8章章 面向对象程序设计基础面向对象程序设计基础 8.2.2 定义定义类的成员字
8、段类的成员字段 字段是类的成员之一。定义字段的方法和之前定义变量的方法相同。字段是类的成员之一。定义字段的方法和之前定义变量的方法相同。 例如:例如:String sStuNumber; /定义学号字段定义学号字段 String sStuName; /定义姓名字段定义姓名字段第第8章章 面向对象程序设计基础面向对象程序设计基础 8.2.3 定义定义类的成员方法类的成员方法 方法也是类的成员之一,其实质就是在类中声明函数,为类的对象提方法也是类的成员之一,其实质就是在类中声明函数,为类的对象提供行为。方法遵循先定义后使用的规则,在供行为。方法遵循先定义后使用的规则,在C#中方法必须放在类定中方法
9、必须放在类定义中声明,即方法必须是某一个类的类成员。义中声明,即方法必须是某一个类的类成员。 1、声明方法,格式如下:、声明方法,格式如下: 方法修饰符方法修饰符 返回类型返回类型 方法名方法名 (参数列表参数列表) /方法体方法体 (1)“方法修饰符方法修饰符”包括访问修饰符(如包括访问修饰符(如Public 、private、protected)、静态()、静态(Static)修饰符、虚方法()修饰符、虚方法(Virtual)、抽象)、抽象(abstract)修饰符等。)修饰符等。 (2) “返回类型返回类型”表示一个方法结果的数据类型,可以是任何合法的表示一个方法结果的数据类型,可以是任
10、何合法的C#数据类型。类的方法将执行的结果作为返回值返回给调用者。如数据类型。类的方法将执行的结果作为返回值返回给调用者。如果一个方法不返回任何值,它的返回类型用空类型(果一个方法不返回任何值,它的返回类型用空类型(void)表示。)表示。 (3) “方法名方法名”是一个合法的是一个合法的C#语言标识符,对方法的命名,通常要语言标识符,对方法的命名,通常要求能描述方法的功能。求能描述方法的功能。 第第8章章 面向对象程序设计基础面向对象程序设计基础 (4) “参数列表参数列表”说明一个方法所需要的参数,即传递给方法的数据值。说明一个方法所需要的参数,即传递给方法的数据值。每个参数都有参数类型和
11、参数名。每个参数都有参数类型和参数名。 (5)方法体中的语句定义了该方法所执行的任务。方法体中的语句定义了该方法所执行的任务。 2.调用类的成员方法调用类的成员方法 声明方法后,我们就可以开始调用方法了。对于调用方法,根据调用声明方法后,我们就可以开始调用方法了。对于调用方法,根据调用的环境的环境不同,大致可以分成两种方式:不同,大致可以分成两种方式: (1) 如果在声明方法的类定义中调用该方法,调用方法的格式:如果在声明方法的类定义中调用该方法,调用方法的格式: 方法名(参数列表)方法名(参数列表) (2) 如果在方法声明的类定义外调用该方法,则需通过创建对象的方如果在方法声明的类定义外调用
12、该方法,则需通过创建对象的方式,调用式,调用 方法的格式为:方法的格式为: 对象名对象名.方法名(参数列表)方法名(参数列表) 提示提示:根据:根据课堂案例课堂案例8-1的要求,要实现接收学生的信息并显示,因此需要的要求,要实现接收学生的信息并显示,因此需要定义两个成员方法定义两个成员方法Accept()和和Display()。Accept()用于接收学生的基本信息,用于接收学生的基本信息,Display()用于显示学生的基本信息。用于显示学生的基本信息。第第8章章 面向对象程序设计基础面向对象程序设计基础 8.2.4 加载加载访问修饰符访问修饰符 C#中提供了许多访问控制符,它们确定了是否允
13、许其他代码对类的某个特定中提供了许多访问控制符,它们确定了是否允许其他代码对类的某个特定成员进行访问。通过访问修饰符,成员进行访问。通过访问修饰符, C#能实现面向对象的程序设计中的一个能实现面向对象的程序设计中的一个最重要的特征最重要的特征封装性封装性 。C#中最常用的访问修饰符及其含义见表中最常用的访问修饰符及其含义见表8-1。 表表8-1 访问修饰符访问修饰符声明的可访问性声明的可访问性含含 义义public(公有的公有的)访问不受限制访问不受限制protected(受保护的受保护的)访问仅限于包含类或从包含类派访问仅限于包含类或从包含类派生的类型生的类型Internal(内部的内部的)
14、访问仅限于当前程序集访问仅限于当前程序集Protected internal(受保护内部受保护内部的的)访问仅限于从包含类派生的当前访问仅限于从包含类派生的当前程序集或类型。程序集或类型。private (私有的)(私有的) 访问仅限于包含类型。访问仅限于包含类型。 第第8章章 面向对象程序设计基础面向对象程序设计基础 8.2.5 创建对象并访问对象成员创建对象并访问对象成员1.创建对象创建对象 类的定义完成后,接下来就是创建对象,只有通过对象类的定义完成后,接下来就是创建对象,只有通过对象才能访问类的成员。才能访问类的成员。“创建对象创建对象”也就是常说的也就是常说的“对象实对象实例化例化”
15、,对象实例化是指在定义对象时,使对象具有相应,对象实例化是指在定义对象时,使对象具有相应的存储空间用来存储对象的信息。对象实例化时占用的空的存储空间用来存储对象的信息。对象实例化时占用的空间主要是数据成员需要的内存空间。用关键字间主要是数据成员需要的内存空间。用关键字new创建对创建对象。象。 格式一格式一: ; /先声明对象先声明对象 对象名对象名 = new 类名;类名; /再创建对象再创建对象 格式二格式二: = new ; /边声明边创建边声明边创建 第第8章章 面向对象程序设计基础面向对象程序设计基础 例如,对案例中定义的学生类例如,对案例中定义的学生类Student,现要创建该类的
16、实例对象,现要创建该类的实例对象stuOne。创建的代码格式如下所示:。创建的代码格式如下所示: 格式一格式一 Student stuOne; /先声明对象先声明对象 stuOne = new Student(); /再创建对象再创建对象 格式二格式二 Student stuOne = new Student(); /边声明边创建边声明边创建 第第8章章 面向对象程序设计基础面向对象程序设计基础 2. 访问对象访问对象 创建对象的目的是要通过对象来访问类的成员。访问对象实质上就是创建对象的目的是要通过对象来访问类的成员。访问对象实质上就是访问对象成员,通过对象访问成员的方式是使用成员运算符访问
17、对象成员,通过对象访问成员的方式是使用成员运算符“.”。 例如:例如: stuOne.Display(); /访问成员方法访问成员方法 stuOne.Accept(); /访问对象的方法成员访问对象的方法成员 stuOne. sStuNumber = “001”; /为该对象的学号成员赋值为该对象的学号成员赋值 stuOne. sStuName = “张三张三”; /为该对象的姓名字段成员赋值为该对象的姓名字段成员赋值 8.2.6 实现应用程序实现应用程序 第第8章章 面向对象程序设计基础面向对象程序设计基础 演示应用程序编辑、编译和运行过程第第8章章 面向对象程序设计基础面向对象程序设计基础
18、 课堂实践课堂实践8-1任务一任务一在学生管理系统中,除了需要管理学生信息外,还需要对开设在学生管理系统中,除了需要管理学生信息外,还需要对开设的课程进行管理,请编写程序实现对课程信息的接收与显示。课程的的课程进行管理,请编写程序实现对课程信息的接收与显示。课程的相关信息包括,课程编号、课程名称、学时、考核方式以及任课教师。相关信息包括,课程编号、课程名称、学时、考核方式以及任课教师。 任务二任务二定义一个数学类,该类提供了如下几种功能:定义一个数学类,该类提供了如下几种功能:1、输出、输出1100之之间的整数之和间的整数之和 2、对随机输入的数,求其平方根。、对随机输入的数,求其平方根。 第
19、第8章章 面向对象程序设计基础面向对象程序设计基础 8.3 属性属性 【课堂案例课堂案例8-2】在学生管理系统中,现要求能在在学生管理系统中,现要求能在Student类类的外部实现对该类中的学号(的外部实现对该类中的学号(sStuNumber)、姓名)、姓名(sStuName)字段进行读)字段进行读/写操作,而对于性别写操作,而对于性别(sGender)字段,在类外只允许进行读操作。)字段,在类外只允许进行读操作。【案例学习目标案例学习目标】掌握属性的声明掌握属性的声明 【案例知识要点案例知识要点】声明属性声明属性 【案例完成步骤案例完成步骤】(1)确实对字段的读)确实对字段的读/写方式写方式
20、 (2)声明属性)声明属性 (3)实现应用程序)实现应用程序 第第8章章 面向对象程序设计基础面向对象程序设计基础 8.3.1 声明属性声明属性 在类定义外部,是不允许对私有或受保护字段在类定义外部,是不允许对私有或受保护字段进行访问。但如果在程序实现过程中需要在类外进行访问。但如果在程序实现过程中需要在类外对此类字段进行访问,又该如何实现呢?对此类字段进行访问,又该如何实现呢? 答案是:通过属性可以设置对字段的访问方式,答案是:通过属性可以设置对字段的访问方式,如只读、只写、读如只读、只写、读/写等。写等。第第8章章 面向对象程序设计基础面向对象程序设计基础 声明属性的语法格式如下:声明属性
21、的语法格式如下: 访问修饰符访问修饰符 类型类型 属性名属性名 get return 字段名;字段名; /读字段值读字段值 set字段名字段名 = value; /将值写入字段将值写入字段 通过通过get、set关键字,我们可以将属性声明为可读可写、只读、或只关键字,我们可以将属性声明为可读可写、只读、或只写属性。其中写属性。其中get设置属性为可读,而设置属性为可读,而set设置属性为可写。设置属性为可写。 在属性声明中,在属性声明中,get完成数据值的读取完成数据值的读取,return返回读取的值返回读取的值,set完成对完成对数据值的修改数据值的修改,value是一个关键字是一个关键字,
22、表示要写入数据成员的值。表示要写入数据成员的值。第第8章章 面向对象程序设计基础面向对象程序设计基础 例如:要设置客户例如:要设置客户Customer类中的类中的customerId、customerName字段字段为读写,为读写,address为只读,代码如下:为只读,代码如下:Class Customer private string customerId; private string customerName; private string address; public string CustomerId /对应对应customerId get return customerId;
23、set customerId = value; public string CustomerName /对应对应customerName get return customerName; set customerName = value; public string Address /对应对应address get return address; 第第8章章 面向对象程序设计基础面向对象程序设计基础8.3.2 访问属性:访问属性:对属性进行声明后,就可以访问属性了。访问属性与访问类的公有数据对属性进行声明后,就可以访问属性了。访问属性与访问类的公有数据成员一样,也是通过成员运算符进行访问。访问
24、的格式如下:成员一样,也是通过成员运算符进行访问。访问的格式如下: 对象名对象名.属性属性以上面定义以上面定义Customer类为例说明属性的访问类为例说明属性的访问Customer objCustomer = new Customer();objCustomer.CustomerId = “C000001”; /合法合法objCustomer.CustomerName = “腾飞有限责任公司腾飞有限责任公司”; /合法合法objCustomer.Address = “上海南京路上海南京路22号号”; /非法,因为非法,因为 Address属性是只读属性是只读第第8章章 面向对象程序设计基础面
25、向对象程序设计基础 演示编写程序并运行演示编写程序并运行8.3.3 实现应用程序实现应用程序 第第8章章 面向对象程序设计基础面向对象程序设计基础 课堂实践课堂实践8-2在学生成绩管理系统中,需要在课程类在学生成绩管理系统中,需要在课程类Course的外部的外部实现对类中的所有字段进行读实现对类中的所有字段进行读/写操作。写操作。 第第8章章 面向对象程序设计基础面向对象程序设计基础 8.4 索引器索引器 【课堂案例课堂案例8-3】现有一个元素个数为现有一个元素个数为4的圆类数组的圆类数组CircleArray,其中,数组的元素都是圆类的实例对象。,其中,数组的元素都是圆类的实例对象。现要求给
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教学课件第8章 面象对象程序设计基础 教学 课件 对象 程序设计 基础
限制150内