欢迎来到天天文库
浏览记录
ID:38834123
大小:319.32 KB
页数:48页
时间:2019-06-20
《C课件:第15章C面向对象基础》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、C++第15章C++面向对象基础15.1面向对象程序设计的基本概念面向对象技术(Object-Orientedechnology)是在80年代末出现的,它是为了适应开发和维护复杂应用软件的需要,为解决软件危机而诞生的。面向对象的程序设计方法是继结构化程序设计方法之后的一种新的程序方法。在面向对象的程序设计中,通过对象来表示事物,用对象(Object)与对象间消息的传递来表现事物间的联系;用对象的方法实现对对象的操作。什么是对象呢?从概念上讲,对象是代表着正在创建的系统中的一个实体。从实现形式上讲,对象是一个状态和操作(或方法)的封装体。状态由对象的数据结构的内容和值定义
2、,方法是一系列的实现步骤,它由若干操作构成。对对象进行抽象形成类。抽象是一种提炼对象特征的方法,它可以将具有公共行为的对象组织成类。类是抽象数据类型的实现,一个类的所有对象都有相同的数据结构,并且共享相同的实现操作的代码,而各个对象有着各自不同的状态,即私有的存储。因此,类是所有对象的共同的行为和不同状态的集合体。面向对象技术的基本特征主要有:封装性、继承性、多态性。封装性:是将数据结构和对数据进行的操作结合在一起,形式一个整体,对外隐蔽其内部实现细节,同时避免了数据紊乱带来的调试与维护的困难。继承性:是一个对象可以获得另一个对象的特性的机制。对象的特性包括对象的属性(
3、数据)和方法(函数)。继承增强了软件的可扩充性,并为代码重用提供了强有力的手段。多态性:指相同的函数调用被不同的对象接收时,可以导致不同的行为。它使程序员在设计程序时可以对问题进行更好的抽象,以设计出重用性和维护性俱佳的程序。15.2类和对象C++作为C语言的超集,涵盖了C语言的主要概念和功能,但它同时又引入了一些新的概念,其中最主要的是类和对象的概念。类的设计和使用体现了面向对象的设计思想。面向对象的程序设计是从分析对象开始的。对象分析方法的有力工具是分类——找出一类具有相同属性的对象,并将它们的共同属性用类表示。在实际的程序设计中,是先定义问题域中的相关对象类(cl
4、ass),然后由类生成对象。因此,类是由用户定义的特殊数据类型。15.2.1类的定义与实现类中定义的数据和函数分别称为数据成员和成员函数。类的定义格式一般地分为说明部分和实现部分。说明部分是用来说明该类中的成员,包含数据成员的说明和成员函数的说明。成员函数是用来对数据成员进行操作的,又称为“方法”。实现部分是成员函数的定义。概括起来,说明部分将告诉使用者“干什么”,而实现部分是告诉使用者“怎么干”。。类的定义与C语言中的结构体类似,但结构体中只能定义属性不能定义对这些属性进行操作的方法(函数)。类的定义使用关键字class,其后面的标识符定义了一个新的类型,可以使用这个
5、标识符说明类的变量和指向类的指针。例:定义一个名为TPerson的类,包括这个人的姓名、年龄、性别、家庭住址、电话等不同属性,以及对这些属性操作的两个函数。classTPerson//通常用T字母开始的字符串作为类名,以示与//对象、函数名区别{private:charname[20];intage;charsex;charaddress[20];longtel;public:voidsetdata();voidprint();};//分号不可缺少面向对象的程序设计强调信息隐藏,将实现细节和不允许外部访问的部分隐藏起来,为此它把类成员分为公开的(public)与私有的(
6、private)两类。外界不能直接访问一个对象的私有部分,它们与对象间的信息传送只能通过公开成员进行。上面的例子中一共定义了7个成员:5个成员数据,2个成员函数。成员数据一般不能让外界直接访问,只能通过本类的成员函数访问。所以把5个成员数据定义成私有成员(用private定义),把成员函数定义为公开成员(用public定义)。关键字private、public被称为访问权限修饰符或访问控制修饰符。在一个类的定义中,关键字private、public出现的顺序与次数可以是任意的。C++规定,类成员隐含的访问权限是私有的,不加声明的成员都默认为私有的。因此,最前面的关键字p
7、rivate可以缺省。而结构体类型的成员的隐含访问权限是公开的。类的实现,就是进一步定义它的成员函数。成员函数是类定义中用以描述对象行为的成员。在成员函数中,可以直接访问类的所有成员。成员函数的定义方式与普通函数大体相同,以下几点需加以说明:①成员函数可以在类中定义。例如:classTPerson{private:charname[20];intage;charsex;charaddress[20];longtel;public:voidsetdata(){strcpy(name,"liling");age=18;sex='f';strc
此文档下载收益归作者所有