ASP.NET程序设计(高职计算机专业系列教材)-第四章 C#面向对象编程.ppt_第1页
ASP.NET程序设计(高职计算机专业系列教材)-第四章 C#面向对象编程.ppt_第2页
ASP.NET程序设计(高职计算机专业系列教材)-第四章 C#面向对象编程.ppt_第3页
ASP.NET程序设计(高职计算机专业系列教材)-第四章 C#面向对象编程.ppt_第4页
ASP.NET程序设计(高职计算机专业系列教材)-第四章 C#面向对象编程.ppt_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

第四章 c#面向对象编程 第四章第四章 c#c#面向对象编程面向对象编程 4.1 类、对象和实例 4.2 类的数据成员 4.3 类的函数成员 4.4 继承和接口 4.5 命名空间 4.6 常见c#类操作实例 第四章 c#面向对象编程 本章教学要求: 本章主要学习类、对象和实例,以及类的 数据成员和函数成员、继承和接口的定义和 实现以及命名空间的概念及使用。这些以及 上一章的委托和事件的定义及实现将为全书 后续章节的学习奠定良好的基础。 第四章 c#面向对象编程 第四章第四章 c#c#面向对象编程面向对象编程 c#是microsoft公司为.net量身定做的最 好的编程语言,c#语言具有面向对象编程 语言的所有特性,如封装、继承、多态等 。 第四章 c#面向对象编程 4.1 4.1 类、对象和实例类、对象和实例 4.1.1 一个简单的c#类程序 c#程序的开发方式通常有两种: 一种是使用visual studio.net提供的集成 开发环境ide进行开发。 第四章 c#面向对象编程 上机步骤为: (1)进入vs.net提供的集成开发环境ide/选择“文件 ”/“新建”/“项目”菜单项/打开“新建项目”对话框/“项目 类型”选为“visual c#项目”;“模板”选择“控制台应用 程序”/修改项目所在的目录位置,并给项目命名(如 aaa)。 (2)编辑用户类名.cs文件(作法是将下面例4.1-4.7 中所给代码全部替换原先自动生成的代码)/存盘/在解 决方案资源管理器中右击aaa项目,然后单击“设为启动 项目”。 (3)在“调试”菜单上,单击“开始执行(不调试)”。即 可看到运行结果的黑色屏幕输出。 第四章 c#面向对象编程 另一种是使用文本编辑器编写c#程序代码,然后 以.cs为扩展名保存源文件,并用命令行编辑器程 序csc.exe进行编译。于是,c#编译器在类文件 *.cs所在的目录下就会生成了一个.exe文件。运行 这个.exe文件,并完成人机对话操作就会输出程序 的运行结果。 注意:c#开发程序的两种方式在本 章均可采用,由于篇幅所限,本章主 要用第二种即文本编辑器方式介绍, 而第一种即控制台方式也可自行上机 采用。 第四章 c#面向对象编程 例4.1创建一个小对话程序。 using system; /用来导入命名空间(namespace)以表明类的层次关系。 class myfirstapp public static void main() console.writeline(“您的用户名是什么?“); string user=console.readline(); console.writeline(“hello,0,欢迎您学会使用!“,user); /* writeline()方法的参数表中紧随串后的第一个参数将替换0,依次类推, 还可使用1,2等参数替换串后的第二、三个参数等。 */ 小提示:语法注意点: main()是程序的入口点,每个程序都必须包含一个main()方法。 c#用“;”作为语句的分隔符。 c#程序可以采用单行注释符“/”标注,或多行注释符“/*”和“*/”标注。 c#程序的输入输出通过console来实现。console是system名字空间下的一个 类。在屏幕上输出一个字符串用console.writeline(),接受输入设备的输入用 console.readline()方法。 第四章 c#面向对象编程 执行步骤如下: (1)在记事本中编写如下所示的两个c#程序之一,保存名为lt4-1.cs ,并将该文件存放在c:inetpubwwwroot(即iis默认的web站点目录)中 。 (2)用编译器csc编译程序。 .net框架内置了c#编辑器,可以在命令窗口编译c#文件(单击“开始 ”/“所有程序”/“microsoft visual studio.net 2003”/“visual studio.net工具”/ “visual studio.net 2003命令提示”,打开命令窗 口)。 进入lt4-1.cs文件的保存目录(cdinetpubwwwrootasp_netch4, 本章例子都在此存放),在命令行中输入:csc lt4-1.cs 显示如图 4.1所示。编译成功后,则在lt4-1.cs文件所在目录下产生可执行文件 lt4-1.exe。 在当前命令窗口中输入lt4-1后运行程序,人机对话输入名字,回 车后的运行结果如图4.2所示。 第四章 c#面向对象编程 图4.2 lt4-1.exe的运行结果图4.1 用csc编译lt4-1.cs文件 第四章 c#面向对象编程 4.1.2 类、对象和实例 对象:是一个自包含的实体,用一组可识别的特性 和行为来标识,通俗地说对象是一个可以区别的存 在. 类:是对象的模板,定义了对象的特性。 类的定义格式为: 属性 类修饰符 class 类名 类体 类实例:是一个真实的对象 . 第四章 c#面向对象编程 在oop中,下面的术语用于描述对象的特性: 属性:是一个名词,描述对象的某种特性。 方法:是一个动词,描述了对象可以完成的工作 ,或希望它完成的工作。 事件:也是一个动词,描述了对象为响应某个动 作而执行的操作。 在前面类定义的基础上,就可以通过new运算 符来创建类的实例(即对象),类实例就是类类 型变量,其创建格式为: 类名 变量名=new 类名(参数); 第四章 c#面向对象编程 例如:student p=new student(“王兰”,20,200501); 或:student p; p=new student(“王兰”,20,200501); /*表明定义了类student的实例p,该实例的三个数据成员 name、age和id值分别为:“王兰”,20,200501 */ 例4.2 定义一个名称为student的类,其中含有三个私有 (private)数据成员:name,age,id;两个公有(public )函数成员display和student。 第四章 c#面向对象编程 类成员包括函数成员和数据成员。 数据成员:包含类要处理的数据,它包括常数和字 段。 函数成员:可以包含可执行代码的成员统称为该类 的函数成员,一个类的函数成员包括: 方法、属性、事件、运算符、实例构造函数、 析构函数和静态构造函数等。在程序中,对类的 成员的访问要使用点“.”运算符完成。 4.2 类的数据成员 第四章 c#面向对象编程 1类成员访问修饰符 类成员访问修饰符用于指定类成员的可访问性。c#共有public 、private、protected和internal四个类成员访问修饰符。其功 能比较如下表4-1。 表4-1类成员访问修饰符功能比较表 第四章 c#面向对象编程 2静态成员和实例成员 类的成员要么是静态成员,要么是实例成员。当用 static修饰符定义成员时,得到静态成员,静态成员属于 类,为这个类的所有实例所共享;而不用static修饰符定 义的成员,称为实例成员,实例成员属于类的实例。 例4.3 定义一个person类,其中含有一个静态成员count表 示班级中学生人数,一个实例成员number表示学生学号。 第四章 c#面向对象编程 3字段与属性 (1)字段是类中声明的一种数据成员,即与对象或类相关联 的变量。根据在类中定义字段时所用到的修饰符的不同,可 将字段分为:静态字段、实例字段和只读字段。其中静态字 段与实例字段的含义与前面介绍的静态成员与实例成员的含 义一致。 表4-2 三类字段功能比较表 小提示:构造函数是类的特殊函数成员,它主要用于为对象分配空间, 完成对象的初始化工作。其详细情况在4.3节介绍。 第四章 c#面向对象编程 例4.4 字段的声明与使用 (2)属性用于刻画对象的特征或表示对象的状态。属性与字段 不同,它不表示存储位置。相反,属性有访问器,访问器用来 指定在它们的值被读取或写入时需要执行的语句。所以,属性 提供了一种机制,它把读取和写入对象的某些特性与一些操作 关联起来。 给属性赋值时使用set访问器, set访问器始终使用value 关键字设置属性值。而获取属性值时使用get访问器,get访问 器通过return返回属性的值。在访问声明中,如果只有get访问 器,表示是只读属性;如果只有set访问器,表示是只写属性; 如果get访问器和set访问器都有,表示读写属性。 小技巧:c#中利用命令行编辑器程序csc.exe调试程序的方法和c/c+语言中利 用turbo c/c+调试程序的方法相似,即排除一个个小错误后,直到程序运行 全通过为止。 第四章 c#面向对象编程 例4.5 属性的声明与使用 小提示:get和set访问器的首字母 不能大写,否则上机显示出错信息。 第四章 c#面向对象编程 4.3 类的函数成员 1、构造函数和析构函数 构造函数是类的特殊函数成员,它主要用于为对象分配空间,完成对 象的初始化工作。它具有以下特点: 构造函数的名称与类的名称相同。 构造函数可以具有参数,但没有返回值。 构造函数在对象定义(即创建对象)时自动被调用。 在类中没有定义该类的构造函数时,则编译系统会自动生成一个默认 的构造函数。该函数是一个不带参数、函数体为空的函数。 构造函数可以重载,但不能继承。 第四章 c#面向对象编程 构造函数可分为两类:实例构造函数和静态构造 函数。 析构函数是也是类的特殊函数成员,它的主要作 用是释放类的实例(即对象)分配空间。它具有 以下特点: 析构函数的名称与类名相同,但其名称前加一“” 符号。 析构函数不能带有参数,也没有返回值。 当撤消对象时,系统自动调用析构函数。 析构函数不能被重载,也不能被继承。 第四章 c#面向对象编程 2类的方法 方法是表现类或对象行为的函数成员.类中方法的声明 格式如下: 属性集 方法修饰符 返回值类型 方法名(形参列表) 方法体 其中,方法修饰符包括:new、public、protected、 private、internal、static virtual、abstract、 sealed、override和extern。 用修饰符static定义方法时,表示该方法为静态方法;而 未用修饰符static定义的方法为实例方法。 第四章 c#面向对象编程 静态方法不对特定实例进行操作,不与实例相关联,它属 于类,并仅与类相关联,所以调用静态方法不需要创建类 实例。要调用类的静态方法,只需要类名和方法名,中间 加上“.”运算符即可。静态方法只能访问类的静态成员( 访问非静态成员是错误的)。 实例方法属于类的实例,可对类的某个特定实例进行操作 ,调用实例方法需要通过类的实例,其使用格式为“实例 名.方法名”,实例方法可以访问类中的任何成员。 例4.6 使用静态方法和实例方法 第四章 c#面向对象编程 4.4.1 类的继承、派生、多态性 只所以要使用面向对象的编程思想实现asp.net程序设计, 可以用四个简单的术语来解释:抽象、封装、多态性、继承。 抽象:是隐藏复杂性、类的内部工作细节的过程,以使用户不必知道它的运 作方式。 封装:每个对象都包含它能进行操作所需要的所有信息,这个特性称为封装 。因此对象不必依赖其它对象来完成自己的操作,然而封装并不表示在类中 包含了所需要的所有内容。 多态性:用于表示不同的对象可以执行相同的动作,但要通过它们自己的实 现代码来执行。所以多态性可实现“一个接口,多种方法”。 继承:它定义了类如何相互关联,共享特性。继承的工作方式是,定义类和 子类,其中子类不仅继承了父类的所有特性,还可以定义新的特性。一般称 被继承的类为基类或父类,而称继承后产生的类为派生类或子类。 4.4 继承和接口 第四章 c#面向对象编程 c#中继承有如下重要特性: 只允许单继承,即派生类只能有一个基类。 继承是可以传递的,如果类c从类b派生,而类b从类a派生, 那么类c既继承在类b中声明的成员,又继承在类a中声明的 成员。 派生类能扩展它的直接基类,即派生类可以添加新的成员, 但不能删除从基类继承的成员。 基类的构造函数和析构函数不能被派生类继承。 派生类可以隐藏基类的成员,如果在派生类中声明了与基类 同名的新成员时,基类中的该成员在派生类中就不能访问到 。 1.派生类的声明: 派生类的声明格式为: 属性 类修饰符 class 类名:基类 类体 小提示:在派生类的声明中,通过在类名的后面加 上“: ”和基类的名称一起表示继承。派生类的声明 中的规定同一般类的声明规定相同。 第四章 c#面向对象编程 2.base关键字 用于从派生类中访问基类的成员,其用法如下: 指定创建派生类实例时应调用的基类构造函数,以完成对基 类成员的初始化工作。 在派生类中访问基类的成员。 3.多态性 c#中支持两种类型的多态性: 编译时的多态性:是在程序编译时就决定如何实现某一动作 ,它通过方法重载和运算符重载实现。编译时的多态性在编 译时就知道调用方法的全部信息。 运行时多态性:是在运行时动态实现某一动作,它通过继承 和虚成员实现。 第四章 c#面向对象编程 4.虚方法: 对于类中的方法(即函数成员),若声明时加上virtual 修饰符,则称该方法为虚方法。virtual修饰符不能与修饰 符static、abstract和override一起使用。虚方法重载时 要求方法名称、方法参数类型、方法参数、方法参数顺序 及方法返回值类型都必须与基类中的虚方法完全一样。在 派生类中重载方法时,要加上override修饰符。 第四章 c#面向对象编程 例4.7 定义一个类person,含有姓名name、年令age、肤 色color;定义其构造函数完成对其3个数据成员的初始化 ;定义函数成员display能完成输出其3个数据成员的功能 ,并将其定义为虚函数;定义函数成员print输出“这是在 person类中”信息。再定义第二个类employee,它是以 person类为基类的派生类,其中含有两个数据成员所在 部门名称depa_name和工资salary;定义其构造函数除 完成自己的数据成员初始化外,还利用base关键字调用 基类person的构造函数完成对从基类继承过来的数据成 员的初始化;在employee类中重载display函数,完成对 其数据成员的输出功能;定义函数成员print输出“这是在 employee类中”信息。 第四章 c#面向对象编程 4.4.2 抽象类、密封类、object类和string类 1抽象类 抽象类表示一种抽象的概念,用来为它的派生类提供一个 公共接口。在声明一个类时加上abstract修饰符时就表示声明 该类为抽象类。抽象类只能其它类的基类,不能用该类定义对 象,即不能实例化。 2密封类 在声明一个类时,加上sealed修饰符时就表示该类为密封类。 密封类与抽象类是互斥的,因此修饰符abstract与sealed不能 同时使用。 3object类和string类 object类和string类是在c#编程中经常用到的两个类。 (1)object类 object类是预定义类system. object的别名,object类是所 有其它类型的基类。在c#中,所有类型都是直接或间接地从 object类型中派生而来的。因此,一个object类的变量可以赋 予任何类型的值。例如: 第四章 c#面向对象编程 int i=6; object obj1=i; object obj2=true; object obj3=b; (2)string类 string类型专门用于对字符串的操作, 它是预定义类 system.string的别名。 如:string a=“how are you“; string str1=“mikecat“; 4.4.3 接口 提醒:为什么接口非常有用?在开发大型应用程序时,可能有一组 类都需要执行某个相似的动作。接口允许指定这个相似的动作是什 么,但不定义它是如何实现的。这与继承不同,继承的实现方式是 基类级的。 第四章 c#面向对象编程 接口是类的一种特殊类型。它也是一组抽象的方法,用来 定义类型与使用该类型的用户之间的协定。一个接口可以从多 个基接口继承,而一个类或结构可以实现多个接口。 接口和类一样,可以有方法、属性和事件等成员。但与类 不同的是,接口仅仅提供成员的声明,并不提供成员的实现。 接口成员可以在具体的类或结构代码中实现。因此,一个接口 定义一个协定,实现接口的类或结构必须遵守其协定。 1. 接口的定义: 接口定义格式为: 属性接口修饰符 interface 接口名:基接口 接口体 其中,关键字interface、接口名和接口体是必需项,其它项是可选项。接口修饰符 包括:new、public、protected、internal、private。接口体用于定义接口的成员 。如: interface secret /定义接口类型secret void encrypt(); void unencrypt(); 第四章 c#面向对象编程 接口支持多继承。在接口名后可以列举一个或多个继承接口 ,相互之间以“,”号分隔。例如: interface secret1:secret /接口secret1继承secret 2. 接口的实现 当希望类成员展示某些特性时,可以将这些成员分组在接 口中,然后在类或结构中实现。 例4.8:创建一个接口并实现接口。 小提示:“接口”的添加方式同“类”的添加方式一样,因为接口是类 的一种特殊类型。具体作法是:在解决方案窗口,右击项目名称|添加 |添加新项|类|更改类名分别为animal.cs、person.cs、dog.cs。 另:有关委托和事件概念及基本应用参考第三章。 第四章 c#面向对象编程 命名空间(namespace)是c#中重要的一个部分。这里介 绍命名空间(或名字空间)的概念,以及如何创建并使用命名 空间? 命名空间就是一个名字,它将相关的类归入到一个层次结 构中,更好地组织类,避免命名冲突而且简化了使用。微软 .net框架类库中包含了80多个常用命名空间。例如, system.string是 .net string类型完整的资格名称。但是为 了简化代码起见,只要声明正在使用system名称空间为: using system; 提醒:system 命名空间包含基本类和基类,这些类定义常用的值和引用数 据类型、事件和事件处理程序、接口、属性和异常处理。更多的关于 “system 命名空间”知识参阅vs.net界面“帮助”菜单/“动态帮助”。 4.5 命名空间 第四章 c#面向对象编程 1.namesapce关键字 创建新的命名空间,可以使用namesapce关键字。格式如下: namesapce 1 / name,name1是命名空间名 type_declaratons /声明类型 通过使用namesapce关键字,我们还可以将c#程序或者类 包裹在自身的名称空间中. 2.using关键字 using 命令负责告诉c#编译器在system 库中寻找未知的 类。格式如下: using 命名空间名; 这样,在声明某个类型的实例时,直接用此类型的名称即可 。 第四章 c#面向对象编程 c#程序的常规结构: c#程序可由一个或多个文件组成。每个文件可包含一个或多个命名空 间。一个命名空间除了可包含其他命名空间外,还可包含类、结构、接口 、枚举、委托等类型。以下是 c# 程序的主干,它包含所有这些元素。 / 一个c# 程序的框架 using system; namespace

温馨提示

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

评论

0/150

提交评论