《第7章 面向对象编程技术.docx》由会员分享,可在线阅读,更多相关《第7章 面向对象编程技术.docx(7页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第七章 面向对象编程技术7.1面向对象程序设计概述面向对象程序设计(Object-Oriented programming)OOP是一种系统化的程序设计方法,强调直接以问题域(即现在世界)中的事物为中心来考虑问题,并按照这些事物的本质特征把它们抽象为对象。在OOP方法中,将对象作为系统中的是基本的运行实体,对象中封装了描述该对象的特殊属性(数据)和行为方式(方法)。整个程序由各种不同的类型的对象组成,各对象既是一个独立的实体,又可通过一定的方式相互作用。7.1.1面向对象的基本概念对问题领域内人、物、事物等的抽象7.1.2面向对象编程的优点维护简单模块化是面向对象编程中的一个特征。实体被表示为
2、类和同一名字空间中具有相同功能的类,我们可以在名字空间中添加一个类而不会影响该名字空间的其他成员。可扩充性面向对象编程从本质上支持扩充性。如果有一个具有某种功能的类,就可以很快地扩充这个类,创建一个具有扩充的功能的类。代码重用由于功能是被封装在类中的,并且类是作为一个独立实体而存在的,提供一个类库就非常简单了。事实上,任何一个.NET Framework编程语言的程序员都可以使用.NET Framework类库,.NET Framework类库提供了很多的功能。更令人高兴的是,我们可以通过提供符合需求的类来扩充这些功能。7.1.2对象与类1、类在面向对象编程技术中,类是重点中的重点。简单地说,
3、类是一种提供一定功能的数据类型。在VB.NET中定义一个类要用到关键字Class。类是对所有具有共同特征的事物的抽象,是一个抽象的概念。类型可以视为一个具有类似特征与共同行为的对象的“模板”。这个模板通过定义属性来存储数据,通过定义操作来使用这些数据,类同时也定义了一套规则来允许或禁止访问它的属性和操作。2、对象面向对象技术是基于对象的概念的,一个面向对象的程序是第一个成分都是对象。程序是通过对象的建立及对象之间的联系来执行的。对象是客观世界中的任何事物或人们头脑中的各种概念在计算机程序中的抽象标识,或者说是现实世界中个体的数据抽象模型,是面向对象程序设计的基本元素,我们生活在对象的世界里。例
4、如:桌子,足球都是对象。每个对象都有两个共同的特点都有自己的状态,如球有自己的质地、大小和颜色都有自己的行为,如球可以滚动、停止或旋转对象的属性:对象的状态用数据来表示对象的方法:对像的行为用对象的代码来表示不同的对象会有不同的属性和方法,故对象是事物状态和行为的数据抽象。一个对象就像是一个黑盒子,表示对象状态的数据和对象行为的代码,都被封装在这个黑盒子内部,使用对象时,只需要知道它向外界提供的接口形式即可,不必知道其内部实现算法。对象是一个属性及其操作的封装体。作为计算机模拟真实世界的抽象,一个对象就是一个具体物理问题的抽象,一个具体的物理实体。每个对象都有属性和方法。3、对象的属性、事件和
5、方法1)对象的属性每个对象包含一组数据,用于描述对象的特征,这组描述对象特征的数据称谓对象的属性。它描述了对象的状态和特征可以是系统或用户定义的数据类型,也可以是一个抽象的数据类型。属性一般只能通过执行对象的操作(方法)来改变。对象属性值的集合称为对象的状态。2)对象的事件事件是对象能够识别的动作,也就是对象上所发生的事情。在VB.net中,事件是预先定义能够被对象所识别的一组动作,是导致执行某过程的通知,对于每个对象来说,事件的类型是固定的,用户不能改变,但对事件的具体响应是可以自行设计的。3)对象的方法对象的方法是指对象的行为方式,是指定义在对象属性上的一组操作方法的集合,它说明了对象的行
6、为和功能,即对象要执行的功能。方法又称操作或服务,也称为行为,是为响应消息而完成的算法,表示对象内部实现的细节。对象方法的集合体现了对象的行为能力。4、对象的四个特征1)抽象性是一个概念,指OOP语言具有把物理现实世界抽象化为计算机能够识别的一组功能或实体。例如,人在现实世界是存在的,计算机是不能够识别的。但可以通过抽象化,把人抽象为一些数据。比如人具有姓名、性别、身高、年龄等信息。通过将一个物理存在的人,经过抽象化为计算机可以一组数据,这就是抽象性。2) 封装性指将不同的功能和属性包装、捆绑在一个抽象的实体中,并隐藏其内部的复杂性。对象是通过类的实例实现的,因而对象有不同的类别。类与类之间会
7、存在衜各种各样的关系,例如,人包括中国人,美国人,英国人等,而中国人包括北京人,上海人等。因而人是父类,而中国人,美国人,英国人是子类,北京人,上海人又是中国人的子类。这种关系叫父子关系。3)继承性指在一个已存在一类实体的基础上可以派生出新的实体,这些实体可以父实体的功能和属性。4)多态性是指相同类型实体的不同派生实体的实例可以同一名称来指定,并共享特性。这样就使得对象可以适应外部的各种变化情况。例如,若干个“人”对象,他们都是由同一个类派生出来的,具有许多的方法,有的跑步,有的人睡觉,这时对象可以提供多种参数来实现,这就是多态性。7.2类的创建与使用7.2.1创建类格式如下:访问修饰符 Cl
8、ass 类名类体End Class其中,“类体”定义类的变量、属性、事件和方法,它们都称为类成员。类成员也有访问修饰符。 7.2.2属性创建创建属性使用Property语句,因为属性可以有返回值,也可以赋值,分别使用Get访问器和Set访问器,具体语法格式如下:|ReadOnly|WriteOnly Property 属性名(ByVal 参数列表)As 类型Get 语句块End GetSet(ByVal Value As 类型) 语句块End SetEnd Property7.2.3对象的定义和使用1)创建一个对象也称为创建一个类的实例,其语法格式如下: 对象名 As 类名对象名=New 类名
9、()也可以将二者合一,写成如下形式: 对象名 As New 类名()2)对象建立后,可以访问对象的成员(属性、方法等)。设置属性值和获取属性值的语法格式分别如下:对象名.属性值=表达式变量=对象名.属性值使用方法的语法格式如下 :对象名.方法()Public Class student Public no As Integer Public name As String Public sex As String Public Event add() Public Property s_no() As String Get Return no End Get Set(ByVal value As
10、 String) no = value End Set End Property Public Property s_name() As String Get Return name End Get Set(ByVal value As String) name = value End Set End Property Public Property s_sex() As String Get Return sex End Get Set(ByVal value As String) sex = value End Set End Property Public Sub nextno() no
11、 = no + 1 RaiseEvent add() End Sub Public Sub s_add() Handles Me.add MsgBox(加入学号) End Sub Public Sub New() no = name = 张三 sex = 男 End SubEnd Class Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click st.no = TextBox1.Text st.name = TextBox2.Text
12、 st.sex = TextBox3.Text TextBox4.Text = st.no & vbCrLf & st.s_name & vbCrLf & st.sex End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click st.nextno() TextBox1.Text = st.no TextBox2.Text = TextBox3.Text = End Sub Private Sub Button3_Click
13、(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click End End SubEnd ClassPublic Class juxing Public w, h As Integer Public Sub New() w = 0 h = 0 End Sub Public Sub New(ByVal a As Integer, ByVal b As Integer) If a = 0 Then w = a Else MsgBox(无效的矩形长度,即将退出!, MsgBoxStyle.OkO
14、nly, 提示) End End If If b = 0 Then h = b Else MsgBox(无效的矩形高度,即将退出!, MsgBoxStyle.OkOnly, 提示) End End If End Sub Public Function zhouchang(ByVal w As Integer, ByVal h As Integer) As Integer zhouchang = 2 * (w + h) End Function Public Function area(ByVal w As Integer, ByVal h As Integer) As Double area
15、= w * h End FunctionEnd ClassPublic Class Form1 Private a As juxing Dim x, y As Integer Dim p As Integer Dim s As Double Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim a As New juxing(x, y) x = TextBox1.Text y = TextBox2.Text p = a.zhouchang(x, y) TextBox3.Text = p End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim a As New juxing(x, y) x = TextBox1.Text y = TextBox2.Text s = a.area(x, y) TextBox3.Text = s End SubEnd Class
限制150内