第9章 类和对象(二)
类和对象的概念课件
软件中的对象可以通过类和对象的方式进行组织和管理。例如,一个窗口类可以 包含窗口的属性,如大小、位置等,同时可以通过实例化创建具体的窗口对象, 进行软件的交互操作和管理。
REPORT
CATALOG
DATE
ANALYSIS
SUMMAR Y
06
总结与回顾
本课程的主要内容回顾
对象的创建
通过类创建具有特定属性和行 为的实例对象。
REPORT
CATALOG
DATE
ANALYSIS
SUMMAR Y
05
类和对象的实际应用
类和对象在游戏开发中的应用
角色扮演类
在游戏开发中,角色扮演类用于创建游戏中的角色,包括玩 家角色、敌人角色等。这些角色具有各自的特点、属性和技 能,通过类和对象的编程方式,可以方便地管理和控制游戏 中的角色。
继承
子类继承父类的属性和方法, 并可以扩展或修改它们。
类的定义
类是对象的抽象,定义了对象 的属性和方法。
封装
将数据和操作数据的函数封装 在对象内部,实现数据隐藏和 信息隐藏。
多态
通过接口或继承实现不同对象 对同一消息的响应。
类和对象在实际项目中的应用案例分享
面向对象编程的优势
01
类和对象有助于组织和管理代码,提高代码可读性和可维护性,
掌握类的基本概念和定义 方法
学习如何使用面向对象编 程语言实现类和对象
理解对象的概念及其与类 的关系
了解面向对象编程的优势 和应用场景
学习方法建议
理论与实践相结合
通过实际编程案例来加深对类 和对象概念的理解。
主动思考与反思
在学习过程中不断思考类和对 象的概念,以及如何在实际项 目中应用。
类和对象的关系ppt
二、实现关系
1:实现指的是一个class类实现interface 接口(可以是多个) 2:在Java中此类关系通过关键字: implements明确标识
UML类图设计
类图之间的第二种关 系图(类之间的实现)
三、依赖关系
1:依赖就是一个类A使用到了另一个类 B2 2:偶然性的、临时性的、非常弱的 3:类B的变化会影响到类A
类图之间的第五种关系图(类之间的聚合)
UML类图设计 类图设计
六、组合关系
1:是一种contains-a的关系,这种关系 比聚合更强,也称为强聚合。(整体与部分) 2:不可分离的,具有相同的生命周期
类图之间的第六种关系图(类之间的组合)
UML类图设计 类图设计
七、总结
1:继承:种类和类、或者类与接口间的 纵向关系 2:另外几种:是类和类、或者类与接口间 的引用、横向关系(语义级别的区分) 3:几种关系所表现的强弱程度依次为:组 合>聚合>关联>依赖。
七、பைடு நூலகம்结
1:继承:类和类、或者类与接口间的纵 向关系 2:其他的几种:类和类、或者类与接口间 的引用、横向关系(语义级别的区分) 3:强弱程度依次为:组合>聚合>关联> 依赖
UML类图设计
类图之间的第三种关系图(类之间的依赖)
四、关联关系
1:关联体现的是两个类之间语义级别的 一种强依赖关系 2:(不是一种)偶然性的、临时性的、 而是一种长期性的关系 3:平等的。关联可以是单向、双向的
类图之间的第四种关系图(类之间的关联)
UML类图设计 类图设计
五、聚合关系
1:整体与部分的关系(是关联关系的一 种特例) 2:可分离的,具有各自的生命周期 3:部分可以属于多个整体对象,也可以为 多个整体对象共享。
《类和对象 》课件
对象是类的实例,它具有类定义的属性和行为。每个对象都是独一无二的,并可以根据 类的定义进行操作。
类的组成部分
属性
类可以定义一些属性, 用于描述类的特征和状 态。属性可以是变量或 常量,表示对象的各种 特性。
方法
类可以定义一些方法, 用于执行特定的操作。 方法可以访问和修改对 象的属性,并实现类的 功能。
2 this关键字的使用
this关键字可以用于解决变量名冲突问题,区分局部变量和类的成员变量。它还可以用于 在构造方法中调用其他构造方法。
类与对象编程案例演示
1
案例1:图书管理系统
通过类来表示图书、图书馆和借阅者,并实现借书、还书和查询功能。
2
案例2:汽车租赁系统
通过类来表示汽车、租车公司和租客,并实现租车、还车和计费功能。
案例3:学生管理系统
通过类来表示学生、课程和学校,并实现成绩录入、查询和统计功能。
在软件开发中的应用
继承和多态是面向对象编程的重要 概念,它们在软件开发中广泛应用 于代码的组织和设计。
对象的实例化与构造方法
对象的实例化是通过创建类的实例来使用该类。构造方法是用于创建对象的特殊方法,它在实例 化对象时被自动调用,用于初始化对象的属性和状态。
创建对象
通过类的构造方法来创建对 象,为对象分配内存并初始 化其属性。
《类和对象》PPT课件
欢迎来到《类和对象》PPT课件!本课件将带你深入了解类和对象的基础概念, 探索类在软件开发中的应用,并演示对象的实例化与构造方法。让我们开始 这个令人兴奋的学习之旅吧!
类和对象基础概念
1 什么是类?
类是面向对象编程的基本概念,它是一种抽象数据类型,用于描述具有相同属性和行为 的对象的集合。
9章 类和对象
9.1.2面向对象程序设计方法
面向过程的程序设计方法
面向过程的程序设计方法是将问题进行功能分解,然后用许多 功能 不同的函数来实现,数据与函数是相互分离的,程序通过函数间的相互调 用来完成功能。 所有的数据都是公用(共享)的,一个函数可以使用任何一组数 据,而一组数据又能被多个函数所使用(数据缺乏保护) 程序设计者必须考虑每一个细节, 什么时候对什么数据进行操作。 程序=算法+数据结构 算法和数据结构互相独立、 分开设计 。以算法为主体。
9.2 类和对象
9.2.1 类的定义 9.2.2 对象的定义 9.2.3 对象成员的访问 9.2.4 类和结构体类型的异同 9.2.5 类的成员函数 9.2.6 this指针
9.2.1 类的定义
对长方体 (1)设置长、宽、高信息 (2)计算表面积 (3)计算体积
用结构实现
结构体类型:
struct Cuboid { int length; int width; int height; };
录像机: 属性: 生产厂家、颜色 、价格、 牌子、体积、重量 行为: 录像、快进、倒退 、暂停、停止
3. 抽象
抽象的过程是将有关事物的共性归纳、集中的过程。 抽象是提取和表现事物的核心特性,忽略细节。 抽象的作用是表示同一类事物的本质。 C和C++中的数据类型就是对一批具体的数的抽象。 对象是具体存在的, 如一个三角形可以作为一个对象,10个不同尺寸的三角形是10 个对象。如果这10个三角形对象有相同的属性和行为,可以将它们抽 象为一种类型,称为三角形类型。在C++中,这种类型就称为“类 (class)”。这10个三角形就是属于同一“类”的对象。 类是对象的抽象,而对象则是类的特例,或者说是类的具体表现 形式。 类与对象关系: 抽象与具体的关系
python面向对象程序设计的概念及类和对象的关系
python面向对象程序设计的概念及类和对象的关系1. 引言1.1 概述Python是一种高级编程语言,它支持多种编程范式,其中包括面向对象程序设计(Object-oriented Programming, OOP)。
面向对象程序设计通过将数据和操作封装在一起形成对象,以模拟现实世界中的实体和其交互方式。
在Python 中,我们可以使用类和对象来实现面向对象编程。
1.2 文章结构本文将详细介绍Python面向对象程序设计的概念以及类和对象的关系。
首先,我们会简要介绍面向对象编程的基本概念,包括封装、继承和多态。
然后,我们会深入讨论类和对象的基本概念,并探讨它们之间的关系。
接下来,我们会通过几个具体的示例来说明类和对象在实际应用中的作用。
最后,我们会得出结论并对文章进行总结。
1.3 目的本文旨在帮助读者深入理解Python中面向对象编程的概念及其应用场景,并能够清晰地认识到类与实例化对象之间、类之间以及对象之间的关系。
通过学习本文内容,读者将能够更加灵活地运用面向对象编程思想解决问题,并提高代码复用性和可维护性。
2. python面向对象程序设计的概念:2.1 面向对象编程简介面向对象编程(OOP)是一种常用的软件开发方法,它将现实世界中的事物抽象为具有属性和行为的对象。
在Python中,一切皆为对象,从基本数据类型到复杂的数据结构和函数都可以被看作是对象。
面向对象编程主要关注以下几个概念:封装、继承和多态。
通过封装,我们可以将相关的属性和行为组合在一个类中,并对外提供接口进行访问;通过继承,子类可以继承父类的属性和行为,并且还可以根据需要添加新的属性和行为;通过多态,不同类型的对象可以以相同的方式进行处理。
2.2 封装、继承和多态封装是将数据与操作数据的方法相结合。
在面向对象编程中,我们可以将相关的属性和方法封装在一个类中,并对外部提供公共接口以供使用。
通过封装,我们可以隐藏内部实现细节,并提高代码复用性。
《高级语言程序设计》课程教学大纲
《高级语言程序设计》课程教学大纲56学时 3.5学分一、课程的性质、目的及任务《高级语言程序设计》是计算机科学与技术、电子信息科学与技术和信息安全专业的一门专业基础课,目的是主要培养运用C++语言进行程序设计的能力。
本课程一方面讲述C++语言的基本特性,包括指针、数组、函数、类、对象、派生类、继承、流类库等内容,另一方面系统地介绍面向对象程序设计的基本概念、分析方法、设计方法和编程方法。
具体的教学任务为:1.准确描述问题、分析问题,以及运用计算思维解决问题的能力。
2.正确理解和使用C++语言的基本数据结构和语法,掌握面向对象程序设计的基本思想和方法,进行正确、完善的程序设计的能力。
3.使用C++语言集成开发环境完成面向对象程序的编写、调试的任务。
二、适用专业计算机科学与技术专业、电子科学与技术专业、信息安全专业三、先修课程信息技术概论四、课程的基本要求掌握选择、循环等c++的基本语句;掌握数组、指针等数据类型;掌握函数、对象、文件等程序的组成成分;掌握面向对象程序设计的基本思想,能独立分析问题并编程实现;掌握Visual c++ 6.0程序设计环境的基本用法,能进行程序的编写、调试和运行。
五、课程的教学内容第1章C++基础[知识点]面向对象编程特点、程序设计环境[重难点]1.教学重点C++程序的编写和实现2.教学难点(1)面向对象编程特点(2)C++上机实践[教学内容](1)程序设计语言的发展:讲解机器语言到高级语言的特点(2)面向对象编程:讲解程序设计的范式(过程型、面向对象型)(3)C++的特点:高级语言(4)C++程序的构成和书写形式:程序结构、书写规范(5)C++程序设计和实现:程序设计各阶段的任务(6)程序设计环境:程序设计的实例[教学要求](1)对面向对象概念只作概念性的描述,无需深入讲解(2)以实例讲解C++程序特点和程序设计环境第2章基本数据类型与运算符[知识点]数据类型、运算符[重难点]1.教学重点C++的运算符2.教学难点表达式的书写与计算[教学内容](1)C++的数据类型(2)常量与变量(3)C++的运算符[教学要求]要求学生熟练掌握运算符及其优先级第3章程序控制[知识点]结构化程序设计、结构控制语句[重难点]1.教学重点(1)C++的输入与输出(2)关系运算和逻辑运算(3)选择结构和if语句(4)条件运算符和条件表达式(5)多分支选择结构和switch语句(6)循环结构和循环语句(7)循环的嵌套2.教学难点(1)多分支选择结构和switch语句(2)循环的嵌套[教学内容](1)C++程序和语句(2)C++的输入与输出(3)关系运算和逻辑运算(4)选择结构和if语句(5)条件运算符和条件表达式(6)多分支选择结构和switch语句(7)循环结构和循环语句(8)循环的嵌套(9)break语句和continue语句[教学要求](1)要求学生掌握程序设计环境的使用方法,能独立进行程序设计。
第九章 类与对象(二)
运行结果如下:
volume of a[0] is 1800 volume of a[1] is 5400 volume of a[2] is 8320
9.2 对象与指针
1.对象指针 对象指针就是指向对象的指针(变量)。 指向对象是什么意思呢? 程序中的函数(包括独立函数和类成员函数)、 变量(包括结构体变量、对象、指针变量)、常 量(包括符号常量和字面常量)等等在内存中都 会占据一定的存储空间。既然占用了内存,就当 然会有存储空间的地址(该地址就是这段内存的 首字节地址)。只不过,有些地址程序员得不到 而已,比如常量的地址。 因此,对象指针就是指向对象存储空间的指 针。对象指针存储的是对象的地址(对象内存空 间首字节地址)。
那如果构造函数有多个参数呢?
方法是:在大括号中分别写出构造函数并指定 实参。 如: Student s[3] = { Student(1001, 18, 87), Student(1002, 19, 76), Student(1003, 18, 92), }; [思考题] 下列对象的初始化如何进行? Location P[2] = { Location(1,2) };
就如写作文的时候你拿着别人的作文参考参考或者就是直接抄别人的作着别人的作文参考参考或者就是直接抄别人的作文你总不能在抄的过程中将别人的作文乱涂乱文你总不能在抄的过程中将别人的作文乱涂乱再比如纯粹就是将数据进行输出总不能出再比如纯粹就是将数据进行输出总不能出现在函数中加工时输出之前数据还是现在函数中加工时输出之前数据还是100100而输出之而输出之后原数据就变成后原数据就变成10001000了这种情况吧
int length; };
int Box∷volume( ) {return(height*width*length); } int main( ) { Box a[3]={ //定义对象数组 Box(10,12,15), //调用构造函数Box,提供第1个元素的实参 Box(15,18,20), //调用构造函数Box,提供第2个元素的实参 Box(16,20,26) //调用构造函数Box,提供第3个元素的实参 }; cout<<″volume of a[0] is ″<<a[0].volume( )<<endl; //调用a[0]的 volume函数 cout<<″volume of a[1] is ″<<a[1].volume( )<<endl; //调用a[1] 的 volume函数 cout<<″volume of a[2] is ″<<a[2].volume( )<<endl; //调用a[2] 的 volume函数 }
《类和对象的概念》课件
明确类和对象的职责与属性
详细描述
在设计类和对象时,首先需要明确每个类和对象的职责和 属性,确保它们具有清晰、准确的功能定义。同时,要遵 循单一职责原则,避免一个类或对象承担过多的职责。
总结词
合理规划类和对象的继承关系
详细描述
在面向对象编程中,继承是实现代码复用的重要手段。合 理规划类和对象的继承关系,可以使代码结构更加清晰、 易于维护。同时,要注意避免过度继承和多重继承带来的 问题。
如何解决类和对象相关的常见问题?
总结词
解决类和对象的命名冲突问题
详细描述
在多个类或对象共存的情况下,可能会出现命名冲突的问题。为了避免这种情况 ,可以采用命名规范、命名约定等方式来避免命名冲突,提高代码的可读性和可 维护性。
如何解决类和对象相关的常见问题?
总结词
解决类和对象的内存泄漏问题
详细描述
02
通过封装,对象的属性和行为被隐藏在内部, 只通过外部接口与外界交互。
03
封装可以提高代码的安全性和可维护性,防止 外部随意修改内部实现细节。
继承
01
继承是子类继承父类的 属性和行为,子类可以 使用父类的所有非私有
属性和方法。
02
通过继承,子类可以扩 展和修改父类的功能, 实现代码的重用和扩展
。
《类和对象的概念》ppt课件
$number {01}
目录
• 类和对象的基本概念 • 类的特性 • 对象的创建和使用 • 类和对象的应用 • 类和对象的常见问题与解决方案
01
类和对象的基本概念
类的定义
总结词
类是对象的抽象,定义了一组具有相似属性和行为的对象。
详细描述
类是面向对象编程中的一个基本概念,它是对一组具有相似 属性和行为的对象的抽象。通过类,我们可以定义一组对象 的共同特征和行为,以及如何对这些特征和行为进行操作。
《软件详细设计教程》课件第9章
第9章 面向对象分析
上述五个层次对应着在面向对象分析过程中建立对象模 型的五项主要活动:找出类与对象;识别结构;识别主题; 定义属性;定义服务。必须强调指出的是,我们说的是“五 项活动”,而没有说五个步骤。事实上,这五项工作完全没 有必要顺序完成,也无须彻底完成一项工作以后再开始另外 一项工作。虽然这五项活动的抽象层次不同,但是在进行面 向对象分析时并不需要严格遵守自顶向下的原则。人们往往 喜欢先在一个较高的抽象层次上工作,如果在思考过程中突 然想到一个具体事物,就会把注意力转移到深入分析发掘这 个具体领域上,然后又返回到原先所在的较高的抽象层次。 例如,分析员找出一个类与对象,想到在这个类中应该包含 的一个服务,于是把这个服务的名字写在服务层,然后又返 回到类与对象层,继续寻找问题域中的另一个类与对象。
第9章 面向对象分析
终端与相应的分行计算机通信,分行计算机具体处理针对某 个账户的事务并且维护账户。
拥有银行账户的储户有权申请领取现金兑换卡,使用现 金兑换卡可以通过ATM访问自己的账户。目前仅限于用现 金兑换卡在ATM上提取现金(即取款),或查询有关自己账户 的信息(例如某个指定账户上的余额)。将来可能还要求使用 ATM办理转账、存款等事务。
第9章 面向对象分析
9.2 需 求 陈 述
9.2.1 书写要点 通常,需求陈述的内容包括:问题范围、功能需求、性
能需求、应用环境及假设条件等。总之,需求陈述应该阐明 “做什么”而不是“怎样做”。它应该描述用户的需求而不 是提出解决问题的方法;应该指出哪些是系统必要的性质, 哪些是任选的性质;应该避免对设计策略施加过多的约束, 也不要描述系统的内部结构,因为这样做将限制实现的灵活 性。对系统性能及系统与外界环境交互协议的描述,是合适 的需求。此外,对采用的软件工程标准、模块构造准则、将 来可能做的扩充以及可维护性要求等方面的描述,也都是适 当的需求。
第9章类和对象ppt课件
//以上对类的定义可以作为头文件:#include “e10-1.h” 代替。
void person::Register(const char *name, int age, char sex) { strcpy(Name,name); Age=age; Sex=(sex=='m'? 0 : 1 ); }
"<<list1.Max()<<" and there are "<<list1.Elem
void main() { void out_dat(person); //person 是类名,对
象将作为参数。如函数说明:int sum(int,int); char name[8]; int no; person per1,per2,per3;
cout<<"input no,name"; cin>>no>>name; per1.setno(no,name); per2.setno(12345,"zhang"); per3.setno(16789,"zhou");
#include “ex91.h” inline void person ::Register(const char *name, int age, char sex)
{ strcopy(Name,name); Age=age; Sex=(sex==’m’ ? 0 : 1 ); }
inline void person ::Getname(char *name); {strcpy(name, Name);
void main()
{ Linear_List list,list1; //定义两个对象
类与对象的概念及应用
类与对象的概念及应用随着科技的不断发展,计算机程序在各行各业中得到了广泛的应用。
其中,面向对象编程是一种常用的编程范式,它将程序中的数据和行为绑定在一起,形成了“对象”的概念,大大降低了程序的复杂度和开发难度。
本文主要介绍类与对象的概念及应用,帮助读者更好地掌握面向对象编程的基础知识。
一、类与对象的基本概念类是一个抽象的概念,它包含了一组相关的数据和行为。
类可以看做是对象的模板,用来描述对象的基本属性和方法。
通过类,我们可以定义新的对象,控制对象的行为以及对对象进行操作。
对象是类的实例化结果,它是类的一个具体的实例。
对象中包含了类中定义的数据和方法,可以根据需要进行操作和调用。
在面向对象编程中,对象是程序中的基本单位,所有的操作都围绕对象展开。
举个例子,我们可以定义一个“人”类,其中包含了姓名、年龄、性别等属性,以及吃饭、睡觉、工作等方法。
当我们根据这个类,定义出一个具体的人,比如“张三”,就是一个对象。
张三对象中包含了姓名、年龄、性别等属性,以及吃饭、睡觉、工作等方法的实现。
二、类与对象的关系类和对象之间存在着一种包含关系。
类是对象的抽象,一个类中可以包含多个对象。
对象具有类中定义的属性和方法,可以进行相应的操作和调用。
在Java中,我们可以通过定义一个类来创建一个对象。
定义一个类的语法形式如下:public class ClassName{//属性//方法}其中,public代表访问修饰符,表示该类是公共的。
类名为ClassName,属性和方法是该类的基本组成部分。
我们可以通过new关键字创建一个该类的对象。
ClassName objectName=new ClassName();通过上述代码,我们就可以创建出一个ClassName类的对象,并将其赋值给objectName变量。
之后,我们就可以通过这个对象进行相应的操作和调用。
三、类与对象的应用类与对象的应用非常广泛,可以用来描述各种实体和行为。
类和对象的概念PPT课件
14
2.3 使用代码窗口
2.3.1 代码窗口的组成
事件名列表
Hale Waihona Puke 类名列表2021/3/12
15
2.3 使用代码窗口
2.3.2 使用代码窗口
自动完成功能
语法检查功能
2021/3/12
16
2.4 Visual Basic .NET的编程步骤
程序设计的基本步骤如下:
(1) 创建新项目 (2) 添加控件 (3) 修改对象属性 (4) 编写事件代码 (5) 运行程序 (6) 修改完善 (7) 生成可执行文件
2021/3/12
13
2.2 窗体与基本控件
2.2.9 焦点和Tab键序
焦点是控件接收用户鼠标或键盘输入的能力。当对象具有焦点时, 可接收用户的输入。在Microsoft Windows环境中,任一时刻都 可以同时运行多个程序,但只有具有焦点的应用程序才有活动标题 栏(蓝色标题栏),也只有具有焦点的程序才能接受用户输入(键 盘或鼠标的动作)。
所谓Tab键序指的是在用户按下〈Tab〉键时,焦点在控件间移 动的顺序。每个窗体都有自己的Tab键序。缺省状态下Tab键序与 建立这些控件的顺序相同。例如在窗体上建立三个命令按钮C1、 C2和C3,程序启动时C1首先获得焦点。当用户按下〈Tab〉键时 焦点依此向C2、C3转移,如此这般往复循环。
2021/3/12
制对20象21/。3/12
3
2.2 窗体与基本控件
2.2.1 创建窗体
窗体就是应用程序中的一个窗口。当新建一个“Windows应用 程序”时,就会显示一个缺省的窗体,该窗体包含了一些 Windows应用程序最常用的元素,如标题栏、控制框、最小化、 最大化和关闭按钮等。
第9章 类与对象-C++语言程序设计-宁涛-清华大学出版社
{ 函数体;
}
9.1.3成员函数的定义
Clock类中的成员函数可以在类中声明:
class Clock {
private:
int H,M,S;
public:
void SetTime(int h,int m,int s); //声明成员函数
void ShowTime();
类是一个包含函数的结构体。类的定义与结构类型的定 义相似,其格式如下: class 类名 {
public: 公有数据成员或公有函数成员的定义;
protected: 保护数据成员或保护函数成员的定义;
private: 私有数据成员或私有函数成员的定义;
};
说明:
➢ 关键字class表明定义的是一个类;
//声明成员函数
};
在类外实现成员函数如下:
void Clock::SetTime(int h,int m,int s) {
H=h,M=m,S=s; }; void Clock:: ShowTime() {
cout<<H<<":"<<M<<":"<<S<<endl; }
如果要将类外定义的成员函数编译成内联函数,可以在类外定义函数时,函 数的返回类型前加上inline; 下面将ShowTime()定义成内联函数,与在类内定义成 员函数的效果相同。
【例9-1】日期类的定义。
1 class Tdate
2{
3
public:
4 void SetDate(int y, int m, int d)
5{
6
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一. 二. 三. 四.
对象指针和对象引用 对象数组和对象指针数组 子对象和堆对象 类的作用域和对象的生存期
一、对象指针和对象引用
1.对象指针
对象指针的定义格式 类名>*<对象指针名>=<初值> >*<对象指针名>=<初值 <类名>*<对象指针名>=<初值>
对象指针可以被初始化, 对象指针可以被初始化, 也可以被 赋值。 赋值 。 可以使用一个同表对象的地址值 进行赋值,也可以使用运算符new new的表达 进行赋值,也可以使用运算符new的表达 式进行赋值。 后边讲) 式进行赋值。(后边讲) 见P237,例9.1,P238,例9.2,P239,例9.3 237, ,P238, 238 ,P239, 239
1.对象数组 对象数组的定义格式、 对象数组的定义格式 、赋值方法及 使用。 使用。 见P247,例9.7。 247,
2.对象指针数组 对象指针数组的定义格式、 对象指针数组的定义格式 、 赋值方 法及其使用。 法及其使用。 见P248,例9.8 248,
3.指向对象数组的指针 指向一堆对象数组的指针的定义格 赋值和使用。 式、赋值和使用。 见P249,例9.9。 249,
四、类的作用域和对象的 生存期
1.类的作用域
类域的范围是指该类的表体内。 类域的范围是指该类的表体内。
2.对象的生存期 局部对象 全局对象 静态对象 259, 见P259,例9.13
3.局部类的嵌套类
局部类是指定义在函数体内的类。 局部类是指定义在函数体内的类。 见P260,例9.14 260,
(3)运算符defete的使用 运算符defete的使用 defete 使用delefe 可以释放一个堆对象 使用 delefe可以释放一个堆对象, 其 delefe 可以释放一个堆对象, 格式如下: 格式如下: defete<指针名> defete<指针名>; 指针名 在用delefe 释放堆对象时, delefe释放堆对象时 在用 delefe 释放堆对象时 , 系统自动调 用析构函数。 用析构函数。
(4)对象引用 对象引用的创建格式如下: 对象引用的创建格式如下: 类名>&<对象引用名>=<对象名> >&<对象引用名>=<对象名 <类名>&<对象引用名>=<对象名>; 引象引用是某个已知对象的别名 引象引用通常用来作函数参数或返 回值。 回值。 245, 见P245,例9.6
二、对象数组和对象指针数组
2.this指针 2.this指针 this指针是系统自动创建的指向对 this 指针是系统自动创建的指向对 象的指针. 象的指针. 当使用对象调用成员函数时, 当使用对象调用成员函数时,系统便 自动创建一个指向该对象的指针this this. 自动创建一个指向该对象的指针this. this指针通常被隐含使用 指针通常被隐含使用, this指针通常被隐含使用,有时也被 显式使用. 显式使用. 241, 见P241,例9.4
嵌套类指的是在一个类中定义的类。 嵌套类指的是在一个类中定义的类。 见P262,例9.15 262, 练习题9 作业题 P267 练习题9 自选) 9.1,9.2,9.3,9.4,9.5(自选) 上机练习题: 275,上机指导9 上机练习题:P275,上机指导9 10题 9.2中1~10题。
使用new也可以创建一个对象数组, 但不能进行初始化,具体格式如下: A * P; p=new A[5]; 这里,P是一个指向A类对象数组的指针, 该数组为5个元素,每个元素是A类的一 个对象。该对象数组的5个元素可用指针 表示为P[0],P[1],P[2],P[3]和P[4]。
在使用new运算符创建对象时, 在使用new运算符创建对象时,系统 new运算符创建对象时 会自动调用相应的构造函数。 会自动调用相应的构造函数。在创建对 象数组时, 象数组时,系统自动调用默认的构造函 然后,再给对象数组的各元素赋值。 数,然后,再给对象数组的各元素赋值。
三、子对象和堆对象
1.子对象 一个类的数据成员可以是另外类的 对象,该对象称为子对象。 对象,该对象称为子对象。 子对象反映了两个类之间的包含关 又称组合关系。 系,又称组合关系。 类中的子对象的初始化应放在该类 构造函数的成员初始化表中。 构造函数的成员初始化表中。 251, 10。 见P251,例9.10。
使用delefe 也可以释放一个堆对象数 使用 delefe也可以释放一个堆对象数 delefe 其格式如下: 组,其格式如下: delefe[]<指针名> delefe[]<指针名>; 指针名 这时,系统会自动调用多次析构函数。 这时,系统会自动调用多次析构函数。 P254, 9.11,P255,例 见P254,例9.11,P255,例912
使用对象通过指向类的数据成员的 指针引用该成员时用运算符* 指针引用该成员时用运算符 *;使用对象 指针通过指向类的数据成员的指针引用 该成员时用运算符->*。 该成员时用运算符->*。
(2)指向类的成员函数的指针 该指针指向类的某个成员函数, 该指针指向类的某个成员函数 , 定义 时应加上类名限定。具体格式如下: 时应加上类名限定。具体格式如下: 类型>< 类名> ::* 指针名> ><类名 < 类型 >< 类名 > :: * < 指针名 > ( < 参数类 > );
2.堆对象 (1)堆对象的特点 堆对象是一种被存放在内存堆注的对 又称动态对象。 象 , 又称动态对象 。 它可以运行中创建 并可以随时释放。 并可以随时释放。 使用运算符new创建堆对象, new创建堆对象 使用运算符new创建堆对象,并使用运 算符delefe释放它。 delefe释放它 算符delefe释放它。
(2)运算符new的使用。 运算符new的使用。 new的使用
使用new可以创建一个对象 使用 new可以创建一个对象, 并可以进行初 new 可以创建一个对象, 始化,具体格式如下: 始化,具体格式如下: 假定, 是表A的对象指针。 假定,P是表A的对象指针。 A * P; 初值) p=new A(初值); new运算符组成的表达式是一个地址值用来向 new 运算符组成的表达式是一个地址值用来向 内存申请内存单元, 如果成功, 其值为非0 内存申请内存单元 , 如果成功 , 其值为非 0 地 址值,否则值为0 址值,否则值为0。
该指针使用该类中某个成员函数名 进行初始化或赋值, 进行初始化或赋值,使用时应加类名限 定。
使用对象通过指向类的成员函数的 指针引用该成员时用运算符。 指针引用该成员时用运算符。*;使用对 象指针通过指向类的成员函数的指针引 用该成员时用运算符->*。 用该成员时用运算符->*。 见P243,例9.5 243,
3.指向类的成员的指针 (1)指向类的数据成员的指针 该指针指向类的某个数据成员, 该指针指向类的某个数据成员, 定 义时应加上类名限定。具体格式如下: 义时应加上类名限定。具体格式如下: 类型><类名>::* 指针名> ><类名 <类型><类名>::*<指针名>
该指针可以使用该类中某个数据成 员的地址进行初始化或赋值, 员的地址进行初始化或赋值 , 使用时应 加类名限定。即在数据成员地址值前加< 加类名限定。即在数据成员地址值前加< 类名>::。 类名>::。