第六章 面向对象程序设计基础.ppt
《第六章 面向对象程序设计基础.ppt》由会员分享,可在线阅读,更多相关《第六章 面向对象程序设计基础.ppt(70页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第六章 面向对象程序设计基础,6.1 类和对象的基本特性 6.2 类的建立和实例化 6.3 继承和派生 6.4 综合应用6.5 自主学习重载与重写,本章内容,面向对象,分析解决问题所需步骤 用函数实现步骤 使用时按顺序依次调用函数例如:汽车启动;汽车到站;,将现实世界的事物抽象成对象,现实世界中的关系抽象成类、继承,帮助人们实现对现实世界的抽象与数字建模。 用“对象”的思想方法来分析和设计程序。,什么是对象,生活中的“对象”就是东西,任何东西都可以看成是对象把一个东西看成对象,可以孤立地观察它的性质、行为,进而研究它与其他对象的关系。,对象,颜色,型号,出厂日期,开机,切换频道,关机,在程序中
2、使用对象的概念程序看成是很多对象相互作用的结果。,对象,处理文件,播放声音,显示文件,类是对象的“蓝图”。类规定了对象的特征。对象是根据“蓝图”生产出的产品。从同一个类产生出的对象具有相同的结构和规格,却在某些特性上有其不同之处。总之,类是现实生活中一类具有共同特征的事物的抽象。类是对象的模板,对象是类的实例。,类,月饼模型(类) 月饼(对象),实例化,遥控器控制电视,只需按下按钮就能切换频道不需要知道电视如何接收信号和搜索频道使用者把电视看成一个对象,如同一个“黑盒子”,只需要知道如何操作它即可。,面向对象的特点封装,笔记本电脑的封装性: 封装了CPU、内存、硬盘、网卡、声卡等 提供了USB
3、接口、网卡接口、音频接口等面向对象程序设计的封装性: 将数据、属性、事件和方法集合在一个类中。,数据属性事件方法,类的定义 对象的声明 TextBox textBox1;对象实例化 textBox1 = new TextBox();对象属性设置 调用方法 textBox1.focus();响应事件,如:“TextBox”类,Class TextBox ,textBox1.Name = textBox1;textBox1.Text = 我是No.1;,void textBox1_KeyPress(),电视机不断发展黑白彩色高清但声音、图像的功能一直延续下来后一代“继承”前一代的功能并有所发展旧电
4、视派生出新电视新电视继承了旧电视,面向对象的特点继承,派生,派生,继承,继承,基类(父类)派生类(子类),继承性示例:,继承 派生,CSCircle: 继承了CSPoint所有成员 新增了数据成员r 方法Set,旧款录像机与旧款电视机相连旧款录像机也可与新款电视机相连电视的音频/视频输入输出接口基本不变对象的对外接口稳定对象在各自发展的同时,还可以进行交互。,(续),我的对外“接口”稳定,同一操作作用于不同的类的对象,将产生不同的执行结果,即不同类的对象收到相同的消息时,得到不同的结果。,面向对象的特点多态,喵,汪,多态(2),开始讲课,开始听课,class 类名 :基类数据成员的说明属性的定
5、义方法的定义事件的定义,6.2类的定义,默认(省略)时,为internal,只能在当前项目中使用;若为public则可在其他项目中使用,放在命名空间(顶级类)创建类文件(顶级类),在哪里定义类?(1),在类Program中定义(嵌套类),在哪里定义类?(2),数据成员(字段):在类中存储信息的成员,“轿车”类的数据成员,颜色,排量,出厂日期,类型,字段名称,class Car Private string color; Private float displacement; Private Datetime releasedate;,访问修饰符,成员声明的可选部分指明程序的其他部分如何访问成员
6、,成员的访问修饰符,手机,公用电话,设计“方法”用于表达对象的动作。,“轿车”类的方法,动作:行驶,Class Carpublic void Run()Console.WriteLine(“Running now.”);,访问修饰符,返回值类型,方法名,形式参数列表,方法实例1:mymove()方法实例2:printa(),6.2.2 方法,访问修饰符 返回值类型 方法名(形式参数列表) 方法体 ,返回结果的数据类型,调用方法所需的参数及每个参数的数据类型,无返回值,返回值类型为void,可省略return语句;有返回值,返回值类型不为void,方法中必须有return语句,方法体中使用ret
7、urn语句返回函数值:return 表达式; 或 return(表达式); 或 return;/可在无返回值时使用,参数与返回值,方法,参数1,参数2,返回值,形参列表位于方法名后的括号内,指明调用该方法所需参数及每个参数的数据类型多个参数间用逗号分隔无参数时,括号不能省略public void Run(string road)Console.WriteLine(“我在”+road+”上行驶”);,形式参数(形参),调用指定对象的方法:对象.方法名(实在参数表)方法调用时:按照实在参数(实参)的顺序,依次将实参传递给对应的形参,二者的数据类型保持一致执行方法中的语句,在遇到return语句时,
8、或者执行完所有语句后,返回调用此方法的程序代码段,同时返回一个值。,方法的调用,Public double sin(double x) sx=x. ; return sx; static void Main(string args) y=sin(3.14/2); Console.Write (“结果为”+y); ,形参,实参,class Myclass public int Sum(int x, int y) return x + y; public float Avg(float input1, float input2) return (input1 + input2) / 2.0F; ,
9、例 方法的调用,static void Main(string args) Myclass myC = new Myclass(); int z = 8; Console.WriteLine(Sum:0 and 1 is 2, 4, z, myC.Sum(4, z); Console.WriteLine(Avg:0 and 1 is 2,4,z,myC .Avg (4,z);,形参,实参,例6.4 方法的调用,static void Main(string args) CSPoint1 p1 = new CSPoint1(); CSPoint1 p2 = new CSPoint1(); p1.
10、SetValue(0, 0); p2.SetValue(1, 1); double s = p1.Distance(p2); Console.WriteLine(s); Console.ReadKey(); ,class CSPoint1 private double x; private double y; public void SetValue(int a, int b) x = a; y = b; public double Distance(CSPoint1 p) double s = Math.Sqrt(x - p.x) * (x - p.x) + (y - p.y) * (x -
11、 p.y); return s; ,调用方法时(通过参数)将数据传递给被调用方法值形参:参数声明时无修饰符引用形参:用ref修饰符说明输出形参:用out修饰符说明形参数组:用params修饰符说明,参数传递,car1.Run(“S20高速”);,road,“S20高速”,public void Run(string road),无修饰符按值传递过程中,实参和形参各自占用不同的内存空间只把实参的值复制给对应的形参执行期间,形参的值改变对实参无任何影响例6.5,值形参,例6.5,class Test public static void swap(int x, int y) int temp; t
12、emp = x; x = y; y = temp; ,static void Main(string args) int k = 3; int l = 4; Test.swap(k, l); Console.WriteLine(k = 0,l = 1, k, l); Console.Read(); ,ref修饰符值传递时,实参与形参使用的是相同的内存单元在执行期间,若形参的值发生变化,实参的值也会发生相同的变化引用形参实质上是对应实参的别名,他们相当于同一个变量或对象当形参是引用形参时,定义和调用时都必须使用ref关键字。例6.6,引用形参,例6.6,class Test public sta
13、tic void swap(ref int x, ref int y) int temp; temp = x; x = y; y = temp; ,static void Main(string args) int k = 3; int l = 4; Test.swap(ref k, ref l); Console.WriteLine(k = 0,l = 1, k, l); Console.Read(); ,开始调用时:,3,k,x,4,l,y,4,k,x,3,l,y,结束调用时:,out修饰符主要用于将数据从被调用函数传递到调用函数。定义和调用时都必须使用out关键字。,输出形参,class
14、 Test public static void arith(int x, int y, out int sum, out int difference) sum = x + y; difference = x - y; ,static void Main(string args) int k = 3, l = 4; int m, n; Test.arith(k, l, out m, out n); Console.WriteLine(m = 0,n = 1, m, n); Console.Read();,m=7,n=-1,属性的定义格式访问修饰符同数据成员的5种修饰符根据get和set访问器
15、是否存在,属性分为:,访问修饰符 类型 属性名 getget访问器体 setset访问器体,读写属性:包含get和set访问器的属性只读属性:只有get访问器的属性只写属性:只有set访问器的属性,get访问器:定义属性的读操作!相当于一个具有返回值的无参数方法,需要有return语句返回属性值,set访问器:定义属性的写操作!相当于一个只有一个参数并且返回值为void类型的方法,学生类属性例6.9,class Carprivate string color1;private float displacement1; private Datetime releasedate;public st
16、ring Colorget return color1;set color1=value;public string Displacementget return displacement1;set displacement1 =value;,Value:表示对属性进行写操作时提供的参数car1. Color =“red”;时,value即“red”,属性和字段的区别,既然可以声明一个public字段以实现读写,为什么还要采用属性?public字段完全放开,任何人都可以对它进行读写而属性控制灵活,若只提供get方法则只支持读;只提供set方法则只支持写;都提供则支持读写。,属性与字段的区别,1
17、.属性比字段读写提供更多的控制,如Car类的releasedate字段,一旦出厂便已确定,我们希望它只读而不能修改。所以把releasedate字段设为private,而提供一个只读的ReleaseDate属性,class Carpublic DateTime ReleaseDateget return releasedate;,例如,希望为Car类提供一个Age(使用年份)属性,而且随着时间发展,这个属性会不断变化而更新。年份=当前日期-出厂日期提供Age属性:属性的读操作中包含了计算的车龄的操作。且车龄只读,不能人为设置。,续,2.属性拥有一些方法的特征,让它达到直接读写字段无法达到的效果
18、,public TimeSpan Ageget return(DateTime.today-ReleaseDate);,创建对象如Car car1 = new Car();,6.2.5 对象,类名 对象名 = new 类名(参数表);,Car car1;,Car1=new Car();,car1,构造函数的作用:对象初始化的专用函数 Font f1 = new Font(黑体, 20); Font f2 = new Font(黑体, 20,FontStyle.Bold);构造函数的特点:1)构造函数名:构造函数的名称与类名相同 ,并且不能指定函数类型(也不能使用void)2) 可以重载:可以定
19、义多个构造函数总要有不同的地方:或参数个数不同,或参数类型不同的3)构造函数调用:创建对象时系统自动调用,程序中不能直接调用。,新车出厂的时候,通过构造函数来初始化其颜色、排量、出厂日期。class Car public Car() /构造函数 color=“gray”;/设置新Car对象的颜色displacement=2.0;/设置排量Releasedate=DateTime.today;/设置出厂日期 ,构造函数不设返回值可以编写有参数的构造函数,让它根据参数来初始化类的字段构造函数在创建类的对象时,通过new来调用,构造函数(续),public Car() /无参数的构造函数 color
20、=“gray”;/设置新Car对象的颜色displacement=2.0;/设置排量Releasedate=DateTime.today;/设置出厂日期 public Car(string Color,float Diaplacement) /有参数的构造函数 color=Color;/设置新Car对象的颜色displacement= Diaplacement;/设置排量Releasedate=DateTime.today;/设置出厂日期 ,Car car1 = new Car(); /调用无参数的构造函数Car car2 = new Car(“red”,”2.4”) /调用有参数的构造函数,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第六 面向 对象 程序设计 基础
限制150内