《第二章 面向对象程序设计》由会员分享,可在线阅读,更多相关《第二章 面向对象程序设计(11页珍藏版)》请在金锄头文库上搜索。
1、1第二章第二章 面向对象程序设计(面向对象程序设计(I I)1 1、教学目的、教学目的: : (1)了解面向对象的基本思想; (2)掌握类、对象的基本概念; (3)了解面向对象的基本特征; (4)掌握类的定义、对象的访问方法及访问控制;对象的访问方法及访问控制;(5)掌握类的构造函数和析构函数、类的属性、类的静态成员。2 2、教学重难点:、教学重难点:(1)掌握类的定义、对象的访问方法及访问控制;对象的访问方法及访问控制;(2)掌握类的构造函数和析构函数、类的属性、类的静态成员;3 3、教学方法:讲授及练习相结合,结合多媒体广播软件演示、教学方法:讲授及练习相结合,结合多媒体广播软件演示4 4
2、、教学工具:计算机,网络,多媒体广播软件、教学工具:计算机,网络,多媒体广播软件5 5、教学学时:、教学学时:2 学时6 6、教学过程:、教学过程:6.16.1 引入引入 (约 5 分钟)复习旧课,引入新课面向对象是软件开发中的一种新思想,这种思想的引入,使我们的程序设 计更加符后现实。面向对象编程主要思想是将数据以及处理这些数据的相 应方法封装到类中,使用类创建的实例称为对象。类类型支持继承,派生 的类可以对基类进行扩展和特殊化。面向对象的重要目标就是创建可以让 不同开发者反复调用的模块,这些模块的设计易于修改、更新和扩展,通 过共享和可重用的特性减少了开发和维护的成本。 C#.NET 是一
3、种面向对象的程序设计语言,它支持面向对象程序设计的许多 新特性。整个 C#的类模型是建立在.NET 对象的基础上的,对象模型是基 础框架的一部分,而不再是编程语言的一部分,它解决了编程技巧带来的 问题。 6.2 教学内容教学内容2.1 面向对象的基本思想 (约 15 分钟)1对象的基本概念 2类 3面向对象的基本特征 (1)封装性2(2)继承性(inheritance) (3)多态性2.2 类与对象(约 65 分钟)2.2.1 类的定义(约 10 分钟)2.2.2 对象的访问方法及访问控制对象的访问方法及访问控制(约 15 分钟)(1)对象的访问方法 (2)成员的访问控制2.2.3 类的构造函
4、数和析构函数(约 15 分钟)(1)构造函数 (2)析构函数2.2.4 类的属性(约 10 分钟)2.2.5 类的静态成员(约 15 分钟)6.36.3 小结:小结: (约 5 分钟)(1)面向对象的基本思想; (2)类、对象的基本概念; (3)面向对象的基本特征; (4)类的定义 (5)对象的访问方法及访问控制; (6)掌握类的构造函数和析构函数、类的属性、类的静态成员。6.46.4 作业:作业:(1 1)调试教材上的实例)调试教材上的实例(2 2)阅读课件)阅读课件(3 3)完成书后的习题)完成书后的习题( (一一) )和(二):和(二):1-21-27 7、后记:后记:38 8、讲义:讲
5、义:第二章 面向对象程序设计 面向对象是软件开发中的一种新思想,这种思想的引入,使我们的程序设 计更加符后现实。面向对象编程主要思想是将数据以及处理这些数据的相 应方法封装到类中,使用类创建的实例称为对象。类类型支持继承,派生 的类可以对基类进行扩展和特殊化。面向对象的重要目标就是创建可以让 不同开发者反复调用的模块,这些模块的设计易于修改、更新和扩展,通 过共享和可重用的特性减少了开发和维护的成本。 C#.NET 是一种面向对象的程序设计语言,它支持面向对象程序设计的许多 新特性。整个 C#的类模型是建立在.NET 对象的基础上的,对象模型是基 础框架的一部分,而不再是编程语言的一部分,它解
6、决了编程技巧带来的 问题。 2.1 面向对象的基本思想 面向对象是一种新兴的程序设计方法(一种新的程序设计规范)。 基本思想是使用对象、类、继承、封装、消息等基本概念来进行程序设计; 从现实世界中客观存在的事物(即对象)出发来构造软件系统,并且在系 统构造中尽可能运用人类的自然思维方式。 1对象的基本概念 对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单 位。一个对象由一组属性和对这组属性进行操作的一组服务组成。 2类把众多的事物归纳、划分成一些类是人类在认识客观世界时经常采用的思 维方法。分类的原则是抽象。类是具有相同属性和服务的一组对象的集合, 它为属于该类的所有对象提供了
7、统一的抽象描述,其内部包括属性和服务 两个主要部分。 3面向对象的基本特征 (1)封装性 封装是一种信息隐蔽技术,用户只能看到对象封装界面上的信息,对象内 部对用户是隐藏的。封装的目的在于将对象的使用者和设计者分开,使用 者不必知道行为实现的细节,只需用设计者提供的消息来访问该对象。 (2)继承性(inheritance) 为了提高软件模块的可复用性和可扩充性,以便提高软件的开发效率,我们 总是希望能够利用前人或自己以前的开发成果,同时又希望在自己的开发 过程中能够有足够的灵活性,不拘泥于复用的模块。今天,任何面向对象 的程序设计语言都必须提供两个重要的特性:继承性(inheritance)
8、和多态性 (polymorphism)。 (3)多态性 所谓多态即一个名字可具有多种语义。在大多数面向对象的语言中,如果 类 P 是子类 S 的父类,则子类 S 的对象 s 可以用在父类 P 的对象 p 使用的 地方,这就意味着一个公共的消息集可以送到类 P 和类 S 对象上。当同样 的消息可以被送到一个父类的对象和其子类的对象上时,这被称作多态性 (polymophism) 。 2.2 类与对象4类和对象是面向对象的程序设计语言的核心和本质。类实际上定义了一种 崭新的数据类型。定义了类之后,就可以使用这种新的数据类型创建对象。 类是对象的模板,对象是类的实例。使用类的好处在于,它有利于程序的
9、 模块化设计和开发,可以隐藏内部的实现细节,并能增强程序代码的重用 性。 2.2.1 类的定义 (1)类的定义格式如下: class 类名 成员变量;成员方法; ; 例如:class A int x;/成员变量int f() /成员方法return x; 类的成员:成员变量(字段)和成员方法(函数) 成员方法(函数):一般的成员方法、构造函数、析构函数 类中还可以包含一种特殊的成员,称为属性,它既可看作是成员变量,也 可看作是成员方法。 (2)声明对象和创建对象的语法格式分别如下:类名 对象名; /声明对象 对象名 = new 类名(); /创建对象也可以在声明的同时创建对象:类名 对象名 =
10、 new 类名(); 利用类 A 来创建对象 a: A a; a = new A(); 上述代码等价于: A a = new A(); 2.2.2 对象的访问方法及访问控制对象的访问方法及访问控制 (1)对象的访问方法 对象被声明并创建以后就可以访问对象中提供的成员了,访问对象成员的 方法是通过使用”.”运算符来实现的。 访问格式如下:对象名.对象成员;5例如: class B public int x; public int f() return x+100; 利用类 B 来声明并创建对象 b: B b = new B(); 访问 b 中的成员: b.x = 100; int y = b.f
11、(); Console.WriteLine(“y = 0“,y); 结果输出: y = 200 2.2.2 对象的访问方法及访问控制 (2)成员的访问控制 类的成员分类 常量:表示与该类相关联的常量值。 字段:该类的变量。 类型:用于表示一些类型,它们是该类的局部类型。 方法:用于实现可由该类执行的计算和操作。 属性:用于定义一些命名特性,通过它来读取和写入相关的特性。 事件:用于定义可由该类生成的通知。 索引器:使该类的实例可按与数组相同的(语法)方式进行索引。 运算符:用于定义表达式运算符,通过它对该类的实例进行运算。 实例构造函数:用于规定在初始化该类的实例时需要做些什么。 析构函数:用
12、于规定在永久地放弃该类的一个实例之前需要做些什么。 静态构造函数:用于规定在初始化该类自身时需要做些什么。 访问控制是通过在类成员前冠以修饰符来实现: 访问控制修饰符修饰符说明new仅允许在嵌套类定义时使用,以表明类中隐藏了由基类中继承而来 的、与基类中同名的成员public用这种修饰符修饰的成员称为公有成员。公有成员允许该类和其他 类中的所有成员访问。protected用这种修饰符修饰的成员称为保护成员。保护成员可以被该类和其 派生类中的成员访问,而其他类中的成员则不允许访问。internal只有其所在类才能访问private用这种修饰符修饰的成员称为私有成员。私有成员只能被该类中的 其他成
13、员访问,其他类(包括派生类)中的成员是不允许直接访问6的。C#中 private 是默认的修饰符。abstract抽象类,不允许建立类的实例sealed密封类,不允许被继承protected internal用该修饰符修饰的成员只能被程序集内的类的成员及这些类的派生 类中的成员所访问。成员访问控制的例子: /首先定义类 A,然后定义类 B,它继承类 A class A /类 A private int x; /私有成员protected int y; /保护成员public int z; /公有成员void f() x = 1; /正确,允许访问本类中的私有成员y = 2; /正确,允许访问本
14、类中的保护成员z = 3; /正确,允许访问本类中的公有成员 class B : A /类 B,它继承类 A void g() base.x = 100; /错误,不允许访问基类中的私有成员base.y = 200; /正确,允许访问基类中的保护成员 base.z = 300; /正确,允许访问基类中的公有成员 /在 Main 函数中实例化类 A,并调用相关成员 static void Main(string args) A a = new A();a.x = 1000; /错误,不允许访问其他类对象中的私有成员a.y = 2000; /错误,不允许访问其他类对象中的保护成员a.z = 300
15、0; /正确,允许访问其他类对象中的公有成员 【例 1】 在一个控制台应用程序中编写一个学生类 student,该类包含学号 (no) 、姓名(name)和成绩(grade)等成员变量,并提供对这些变量成 员进行赋值和读取这些成员变量的成员方法。class student/成员变量int no;string name;double grade;7/成员方法public int getNo() return no; public string getName() return name; public double getGrade() return grade; public void setNo(int no) this.no = no; public void setName(string name) this.name = name; public void setGrade(double grade) this.grade = grade; private 是默认的修饰符,故这些成员变量实际上是私有成员。 static void Main(string args)stu