学习情景面向对象程序设计精.ppt
《学习情景面向对象程序设计精.ppt》由会员分享,可在线阅读,更多相关《学习情景面向对象程序设计精.ppt(88页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、学习情景面向对象程学习情景面向对象程序设计序设计第1页,本讲稿共88页面向对象面向对象的软件开发技术是当今计算机技术发展的重要成果和趋势之一。C#是完全面向对象的程序设计语言是完全面向对象的程序设计语言。类和对象类和对象是面向对象程序设计中的重要概念。封装性、继承性和多态性封装性、继承性和多态性是面向对象的特点。本讲主要介绍面向对象程序设计中的基本概念和基于C#的面向对象程序设计的方法。2022/10/112C#程序设计实用教程第2页,本讲稿共88页 7.1 对象和类对象和类对象对象对象是人们要进行研究的任何事物对象是人们要进行研究的任何事物颜色:灰色排量:3.0 刹车产地:德国行驶名字:保时
2、捷行为状态状态颜色:红色排量:4.0刹车产地:意大利行驶名字:法拉利行为状态 回顾回顾现实生活中的现实生活中的对象,描述汽车的特征和行为对象,描述汽车的特征和行为 有各自不同的有各自不同的状态状态第3页,本讲稿共88页 7.1类和对象类和对象小汽车小汽车颜色:灰色颜色:灰色排量:排量:3.0 刹车刹车产地:德国产地:德国行驶行驶名字:保时捷名字:保时捷行为行为状态状态类的实例化,是类的实例化,是由类具体化对象由类具体化对象类类排量排量 颜色颜色 行驶行驶 刹车刹车 归纳一组相似对象归纳一组相似对象的共性的共性对象对象属性属性方法方法类描述一组相似对象的共性类描述一组相似对象的共性产地产地 名字
3、名字 第4页,本讲稿共88页7.1类和对象类和对象-类类属性型号价格里程行为起动停车行驶属性车轮数量档的数量行为加速换档刹车属性名称颜色品种行为摇尾巴吃东西犬吠第5页,本讲稿共88页7.1 类和对象类和对象类:相对对象而言,类似于蓝图包含方法和数据对象:是类的实例使用关键字new创建对象具有行为对象对象厨房厨房起居室起居室浴室浴室书房书房饭厅饭厅储藏室储藏室门廊门廊类类第6页,本讲稿共88页7.1 类和对象类和对象 数据成员成成员员方方法法对象对象:桑塔纳桑塔纳对象特征对象特征:黑色黑色 2000 20002.4T 2.4T 上海大众上海大众动态特征动态特征:载人载人抽象抽象抽象抽象实例化实例
4、化实例化实例化类类:汽车汽车属性属性:颜色颜色 型号型号 马力马力 生产厂家生产厂家服务服务:运输运输数据值执执行行的的操操作作类与对象的关系示例类与对象的关系示例第7页,本讲稿共88页7.1 类和对象类和对象类:是一种抽象的数据类型,它是所有具有一定共性的对象的抽象。本质上可以认为是对对象的描述,是创建对象的“模板”。类的某一个对象则被称为是类的一个实例,是类的实例化结果。对象类实例化抽象第8页,本讲稿共88页课堂讨论课堂讨论先有对象还是先有类?应该先定义类才可以从类的定义声明对象应该先定义类才可以从类的定义声明对象。第9页,本讲稿共88页7.2 面向对象语言的特点面向对象语言的特点设计规范
5、设计规范面向对象面向对象封装封装继承继承多态多态第10页,本讲稿共88页7.2 面向对象语言的特点面向对象语言的特点-封装封装封装,就是对数据的隐藏,封装实现了把数据和操作这些数据的代码(即离散的部件)包装成一个对象,而将数据和操作细节(方法)隐藏起来。私有数据私有数据 方法方法 方法方法数据数据对象对象A对象对象B公有数据公有数据产品封装产品封装模块化模块化 信息隐信息隐藏藏 第11页,本讲稿共88页7.2 面向对象语言的特点面向对象语言的特点-继承继承继承:指面向对象程序的两个类之间的一种关系。被继承的类叫被继承的类叫父类父类、超类超类或或基类基类(SuperClass、BaseClass
6、)继承了父类所有属性和方法的类叫继承了父类所有属性和方法的类叫子类子类(SubClass).C#只支持单继承。只支持单继承。继承实现了软件的重用。继承实现了软件的重用。第12页,本讲稿共88页 在面向对象技术中,山地自行车、赛车以及串座在面向对象技术中,山地自行车、赛车以及串座双人自行车都是自行车类的子类,这个父子关系可以双人自行车都是自行车类的子类,这个父子关系可以如图所示:如图所示:自行车自行车(父类父类)双人自行车双人自行车子类子类山地自行车山地自行车赛车赛车7.2 面向对象语言的特点面向对象语言的特点-继承继承第13页,本讲稿共88页7.2 面向对象语言的特点面向对象语言的特点-多态多
7、态 多态是指一个程序中存在着同名的不同方法。在面向对象的程序中多态表现为,可以利用重载在同一类中定义多个同名的不同方法实现多态,也可以通过子类对父类方法的覆盖实现多态。将军对士兵们命令:出发!将军对士兵们命令:出发!步兵步行,骑兵骑马步兵步行,骑兵骑马将军不必命令:步兵步行出发,骑兵骑马出发将军不必命令:步兵步行出发,骑兵骑马出发第14页,本讲稿共88页7.3 类的定义类的定义格式为:格式为:类修饰符 class 类名类名:基类类名 类体类体 关键字关键字合法的标识符合法的标识符属性属性(变量变量)方法方法第15页,本讲稿共88页例例7-1:定义一个车辆类(有两个变量,一个方法):定义一个车辆
8、类(有两个变量,一个方法)class Vehicle int Passengers;/乘客数乘客数 int Gas;/所耗燃料所耗燃料 void Run()/模拟汽车运行模拟汽车运行 if(Gas0)Gas-=10;else Console.Write(“没有油了,不能再跑了没有油了,不能再跑了”);成员变量成员变量(字段)(字段)成员方法成员方法第16页,本讲稿共88页7.3类的定义在哪儿书写类的代码?在哪儿书写类的代码?与你的源代码文件在一块,同一个命名空间与你的源代码文件在一块,同一个命名空间(namespace)下。下。C#允许在一个类中嵌套另一个类的定义。允许在一个类中嵌套另一个类的
9、定义。建议建议将类书写在另外一个将类书写在另外一个.cs文件中。文件中。第17页,本讲稿共88页C#中类的定义方法类定义的示例7-3:class 人人 /声明字段声明字段 public string 姓名姓名;public string 性别性别;public string 年龄年龄;/声明方法声明方法 public void 吃饭吃饭(string 食物食物)Console.Write(姓名姓名+“正在吃:正在吃:”+食物食物);第18页,本讲稿共88页例如例如7_2:public class Cuboid /类名为类名为Cuboid /声明字段声明字段(定义成员变量定义成员变量)priva
10、te double length;private double width;private double high;public double Cubage()return length*width*high7.3 类的定义类的定义声明字声明字段段访问控制符访问控制符类的方法类的方法第19页,本讲稿共88页1.声明字段声明字段(成员变量成员变量)与普通变量的声明格式相同。与普通变量的声明格式相同。在类体中,字段声明的在类体中,字段声明的位置没有特殊要求,习惯上将字段声明在类体中的最前面,位置没有特殊要求,习惯上将字段声明在类体中的最前面,以便于阅读。以便于阅读。7.3 类的定义类的定义第20页
11、,本讲稿共88页课本实例课本实例5-2class Student /字段声明 public string strName;private int nAge;/方法 void pri()Console.Write(姓名为:0,年龄为1,strName,nAge);第21页,本讲稿共88页7.4 创建类的对象创建类的对象在C#中,我们使用new运算符来创建类的对象。定义VehicleVehicle类的的对象象 Vehicle vc=new Vehicle();定定义CuboidCuboid类的的对象象Cuboid cu=new Cuboid();类名类名 对象名对象名=new 类名类名();实例化
12、对象实例化对象 实例化对象实例化对象 第22页,本讲稿共88页引用对象成员变量的语法形式为:引用对象成员变量的语法形式为:对象名对象名.成员变量名成员变量名(成员方法成员方法);例如:例如:cu.length=2;cu.width=3;cu.high=5;cu.Cubage();访问对象成员访问对象成员 第23页,本讲稿共88页class Vehicle int Passengers;/乘客数乘客数 int Gas;/所耗燃料所耗燃料 void Run()/模拟汽车运行模拟汽车运行 if(Gas0)Gas-=10;else Console.Write(“没有油了,不能再跑了没有油了,不能再跑了
13、”);Vehiclevc=newVehicle();vc.Passengers=4;vc.Gas=100;vc.Run();为为7-1创建对象创建对象第24页,本讲稿共88页为为7-2创建对象创建对象例如例如7_2:public class Cuboid /类名为类名为Cuboid /声明字段声明字段(定义成员变量定义成员变量)double length;public double width;private double high;public double Cubage()return length*width*highCuboidcu=newCuboidcu.length=2;cu.wi
14、dth=3;cu.high=5;cu.Cubage();第25页,本讲稿共88页课本实例课本实例5-2,创建对象创建对象class Student /字段 public string strName;public int nAge;public void PintInfo()Console.Write(姓名为:0的学生年龄为:1,strName,nAge);class test static void Main(string args)Student stu=new Student();stu.strName=张三;stu.nAge=19;stu.PintInfo();第26页,本讲稿共88页
15、创建7-3对象类和对象的例子:人人姓名性别年龄吃饭()王秃子王秃子:人人王秃子男20吃饭()人 王秃子 =new 人();王秃子.姓名 =“王秃子“;王秃子.性别 =“男”;王秃子.年龄 =20;王秃子.吃饭(“红烧肉”);第27页,本讲稿共88页 公有成员和私有成员公有成员和私有成员class student public string name;/姓名姓名 private int age;/年龄年龄 private string idNumber;/身份证号身份证号static void Main(string args)student myStudent=new student();my
16、Student.name=张三张三;myStudent.age=20;私有成员私有成员 公有成员公有成员 实例化一个对象实例化一个对象 可以访问可以访问 无法访问编译错误无法访问编译错误第28页,本讲稿共88页表表7.1 7.1 类访问修饰符类访问修饰符访问修饰符访问修饰符意意 义义publicpublic(公有)(公有)类可以在其他名字空间访问类可以在其他名字空间访问internalinternal(内部)(内部)类类只只能能为为所所在在名名字字空空间间访访问问(默默认认此此)(如果引用类库,则不能访问如果引用类库,则不能访问)表表7.27.2成员访问修饰符成员访问修饰符访问修饰符访问修饰符
17、意意 义义publicpublic(公有)(公有)访问不受限制访问不受限制protectedprotected(受保护)(受保护)访问限于所在类和所在类的派生类访问限于所在类和所在类的派生类internalinternal(内部)(内部)访访问问限限于于所所在在名名字字空空间间内内(如如果果引引用用类类库库,则不能访问则不能访问)private(私有)(私有)访问限于访问限于所在类所在类。7.3类的定义第29页,本讲稿共88页公有成员和私有成员公有成员和私有成员public(公有级别)定义为公有访问级别的类的成员能够被外界的任何对象访问,没有任何限制。class Person public s
18、tring Name;/.class Program public static void Main(string args)Person myself=new Person();myself.Name=“Jiawei”;第30页,本讲稿共88页private(私有级别)定义为私有访问级别的类的成员只能被类的成员所访问,而不能被其它对象访问。class Person private string Name;/.class Program public static void Main(string args)Person myself=new Person();/!myself.Name=“J
19、iawei”;公有成员和私有成员公有成员和私有成员第31页,本讲稿共88页private(私有级别)正确使用方法class Person private string _name;public void SetName(string name)_name=name;class Program public static void Main(string args)Person myself=new Person();myself.SetName(“Jiawei”);公有成员和私有成员公有成员和私有成员第32页,本讲稿共88页课本实例课本实例5-3/学生类 /class Student /字段
20、public string strName;private int nAge;/方法 public void SetAge(int _nAge)this.nAge=_nAge;public int GetAge()return this.nAge;class UseStudent static void Main(string args)Student s=new Student();s.SetAge(10);Console.WriteLine(s.GetAge();第33页,本讲稿共88页7.4 类和类的成员类和类的成员属性属性classStudentprivatestaticstrings
21、trName;privatestaticintnAge;public void SetAge(int _nAge)this.nAge=_nAge;public int GetAge()return this.nAge;方法SetAge(Value)和GetAge()分别读取和写入学生Age Students;s.SetAge(20);intStuAge=s.GetAge()每次都调用GetId()和SetId()方法会很繁琐属性第34页,本讲稿共88页7.4 类和类的成员类和类的成员属性属性classStudentpublic string strName;private int nAge;p
22、ublicstringAgegetreturnnAge;setnAge=value;读取ID时调用将值赋给ID时调用第35页,本讲稿共88页7.4 类和类的成员类和类的成员属性属性访问修饰符数据类型属性名get;set;读/写属性可以赋值和检索值第36页,本讲稿共88页7.4 类和类的成员类和类的成员属性属性访问修饰符数据类型属性名get;只读属性只能检索值第37页,本讲稿共88页7.4 类和类的成员类和类的成员属性属性访问修饰符数据类型属性名set;只写属性只能赋值第38页,本讲稿共88页7.4 类和类的成员类和类的成员属性属性属性是属性是“聪明聪明”的字段,的字段,“特殊特殊”的方法的方法
23、定义属性类似于定义一个方法,但使用属性时如同定义属性类似于定义一个方法,但使用属性时如同使用一个字段使用一个字段class Cat private string name;private int age;static void Main()Cat cat1=new Cat();cat1.age=-13;/错误错误第39页,本讲稿共88页属性的语法格式为:属性的语法格式为:访问修饰符访问修饰符 属性名属性名 get /读访问器读访问器 /执行体执行体 return;/执行体可任写,但须有执行体可任写,但须有return 语句。语句。set /写访问器写访问器 /执行体执行体 =value;/执行
24、体可任写,但须有执行体可任写,但须有value值给某字段语句。值给某字段语句。7.4 类和类的成员类和类的成员属性属性第40页,本讲稿共88页7.4 类和类的成员类和类的成员属性属性示例:public class Cat private int age;public int Age get return age;set if(value=20)报告出错报告出错 else age=value;第41页,本讲稿共88页7.4 类和类的成员类和类的成员属性属性示例con6_2:Cat cat1=new Cat();cat1.Age=1;/使用使用Age属性的属性的set访问器访问器int n=Cat
25、.Age;/使用使用Age属性的属性的get访问器访问器cat1.Age=100;/收到错误消息收到错误消息第42页,本讲稿共88页例如例如7_2(添加属性定义添加属性定义):public class Cuboid /类名为类名为Cuboid /声明字段声明字段(定义成员变量定义成员变量)private double length;private double width;private double high;/声明属性声明属性 public double Length get return length;set length=value;public double Width get re
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学习 情景 面向 对象 程序设计
限制150内