第4章面向对象基础ppt课件.ppt
《第4章面向对象基础ppt课件.ppt》由会员分享,可在线阅读,更多相关《第4章面向对象基础ppt课件.ppt(101页珍藏版)》请在三一办公上搜索。
1、第4章 面向对象基础,类与对象构造方法,this关键字static关键字,让IT教学更简单,让IT学习更有效,面向对象是在对真实系统建模的基础上的一个软件开发方法。面向对象的程序由类和对象组成。让我们了解这些术语类和对象。,面向对象的方法,Toyota Camry,Suzuki Reno,Honda Acura,类,对象,现实世界中所有的事物都是对象对象都具有某些特征,并展现某些行为,长度、宽度、颜色、速度、类型等是对象的属性,属性值表明了对象的状态,对象,对象的行为(方法),汽车的起动、加速、减速、停止等是对象自身的动作称为对象的方法,对象,属性,型号,价格,里程,行为,起动,停车,行驶,属
2、性,车轮数量,档的数量,行为,加速,换档,刹车,属性,名称,颜色,品种,行为,摇尾巴,吃东西,犬 吠,通过消息实现对象交互,注意:通过方法调用实现消息发送,对象从文字上理解为“具体的事情”,人的感观能够感觉到它。对象具有以下特性:对象有状态(属性和值)对象可以显示行为(自身行为)对象有一个唯一的身份(标识),面向对象的基础,类是具有相同属性和方法的对象的抽象(即对象的共性)。在计算机中类就是一种数据结构,是一种特定的数据组织形式。它包含属性;方法。,4.1 面向对象的概念,什么是面向对象?,面向对象是一种符合人类思维习惯的编程思想。现实生活中存在各种形态不同的事物,这些事物之间存在着各种各样的
3、联系。在程序中使用对象来映射现实中的事物,使用对象的关系来描述事物之间的联系,这种思想就是面向对象。,面向对象的三大特征,1、封装性,封装是面向对象的核心思想,它将对象的特征和行为封装起来,不需要让外界知道具体实现细节,这就是封装思想。例如,用户使用电脑,只需要使用手指敲键盘就可以了,无需知道电脑内部是如何工作的,即使用户可能碰巧知道电脑的工作原理,但在使用时,并不完全依赖电脑工作原理这些细节。,4.1 面向对象的概念,2、继承性,继承性主要描述的是类与类之间的关系,通过继承,可以在无需重新编写原有类的情况下,对原有类的功能进行扩展。例如,有一个表示汽车的类,该类中描述了汽车的普通特性和功能,
4、而表示轿车的类中不仅应该包含汽车的特性和功能,还应该增加轿车特有的功能,这时,可以让轿车类继承汽车类,在轿车类中单独添加表示轿车特性的方法就可以了。,3、多态性,多态性指的是同一操作用于不同的对象,会产生不同的执行结果。例如,当听到“Cut”这个单词时,理发师的表现是剪发,演员的行为表现是停止表演,不同的对象,所表现的行为是不一样的。,程序设计语言中如何实现封装?如何创建类和对象?,类和对象的创建 举例学生管理系统 中对学生进行管理,一个学生有学号、姓名、年龄,能实现对学生信息的赋值和输出编写一个students类,其中有3个数据成员有学号、姓名、年龄,以及若干成员函数。同时编写主函数使用这个
5、类,实现对学生数据的赋值和输出。要求:使用成员函数实现对数据的输出;使用函数实现对数据的输入。,访问修饰符 class 类名 访问修饰符 成员;对象创建类名 对象名;对象名=new 类名(),4.2 类与对象,4.2.1 类的定义,什么是类?,如何定义一个类?,类是对象的抽象,它用于描述一组对象的共同特征和行为。类中可以定义字段和方法,其中字段用于描述对象的特征,方法用于描述对象的行为。,在下面这段代码中定义了一个Person类,其中,Person是类名,age是字段,Speak()是方法。在Speak()方法中可以直接访问age字段。,public class Person/定义Person
6、类,public为访问修饰符 public int age;/定义int类型的字段age public void Speak()/定义 Speak()方法 Console.WriteLine(大家好,我今年+age+岁!);,4.2 类与对象,4.2.2 对象的创建与使用,应用程序想要完成具体的功能,仅有类是远远不够的,还需要根据类创建实例对象。在C#程序中可以使用new关键字来创建对象,具体格式如下:例如创建Person类的实例,具体代码如下:上面的代码中,“new Person()”用于创建Person类的一个实例对象,“Person p”则是声明了一个Person类型的变量p。中间的等号
7、用于将Person对象在内存中的地址赋值给变量p,这样变量p便持有了Person对象的引用。,类名 对象名称=new 类名();,Person p=new Person();,4.2 类与对象,4.2.2 对象的创建与使用,内存中变量p和对象之间的引用关系如下图所示。在创建Person对象后,可以通过对象的引用来访问对象所有的成员,具体格式如下:,对象引用.对象成员,课堂练习,编程程序定义日期类型Date。要求有以下面成员:年、月、日变量(私有),一个实现年、月、日单独的输入void input(int year,int month,int day),实现打印方法成员,该方法要按照“XXXX年
8、XX月XX日”格式输出日期。,访问修饰符用法,让我们举例来了解它们的用法,Abstract.prj,Internal在程序集内使用,Protected Internal程序集的子类也中可见,Default与private等价,访问修饰符,在上一个小节中出现的关键字private和public都属于修饰符,用于限定外界对类和方法的访问权限。在C#中,访问修饰符共有四种,分别是public、protected、internal、private,使用这四种访问修饰符可以组成五个可访问级别,具体如下:public:最高访问级别,访问不受限制。protected:保护访问级别,受保护的成员可由自身及派生
9、类访问。internal:内部访问级别,只有在同一程序集中,内部类型或者成员才可访问。protected internal:内部保护级别,访问仅限于当前程序集,可由自身及派生类访问。private:私有访问,最低访问级别,私有成员只有在声明它们的类和结构中才可访问。,思考类的私有成员的值,如何在类外 访问?,课后思考,使用private修饰符后,使用者便无法直接访问它们,通过什么办法采用获得private修饰的成员变量的值提示:1、通过方法返回获取值 2、通过建立property(属性),4.2 类与对象,4.2.4 属性,在设计一个类时,应该对字段的访问作出一些限定,不允许外界随意访问,这时
10、就可以使用属性。在程序中,使用属性封装字段时,需要将字段访问级别设为private,并通过属性的get和set访问器来对字段进行读写操作,从而保证类内部数据安全。读写属性即同时有get、set访问器的属性,具体语法格式如下:,属性的应用,属性的分类,1、读写属性,public 数据类型 属性名 get/返回参数值 set/设置隐式参数value给字段赋值,类的属性,类的属性使用属性声明:class 类名 修饰符 数据类型 属性名 get;set;,课堂练习,定义日期类型Date。要求有以下面成员:年(myear)、月(mmonth)、日(mday)变量(私有),定义 年,月,日的属性,一个实现
11、年、月、日单独的输入void input(int year,int month,int day),实现打印方法成员,该方法要按照“XXXX年XX月XX日”格式输出日期。主函数 需要通过属性赋值的方式实现 对 私有数据成员的访问。,注意:属性 一般对应一个私有数据成员 get 方法中的 return返回一个值,4.2 类与对象,4.2.4 属性,只读属性即只有get访问器,具体语法格式如下:,2、只读属性,public 数据类型 属性名 get/返回参数值,只写属性即只有set访问器,具体语法格式如下:,3、只写属性,public 数据类型 属性名 set/设置隐式参数value给字段赋值,输入
12、一个正整数repeat(0repeat10),做repeat次下列运算:输入一个正整数n,再输入n个整数,将它们从大到小排序后输出。输入3(repeat=3)4 5 1 7 63 1 2 35 5 4 3 2 1 输出7 6 5 1 3 2 15 4 3 2 1,定义一个矩形类,有长、宽两个属性,有成员函数计算矩形的面积。要求从键盘中输入矩形的长和宽,输出矩形的长和宽及面积,4.3 类成员-方法,方法的使用,方法由一个或多个程序语句组成,通过引用方法名能够执行方法。要使用方法,您需要:定义方法调用方法,方法的使用,方法的定义格式,返回值类型,方法的使用,方法的定义格式,返回值类型,return
13、 返回值/有返回值加上return,方法的使用,方法的定义格式,返回值类型,参数类型 参数名1,参数类型 参数名2,.如果没有参数()括号不能省略,方法的使用,调用方法定义方法后,您可以通过调用它来执行。您可以通过方法名调用它。方法名后跟圆括号,即使方法调用没有参数,圆括号还是要保留,如以下示例所示:MethodName();,以下是调用方法的示例:using System;class Calculator public int AddNumber(int num1,int num2)int result;result=num1+num2;return result;static void M
14、ain(string args)Calculator cal=new Calculator();/The following statement is calling the/AddNumber method and passing 10 and/20 as the parameter list.int value=cal.AddNumber(10,20);Console.WriteLine(The result is 0,value);Console.ReadLine();,/方法的定义,/方法体,/方法返回值,与返回类型对应,/创建对象,/调用对象的方法,返回值存在value变量中,方法的
15、使用,带参数方法-参数的传递机制值(传入数据)引用(传入传出数据)输出(传出输出),值方式传递(值传递的形参在内存中创建一个副本),Class Calculator void AddOne(int var)var+;public static void Main()Calculator obj=new Calculator();int number=6;obj.AddOne(number);Console.WriteLine(number);,Number6,AddOne:var6调用前,AddOne:var7调用后,Main()函数,Addone()函数,引用方式传递(形参和实参共用实参变量
16、,形参实际上是实参的别名),class Calculatorvoid CalculateSum(ref int num1,ref int num2)num2=num1+num2;Static void Main()int val1=10;int val2=2;CalculateSum(ref val1,ref val2);Console.WriteLine(“0,1”,val1,val2);,数据类型前加上ref 表示采用引用方式传递,调用时加上ref,引用方式传递(形参和实参共用实参变量,形参实际上是实参的别名),class Calculatorvoid CalculateSum(ref i
17、nt num1,ref int num2)num2=num1+num2;Static void Main()int val1=10;int val2=2;CalculateSum(ref val1,ref val2);Console.WriteLine(“0,1”,val1,val2);,Main(),10,2,var1,var2,引用方式传递(形参和实参共用实参变量,形参实际上是实参的别名),class Calculatorvoid CalculateSum(ref int num1,ref int num2)num2=num1+num2;Static void Main()int val1
18、=10;int val2=2;Calculator tt=new Calculator();tt.CalculateSum(ref val1,ref val2);Console.WriteLine(“0,1”,val1,val2);,Main(),10,2,var1,var2,CalculateSum完成,num1,num2,12,输出方式,输出参数用于将值从方法中传递出来,void CalculateSum(ref int num1,ref int num2,out int result)result=num1+num2;void Accept()int val1=10;int val2=2
19、;int recieveVal;CalculateSum(ref val1,ref val2,out recieveVal);,引用类型的参数,引用类型的参数 按引用传递,不需要使用ref和out关键字(string除外),课堂练习,编写程序,类中的方法使用引用方式实现数据的交换,方法的返回值为这两个数的和,通过输出参数形式返回两个数的积。并把结果输出,当声明方法中的参数不确定时,可以使用param数组,public int Adding_ArrayElement(params int List)int Total=0;foreach(int I in List)Total+=I;return
20、 Total;,注意:在参数列表中,param数组为最后一个参数,课堂练习,编写程序,类中的方法swap使用引用方式实现两个数据的交换,方法的返回值为这两个数的和,通过输出参数形式返回两个数的积。提示swap 需要 3个参数,多学一招,常用数学方法.NET Framework中提供许多常用的方法,其中数学方法在程序开发过程中是经常会用到的,数学方法定义在Math类中,下面列出了Math类部分常用的数学方法,具体如表3-1所示。,多学一招,常用数学方法 通过一个具体的案例来演示上述方法的使用,如例3-2所示。,方法的重载,在显实生活中,手机响铃,是手机的一个动作,但手机响铃可以发出不同的声音,也
21、就是说手机响铃可以有不同的形态,这就是多态静态多态:动态多态:,方法重载,操作符重载,运行时函数的不同形态,后期绑定,方法的重载,如何在计算机中表示这种不同形态呢?,using System;namespace Calmaxclass CalMaxpublic int Max(int num1,int num2)return num1num2?num1:num2;public float Max(float num1,float num2)/参数类型不同return num1num2?num1:num2;class MaxCalstatic int Main(string args1)CalM
22、ax cal=new CalMax();Console.WriteLine(0,cal.Max(5.4f,9.7f);Console.WriteLine(0,cal.Max(5,9);Console.ReadLine();return 0;,在上例中,类中有多个同名的函数,但函数的签名不同:参数的个数参数的类型参数顺序不同,称作:方法的重载,也就是类的静态多态,仅返回值不同的同名方法不是方法重载,是不允许的,y,public int Max(int num1,int num2)return num1num2?num1:num2;public float Max(float num1,float
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 基础 ppt 课件
链接地址:https://www.31ppt.com/p-2104797.html