面向对象程序设计期末复习分析
- 格式:doc
- 大小:204.00 KB
- 文档页数:6
C++面向对象程序设计--期末知识总结本次学习涵盖了八个章节的知识点,认识了面向对象的基本操作,会做一些简单的小系统,比以往更广泛地了解了C++语言。
首先是主要的知识点介绍,最后是我的一些学习感想。
关于知识结构,我想把类和对象的定义放在前面对象:是应用领域中明确角色的实体,有状态、行为和标识。
类:为描述一组对象在结构和行为上的共性,可以创建抽象数据类型,对一组具有相同结构和行为的对象的抽象描述,大致分为属性、操作。
一、指针和引用(一)指针的特点指针持有一个对象的地址,称为指针“指向”该对象;通过指针可以间接操纵它指向的对象。
(二)定义指针变量的语法类型指针变量;每个指针都有相关的类型,要在定义指针时指出,例如:int pi;(三)取地址运算符“&”指针存放指定类型对象的地址,要获取对象的地址,使用取地址运算符“&”。
int ival = 120;int *pi = &ival; // pi存放int变量ival的地址// 或者说pi指向ivalchar ch = ‘a’, *pc = &ch;// pc指向字符型变量ch(四)const限定指针指向const对象的指针(非const ):const type cp; 或者type const cp;cp是指向常量的指针,它所指向的内存中的内容不可以改变,即cp的值不能改变。
指向非const对象的const指针:type const cp = initAddressValue;cp是常量指针,初始化后值不能改变,指向固定的单元。
二、结构体和string(一)结构体结构体把一组来自不同类型的数据组合在一起构成复合类型,其中的每个数据都是结构体的成员。
结构体由关键字struct定义,语法形式:struct 结构体类型名{成员声明;};结构体的成员不能独立使用,必须由结构体类型的变量通过成员选择运算符“.”来选择,或者由结构体类型的指针通过“->”运算符选择。
《面向对象程序设计》总复习第一部分各章复习要点第1章C++一、基本知识1.面向对象程序设计的基本概念●类、对象、属性、方法2.面向对象程序设计的特点●封装、继承、多态二、基本技能1.VC++6.0编程环境的使用●编辑、编译、运行、查错●调试由多个文件组成的程序2.cin和cout的使用第2章数据类型与表达式1.数据的存储●基本类型:整型、实型、字符型、布尔型●构造类型:结构、联合、枚举2.数据的表示●常量、变量3.符号的表示●运算符、表达式第3章C++控制结构一、基本知识1.语句概述●控制语句●函数语句●表达式语句●空语句2.语句要点●格式、执行过程、注意事项二、基本技能1.递推法程序设计●前项推后项●外加循环控制2.穷举法程序设计●用循环列出所有情况●找出满足条件的情况第4章函数一、基本知识1.函数的概念●函数的声明●函数的定义●函数的调用2.函数●数据传递:主函数→子函数,子函数→主函数3.变量的存储类型●动态●静态●寄存器4.变量的作用域●全局变量●局部变量二、基本技能1.嵌套函数设计●并列定义嵌套调用2.递归函数设计●由未知推向已知的递推公式●格式:If 已知else 递推3.重载函数设计●相同:函数名●不同:函数类型、参数(个数或类型)4.函数技巧●内联函数、外联函数●带默认参数值的函数●引用第5章数组、指针与字符串一、基本知识1.数组的概念●一维数组●二维数组●字符数组2.指针●如何获取各种数据的指针●如何用指针表示各种数据●用指针处理数据的优势二、基本技能1.排序●选择法排序●冒泡法排序2.字符串处理●输入●处理:比较、赋值、连接●输出3.指针●指针的定义●指针的获取●用指针表示数据第6章类和对象一、基本知识1.类2.对象3.构造函数4.析构函数5.拷贝构造函数6.友元7.组合类二、基本技能1.构造类●数据●函数(构造函数、析构函数、拷贝构造函数)2.友元函数●定义与使用3.静态成员●定义与使用4.对象数组5.对象指针第7章继承与派生一、基本知识1.继承2.继承方式3.继承的分类4.继承的二义性5.虚基类6.虚函数与纯虚函数7.抽象类二、基本技能1.构造派生类●构造函数、析构函数、拷贝构造函数2.继承要点●子类的对象如何使用基类的成员●子类的成员如何使用基类的成员第8章多态性一、基本知识1.多态性2.运算符重载二、基本技能1.单目运算符重载●前置运算符重载●后置运算符重载2.双目运算符重载3.运算符重载为友元函数●解决重载的二义性第9章模板一、基本知识1.函数模板2.类模板二、基本技能1.函数模板●定义和使用2.类模板●定义和使用第10章输入输出流一、基本知识1.控制格式2.文件二、基本技能文件编程要点●定义文件对象●打开文件●读写数据●关闭文件第二部分复习要点(一)基本概念1.类(构造函数、析构函数、拷贝构造函数)和对象2.面向对象程序的特点3.重载函数4.友元函数5.虚基类6.虚函数、纯虚函数7.抽象类8.模板函数、模板类9.文件类(二)基本技能1.构造类2.构造派生类(单继承、多继承)3.构造抽象类4.定义重载函数5.定义友元函数6.定义运算符的重载7.定义模板函数8.文件对象的使用第三部分主要问题(一)基本概念1.面向对象程序设计的特点是什么?2.类有哪些成分组成?3.构造函数、析构函数和拷贝构造函数的作用?4.重载函数、友元函数的作用?5.类的继承方式有哪些?对子类的对象有何影响?6.虚基类的作用?7.虚函数、纯虚函数的作用?8.运算符重载的作用?9.模板函数、模板类的作用?10.抽象类的作用?(二)基本技能1.面向对象程序设计的技巧有哪些?2.面向对象程序实现软件复用的方法有哪些?3.面向对象程序设计的多态性体现在哪些方面?。
java面向对象程序设计知识点总结
以下是 Java 面向对象程序设计的一些重要知识点总结:
1. 类和对象:类是对象的抽象,对象是类的实例。
在 Java 中,通过定义类来描述对象的属性和方法。
2. 封装:将对象的属性和方法封装在一起,隐藏对象的内部实现细节,只暴露外部接口。
这有助于提高代码的可维护性和安全性。
3. 继承:允许一个类继承另一个类的属性和方法,从而实现代码的重用和扩展。
Java 中的继承是单一继承,即每个子类只能有一个父类。
4. 多态:指同一个方法在不同的对象上可以有不同的表现形式。
通过方法重写和接口实现来实现多态。
5. 抽象类和接口:抽象类是包含抽象方法的类,不能实例化;接口是只包含抽象方法的抽象类,用于定义一组行为规范。
6. 异常处理:Java 中的异常机制用于处理程序运行时可能发生的错误或异常情况。
通过使用 try-catch 块来捕获和处理异常。
7. 集合框架:Java 提供了丰富的集合类,用于存储和操作一组对象。
包括数组、列表、集合、映射等。
8. 文件 I/O:用于读取和写入文件。
包括文件的创建、打开、读取、写入、关闭等操作。
9. 线程:线程是程序执行的最小单位。
Java 提供了多线程编程的支持,包括创建线程、线程同步、线程通信等。
10. 数据库操作:Java 提供了 JDBC 库来与数据库进行交互,包括连接数据库、执行SQL 查询、处理结果集等。
以上是 Java 面向对象程序设计的一些重要知识点总结,希望对你有所帮助。
JAVA面向对象程序设计复习试题+解析1)在JAVA编程中,关于Font下列()是正确的。
(选择两项)a)在我们的程序中可以使用Font类中定义的字体常量。
b)我们可以使用Tookit类中的函数来获取我们的机器中java所支持的字体的列表c)我们可以自己创建字体实例对象d)以上说明都正确【解析】参考答案:A BFont属于java.awt包中的一个类,专门用来设置程序中的字体实例对象。
创建Font类的对象时使用的方法:getFont(int face,int style,int size);例如:Font font = Font.getFont(Font.FACE_SYSTEM,Font.STYLE_BOLD,Font. SIZE_MEDIUM);无论哪一个参数,都只能使用系统设置的数值,这些数值具体的大小在不同的手机上可能不同。
下面对于其中的三个参数的取值做详细的介绍:face参数指字体的外观;style参数指字体的样式;size参数指字体的大小。
这三个参数都是系统中定义好的一些常量。
获得系统的默认字体:Font font = Font.getDefaultFont();ToolKit类是 Abstract Window Toolkit 的所有实际实现的抽象父类。
Toolkit 用于把各种组件绑定到特定的本地工具箱实现上。
该类有个方法getFontList()用于返回该工具箱中可用字体名。
也就是可以获取机器中java所支持的字体的列表。
2)在Java语言中,在包Package1中包含包Package2,类Class_A直接隶属于包Package1,类Class_B直接隶属于包Package2。
在类Class_C要应用Class_A的方法A和Class_B 的方法B,你需要()语句。
(选择两项)a)import Package1.*;b)import Package1.Package2.*;c)import Package2.*d)import Package2.Package1.*;【解析】A BJava语言中的包机制就像Windows中的文件夹,用来归类类文件的位置。
OOP技术:面向对象程序设计期末复习指导面向对象程序设计课程系中央电大开放教育本科计算机科学与技术专业统设必修课程,本课程的期末复习以中央电大下发的资料和网上复习指导为准。
为了加强期末复习,下面市电大给出一套综合练习题,仅作参考。
综合练习题一、单选题1、 C++源程序文件的默认扩展名为( )。
A:cpp B:exe C:obj D:lik2、用new运算符创建一个含10个元素的一维整型数组的正确语句是( )。
A: int *p=new a[10];B: int *p=new float[10];C: int *p=new int[10];D: int *p=new int[10]={1,2,3,4,5}3、假定有“struct BOOK{char title[40]; float price;}; BOOK *book=new BOOK;”,则正确的语句为()。
A: strcpy((*book)->title,”Wang Tao”);B: strcpy(*book.title,”Wang Tao”);C: strcpy(book->title,”Wang Tao”);D: strcpy(book.title,”Wang Tao”);4、假定指针变量p定义为“int *p=new int[30];”,要释放p所指向的动态内存,应使用语句()。
A: delete p;B: delete *p;C: delete &p;D: delete []p;5、关于消息,下列说法中不正确的是()。
A: 发送消息的对象请求服务,接受消息的对象提供服务B: 消息的发送者必须了解消息的接收者如何相应消息C: 在C++中,消息的发送具体体现为对接收消息的对象的某个函数的调用D: 每个对象只能接收某些特定格式的消息6、对于任一个类,用户所能定义的析构函数的个数至多为( )。
A: 0 B: 1 C: 2 D: 任意个7、 do语句能够改写为()语句。
《面向对象分析与设计UML》期末总复习面向对象分析与设计(Object Oriented Analysis and Design,简称OOAD)是软件工程中的一种方法论,它通过对问题领域的深入理解和抽象,将问题领域的实体、行为和关系转化为可重用的软件组件,并通过UML(统一建模语言)进行建模和描述。
期末考试是对学生在学期期间所学知识的综合考察,下面将总结和复习面向对象分析与设计以及UML相关的内容。
一、面向对象分析与设计的基本概念:1.面向对象的特点:封装、继承、多态。
2.对象与类的区别:类是对象的抽象和模板,对象是类的一个实例。
3.面向对象分析(OOA):通过对问题领域的研究和理解,从问题的角度分析,确定问题的需求和约束。
4.面向对象设计(OOD):根据面向对象分析的结果,以软件系统的需求为基础,进行系统的结构设计。
5.面向对象编程(OOP):将面向对象设计的结果转化为软件代码的实现过程。
二、UML的基本概念和建模方法:1.UML的概念:UML是一种用于软件系统分析、设计和实现的建模语言,包括了结构图、行为图、交互图等多种图表。
2.UML的建模方法:使用UML图表和符号来表示和描述问题领域中的各种实体、行为和关系,如类图、对象图、用例图、时序图、活动图等。
3.UML类图的基本概念:类、对象、属性、操作、关联、依赖、继承、实现、聚合、组合等。
4.UML用例图的基本概念:用例、参与者、关系、泛化、包含、扩展等。
5.UML时序图的基本概念:对象、生命线、消息、激活、条件、循环、选择等。
6.UML活动图的基本概念:开始节点、结束节点、活动节点、决策节点、合并节点、分支、合并、流管道等。
三、面向对象分析与设计的过程和方法:1.需求获取和领域建模:通过与客户和用户的沟通,获取系统需求;对问题领域进行调研和建模,找出问题领域中的实体、行为和关系。
2.需求分析和用例建模:对需求进行分析,将需求抽象为用例,并建立用例模型,找出用例之间的关系和依赖。
面向对象编程期末总结题一、引言面向对象编程(Object-oriented programming,简称OOP)是一种以对象作为基本单位的编程范式,它的出现使得程序的设计更加模块化、可维护性更强,并且能够提高代码的复用性和开发效率。
在本次面向对象编程的学习中,我对面向对象的思想和原则有了更深入的理解,并通过实践项目与练习,进一步巩固了所学的知识。
以下是我对本次课程学习的总结与反思。
二、学习的内容在本次课程学习中,主要包括以下几个方面的内容:1. 面向对象的基本概念:类、对象、继承、封装、多态等;2. 面向对象的核心原则:单一职责原则、开放封闭原则、里氏替换原则、接口隔离原则和依赖倒置原则;3. 面向对象的设计模式:单例模式、工厂模式、策略模式、观察者模式等;4. 面向对象的编程语言:Java、C++等。
三、学习的收获通过本次的学习,我收获了以下几个方面的知识与技能。
1. 对面向对象的理解更加深入:在学习中,我进一步理解了面向对象的思想和原则,并且能够灵活运用到实际的项目中;2. 学会了使用面向对象的设计模式:通过实践项目与练习,我学会了使用一些常见的设计模式,如单例模式、工厂模式、策略模式等;3. 提高了编程的能力:通过课程学习,我的编程能力得到了提高,我能够更加熟练地运用面向对象的编程思想和技巧,设计出更加简洁、高效的代码;4. 加深了对编程语言的理解:通过学习面向对象的编程语言,如Java,我对其语法和特性有了更深入的理解,并能够熟练地运用这些知识。
四、项目实践与练习在本次学习中,我完成了几个面向对象编程的项目实践和练习,这些项目涵盖了面向对象的基本概念和一些常见的设计模式,通过实践和练习,我对面向对象编程有了更深入的了解和掌握。
1. 学生管理系统在这个项目中,我使用Java编写了一个学生管理系统,实现了学生的增删改查功能。
我使用了面向对象的思想,将学生抽象成一个类,每个学生对象包含了姓名、年龄、性别等属性。
面向对象程序设计复习面向对象程序设计(Object-Oriented Programming, OOP)是一种编程范式,它使用“对象”来设计软件。
对象可以包含数据(通常称为属性)和代码(通常称为方法或函数)。
面向对象程序设计的核心概念包括封装、继承、多态和抽象。
封装封装是将数据和操作这些数据的方法组合在一起的过程。
这样做可以隐藏对象的内部状态,只暴露出一个可以被外部访问的接口。
封装的目的是保护数据不被外部代码直接访问和修改,而是通过方法来进行操作。
继承继承允许一个类(子类)继承另一个类(父类或超类)的属性和方法。
这可以减少代码的重复,并且可以创建一个层次结构,其中子类可以扩展或修改父类的行为。
多态多态是指允许不同类的对象对同一消息做出响应,但具体的行为会根据对象的实际类型而有所不同。
这通常是通过方法重载(编译时多态)和方法重写(运行时多态)来实现的。
抽象抽象是简化复杂的现实世界问题的过程,只关注对于当前目标重要的方面。
在面向对象程序设计中,这通常意味着创建抽象类和接口,它们定义了一组方法的签名,但不提供实现细节。
类和对象类是创建对象的蓝图或模板。
它定义了对象的属性和方法。
对象是根据类创建的实例,每个对象都有其自己的状态和行为。
构造函数和析构函数构造函数是一种特殊的方法,当创建新对象时自动调用,用于初始化对象的状态。
析构函数是类的另一个特殊方法,当对象被销毁时调用,用于清理资源。
访问修饰符访问修饰符控制类成员的可见性。
常见的访问修饰符包括public(公开的)、private(私有的)、protected(受保护的)和friend(友元)。
接口和抽象类接口定义了一组方法的签名,但不提供实现。
抽象类可以包含抽象方法,这些方法必须在子类中实现。
组合和聚合组合是一种特殊的“has-a”关系,其中一个对象包含另一个对象作为其属性。
聚合是一种更弱的“has-a”关系,其中一个对象可以与另一个对象相关联,但不是其属性。
《面向对象程序设计》复习要点及复习题(一)复习要点1.标识符、基本数据类型(字节数)、构造数据类型、运算符的种类、运算符的优先级和结合性、控制台输入和输出2.三种基本控制结构、if…else语句、switch语句、for语句、while语句、do…while语句、跳转语句;函数参数传递、函数重载、内联函数;标识符的作用域和生存期。
3.类的定义和使用、this指针、构造函数和析构函数、组合技术、静态成员、友元、运算符重载4.指针与数组、二级指针、动态内存的分配与释放、深复制与浅复制、递归。
5.派生类的构造与析构、派生类与基类的赋值兼容、多重继承与虚基类。
6.虚函数与动态绑定、纯虚函数与抽象类(二) 复习题一、单项选择题。
1.在switch语句中,为了结束分支,一般应在每个分支的结尾处加上语句(C)。
A. continueB. gotoC. breakD. default2.说明友元函数的关键字是(D)。
A. inlineB. virtualC. staticD. friend3.下面对指向常量的指针描述正确的是(C)。
A. 只能指向常量B. 指向的数据可以被修改C. 可以指向普通变量D. 必须进行初始化4.友元函数没有(A)。
A. this指针B. 返回类型C. 函数名D. 参数5.关于重载,(A)不正确。
A. 类名可以重载B. 函数名可以重载C. 运算符可以重载D. 缺省参数是重载的一种方式6.用new分配n维数组空间,首地址赋予指针p,则p应为指向(C)维数组的指针。
A. 0B. 1C. n-1D. n7.为类X重载前缀自增运算,则函数返回类型应为(C)。
A. XB. X*C. X&D. int8.以下(A)未调用构造函数(X为类名)。
A. X*p;B. X obj;C. X obj(1);D. X obj=2;9.若在类外有函数调用X::func();则函数func是类X的(C)函数。
c面向对象程序设计期末面向对象程序设计期末复习面向对象程序设计(Object-Oriented Programming,简称OOP)是一种以对象为核心,以类为单位来组织代码的编程范式。
它强调的是数据和功能的封装、继承和多态性,使得代码更加模块化、易于理解和维护。
以下是面向对象程序设计期末复习的主要内容:1. 面向对象的基本概念- 对象:对象是现实世界中事物的抽象,它具有状态(属性)和行为(方法)。
- 类:类是对象的模板,定义了对象的属性和方法。
- 封装:封装是将对象的实现细节隐藏起来,只暴露有限的操作接口。
- 继承:继承允许新创建的类(子类)继承现有类(父类)的属性和方法。
- 多态:多态是指允许不同类的对象对同一消息做出响应,但具体的行为会根据对象的实际类型来确定。
2. 类和对象- 如何定义类:使用类关键字和类名,然后在类体中定义属性和方法。
- 对象的创建:使用类名作为构造函数来创建对象实例。
- 访问修饰符:public、private、protected等,用于控制类成员的访问权限。
3. 继承- 单继承:一个类只能继承一个父类。
- 多重继承:一个类可以继承多个父类。
- 继承的实现:通过扩展父类的功能来创建子类。
4. 多态- 多态的实现:通过方法重载(Overloading)和方法重写(Overriding)。
- 接口:定义了一组方法规范,但不实现方法的具体内容。
- 抽象类:不能被实例化,用于作为其他类的基类。
5. 封装- 封装的实现:通过将类的成员变量设置为私有(private),并提供公共(public)的方法来访问和修改这些变量。
6. 抽象类和接口- 抽象类:包含抽象方法的类,不能被实例化。
- 接口:完全抽象的类,只能包含抽象方法和常量。
7. 异常处理- 异常:程序运行时出现的非预期情况。
- 异常处理机制:try、catch、finally语句块,用于捕获和处理异常。
8. 集合框架- 集合:用于存储对象的容器。
《面向对象程序设计》课程期末复习提要中央电大理工部计算机教研室《面向对象程序设计》课程是中央电大计算机科学与技术专业(本科)一门必修的专业基础课。
该课程主要介绍如何用C++语言进行面向对象程序设计,因此C++语言的介绍是本书的重点,也是学员需要掌握的重点。
下面按照主教材内容次序给出具体复习要求,供同学们进行期末复习时参考。
各部分复习提要第一部分程序设计基础复习知识点:C++程序的基本结构基本数据类型常量、变量的定义与使用常用运算符的使用表达式的分类和使用简单的输入输出复习要求:1.理解:C++程序的基本组成。
2.应用:能够编写简单的程序,能完成简单数据类型数据输入、利用变量存放输入数据,利用常量存放固定数据,利用运算符进行简单的运算,并能够将结果输出(如书中2.6, 2.7题)。
3.应用:能进行比较复杂的表达式运算(如书中3.1,3.2,3.3题* )。
第二部分语句与操作流程复习知识点:语句的分类分支语句循环语句转移语句复习要求:1.理解:语句按功能分为:操作运算语句和流程控制语句,其中操作运算语句按复杂程度分为简单语句和复合语句。
2.应用:能够根据程序要求选择合适的流程控制语句(如书中4.2,4.4,4.5题)。
3.应用:能够用多种循环语句实现一种循环的程序要求(如书中4.1题)。
4.综合应用:综合运用各种语句完成比较复杂的程序逻辑(如书中4.9题)。
第三部分函数复习知识点:模块化程序设计函数的定义函数的定义与函数原型函数参数的类型与传递方式全局变量和局部变量函数调用机制递归函数函数重载函数的默认参数静态局部变量复习要求:1.理解:模块化程序设计与函数的关系。
2.理解:默认参数的含义与用法,能够在程序中正确使用默认参数。
3.理解:全局变量、局部变量、静态变量的含义,能够在程序中正确选择使用静态、局部和全局变量。
4.应用:将一些功能明确的代码封装在函数中(如书中5.1,5.2,5.3题)。
5.应用:利用递归函数来简化程序设计(如书中5.7题)。
南开15春《面向对象程序设计》期末复习资料一、客观部分:(单项选择、多项选择、不定项选择、判断)(一)、选择部分1、面向对象程序设计方法以( C )为中心进行分析和设计。
A、结构B、模块C、对象D、类★考核知识点: 程序设计的基本概念附1.1.1(考核知识点解释):面向对象程序设计方法以“对象”为中心进行分析和设计,将对象设计成解决目标问题的基本构件,思想是先将问题空间划分为一系列对象的集合,再将具有相同属性和行为的对象抽象成一个类,采用继承机制来建立这些类之间的联系,形成结构层次。
面向对象程序设计方法的本质就是不断设计新的类和创建对象的过程。
2、下列关于主函数的叙述中正确的是( B )。
A、一个程序可以有多个主函数B、程序从主函数开始执行C、一个程序可以没有主函数D、主函数是一个特殊的函数,因此其结构与其他函数不同★考核知识点: C++源程序的组成附1.1.2(考核知识点解释)一个C++程序一般由多个函数组成。
这些函数可以是用户根据需要编写的自定义函数,也可以是直接使用系统提供的标准库函数。
函数体用一对花括号“{”和“}”括起来。
任何一个程序必须有且仅有一个主函数main,程序从主函数开始执行。
3、有关带默认参数的函数的描述正确的是( D )。
A、只能在函数定义时设置默认参数值B、只能在函数声明时设置默认参数值C、函数调用时,必须使用默认的参数值,不能给出新的实参值D、设置默认参数时,应该设置最右边的若干个参数的默认值★考核知识点: 带默认形参值的函数附1.1.3(考核知识点解释)在调用函数时,需要针对函数中的每一个形参给出对应的实参。
C++中允许在函数定义或函数声明时给出默认的形参值。
在调用函数时,对于有默认值的形参,如果没有给出相应的实参,则函数会自动使用默认形参值;如果给出相应的实参,则函数会优先使用传入的实参值。
默认形参值可以在两个位置指定:如果有函数声明,则应在函数声明处指定;否则,直接在函数定义中指定。
题型判断---10/10 选择----30/15 简答----20/5 程序理解---20 程序设计—201.虚析构函数的作用析构函数的目的在于在使用delete运算符删除一个对象时,能保析构函数被正确地执行。
因为设置虚析构函数后,可以采用动态联编方式选择析构函数。
只要基类声明了虚析构函数,则它所有的派生类均不用再将析构函数声明为虚的(拓展:虚析构函数例如:Virtual^Point (){};构造函数不能声明为虚函数,因为在执行构造函数时对象还未完成建立过程,当然谈不上把函数与对象的绑定如果基类的析构函数为虚析构函数时,无论指针指向基类的指针同意了族中的哪一个对象。
系统都采用动态关联,调用相应的析构函数,对对象进行清理如果基类的析构函数为虚析构函数,派生类的析构函数自动转化为虚析构函数(即使派生类与基类析构函数的名字不同))2.拷贝函数在哪几种情况下 P103复制构造函数在用已有对象复制一个新对象时调用(1)程序中需要建立一个对象,并用另一个同类的对象对它初始化(2)当函数的参数为类的对象时。
调用函数时需要将实参对象完整的传递给形参,也就需要建立一个实参的拷贝。
这就是实参复制一个形参,系统是通过调用复制构造函数来实现的,这样才能保证形参具有和形参相同的值。
(3)函数的返回值是类的对象时,在函数调用完毕将返回值带回函数调用处时。
此时需要将函数中的一个对象复制一个临时对象并传给该函数的调用处(拓展:Box(const Box &b){c=b.c;o=b.0;})3.函数重载与覆盖的异同,他们与多态的关系是函数重载:是在同一个类中,相同名称不同形式参数的若干个函数,因此只要参数不同就可以调用这些同名称而不同内容的函数。
覆盖(也叫重写):是指在派生类中重新对基类中的虚函数(注意是虚函数)重新实现。
即函数名和参数都一样,只是函数的实现体不一样。
(拓展:虚函数是父类与子类中名称相同且参数相同的函数,因此在定义对象时,如果对象是是父类的对象执行的是父类的虚函数,如果对象是子类的对象执行的是子类虚函数。
一、单项选择题( 在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内。
每小题1 分,共20 分)3.下列不属于面向对象技术的基本特征的是(B)。
A. 封装性B. 模块性C. 多态性D. 继承性4. 面向对象程序设计将描述事物的数据与(C ) 封装在一起,作为一个相互依存、不可分割的整体来处理。
A. 信息B. 数据隐藏C. 对数据的操作D. 数据抽象5. 关于面向对象方法的优点,下列不正确的叙述是(C )。
A. 与人类习惯的思维方法比较一致B. 可重用性好C. 以数据操作为中心D.可维护性好8. 下列不属于类的成员函数的是( C )。
A. 构造函数B. 析构函数C. 友元函数D. 拷贝构造函数9. 继承机制的作用是( C )。
A. 信息隐藏B. 数据封装C. 派生新类D. 数据抽象14. (D )是从用户使用系统的角度描述系统功能的图形表达方法。
A. 类图B. 对象图C. 序列图D. 用例图15. (C ) 是表达系统类及其相互联系的图示,它是面向对象设计的核心,建立状态图、协作图和其他图的基础。
A.对象图 B. 组件图 C. 类图 D. 配置图16.(D )描述了一组交互对象间的动态协作关系,它表示完成某项行为的对象和这些对象之间传递消息的时间顺序。
A.对象图 B. 协作图 C. 状态图 D. 序列图17.(D )就是用于表示构成分布式系统的节点集和节点之间的联系的图示,它可以表示系统中软件和硬件的物理架构。
A. 组件图B. 协作图C. 状态图D. 配置图18. 在用UML进行数据库的分析与设计过程中,( B ) 就是进行数据库的需求分析,使用用例图、类图、顺序图、活动图等建立业务模型。
A. 逻辑数据模型设计 B 业务Use Case模型设计C. 物理数据模型设计D. 物理实现设计19. 使用UML进行关系数据库的(B )时,需要设计出表达持久数据的实体类及其联系,并把它们映射成为关系数据库表(Table)、视图(View)等。
A. 业务Use Case模型设计B. 逻辑数据模型设计C. 物理数据模型设计 C. 物理实现设计20. UML的动态建模表示包含(C )种图。
A. 9B. 5C. 4D. 2二、填空题( 每空1 分,共20 分)1. 面向对象开发方法一改过去传统的以_功能分析,面向过程_为基础的_对象_的结构化分析与设计方法,它模拟人们理解和处理客观世界的方式来分析问题,把系统视为一系列_对象_的集合,其__面向对象的设计_又将分析的结果映射到某种面向对象实现工具的结构上,使映射过程有着比较直接的对应关系,使分析者、设计者和编程者都可使用相同的__概念_,从而使面向对象的软件开发能比较自然地模拟客观世界的活动,使问题描述空间与___解空间___在结构上尽可能一致。
因此,采用面向对象方法可以更有效地开发大型软件系统。
面向对象方法的_封装__、__继承_、_多态_等机制不仅支持软件复用,而且使软件维护工作可靠有效,可实现软件系统的柔性制造,更好地克服_软件危机__。
因此,它已成为成熟的广为采用的软件开发方法。
2. 对象是客观实体的抽象表示,是由___描述对象属性的数据___和____对这些数据进行的操作行为___两部分组成。
而___类___是对具有相同属性和行为的一组对象的抽象描述。
因此,它可作为一种用户自定义类型和创建对象的样板,而按照这种样板所创建的一个个具体对象就是类的_____实例___。
通过___继承__关系又可形成一种类层次结构。
3. UML中用于描述系统的静态建模的视图称为静态视图,包括___用例图___、____类图___、____对象图___、____包图___和___构件图、配置图__。
什么是面向对象?面向对象的基本特征有哪些?你是如何理解的。
软件工程学家认为:面向对象=对象+类+继承+通讯。
客观世界是由对象组成的。
具有相同类型数据和相同操作的对象可以归并为一类,对象是类的一个实例。
类可以产生子类,子类继承父类的特性。
对象之间通过消息传递相互联系。
面向对象的基本特征:抽象,封装,继承和多态。
类和对象的定义类是现实世界或思维世界中的实体在计算机中的反映,它将数据以及这些数据上的操作封装在一起。
对象是具有类类型的变量。
面向对象的基本特点:1)对象唯一性。
每个对象都有自身唯一的标识,通过这种标识,可找到相应的对象。
在对象的整个生命期中,它的标识都不改变,不同的对象不能有相同的标识。
(2)分类性。
分类性是指将具有一致的数据结构(属性)和行为(操作)的对象抽象成类。
一个类就是这样一种抽象,它反映了与应用有关的重要性质,而忽略其他一些无关内容。
任何类的划分都是主观的,但必须与具体的应用有关。
(3)继承性。
继承性是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系。
在定义和实现一个类的时候,可以在一个已经存在的类的基础之上来进行,把这个已经存在的类所定义的内容作为自己的内容,并加入若干新的内容(4)多态性(多形性)多态性使指相同的操作或函数、过程可作用于多种类型的对象上并获得不同的结果。
不同的对象,收到同一消息可以产生不同的结果,这种现象称为多态性。
二、面向对象的基本概念(1)对象。
对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。
(2)对象的状态和行为。
对象具有状态,一个对象用数据值来描述它的状态。
对象还有操作,用于改变对象的状态,对象及其操作就是对象的行为。
对象实现了数据和操作的结合,使数据和操作封装于对象的统一体中(3)类。
具有相同或相似性质的对象的抽象就是类。
因此,对象的抽象是类,类的具体化就是对象,也可以说类的实例是对象。
类具有属性,它是对象的状态的抽象,用数据结构来描述类的属性。
类具有操作,它是对象的行为的抽象,用操作名和实现该操作的方法来描述。
(4)类的结构。
在客观世界中有若干类,这些类之间有一定的结构关系。
通常有两种主要的结构关系,即一般--具体结构关系,整体--部分结构关系。
①一般——具体结构称为分类结构,也可以说是“或”关系,或者是“is a”关系。
②整体——部分结构称为组装结构,它们之间的关系是一种“与”关系,或者是“has a”关系。
(5)消息和方法。
对象之间进行通信的结构叫做消息。
在对象的操作中,当一个消息发送给某个对象时,消息包含接收对象去执行某种操作的信息。
发送一条消息至少要包括说明接受消息的对象名、发送给该对象的消息名(即对象名、方法名)。
一般还要对参数加以说明,参数可以是认识该消息的对象所知道的变量名,或者是所有对象都知道的全局变量名。
UML中的交互图有两种,分别是顺序图和协作图,请分析一下两者之间的主要差别和各自的优缺点。
答:协作图可视化地表示了对象之间随时间发生的交互,它除了展示对象之间的关联,还显示出对象之间的消息传递。
与顺序图一样,协作图也展示对象之间的交互关系。
顺序图强调的是交互的时间顺序,而协作图强调的是交互的语境和参与交互的对象的整体组织。
顺序图按照时间顺序布图,而协作图按照空间组织布图。
顺序图可以清晰地表示消息之间的顺序和时间关系,但需要较多的水平方向的空间。
协作图在增加对象时比较容易,而且分支也比较少,但如果消息比较多时难以表示消息之间的顺序。
试说明应用UML在软件开发过程中的步骤。
1.UML通常用于软件开发的“需求分析”和“设计”阶段,即在“编码”阶段之前。
2.采用标准的图示化的方式说明系统的需求、进行结构设计,通常称作建模。
3.最早用于采用面向对象编程的语言,即面向对象方法。
现在也用于其它行业的建模。
4.java只是一种编程语言,一种开发工具。
用它去开发或实现某个系统和产品时,首先需要了解和回答用它要做什么?你可以用文档也可以用图形来说明,但UML表示法是最标准和通用的,UML可让其它与你配合的人更清楚你的想法。
图形是最简洁的表述思想方式。
2.简述面向对象技术的三大机制。
答:(1)封装性:所谓封装就是把对象的属性和行为结合成一个独立的单位,使外界不能直接访问或修改这些数据和代码,外界只能通过对象提供的接口函数来改变或获取对象的属性数据,这就实现了消息隐蔽。
(2)继承性:如果在一个已定义的类上,增加一些特殊属性或操作,可以形成一个新的类,这个类不仅继承了前一个类的全部特征,而且具有新的特性,因此可看作前一个类的特例,是对前一个类的继承。
前一个类称为父类,新产生的类叫做子类。
通过继承关系可形成一种类层次结构,叫做继承结构。
(3)多态性:在类层次结构的不同类中,可用相同的函数名实现功能不同的函数。
3. 简述OOA模型的层次结构答:OOA模型采用五层次结构,它们分别是:(1)对象-类层:划分待开发系统及其环境信息的基本构造单位,标出反映问题域的对象和类,并用符号进行规范的描述,用信息提供者熟悉的术语为对象和类命名。
(2)属性层:定义对象和某些结构中的数据单元,继承结构中所有类的公共属性可放于通用类中。
标识对象类必需的属性并放在合适的继承层次上,属性的特殊限制和实例连接关系也应标识出来。
(3)服务层:表示对象的服务或行为,即是要定义类上的操作。
(4)结构层:标识现实世界中对象之间的关系。
当一个对象是另一个对象的一部分时,用"整体-部分"关系表示;当一个类属于另一个类时,用类之间继承关系表示。
(5)主题层:可将相关类或对象划分为一个主题。
在UML中主要包括的视图为静态视图、用例视图、交互视图、实现视图、状态机视图、活动视图、部署视图和模型管理视图。
系统用例图如下(a)选课管理的用例图学生(b )成绩管理的用例图对象类图如下:(a )选课对象类图(b )成绩管理对象类图学生借书时序图:。