深层次研究面向对象程序设计中的类和对象

2015-10-11 07:07赵光亮
铜仁学院学报 2015年4期
关键词:数据类型面向对象铜仁

田 华,赵光亮

(1.铜仁学院 数学科学学院,贵州 铜仁 554300;2.铜仁学院 信息工程学院,贵州 铜仁 554300 )

深层次研究面向对象程序设计中的类和对象

田华1,赵光亮2

(1.铜仁学院 数学科学学院,贵州 铜仁 554300;2.铜仁学院 信息工程学院,贵州 铜仁 554300 )

本文在认识论的指导下,基于C++语言深层次去研究类和对象,将类和对象的普遍意义和深层次的外延及内涵进行层层剖析,对类和对象的属性以及行为提出新的分析和理解,旨在帮助程序员提高面向对象程序设计水平。

类和对象;数据和操作;属性和行为

1.引言

面 向 对 象 程 序 设 计 (Object Oriented Programming,OOP)是一种计算机编程架构。OOP的一条基本原则是计算机程序由单个能够起到子程序作用的单元或对象组合而成。OOP达到了软件工程的三个主要目标:重用性、灵活性和扩展性。OOP=对象+类+继承+多态+消息,其中核心概念是类和对象,在理解了类和对象的基础上通过继承与多态完成事物的发展与变化处理[1]。所以,研究类和对象对面向对象程序设计能力的提高起着至关重要的作用。

2.类和对象的定义

客观世界中任何一个事物都可以抽象地看成一个对象(object),或者说客观世界是由千千万万个对象组成的。面向对象程序设计方法中,先将对象进行概括,抽出一类对象的公共性质并加以描述,这个公共性质包含两方面:数据抽象和行为抽象,其中数据抽象描述对象的属性或状态,行为抽象描述对象的共同行为或功能特征。然后将抽象得到的数据和行为封装成一个有机的整体,形成类[2]。类是对象的抽象,而对象则是类的特例,或者说是类的具体表现形式[3]。

3.数据和行为深度分析

在面向对象程序设计中,属性和行为、数据和行为、数据和操作这三个概念是等价的,更抽象的说法是静态属性和动态属性。即属性或数据是描述状态的,指静态,而行为或操作是描述功能的,指动态。如对人进行抽象,通过归纳总结,概括出其中共同的属性(如:编号、姓名、性别、年龄等,分别用string number、string name、string sex、int age表示)和共同的行为(如:吃饭、睡觉、工作、学习等,分别用eat()、sleep()、work()、study()表示)。显然,对于同一对象,由于研究的目的和侧重点不同,会产生不同的抽象结果。在 C++中,刚才的抽象过程进行如下封装形成一个类。

通过如下形式:PEOPLE P1(“00001”,“张三丰”,“男”,100)对类PEOPLE进行实例化得到一个对象名为P1的人,其编号为00001,姓名为张三丰,性别是男,年龄为100,这些是P1的属性,又称初始状态,可以向P1发message(消息)让其进行吃饭、睡觉、工作或学习等操作。从宏观角度分析,静态的属性和动态的行为特征分明,没有任何异议,但从微观角度仔细深度分析,就会发现问题。在属性定义中,我们用到了两个 C++的基本数据类型string和int。很显然,变量number,name,sex是用来存放string型数据的,而变量age是用来存放int型数据的,但它们本身也是包含了操作的,如对age进行加法运算等等,这说明每一种数据类型都包括了数据本身的属性以及对数据的操作。即基本数据类型隐含了数据和操作,实际上,这些基本数据类型本身就是类,只不过基本数据类型太少,远不能满足描述现实世界中各种对象的需要,所以需要我们自己定义类型,这就是类。换言之,类都是通过嵌套定义完成的,即类的定义中其数据成员本身就是类,亦即生成实例对象时就嵌套了对象。当我们把自己定义的类放在所定义的新类中,这个理解就显得顺理成章了,对类的嵌套定义和对象的嵌套也就一目了然。所以,绝对的静态是没有的,只是相对而言。

4.扩展分析

众所周知,C++语言是在C语言的基础上发展而来,为了延续性,C++是兼容C的,但两者的设计思路完全不同。C语言中也有数据和操作,只不过两者是离散的,C语言中的基本数据类型也是隐含了操作的,人为定义的操作通过函数来实现;在 C++中人为定义的类的操作也是用函数来实现的,但数据和函数有一个封装机制,是一个整体。如C语言中的结构体,就是为了解决基本数据类型不够用的情况自己定义数据类型,当一个结构体定义完成,生成一个结构体变量后其也隐含了操作,而在 C++语言中,同样兼容结构体,我们还时常把其理解成只有属性没有行为的类,准确的理解是没有人为定义的行为,其本身隐含着行为。从本质上来说,结构体可以理解成一个一般的类,从实用性来说,C++中结构体已经没有存在的价值和意义,仅仅是为了满足老一批C语言编程者的习惯,如此而已。

5.总结

本文从认识论的角度深层次剖析面向对象程序设计的核心概念——类和对象,从类和对象最基本的构成数据和行为进行宏观和微观分析,对编程者从客观世界认识面向对象编程,利用面向对象编程来解决实际问题有很大的帮助,有利于其架构面向对象程序设计基本思想和编程理论的形成。

[1]田华,孙黎明,王军.基于哲学思想的C++教学改革[J].福建电脑,2013,(7):66-67.

[2]郑莉,董渊,何江舟.C++语言程序设计[M].北京:清华大学出版社,2010.

[3]陈健峰.“C++程序设计”教学中基于对象部分概念的事例解释[J].计算机教育,2008,(11):74-75.

Study of Classes and Objects in the Object-oriented Orogramming

TIAN Hua,ZHAO GuangLiang
(School of Mathematical Sciences,Tongren University,Tongren,Guizhou 554300,China )

Under the guidance of epistemology,the paper studied classes and objects based on the c++ language. The classes and objects of denotation and connotation of universal significance were analyzed. The class and object attributes and behaviors were explained in new way. The aim was to help and improve the programmers to improve the level of object-oriented programming.

classes and objects;data and operation;attributes and behaviors

TP311

A

1673-9639 (2015) 04-0120-02

(责任编辑 毛志)(责任校对 徐松金)(英文编辑 田兴斌)

2015-05-10

田华(1971-),男,土家族,贵州铜仁人,教授,硕士,研究方向:软件工程、图像识别、演化计算。

猜你喜欢
数据类型面向对象铜仁
如何理解数据结构中的抽象数据类型
面向对象方法在水蓄冷PLC编程中应用分析
寻味贵州——铜仁
天地大美——铜仁梵净山
看雪——铜仁梵净山
基于SeisBase模型的地震勘探成果数据管理系统设计
线上众筹产品的特征分析与研究
相似度计算及其在数据挖掘中的应用
峰丛洼地农作物面向对象信息提取规则集
基于面向对象的车辆管理软件的研制与开发