第5章 面向对象.ppt
《第5章 面向对象.ppt》由会员分享,可在线阅读,更多相关《第5章 面向对象.ppt(73页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第5章章 面向对象面向对象回顾q简单计算机器简单计算机器q随机计算:系统随机生成两个数,并随机随机计算:系统随机生成两个数,并随机生成四则运算中的一种。生成四则运算中的一种。想一想你知道我国的四大发明吗?你知道我国的四大发明吗?哪一个发明只是技术上的改进?哪一个发明只是技术上的改进?q第一,要改,只需更改要改之字,此为第一,要改,只需更改要改之字,此为可维护可维护;q第二,这些字并非用完这次就无用,完全可以在后第二,这些字并非用完这次就无用,完全可以在后来的印刷中重复使用,此乃来的印刷中重复使用,此乃可复用可复用;q第三,此诗若要加字,只需另刻字加入即可,这是第三,此诗若要加字,只需另刻字加
2、入即可,这是可扩展可扩展;q第四,字的排列其实有可能是竖有可能是横排,此第四,字的排列其实有可能是竖有可能是横排,此时只需将活字移动就可做到满足排列需求,此是时只需将活字移动就可做到满足排列需求,此是灵灵活性好活性好。四大发明之四大发明之活字印刷活字印刷 面向对象思想的胜利面向对象思想的胜利 面向对象q面向对象的优点和特征面向对象的优点和特征q类的声明和实例化类的声明和实例化q类成员类成员q构造函数和析构函数构造函数和析构函数q封装封装-属性属性q继承继承q多态多态q抽象抽象面向对象的优点和特征q面向对象编程的优点面向对象编程的优点:q可维护性高q可复用好q可扩展好q灵活性高q面向对象的特点:
3、面向对象的特点:q抽象q封装q继承q多态类的声明和实例化q类是对象的模板,对象时类的实例,使用对象前类是对象的模板,对象时类的实例,使用对象前必须先创建类必须先创建类访问修饰符访问修饰符 class 类名类名:父类名父类名 字段;字段;/描述对象的状态描述对象的状态 属性;属性;/用于设置或获取类中相关的数据值用于设置或获取类中相关的数据值 方法;方法;/实现对象的行为实现对象的行为 构造函数;构造函数;/初始化对象初始化对象 private class People private string name;类的声明和实例化q对象是类的实例,是具体的。要使用对象,必须对象是类的实例,是具体的。
4、要使用对象,必须使用关键字使用关键字new 实例化类的一个对象实例化类的一个对象 =new People object1 =new People();类成员q成员变量成员变量q成员方法成员方法成员变量成员变量常量常量:在类中声明的常量,代表与类相关的常:在类中声明的常量,代表与类相关的常数值。数值。字段字段:在类中声明的变量,用于存储属性的值。:在类中声明的变量,用于存储属性的值。类型类型:属于类的局部类型。:属于类的局部类型。索引器索引器:又称下标指示器,通过索引器访问类:又称下标指示器,通过索引器访问类的多个实例。的多个实例。成员方法成员方法方法方法:完成类中的各种操作,是封装在类内部的、
5、:完成类中的各种操作,是封装在类内部的、用于执行一定操作的过程或函数。用于执行一定操作的过程或函数。属性属性:用于设置或获取类中相关的数据值,如定:用于设置或获取类中相关的数据值,如定义字段的值并对它们进行读、写操作。义字段的值并对它们进行读、写操作。事件事件:由类产生的通知,用于说明发生了什么,:由类产生的通知,用于说明发生了什么,是一种触发机制,是类对外界的响应,使对象具是一种触发机制,是类对外界的响应,使对象具有与外界进行交互的能力。当某个事件发生时,有与外界进行交互的能力。当某个事件发生时,就调用了与该事件相关联的方法。就调用了与该事件相关联的方法。构造函数构造函数:析构函数析构函数:
6、定义类的字段定义类的字段 字段字段字段字段是用来描述一个类的对象的状态和特征的,如是用来描述一个类的对象的状态和特征的,如是用来描述一个类的对象的状态和特征的,如是用来描述一个类的对象的状态和特征的,如人的名字、性别、年龄等人的名字、性别、年龄等人的名字、性别、年龄等人的名字、性别、年龄等 语法:语法:语法:语法:示例:示例:示例:示例:访问修饰符访问修饰符 数据类型数据类型 字段名字段名 =缺省值缺省值class People public string name;/姓名字段姓名字段 public string sex;/性别字段性别字段 实例定义一个圆形(定义一个圆形(Circle)类,并
7、计算圆的面)类,并计算圆的面积和周长。积和周长。class Circle private double r;/定定义义私有成私有成员变员变量,字段量,字段 private const double PI=3.14;public void getR()/定定义义共有成共有成员员方法,用于方法,用于输输出矩出矩形形长长,宽宽 Console.WriteLine(“半径半径+r);public float getArea()/定定义义共有成共有成员员方法,用于方法,用于计计算矩形面算矩形面积积 return PI*r*r;public void setR(double cur_r)/设设置置长宽长宽
8、的的值值 r=cur_r;static void Main(string args)double r1;Circle c1=new Circle();Console.Write(“输输入原型的半径:入原型的半径:);r1=float.Parse(Console.ReadLine();c1.setR(r1);Console.WriteLine(“圆圆形的面形的面积为积为:+c1.getArea();c1.getR();Console.ReadLine();构造函数和析构函数q构造函数构造函数构造函数特点:构造函数特点:(1 1)具有和类相同的名称)具有和类相同的名称(2 2)没有返回值)没有返回
9、值构造函数功能:构造函数功能:(1)(1)为对象分配内存空间为对象分配内存空间(2)(2)成员变量的初始化成员变量的初始化q析构函数析构函数q特点:与类名相同,前面多一个“”q功能:收回对象占用的内存空间构造函数q构造函数分为构造函数分为无参构造函数无参构造函数和和带参构造函数带参构造函数;q一个类可以有多个构造函数,类在实例化时一个类可以有多个构造函数,类在实例化时根据其携带参数自动选择对应的构造函数根据其携带参数自动选择对应的构造函数实例实例定义一个圆形(定义一个圆形(Circle)类,并计算圆的)类,并计算圆的面积和周长。要求类的构造函数有代参和不面积和周长。要求类的构造函数有代参和不带
10、参两种。带参两种。思考题思考题q定义一个面积(定义一个面积(AreaArea)类,通过定义不同)类,通过定义不同的构造方法计算点,圆,矩形,梯形的面的构造方法计算点,圆,矩形,梯形的面积。要求:计算圆的面积时要求从键盘输积。要求:计算圆的面积时要求从键盘输入半径;计算矩形面积时从键盘输入长和入半径;计算矩形面积时从键盘输入长和宽;计算梯形面积时从键盘输入矩形的上宽;计算梯形面积时从键盘输入矩形的上下底和高。下底和高。class Area public Area()/构造函数构造函数-无参无参 Console.WriteLine(0);public Area(double r)/构造函数构造函数
11、-1个参数个参数计计算算圆圆的面的面积积 Console.WriteLine(Math.PI*r*r);/构造函数构造函数-2个参数个参数-计计算矩形的面算矩形的面积积 public Area(double len,double wid)Console.WriteLine(len*wid);/构造函数构造函数-1个参数个参数-计计算梯形的面算梯形的面积积 public Area(double ULen,double LLen,double high)Console.WriteLine(ULen+LLen)*high/2);定义定义Area 类类static void Main(string a
12、rgs)Console.WriteLine(“点的面点的面积为积为:);Area pointArea=new Area();Console.WriteLine(“圆圆的面的面积积:);Area CircleArea=new Area(10);Console.WriteLine(“矩形的面矩形的面积积:);Area RectangleArea=new Area(10,10);Console.Write(梯形的面梯形的面积为积为:);Area trapeziumArea=new Area(10,20,10);Console.ReadLine();主函数主函数(实例化时完成面积计算实例化时完成面积计
13、算)static void Main(string args)Console.WriteLine(计计算点的面算点的面积为积为:);Area pointArea=new Area();Console.WriteLine(计计算算圆圆的面的面积积,请请先先输输入半径入半径);double r=double.Parse(Console.ReadLine();Area CircleArea=new Area(r);Console.WriteLine(计计算矩形的面算矩形的面积积,请请先先输输入矩形的入矩形的长长与与宽宽);Console.Write(长长=);double length=double
14、.Parse(Console.ReadLine();Console.Write(宽宽=);double width=double.Parse(Console.ReadLine();Console.Write(矩形的面矩形的面积为积为:);Area RectangleArea=new Area(length,width);Console.WriteLine(计计算梯形的面算梯形的面积积,请请先先输输入梯形的上底,下底和高入梯形的上底,下底和高);Console.Write(上底上底=);double UperLength=double.Parse(Console.ReadLine();Conso
15、le.Write(下底下底=);double LowerLength=double.Parse(Console.ReadLine();Console.Write(高高=);double high=double.Parse(Console.ReadLine();Console.Write(梯形的面梯形的面积为积为:);Area trapeziumArea=new Area(UperLength,LowerLength,high);Console.ReadLine();主函数(主函数(用户输入待计算形状的半径或边)用户输入待计算形状的半径或边)析构函数q功能功能:清除对象,收回对象占用的内存空间清
16、除对象,收回对象占用的内存空间q特点:特点:q与类名相同,前面多一个与类名相同,前面多一个“”q一个类只有一个析构函数。一个类只有一个析构函数。q析构函数只能在当前类中使用,不允许继承和重载析析构函数只能在当前类中使用,不允许继承和重载析构函数。构函数。q不允许显式的调用析构函数,只能由系统自动调用。不允许显式的调用析构函数,只能由系统自动调用。q析构函数没有修饰符,也没有参数析构函数没有修饰符,也没有参数Employee()Console.WriteLine(Employee对象已经被释放。对象已经被释放。);封装-属性q属性体现了面向对象的封装性属性体现了面向对象的封装性q通过访问器(通过
17、访问器(get/set)来操作类的数据内容)来操作类的数据内容q 通过通过get/set访问器对属性值进行读写主要有三种:访问器对属性值进行读写主要有三种:q只有只有set访问器,表名属性值只可设置(可写)访问器,表名属性值只可设置(可写)q只有只有get访问器,表名属性值只可读(可读)访问器,表名属性值只可读(可读)q既有既有set又有又有get访问器,表名属性值既可读也可设置(可访问器,表名属性值既可读也可设置(可读可写)读可写)说明:说明:属性的属性的getget访问器通过访问器通过returnreturn来读取属性值,来读取属性值,setset访问器通过访问器通过vlauevlaue来
18、设置属性值来设置属性值类定义举例class Employee private string empName;/姓名 private string sex;/性别 private int wage;/工资 private string idCard;/身份证号 /empName字段对应的属性 /public string EmpName get return empName;set empName=value;定义类定义类EmployeeEmployee的定义,将字段设置的定义,将字段设置为为privateprivate类型,并使用公共属性来类型,并使用公共属性来获取和设置字段的值,代码如下:获
19、取和设置字段的值,代码如下:/sex字段对应的属性 /public string Sex get return sex;set if(value=“男”|value=“女”)sex=value;Elsesex=“男”;/wage字段对应的属性 /public int Wage get return wage;set if(value 0)wage=value;else wage=0;/idCard字段对应的属性 /public string IDCard get return idCard;set idCard=value;/访问私有字段,输出员工信息 /public void PrintEm
20、pInfo()Console.WriteLine(empName);Console.WriteLine(sex);Console.WriteLine(wage);Console.WriteLine(idCard);方法 方法方法方法方法是一组指令集合,用来实现一个类的对象是一组指令集合,用来实现一个类的对象是一组指令集合,用来实现一个类的对象是一组指令集合,用来实现一个类的对象的行为,如人会的行为,如人会的行为,如人会的行为,如人会“使用工具使用工具使用工具使用工具”,狮子会,狮子会,狮子会,狮子会“咬咬咬咬人人人人”语法:语法:语法:语法:访问修饰符访问修饰符 返回值返回值类型类型 方法名方
21、法名(参数)(参数)指令集合;指令集合;/方法体方法体 public float getArea()return length*width;如何编写方法如何编写方法 返回值类型返回值类型返回值类型返回值类型是指当方法执行结束时,方法返回结是指当方法执行结束时,方法返回结是指当方法执行结束时,方法返回结是指当方法执行结束时,方法返回结果的数据类型。果的数据类型。果的数据类型。果的数据类型。例如:对例如:对例如:对例如:对2 2个整数进行求和的方法,个整数进行求和的方法,个整数进行求和的方法,个整数进行求和的方法,其返回值类型就是整形其返回值类型就是整形其返回值类型就是整形其返回值类型就是整形 如
22、果方法如果方法如果方法如果方法没有返回值没有返回值没有返回值没有返回值,使用,使用,使用,使用voidvoid关键字关键字关键字关键字参数是可选的参数是可选的,表示传递给方法中要处理的数据,表示传递给方法中要处理的数据,例如:对例如:对2个整数进行求和的方法,就需要个整数进行求和的方法,就需要2个整个整形的参数形的参数参数的声明方法和变量一样参数的声明方法和变量一样,如果有多个参数,如果有多个参数,参数之间用参数之间用,分开分开给方法传递参数给方法传递参数 当调用方法时,当调用方法时,当调用方法时,当调用方法时,传递参数的个数、数据类型、顺序传递参数的个数、数据类型、顺序传递参数的个数、数据类
23、型、顺序传递参数的个数、数据类型、顺序必须与方法签名一致必须与方法签名一致必须与方法签名一致必须与方法签名一致 方法名方法名方法名方法名+方法的参数列表方法的参数列表方法的参数列表方法的参数列表合称为合称为合称为合称为方法签名方法签名方法签名方法签名class SimpleMath public int Add(int x,int y)return x+y;/调用方法时需要传递参数调用方法时需要传递参数SimpleMath sums=new SimpleMath();int total=sums.Add(20,30);方法参数的传递方式方法参数的传递方式qC#中方法的参数有中方法的参数有4种类
24、型:种类型:q值参数值参数,不含任何修饰符。,不含任何修饰符。q引用型函数引用型函数,以,以Ref修饰符声明。修饰符声明。q输出参数输出参数,以,以Out修饰符声明。修饰符声明。q数组型参数数组型参数,以,以Params修饰符声明。修饰符声明。若A语句中调用方法B,两者间有参数传递,那么,我们将A A调用语句中传送的参数称为调用语句中传送的参数称为实实参参;被调用的方法B中使用的参数成为形参。方法参数的传递方式方法参数的传递方式(值参数传递值参数传递)q例例 两数交换:两数交换:值参数传递示例。值参数传递示例。static void Main(string args)int a=3;int b
25、=5;change(a,b);Console.WriteLine(a=0,b=1,a,b);static void change(int x,int y)int temp;temp=x;x=y;y=temp;a=3,b=5方法参数的传递方式方法参数的传递方式(引用型参数引用型参数)q例例 把上面例子改写成引用型参数传递。把上面例子改写成引用型参数传递。static void Main(string args)int a=3;int b=5;change(ref a,ref b);Console.WriteLine(a=0,b=1,a,b);static void change(ref int
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第5章 面向对象 面向 对象
限制150内