单元3-面向对象的C#-C#程序设计课件.ppt
《单元3-面向对象的C#-C#程序设计课件.ppt》由会员分享,可在线阅读,更多相关《单元3-面向对象的C#-C#程序设计课件.ppt(110页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、3 面向对象的C#知识目标 v(1)理解面向对象的封装性、继承性和多态性;v(2)掌握类的定义;v(3)掌握静态方法和静态类;v(4)掌握C#的继承语法;v(5)掌握接口的声明和实现的语法;v(6)理解抽象方法和接口的作用。能力目标v(1)能理解面向对象的封装性、继承性、多态性;v(2)能将常见的事物抽象成恰当的类;v(3)能正确定义类和类的成员,能使用访问修饰符控制封装程度;v(4)能以对象及对象与对象的相互作用来分析问题;v(5)能以继承表示实际问题中分类;v(6)能理解并使用接口约定不同类型对象的行为;v(7)能理解接口和抽象类的差别。教学任务v任务1 类的定义及使用v任务2 构造函数、
2、静态成员和命名空间v任务3 类的继承v任务4 多态v任务5 接口引例v使用类的方法,描述一个汽车类,并使用该类。知识储备v知识点1:类的定义,定义一个汽车类的基本形式。v知识点2:类成员的定义:字段、方法、属性和索引器,为汽车类设计字段、方法、属性和索引器。v知识点3:访问修饰符的使用(private和public)。v知识点4:类的使用对象,输出和修改汽车的相关信息。知识点1:类的定义v类是一个定义对象形式的模版。v它指定了数据以及操作数据的代码。vC#使用类的规范来构造对象,而对象是类的实例。v从定义上来说,类是一个数据结构,包含数据成员(属性、字段)、功能成员(方法、事件、构造函数和析构
3、函数等)和嵌套类型。知识点2:类成员的定义:字段、方法、属性和索引器v字段相当于简单变量,它可以声明为静态的,也可以声明为只读的。当字段被声明为只读时,与声明为const的效果是一样的,其区别在于,只读型表达式在程序运行时形成,而const型表达式的值在编译时就形成了。v语法格式:修饰符字段类型字段名示例v汽车类中的字段 class Car public int wheels;/轮子的个数 public float weight;/重量 方法v方法是一个执行可以由对象或类完成的计算或行为的成员。v方法有一个形式参数列表(可能为空)、一个返回值(或void)并且可以是静态也可以是非静态。静态方法
4、要通过类来访问。非静态方法也称为实例方法,通过类的实例来访问。示例:定义一个Student类,并定义一个计算成绩总分的方法。class Student public string sno;public string sname;public double sum(double ccj1,double ccj2)return ccj1+ccj2;【例3-1】求两个整数之和。class Program static void Main(string args)int a=1,b=1;Console.WriteLine(Add(a,b);Console.ReadKey();public static
5、 int Add(int a,int b)return a+b;参数传递v在方法声明中使用的参数叫形式参数(形参),在调用方法中使用的参数叫实际参数(实参)。在调用方法时,参数传递就是将实参传递给形参的过程。Max类定义中声明方法时的形参如下:public int IntMax(int a,int b)则声明对象max后调用方法时的实参如下:max.IntMax(x,y);按值传递和按引用传递Swap方法代码如下:public void Swap(int a,int b)int c=a;a=b;b=c;则调用该方法的语句代码如下:S,b1);Swap方法改写如下:public void Swa
6、p(ref int a,ref int b)int c=a;a=b;b=c;则调用该方法的语句代码如下:S a1,ref b1);/在实参中增加ref关键字实践任务2v显示学生的信息,为学生类设计一个显示信息的方法。属性v属性是提供对对象或类的特性进行访问的成员。属性是字段的正常延伸都是与类型相关的有名称的成员,并且访问字段和属性的语法是相同的。v与字段不同的是:v属性不指示存储位置。作为字段的替代,为了对它们的数值进行读写,属性有访问符来指定要执行的语句。这样,属性为读写对象的属性的相关行为提供了某个机制,并且它们允许那些属性可以被计算。封装性为字段生成属性后,字段的访问修饰符就不是publ
7、ic了属性v属性是用相关类型成员命名的。有存取程序,它指定声明的执行来对他们的进行读或写。v只读属性 只写属性修饰符返回类型属性名get语句集合;修饰符返回类型属性名set语句集合;【例3-2】定义一个长方形类,该类包含长、宽字段和属性。public class Rectangle private double length;public double Length get return length;set if(value 0)length=value;private double width;public double Width get return width;set width=v
8、alue;索引器v索引器是属性的一种,同时本质上索引器和属性都是一种方法。v和属性的区别:数据成员是数组或者其他集合,使用索引器完成数据访问权限的控制功能。【例3-3】索引器的使用。为Cinema类添加一个索引器,用来存放当前播放的电影片名。class Cinema private string names=new string5;public string thisint n get return namesn;set namesn=value;class Program static void Main(string args)Films f=new Films();f0=画皮2;Cons
9、ole.WriteLine(f0);Console.ReadKey();索引器的定义调用索引器例3-4为汽车类设计方法和属性。using System;class Car private string type;/类型 private int wheels;/轮子的个数 private float weight;/重量 public string Type get return type;set type=value;public int Wheels get return wheels;set wheels=value;public float Weight get return weigh
10、t;set weight=value;public void Speak()Console.WriteLine(“我是0,1个轮子,重量为2吨”,type,wheels,weight);访问修饰符vpublic,访问不受限制。vinternal,访问范围限于此程序。vprotected,访问范围现定于它所属的类或从该类派生的类型。vprivate,访问范围限定于它所属的类型。类成员访问修饰符的默认值为private。使用 public 关键字 public class Sample public int x;public class MainClass public static void M
11、ain()Sample s=new Sample();s.x=15;使用 private 关键字 public class Sample private int x;public class MainClass public static void Main()Sample s=new Sample();/private 拒绝访问 s.x=15;/不会编译 知识点4:类的使用对象v声明对象:类名 对象名;v实例化对象的语法格式为:v对象名=new 类名();v类与对象之间的关系:类就是对象的模板,而对象就是类的一个实例Carc;/声明对象c=newCar();/实例化对象Carc=newCar
12、();【例3-5】实例化汽车对象,设置和显示汽车的相关信息。(引例的实现)class Program static void Main(string args)Car c=new Car();c.Type=宝马;c.Wheels=4;c.Weight=1.45f;c.Speak();Console.ReadKey();实践任务3v根据实践任务2完成的类,声明并实例化一个学生对象,设置和显示该学生的相关信息。归纳总结v知识要点:v(1)类定义的格式,关键字class;v(2)类成员的定义:字段、方法和属性;v(3)访问修饰符的作用,实现程序的封装性;v(4)声明对象并实例化;v(5)通过“.”访
13、问对象中的成员。拓展实践v设计一个时间类(Time),该类能够显示时间,并对时、分、秒做加1和减1的操作。v提示:display(),addSecond(),addMinute()单元3 面向对象的C#任务2 构造函数、静态成员和命名空间引例v描述一个长方形类,并使用该类,在使用时希望能够方便的实现长和宽值传入。知识储备v知识点1:构造函数的定义和使用,为长方形类显示声明默认构造函数。v知识点2:重载,为长方形类添加一个参数构造函数和两个参数构造函数。v知识点3:静态成员和静态类,计算生成的长方形对象的个数。v知识点4:命名空间的意义,定义命名空间的方法。知识点1:构造函数的定义和使用v构造函
14、数是类的实例执行的时候的初始化操作。v构造函数的名称与类的名称相同。例如,如果一个类类名为Myclass,那么它的构造函数的名称是Myclass()v构造函数是在类的实例执行时初始化的方法。由于这个特性使得构造函数成为需要执行的所有初始化任务(如设置变量和属性的初始值)的理想位置。v每个类都有自己的构造函数。在访问这个类的时候系统最先执行的就是这个构造函数。v在没有定义构造函数的时候,系统会自动为我们生成一个默认构造函数使用构造函数时需要注意:v类的构造函数名要与类名相同。v构造函数没有返回类型。v一般情况下构造函数是public类型的。v不能显式的调用构造函数。classRectangle/
15、显式声明默认构造函数publicRectangle()调用:Rectangler=newRectangle();对比方法和构造函数的定义v修饰符 返回类型 方法名(参数列表)方法功能v构造函数的定义:v修饰符 方法名(参数列表)方法功能v构造函数是没有返回类型的,且构造函数的方法名和类名相同。析构函数v析构函数是在类破坏时自动执行的操作。它在碎片收集时自动调用。v在声明析构函数时,它的标识符必须为声明析构函数的类的命名,如果指定了任何其他名称,就会发生错误。v析构函数的语法格式:v 类名()销毁实例的语法v例如,如果一个类类名为Myclass,那么它的析构函数的名称是Myclass()知识点2
16、:重载v在一个类中定义多个方法名相同、方法间参数个数和参数类型不同的方法(对于参数个数不同或者参数列表不同的情况我们称之为参数列表不同)在同一个类中;方法名相同;参数列表不同。重载构造函数v除了系统提供的默认构造函数外,也可以根据类的需要,自定义构造函数。而且在实际情况中,构造函数往往需要使用形参。示例:创建一个长方形类对象时,需要给出长方形的长和宽。classRectangleprivatedoublelength;privatedoublewidth;publicRectangle()publicRectangle(doublelength,doublewidth)this.length=
17、length;this.width=width;在生成具体对象时,可以在实例化对象的同时,为对象的长和宽传值:Rectangler=newRectangle(6,5)实践任务1:v定义一个快餐类,包含快餐中荤菜类型、素菜类型、是否带汤,以及价格,要求实现构造函数重载,用实现对象初始化。知识点3:静态成员和静态类v静态成员一般格式:使用static修饰符Public class A public static int count;public static void show()【例3-6】创建控制台应用程序,创建Rectangle(长方形)类,该类除包含非静态成员外,还包含一个静态数据成员用以
18、统计长方形个数(对象个数),一个静态方法用以返回长方体个数。classRectangleprivatedoublelength;privatedoublewidth;publicRectangle(doublel,doublew)length=l;width=w;publicstaticintcount;publicstaticvoidAdd()count+;classProgramstaticvoidMain(stringargs)while(true)Console.WriteLine(请输入长方形的长:);doublel=double.Parse(Console.ReadLine();C
19、onsole.WriteLine(请输入长方形的宽:);doublew=double.Parse(Console.ReadLine();Rectangler=newRectangle(l,w);Rectangle.Add();Console.WriteLine(生成长方形0个,Rectangle.count);Console.WriteLine(是否继续生成长方形(Y/N)?);if(Console.ReadLine()=N)break;静态类v静态类与非静态类基本相同,但存在一个区别:静态类不能实例化。也就是说,不能使用 new 关键字创建静态类类型的变量。v例如,如果名为StaticCla
20、ss 的静态类有一个名为 MethodA 的公共方法,则按下面的示例所示调用该方法:vStaticClass.MethodA();【例3-7】实现摄氏温度和华氏温度之间的转换。publicstaticclassTemperatureConverterpublicstaticdoubleCelsiusToFahrenheit(stringtemp)doublecelsius=Double.Parse(temp);/摄氏度到华氏度的转换doublefahrenheit=(celsius*9/5)+32;returnfahrenheit;publicstaticdoubleFahrenheitToC
21、elsius(stringtemperatureFahrenheit)doublefahrenheit=Double.Parse(temperatureFahrenheit);/华氏度到摄氏度的转换doublecelsius=(fahrenheit-32)*5/9;returncelsius;classTeststaticvoidMain()Console.WriteLine(请选择转换的方式);Console.WriteLine(1.摄氏度转换为华氏度.);Console.WriteLine(2.华氏度转换为摄氏度.);Console.Write(:);stringselection=Con
22、sole.ReadLine();doubleF,C=0;switch(selection)case1:Console.Write(请输入摄氏温度:);F=TemperatureConverter.CelsiusToFahrenheit(Console.ReadLine();Console.WriteLine(对应的华氏度为:0,F);break;case2:Console.Write(请输入华氏温度);C=TemperatureConverter.FahrenheitToCelsius(Console.ReadLine();Console.WriteLine(对应的摄氏度为:0,C);brea
23、k;default:Console.WriteLine(请选择一种转换方式.);break;Console.WriteLine(按任意键退出.);Console.ReadKey();实践任务2v计算生成快餐对象的个数。知识点4:命名空间的意义,定义命名空间的方法。v.NET3.5所提供的系统命名空间结构图使用命名空间组织代码v需要引用类的时候,就通过using关键字引入命名空间v定义方法示例如下:namespaceModelclassClass1classClass2 namespaceModel.Class1classClass1实践任务3v在不同的命名空间中定义同名快餐类,二者区别为构造函
24、数不同,使用这两个类。引例分析与实现v创建控制台应用程序,创建Rectangle(长方型)类,声明长方型构造函数及正方型构造函数的重载。创建对象时,根据给定的参数个数将对象初始化为长方体或正方体。classRectangledoublelength;doublewidth;/正方形构造函数publicRectangle(doublelength)this.length=length;/长方形构造函数publicRectangle(doublelength,doublewidth)this.length=length;this.width=width;/长方形求面积方法publicdoubleA
25、rea(doublel,doublew)returnl*w;/正方形求面积方法publicdoubleArea(doublel)returnl*l;classProgramstaticvoidMain(stringargs)Console.WriteLine(请输入正方形边长:);doublel=double.Parse(Console.ReadLine();Rectangler=newRectangle(l);Console.WriteLine(正方形面积为:);Console.WriteLine(r.Area(l);Console.WriteLine(请输入长方形长:);l=double.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单元 面向 对象 C# 程序设计 课件
限制150内