类与对象(1) 理论讲义

上传人:woxinch****an2018 文档编号:57067747 上传时间:2018-10-18 格式:PPT 页数:65 大小:1.49MB
返回 下载 相关 举报
类与对象(1) 理论讲义_第1页
第1页 / 共65页
类与对象(1) 理论讲义_第2页
第2页 / 共65页
类与对象(1) 理论讲义_第3页
第3页 / 共65页
类与对象(1) 理论讲义_第4页
第4页 / 共65页
类与对象(1) 理论讲义_第5页
第5页 / 共65页
点击查看更多>>
资源描述

《类与对象(1) 理论讲义》由会员分享,可在线阅读,更多相关《类与对象(1) 理论讲义(65页珍藏版)》请在金锄头文库上搜索。

1、4 类和对象,2,第4课 类与对象,本课主要介绍面向对象编程的基础知识,主要介绍: 定义类 声明方法 使用构造函数 在本课,我们先通过两个趣味小程序来让同学了解面向对象编程的两个重要特性(对象与事件),然后再介绍如何去定义类和对象。,3,4.1 趣味示例,在介绍新课之前,先介绍2个趣味示例,移动字幕,会跑的按钮,目的: 定时器Timer控件的使用 了解对象的使用,目的: 事件编程 了解对象的使用 随机数,4,4.4.1 移动的字幕,通过本示例,说明: 定时器控件(Timer)的使用 Point对象的使用,示例代码位于“CSharp示例第4课MovingString”,5,4.1.1.1 界面设

2、计,标签lblTitle,恰当设置Text、Font、BackColor、ForoColor、AutoSize等属性。,按钮btnPlayStop,恰当设置Title、Anchor等属性。,定时器控件Timer,主要属性:,是否允许计时,允许计时时,计时时间到,引发Tick事件,计时单位(毫秒),6,4.1.1.2 按钮变身,点击Play,开始出现动画,按钮变为Stop,点击Stop,动画停止,按钮变为Play,7,4.1.1.2 按钮变身,private void btnPLayStop_Click(object sender, EventArgs e) / 点击Play时,允许计时,按钮变

3、为Stopif (btnPLayStop.Text = “Play“)btnPLayStop.Text = “Stop“;timer1.Enabled = true;/ 点击Stop时,停止计划,按钮变为PlayelsebtnPLayStop.Text = “Play“;timer1.Enabled = false; ,8,4.1.1.3 标签的移动,标签的位置(Location属性),这样移动可以吗? lblTitle.Location.X-;,Location属性是什么类型的? lblTitle.Location.X-;,由此可知,Location属性是Point类的对象。对象有对象的用法

4、。,9,如何使用对象?,要使标签定位到一个新的点(Point),首先必要生成一个Point类的对象。,如何定义对象?,与定义变量类似,如定义一个Point类的对象newPoint Point newPoint;,如何给对象赋初值?,C#语言称为对象的实例化,需要用new运算符。 Point newPoint new Point(10,10);,接下来使用下列语句就可以将标签定位到指定点了: lblTitle.Location = newPoint;,严格来说,Point类型是结构(struct)类型,不属于类(class)类型。,10,移动标签,什么时候移动?,定时器控件计时时间到的时候,标签

5、往左移动一格 代码写在Timer1控件的Tick事件里。,怎样移动?,标签的x坐标减1 如果 移出屏幕最左边标签的x坐标设为窗体的最右边,11,移动标签,private void timer1_Tick(object sender, EventArgs e) / 取标题标签的x坐标和y坐标int x = lblTitle.Location.X - 1;int y = lblTitle.Location.Y;/ 如果移出左边界,则从右边出现if (x (0 - lblTitle.Width)x = this.Width;/ 标题的坐标往前移一格Point newPoint = new Point

6、(x, y);lblTitle.Location = newPoint; ;,12,4.1.2、会跑的按钮,通过本示例,说明: 编写鼠标事件 随机数的使用 Point类的使用,示例代码位于“CSharp示例第4课DoYouLoveMe”,13,4.1.2.1 界面设计,窗体Form1 恰当设置其Text、BackGroundImage、 BackGroundImageLayout等属性,图片自选,按钮btnYes, BtnNo 恰当设置其Text、Anchor属性,14,4.1.2.2 按钮跑起来,按钮什么时候跑?,鼠标刚进入Yes按钮的区域时。 btnYes按钮的Mouse_Enter事件,

7、按钮怎么跑?,产生两个随机数x和y, 这两个数要在窗体区间范围内 令btnYes按钮定位到新点(x, y),使用对象浏览器,了解Random类的使用,此处双击,15,4.1.2.2 按钮跑起来,private void btnYes_MouseEnter(object sender, EventArgs e) Random r = new Random();int x = r.Next(0, this.ClientRectangle.Width);int y = r.Next(0, this.ClientRectangle.Height);btnYes.Location = new Point

8、(x, y); ,16,4.2 面向对象编程技术,通过前面的实例,我们了解面向对象编程的两个特性: 使用对象 基于事件 面向对象是使用类(class)来封装数据(属性)和行为 (方法)的。 在面向过程的程序设计语言(如C语言),程序是面向动作的,程序的单位是函数。 在面向对象的C#语言里,编程是面向对象的,程序的单位是类(class),最终用类去实例化对象,并且函数是作为方法封闭在类里面的。 C程序主要精力在写函数,C#程序员主要精力在创建类。,17,4.3 类和对象,类是什么?,类是一种自定义的数据类型,这种数据类型有自己的数据和行为。,学生(Student),属性: 姓名(Name) 学号

9、(StudentID) 性别(Sex) 家庭住址(Addres),方法: 注册(Register) 选课(ElectiveCourse) 考试(Exam) 请假(Leave),18,4.3 类和对象,类是什么?,相对对象而言,类似于蓝图 包含数据和方法,对象: 是类的实例 使用关键字 new 创建 对象具有行为,19,课堂讨论,先有对象还是先有类?,应该先定义类才可以从类的定义声明对象。,20,4.3.1 定义类和创建对象,public class Student public string studentID;public string name;public int credit; ,定义

10、类,将类实例化为对象,Student st1 = new Student();,类成员的访问,st1.name = “张三“;,类的访问修饰符,默认为public,类名,首字母大写,关键字,用于定义类,字段的访问属性,默认为private,示例代码位于“CSharp示例第4课ClassExample”,字段名称,与变量命名类似,public时可考虑首字母大写,注意:括号必须要有,21,课堂讨论,要访问对象的成员应该先实例化对象吗?,需要先实例化对象。,22,4.3.1 定义类和创建对象,总结: 定义类对类名推荐使用Pascal命名规范:每个单词的首字母要大写。 创建并初始化对象,属性 访问修饰

11、符 class ; , = new ();,23,4.3.1 定义类和创建对象,类中可以有哪些成员?,对象的状态,对象的行为,字段,属性,方法,24,4.3.2 创建时间(MyTime)类,示例:用类实现 时间 的抽象数据类型,示例代码位于“CSharp示例第4课MyTime(Console)”,25,4.3.2 定义类和创建对象,在哪儿书写类的代码? 与你的源代码文件在一块,同一个命名空间(namespace)下。 C#允许在一个类中嵌套另一个类的定义。 建议将类书写在另外一个.cs文件中。,26,namespace LearningCSharp / / 类名:MyTimeClass/ 一个

12、时间类/ class MyTime/ / 小时,取值023/ public int Hour;/ / 分钟,取值059/ public int Minute;/ / 秒,取值059 / public int Second; ,与主程序在一个命名空间。 或者主程序中加上相应命名空间引用,完成后,给类和各字段加上XML注释 XML注释起什么用?,static void Main(string args) / 定义MyTime类的对象并实例化,并测试其中有关字段、属性和方法的使用MyTime time = new MyTime();time.Hour = 10; time.Minute = 23;t

13、ime.Second = 45;Console.WriteLine(“现在时间是:0:1:2“,time.Hour, time.Minute, time.Second);Console.ReadLine(); ,27,4.4 编写方法,前面示例设置时间比较麻烦,并且有可能出错。应该提供一个SetTime方法,可以由这个方法来设定时间。 SetTime(10,23,45); 大多数解决实际问题的程序的程序比我们前面介绍的程序要复杂得多。经验告诉我们,开发和维护大型程序的最好方式是将其分拆成许多小的、简单的程序段或模块,然后再由它们组成这个复杂的大程序。这种技术被称为“分治法”。 前面我们以经学习

14、了很多.NET框架类库所提供的方法。 如果可能,要尽可能使用.NET框架所提供的类和方法,而不要自己来写一些新类和方法。这样做可以缩短程序开发时间,并且可以避免编写新类和方法而引入错误。,28,已经学习过的方法,Console.WriteLine( ) Console.ReadLine( ) MessageBox.Show( ) Math.PI(这是Math类的一个字段,不是方法) Math.Pow( ) 还使用了以下类(Class) Point Random 如何.NET框架类没有提供你所需要的方法,那你就要自己写了。例如,需要求阶乘。 方法相当于C中的函数。,29,4.4 编写方法,编写方

15、法前的准备工作: 该方法主要是实现什么功能?根据功能起一个容易记的方法名。 实现该方法需要用户提供什么数据?确定方法的参数。 如计算n!,就需要给该方法传入一个整数n。 该方法是实现操作或是计算? 若是操作,方法的返回类型可以定为void 若是计算,需要确定需要给调用者返回一个什么类型的结果。如求n!需要给调用者返回一个长整型的阶乘值。 方法的最后一个执行语句应当是: (若是操作可以省略) return 表达式; 该方法可以给哪些人使用: public:所有人都可以使用 private:只能给本类使用 protected:可以给本类和派生类使用 方法要写在类(class)中。,30,4.4 编

16、写方法,方法定义的格式,方法修饰符 返回值类型 方法名(形参列表) 方法体 ,方法修饰符是可选的。它可以是public, private, protected 等之一。默认为private。 方法名要符合标识符的命名规则,采用Pascal命名法,即每个单词的首个字母大写。 参数的声明和变量一样,即 类型名 参数名 的格式,用于接收调用者传过来的数值,也相当于方法的局部变量。多个参数之间用逗号分隔。 方法体内一般要至少有一条return语句。,31,编写SetTime方法,编写SetTime( )方法。 确定方法名: SetTime 确定方法的参数: 小时hour,分钟minute,秒second,均为整型 确定方法的返回值类型: 无返回值,void 确定方法可以给谁使用: 供外部的用户使用,public 确定方法书写的位置: 类的内部,与字段平级,32,编写SetTime方法,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 法律文献 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号