第15章郾+面向对象基础
第15章 C++面向对象基础
15.1面向对象程序设计的基本概念 面向对象技术( Object-Oriented echnology)是在80 年代末出现的,它是为了适应开发和维护复杂应用软件 的需要,为解决软件危机而诞生的。面向对象的程序设 计方法是继结构化程序设计方法之后的一种新的程序方 法。在面向对象的程序设计中,通过对象来表示事物, 用对象( Object)与对象间消息的传递来表现事物间的 联系;用对象的方法实现对对象的操作。什么是对象呢 从概念上讲,对象是代表着正在创建的系统中的一个实 体。从实现形式上讲,对象是一个状态和操作(或方法) 的封装体。状态由对象的数据结构的内容和值定义,方 法是一系列的实现步骤,它由若干操作构成。对对象进 行抽象形成类
15.1面向对象程序设计的基本概念 面向对象技术(Object-Oriented echnology)是在80 年代末出现的,它是为了适应开发和维护复杂应用软件 的需要,为解决软件危机而诞生的。面向对象的程序设 计方法是继结构化程序设计方法之后的一种新的程序方 法。在面向对象的程序设计中,通过对象来表示事物, 用对象(Object)与对象间消息的传递来表现事物间的 联系;用对象的方法实现对对象的操作。什么是对象呢? 从概念上讲,对象是代表着正在创建的系统中的一个实 体。从实现形式上讲,对象是一个状态和操作(或方法) 的封装体。状态由对象的数据结构的内容和值定义,方 法是一系列的实现步骤,它由若干操作构成。对对象进 行抽象形成类
抽象是一种提炼对象特征的方法,它可以将具有公 共行为的对象组织成类。类是抽象数据类型的实现 个类的所有对象都有相同的数据结构,并且共享 相同的实现操作的代码,而各个对象有着各自不 的状态,即私有的存储。因此,类是所有对象的共 为和不同状态的集合体。,面向对象技术的基 本特征主要有:封裝性、继承性、多态性。 封装性:是将数据结构和对数据进行的操作结合在 同时避免了数据紊乱带来的调试写维护的困难
◼ 抽象是一种提炼对象特征的方法,它可以将具有公 共行为的对象组织成类。类是抽象数据类型的实现, 一个类的所有对象都有相同的数据结构,并且共享 相同的实现操作的代码,而各个对象有着各自不同 的状态,即私有的存储。因此,类是所有对象的共 同的行为和不同状态的集合体。面向对象技术的基 本特征主要有:封装性、继承性、多态性。 ◼ 封装性:是将数据结构和对数据进行的操作结合在 一起,形式一个整体,对外隐蔽其内部实现细节, 同时避免了数据紊乱带来的调试与维护的困难
■继承性:是一个对象可以获得另一个对象的 特性的机制。对象的特性包括对象的属性(数 据)和方法(函数)。继承增强了软件的可扩 充性,并为代码重用提供了强有力的手段。 多态性:指相同的函数调用被不同的对象接 攵时,可以导致不同的行为。它使程序员在设 计程序时可以对问题进行更好的抽象,以设计 出重用性和维护性俱佳的程序
◼继承性:是一个对象可以获得另一个对象的 特性的机制。对象的特性包括对象的属性(数 据)和方法(函数)。继承增强了软件的可扩 充性,并为代码重用提供了强有力的手段。 ◼多态性:指相同的函数调用被不同的对象接 收时,可以导致不同的行为。它使程序员在设 计程序时可以对问题进行更好的抽象,以设计 出重用性和维护性俱佳的程序
152类和对象 C++作为C语言的超集,涵盖了C语言的主要概念和功能, 但它同时又引入了一些新的概念,其中最主要的是类和对 象的概念。类的设计和使用体现了面向对象的设计思想 面向对象的程序设计是从分析对象开始的。对象分析方法 的有力工具是分类—找出一类具有相同属性的对象,并 将它们的共同属性用类表示。在实际的程序设计中,是先 定义问题域中的相关对象类( class),然后由类生成对象。因 此,类是由用户定义的特殊数据类型
15.2类和对象 ◼ C++作为C语言的超集,涵盖了C语言的主要概念和功能, 但它同时又引入了一些新的概念,其中最主要的是类和对 象的概念。类的设计和使用体现了面向对象的设计思想。 面向对象的程序设计是从分析对象开始的。对象分析方法 的有力工具是分类——找出一类具有相同属性的对象,并 将它们的共同属性用类表示。在实际的程序设计中,是先 定义问题域中的相关对象类(class),然后由类生成对象。因 此,类是由用户定义的特殊数据类型
15.2.1类的定义与实现 ■类中定义的数据和函数分别称为数据成员和成员函 数。类的定义格式一般地分为说明部分和实现部分 说明部分是用来说明该类中的成员,包含数据成员 的说明和成员函数的说明。成员函数是用来对数据 成员进行操作的,又称为“方法”。实现部分是成 员函数的定义。概括起来,说明部分将告诉使用者 “千什么”,而实现部分是告诉使用者“怎么 干”。。类的定义与C语言中的结构体类似,但结 构体中只能定乂属性不能定乂对这些属性进行操作 的方法(函数)
◼15.2.1类的定义与实现 ◼类中定义的数据和函数分别称为数据成员和成员函 数。类的定义格式一般地分为说明部分和实现部分。 说明部分是用来说明该类中的成员,包含数据成员 的说明和成员函数的说明。成员函数是用来对数据 成员进行操作的,又称为“方法”。实现部分是成 员函数的定义。概括起来,说明部分将告诉使用者 “干什么”,而实现部分是告诉使用者“怎么 干”。。类的定义与C语言中的结构体类似,但结 构体中只能定义属性不能定义对这些属性进行操作 的方法(函数)
类的定义使用关键字 class,其后面的标识符定义 新的类型,可以使用这个标识符说明类的变量和指向类的指 ■例:定义一个名为 TPerson的类,包括这个人的姓名、年龄 性别、家庭住址、电话等不同属性,以及对这些属性操作的 两个函数 class TPerson〃通常用T字母开始的字符串作为类名,以示 与∥对象、函数名区别 i private char name[20] Int age char sex char address[20] long tel public void setdata() void pi rint( };∥分号不可缺少
◼ 类的定义使用关键字class,其后面的标识符定义了一个 新的类型,可以使用这个标识符说明类的变量和指向类的指 针。 ◼ 例:定义一个名为TPerson的类,包括这个人的姓名、年龄、 性别、家庭住址、电话等不同属性,以及对这些属性操作的 两个函数。 ◼ class TPerson //通常用T字母开始的字符串作为类名,以示 与 //对象、函数名区别 ◼ { private: ◼ char name[20]; ◼ int age; ◼ char sex; ◼ char address[20]; ◼ long tel; ◼ public: ◼ void setdata( ); ◼ void print( ); ◼ }; //分号不可缺少
口面向对象的程序设计强调信息隐藏,将实现细 节和不允许外部访问的部分隐藏起来,为此它 把类成员分为公开的( public)与私有的 private)两类。外界不能直接访问一个对象的 私有部分,它们与对象间的信息传送只能通过 公开成员进行。上面的例子中一共定义了7个成 员:5个成员数据,2个成员函数。成员数据 般不能让外界直接访问,只能通过本类的成员 函数访问。所以把5个成员数据定义成私有成员 (用 private定义),把成员函数定义为公开成员 (用 public定义)
◼ 面向对象的程序设计强调信息隐藏,将实现细 节和不允许外部访问的部分隐藏起来,为此它 把类成员分为公开的(public)与私有的 (private)两类。外界不能直接访问一个对象的 私有部分,它们与对象间的信息传送只能通过 公开成员进行。上面的例子中一共定义了7个成 员:5个成员数据,2个成员函数。成员数据一 般不能让外界直接访问,只能通过本类的成员 函数访问。所以把5个成员数据定义成私有成员 (用private定义),把成员函数定义为公开成员 (用public定义)
关键字 private、 public被称为访问权限修饰符 或访问控制修饰符。在一个类的定义中,关键 意的。ub]ic出现的顺序与次数可以是任 子 private 规定,类成员隐含的访问权限是私 有的,不加声明的成员都默认为私有的。因此, 最前面的关键字 private可以缺省。而结构体类 型的成员的隐含访问权限是公开的。 类的实现,就是进一步定义它的成员函数。 成员函数是类定义中用以描述对象行为的成员。 在成员函数中,可以直接访问类的所有成员 成员函数的定义方式与普通函数大体相同,以 下几点需加以说明:
◼关键字private 、public被称为访问权限修饰符 或访问控制修饰符。在一个类的定义中,关键 字private 、public出现的顺序与次数可以是任 意的。C++规定,类成员隐含的访问权限是私 有的,不加声明的成员都默认为私有的。因此, 最前面的关键字private可以缺省。而结构体类 型的成员的隐含访问权限是公开的。 ◼类的实现,就是进一步定义它的成员函数。 成员函数是类定义中用以描述对象行为的成员。 在成员函数中,可以直接访问类的所有成员。 成员函数的定义方式与普通函数大体相同,以 下几点需加以说明:
①成员函数可以在类中定义。例如 ◆ class IPerson private char name 20] nt age char sex; char address[20] long tel public void setdata( i strcpy(name, liling sex strcpy(address, 249 shanghailu") tel=3041725;} ■ void print( {cout<name<<","<<age<","<<sex<<","<<addressx","<<telk<endl;}
◼ ①成员函数可以在类中定义。例如: ◼ class TPerson ◼ { private: ◼ char name[20]; ◼ int age; ◼ char sex; ◼ char address[20]; ◼ long tel; ◼ public: ◼ void setdata( ) ◼ { strcpy(name,"liling"); ◼ age=18; ◼ sex='f'; ◼ strcpy(address,"249 shanghailu"); ◼ tel=3041725; } ◼ void print( ) ◼ { cout<<name<<","<<age<<","<<sex<<","<<address<<","<<tel<<endl; } ◼ };