第2章面向对象技术基础

合集下载

面向对象技术与UML

面向对象技术与UML

继承性举例
继承传递:大学生可以继承“人”和“学生”的特
征 父类 多重继承: 在职研究生既可以继承“学生”的特 征,又可以继承“教师”的特征 人
工人 学生 教师 农民
中学生 大学生 研究生 派生类
助教
讲师
具有继承关系的对象的特性
对象类间具有共享特征(包括数据和程序代
码的共享) 对象类间具有细微的差别或新增部分(包括 非共享的程序代码和数据) 对象类间具有层次结构。 继承所具有的作用有两个方面:
第二节 面向对象分析
本节要求了解面向对象分析的基本过程和基本原则 OOA: Object-oriented Analysis . 指利用面向对象的概念和方法构建软 件模型。 面向对象分析的基本过程 理解 表达
验证
对理解和表达进 行校验,以达到 理想效果。
需求
建立模型
在面向对象分析中,主要建立对象模型,动态模型和功能模型。 对象模型是最基本最重要的模型。
3) 可重用性好 有两种方法可以重复使用一个对象类:一种方法是创 建该类的实例,从而直接使用它;另一种方法是从它 派生出一个满足当前需要的新类。 4)较易开发大型软件产品 5)可维护性好
2.1.2 喷泉模型
“喷泉”这个词体现了面向对象软 件开发过程迭代和无缝的特性。 图中代表不同阶段的圆圈相互重 叠,这明确表示两个活动之间存 在交迭;而面向对象方法在概念 和表示方法上的一致性,保证了 在各项开发活动之间的无缝过渡, 事实上,用面向对象方法开发软 件时,在分析、设计和编码等项 开发活动之间并不存在明显的边 界。图中在一个阶段内的向下箭 头代表该阶段内的迭代(或求 精)。图中较小的圆圈代表维护, 圆圈较小象征着采用了面向对象 范型之后维护时间缩短了。

面向对象程序设计教案

面向对象程序设计教案

面向对象程序设计教案第一章计算机与程序设计基本内容:1.把程序及其相关文档资料称为软件。

2.程序设计语言是人类用来向计算机传递信息的表示方法、约定和规则的集合。

3.传统的程序设计语言是过程性语言,使用这类语言编制程序的主要工作,是设计解题过程,因此称为面向过程程序设计。

4.用模块化、抽象、信息隐藏、局部化和模块化独立等原理及结构程序设计技术指导面向过程程序设计,能够提高软件开发效率,增加软件的可理解性和可维护性。

这些方法不仅适用于面向过程程序设计也适用于面向对象程序设计方法。

5.面向对象方法有四个要点,只有同时使用对象、类、继承和消息的方法,才是真正的面向对象方法。

学习面向对象程序设计,首先要学会面向对象的思维解题方法。

各种面向对象的程序设计语言,无非是实现面向对象解题方法的工具。

6.面向对象方法的主要优点是,接近人类习惯的思维方法、稳定性好、可重用性好和可维护性好。

是解决软件开发面临的难题的最有希望最有前途的方法之一。

1.1 计算机的基本结构1.2 程序设计语言一、机器语言(machine language):以0和1表示手工操作二、汇编语言(assembler language):例如mov ax,100add ax,bx等开始使用批处理(batch processing)三、高级语言(high-level language):如60年代的ALGOL四、结构化程序设计(structured programming)整个程序是一个模块层次(hierarchy of modules)每一模块内既有数据,又有代码,用于按一定算法对代码进行操作如FORTRAN,C等五、面向对象的程序设计(Object-Oriented Programming, OOP)1.3 面向过程程序设计三种基本结构:1、顺序结构。

2、选择结构。

3、循环结构:当型循环结构;直到型循环结构。

结构化程序设计方法:1、自顶而下;2、逐步细化;3、模块化设计;4、结构化编码。

第2章 C++面向对象程序设计

第2章  C++面向对象程序设计

其中,a和b都是COne对象常量,初始化后就不能再被更新。
2.1.7 常类型
2. 常指针和常引用
const的位置不同,其含意也不同,它有三种形式。
指向常量的指针:不能改变数据值,但可以改变指针本身的值
int a = 1, b = 2; const int *p1 = &a; *p1 = 2; p1 = &b;
第2章 C++面向对象程序设计
(C++ Object-oriented Programming)
2.1 类和对象
• 类和对象的关系
– 任何对象都是它所属类的一个实例 – Any object is an instance of the class
2.1 类和对象 现实问题空间 意识: 表 物质: 小张/小李…的手表 面向对象解空间 抽象概念: 表类 具体事物: 一个对象:表的实例
2.1.3 构造函数和析构函数
只有在下列两种情况下才会被自动调用: (1) 当对象定义在一个函数体中,该函数调用结束后,析构函 数被自动调用。 (2) 用new为对象分配动态内存,当delete释放对象时,析构函 数被自动调用。
3. 默认构造函数和析构函数
在用户定义对象时,编译器会自动根据对象定义的格式 选择相应的构造函数。 CMeter( ){ } // 默认构造函数的形式 ~CMeter( ) { } // 默认析构函数的形式
2.1.7 常类型
1. 常对象
<类名> const <对象名> const <类名> <对象名>
class COne { public: COne(int a, int b) { x = a; y = b; } … private: int x, y; }; const COne a(3,4); COne const b(5,6);

面向对象程序设计(谭浩强版)

面向对象程序设计(谭浩强版)
可重用性较好
一、面向过程与面向对象程序设计
面向过程程序设计 面向对象程序设计
P5 P6 P4 P3 P2 P1
O5 O4 O3 O2 O1
一、面向过程与面向对象程序设计
面向过程程序设计 面向对象程序设计
O5 O4 O3 O2 O1
二、抽象在面向对象中的作用
Ⅰ、抽象的概念 抽象代表着一个对象的本质特征,这个特征将 这个对象与所有其他种类的对象区别开来; 抽象是通过从特定的实例中抽取共同的性质以 形成一般化的概念的过程; 抽象具有层次;
在计算机语言发展史上具有划时代的意义, 引入了许多程序设计概念。如变量、数组、循环、 分支等。
20世纪50年代中期,Algol语言 提出块(Begin…End)思想,对数据进行保护, 是一种初级封装。
1.1 从C到C++
20世纪60年代中期,Simula 67语言 面向对象语言的鼻祖,提出了对象、类的概 念,并支持类的继承。 20世纪70年代中期,Ada语言
1.2 最简单的C++程序
例1.3:输入两个数x和y,求两数中的大者。
#include<iostream> using namespace std; 函数声明 int main() { int max(int x,int y); int a,b,c; cin>>a>>b; c=max(a,b);//函数调用 cout<<"max="<<c<<endl; return 0; } int max(int x,int y) {int z; if(x>y) z=x; else
注意其两面性
1.1先研究事物,而后才能研究过程。必须 先知道一个事物是什么,而后才能觉察这个事物 中所发生的变化。 《路德维希· 费尔巴哈和德国古典文学的终结》

第2章 面向对象技术与UML-郭

第2章 面向对象技术与UML-郭

在结构化方法中,现实世界被映射为功能(函数)的集合。
结构化方法的特点: 结构化程序设计:程序 = 算法 + 数据结构 从算法的角度进行建模,大量精力都集中在控制流程和 算法的分解上(功能分解)。 缺点:需求变动、维护困难
2.1 面向对象技术概述

面向对象方 法的引入: 软件复杂性 的增长, 使软件开发 越来越困难。 面向对象的 方法按照人 类的自然思 维的方式, 面对客观世 界建立软件 模型。
对象的标识(名字)

每一个对象都有一个唯一的标识, 即使其状态有可 能与其它对象一样。
no1 no2 no3
对象的状态(数据属性)

一个对象的状态是它反映于现实世界的一系列 属性:

基本描述 载客人数 它与其它对象的关系 任一时刻的历史状态
飞机类型 飞机驾驶员 所属的航空公司
可能的状态: 停泊 班机 747 飞行 着陆
继承的描述
子类可以继承父类的全部属性与操作,并 可以添加或重新定义所继承的方法。 如果是重新定义,称为覆盖。
注意:覆盖和重载是不同的。

覆盖的例子

重载的例子
public class A{ String name; public String getValues(){ return “Name is”+name; } } public class B extends A{ String address; public String getValues(){ return “address is”+address; } }
6. 多态性


定义:同一操作作用于不同的对象,可以有 不同的解释,产生不同的执行结果。 例子: 动物叫

第2章 面向对象程序设计

第2章 面向对象程序设计
理解构造函数的作用,掌握其使用方法。
4
本章目标
静态类与静态类成员的定义与使用 类的继承性与多态性 虚方法的概念、目的
抽象方法和抽象类 接口
嵌套类、分部类和命名空间
5
OOP—类和对象


厨房
门廊 浴室 书房
相对对象而言,类似于蓝图 包含方法和数据
饭厅 起居室 储藏室
ew 创建 对象具有行为
在方法声明的类定义中调用该方法
方法名(参数列表)
Sum(x,y)
在方法声明的类定义外部调用该方法,需要通 过类声明的对象调用该方法
对象名.方法名(参数列表)
add.Sum(x, y);
17
类的方法—方法调用
实现两个整型的加法
class Add { public int Sum(int para1, int para2) { return para1 + para2; } 返回结果 } 形式参数
Add a=new Add (); int r=4* a.Sum(5, 6);
作为另一个方法的参数来使用
Add a=new Add (); int r=a.Sum(a.Sum(5, 6), 8);
19
方法调用小结
方法之间允许相互调用,不需要知道方法的具 体实现,提高了效率
情况 1、类Student 的方法a()调用Student 类的方法b(),直接调用 举例 public void a(){ b(); //调用b() }
类成员的访问
类内部——直接访问(或用-this.类成员) 类外部——对象名.类成员
9
= "令狐冲";
类的定义—访问修饰符 2-1
Teacher 类

JAVA语言与面向对象程序设计课后习题答案

JAVA语言与面向对象程序设计课后习题答案

JAVA语言与面向对象程序设计课后习题答案第1章面向对象软件开发概述1.简述面向过程问题求解和面向对象问题求解的异同。

试列举出面向对象和面向过程的编程语言各两种。

请问:面向过程问题解,以具体内容的解题过程为研究和同时实现的主体,其思维特点更吻合于计算机;面向对象的问题解,则就是以d对象‖为主体,d对象‖就是现实世界的实体或概念在计算机逻辑中的抽象化则表示,更吻合于人的思维特点。

面向过程的编程语言:c,pascal,foratn。

面向对象的编程语言:c++,java,c#。

2.详述对象、类和实体及它们之间的相互关系。

尝试从日常碰触至的人或物中抽象化出来对象的概念。

答:面向对象技术中的对象就是现实世界中某个具体的物理实体在计算机逻辑中的映射和体现。

类是同种对象的集合与抽象。

类是一种抽象的数据类型,它是所有具有一定共性的对象的抽象,而属于类的某一个对象则被称为是类的一个实例,是类的一次实例化的结果。

如果类是抽象的概念,如d电视机‖,那么对象就是某一个具体的电视机,如d我家那台电视机‖。

3.对象存有哪些属性?什么就是状态?什么就是犯罪行为?二者之间有何关系?建有对象d学生‖,精义这个对象设计状态与犯罪行为。

答:对象都具有状态和行为。

对象的状态又称作对象的静态属性,主要指对象内部所涵盖的各种信息,也就是变量。

每个对象个体都具备自己专有的内部变量,这些变量的值标明了对象所处的状态。

行为又称为对象的操作,它主要表述对象的动态属性,操作的作用是设置或改变对象的状态。

学生的状态:姓名、性别、年龄、所在学校、所在系别、通讯地址、电话号码、入学成绩等;学生的行为:自我介绍、入学注册、选课、参加比赛等。

4.对象间存有哪三种关系?对象d班级‖与对象d学生‖就是什么关系?对象d学生‖与对象d大学生‖就是什么关系?答:对象间可能存在的关系有三种:包含、继承和关联。

对象d班级‖与对象d学生‖是包含关系。

对象d学生‖与对象d大学生‖是继承关系。

C++程序设计04737 第2章 面向对象的基本概念

C++程序设计04737 第2章 面向对象的基本概念

void myDate::setDate(myDate oneD)
{year=oneD.year;month=oneD.month;day=oneD.day;return;}
myDate myDate::getDate()
{return *this;}
void myDate::setYear(int y)
例2-4单项选择题
下列关于类定义的叙述中,正确值 B.类中可以声明成员函数,并可以给出参数的默认值
C.类体不能为空,即必须定义成员变量及成员函数 D.类中仅能包含成员变量
答案:B
例2-5单项选择题
若Test类中的一个成员函数set的说明如下:void set (Test &a);
联函数。
如果成员函数定义在类体外,则类体内必须要有函数原型,类体外函数定义的前面必须用“类
名::”来限定,格式如下:
返回值类型 类名::成员函数名(参数列表)
{
成员函数的函数体
}
类名是成员函数所属类的名字,符号::是类作用域运算符,表明后面的成员函数是属于
类名标识的这个类的。返回值类型就是这个成员函数返回值的类型
第三节 类的初步知识
一、类的定义 面向对象方法中的类,是对具有相同属性和行为的同一类对象的抽象描述,其内部包
括属性(本类的成员变量)和行为(本类的成员函数)两个主要部分,即类以数据为 中心,把相关的一批函数组成为一体。 例2-2描述扑克牌的属性
扑克牌定义为Poker。每张牌由花色和点数描述,可以定义为类Poker的两个属性, suits和number。Poker类的操作,可以根据玩法确定。
获取函数。
类中的成员按功能划分,包括成员变量和成员函数;按访问权限划分,包括公有成员、私有成

java面向对象程序设计第二章

java面向对象程序设计第二章

简单数据类型及其对应包装类
简单数据类型不是类,但Java提供了与简单类型对应的包装类
普通数据 类型
char byte short
对应的包 装类
Character Byte Short
它们之间的相互转化方法为(以int和 Integer为例): 简单数据类型转化为类对象的方法是:
通过相应类的构造方法来完成。如
Java 初级
第二章 Java语言基础
主要内容

简单数据类型 表达式Βιβλιοθήκη 控制语句简单数据类型
标识符

定义:程序员对程序中的各个元素加以命名时使用的命 名记号称为标识符(identifier)。 Java语言中,标识符是以字母,下划线“_‖,美元符“$‖ 开始的一个字符序列,后面可以跟字母,下划线,美元 符,数字。例如,identifier,userName,User_Name, _sys_val, $change为合法的标识符,而2mail(数字开 头)、 room#(非法字符)、class(关键字)、a-class(含 有运算符)都为非法的标识符。


浮点型(Cont)
实型变量的类型:
数据类型 float double 所占位数 32 64 数的范围 1.4E-45 ~3.4E+38 4.9E-324 ~1.7E308
定义一个float类型的浮点数方法

给一个带小数的数后面加上f(包括科学计数法)。 将能隐式转化的数赋值给浮点变量:如char类型、整型 (十进制、八进制、十六进制)。

在选用整数类型上,一定要注意数的范围,否则可能 由于数的类型选择不当而造成溢出,例如下面的代码 add就存在着潜在的溢出问题,从而为程序带来Bug

面向对象分析与设计(第二版)习题答案

面向对象分析与设计(第二版)习题答案

面向对象分析与设计(第二版)习题答案第一章:面向对象基础知识1.1 什么是面向对象分析和设计?面向对象分析和设计(Object-Oriented Analysis and Design,OOAD)是软件工程中一种常用的方法论,通过将问题领域进行建模,通过对象、类、继承、封装等概念来描述现实世界中的实体、关系和行为。

面向对象分析和设计的目标是开发出可复用、可维护、可扩展、高质量的软件系统。

1.2 面向对象分析和设计的优势有哪些?面向对象分析和设计有以下优势: - 高度模块化:通过将系统划分为多个独立的对象,便于理解和设计系统的各个部分。

- 可复用性:面向对象设计强调对象的复用,通过定义通用的类和接口,可以提高代码的复用程度。

- 可维护性:面向对象的封装特性使得系统的各个部分具有独立性,便于维护和修改。

- 可扩展性:通过继承和多态等特性,可以方便地扩展和修改系统的功能。

- 高可靠性:面向对象的封装和隐藏特性可以减少系统中的错误和安全漏洞。

- 开发效率高:面向对象的分析和设计提供了一种更自然的思考和描述问题的方法,可以提高开发效率。

第二章:面向对象建模2.1 对象的特征有哪些?对象具有以下特征: - 状态(State):对象的状态是对象的属性值的集合,表示对象的某个时刻的状态。

- 行为(Behavior):对象可以执行的操作,描述了对象能够做什么。

- 身份(Identity):每个对象都有唯一的身份,可以通过身份来区分不同的对象。

2.2 类和对象之间的关系有哪些?类和对象之间有以下关系: - 实例化(Instantiation):类是对象的模板,对象是类的一个具体实例。

- 继承(Inheritance):一个类可以继承另一个类的属性和方法。

- 聚合(Aggregation):一个类可以包含其他类的对象作为成员变量。

- 关联(Association):两个类之间存在某种关系,一个类的对象可以访问另一个类的对象。

第2章 什么是面向对象分析

第2章 什么是面向对象分析
面向对象分析是运用面向对象方法,对问题域和系统责任进行深入分析和理解的过程。其核心在于找出描述问题域及系统责任所需的对象,进而精确定义这些对象的属性、操作以及它们之间的复杂关系。目标是构建一个既符合问题域特征又能满足用户实际需求的OOA模型。在实施过程中,我们需要克服多重挑战,如问题域和系统责任日益增长的复杂性、团队成员间的交流障碍、用户需求的不断变化,以及软件复用的高要求。为了有效应对这些挑战,我们采用一系列核心概念,如对象、类、关系、继承、封装等,并结合多种直观的表示法,以提升分析的准确性和效率。此外,我们还通过定义用况来对用户需求进行规范化描述,进一我们得以全面、深入地展现系统的各个层面,为后续的软件设计和开发奠定坚实基础。

面向对象技术概述

面向对象技术概述


常用软件开发方法

面向过程的方法: 面向过程的方法主要考虑事务流和 要完成的功能,数据被当作系统整体的一个部分来处 理,常常是分析过程的一个副产品。其代表方法是结 构化分析与设计方法.
面向数据的方法: 面向数据的方法将数据作为一种 独立的资源对待,数据是支持所有应用项目的基 础,处理过程也是重要的,但是它们必须存取数 据库中的数据。其代表方法是数据库设计方法。 信息工程的方法:信息工程是在软件工程和数据库 基础上形成和发展起来的,其方法采用的前提是 数据位于现代数据处理系统的中心,数据类型不 会发生很大的变化,因此这种方法是面向数据的 方法。

消息一般由三个部分组成:(接受消息的对象,接受 对象应采用的方法,方法所需要的参数)。计算任务 通常先由某一对象受理(该对象接收到某种消息),然 后,通过对象间的通信,计算任务就分散到各个有关 对象中,最后,再由某些对象给出结果(通过发送消 息)。 对象可以动态地创建,创建后即可以活动。对象在不 同时刻可处于不同状态,对象的活动是指对象状态的 改变,它是由对象所接收的消息引发的。对象一经创 建,就能接收消息,并向其他对象发送消息。对象接 收到消息后,可能出现:(1)自身状态改变(2)创建新 对象(3)向其他对象发送消息。


面向对象分析


对象模型。对象模型表示静态的、结构化的系统的“数据”性 质。它是对模拟客观世界实体的对象以及对象彼此间的关系的 映射,描述了系统的静态结构。面向对象方法强调围绕对象而 不是围绕功能来构造系统。对象模型为建立动态模型和功能模 型,提供了实质性的框架。在建立对象模型时,人们的目标是 从客观世界中提炼出对具体应用有价值的概念。 动态模型。动态模型表示瞬时的、行为化的系统的“控制”性 质,它规定了对象模型中的对象的合法变化序列。 功能模型。功能模型表示变化的系统的“功能”性质,它指明 了系统应该“做什么”,因此更直接地反映了用户对目标系统 的需求。

Java程序设计课堂练习题

Java程序设计课堂练习题

《Java程序设计》练习题第一章 Java编程基础一、选择题1、可以使用【】实用程序编译Java程序。

A.java B.javac C.javadoc D.cmd2、可以使用【】实用程序运行java应用程序。

A.java B.javac C.javadoc D.cmd3、可以使用【】实用程序从Java源文件代码中抽取Java文档注释,生成相应的HTML帮助文档。

A.java B.javac C.javadoc D.cmd4、Java编译单元(源程序文件)的扩展名为【】A..java B..class C..doc D..exe5、编译Java源程序文件产生的字节码文件的扩展名为【】A..java B..class C..html D..exe6、以下Java应用程序执行入口main方法的声明中,正确的是【】A、public static void main()B、public static void main(String[] args)C、public static int main(String[] args)D、public void main(String[] args)7、Java属于以下哪种语言【】A.机器语言B.汇编语言C.高级语言D.以上都不对8、下面哪种类型的文件可以在Java虚拟机中运行【】A..java B..jre C..exe D..classs9、Java程序中声明包的关键字是【】A、javaB、packageC、javadocD、cmd10、如果JDK的安装路径为“d:\jdk”,若想在命令窗口中任何当前路径下,都可以直接使用javac和java命令,需要将环境变量path设置为以下哪个选项【】A、d:\jdk;B、d:\jdk\bin;C、d:\jre\bin;D、d:\jre;11、下列说法中,不正确的是【】。

A、一个Java源文件编译通过后,得到的结果文件数也只有一个B、一个Java源文件经过编译后,得到的文件的扩展名一定是.classC、一个Java源文件只能有一个public类定义,其类名与源文件名相同D、一个Java源文件可以包含多个类12、安装好JDK后,在其bin目录下有许多exe可执行文件,其中“”命令的作用是以下哪一种【】。

精品文档-面向对象程序设计—Java(第三版)(张白一)-第2章

精品文档-面向对象程序设计—Java(第三版)(张白一)-第2章

第2章 Java语言基础
表2.4列出了Java语言所使用的数据类型。我们将在介绍 了常量、变量等基本概念之后,再结合实例对各种数据类型作 具体讲解。
第2章 J关键字
基 本 数类 据型 类 型
引 用 类 型
名称
整数类型
浮点类型 字符类型 布尔类型 字符串 数组 类 接口
break char double float implements long package short throw void
byte class else for import native private static throws volatile
byvalue * const* extends future inner new protected super transient while
第2章 Java语言基础
第2章 Java语言基础
2.1 Java符号集 2.2 数据类型、常量与变量 2.3 表达式和语句
第2章 Java语言基础
2.1 Java符号集 符号是构成语言和程序的基本单位。Java语言不采用通 常计算机语言系统所采用的ASCII代码集,而是采用更为国际 化的Unicode字符集。在这种字符集中,每个字符用两个字节 即16位表示。这样,整个字符集中共包含65 535个字符。其 中,前面256个字符表示ASCII码,使Java对ASCII码具有兼容 性;后面21 000个字符用来表示汉字等非拉丁字符。但是, Unicode只用在Java平台内部,当涉及打印、屏幕显示、键盘 输入等外部操作时,仍由计算机的具体操作系统决定其
在Java系统中,常量有两种形式:一种是以字面形式直接给 出值的常量;另一种则是以关键字final定义的标识符常量。 不论哪种形式的常量,它们一经建立,在程序的整个运行过程 中其值始终不会改变。按照由浅入深的学习规律,这里只讨论 以字面形式直接给出值的常量,至于以关键字final定义的标 识符常量,将在第4章讨论final修饰符时专门论述。

面向对象方法概论

面向对象方法概论

习题第1章面向对象方法概论1、与传统开发方法相比,面向对象方法有什么优点?2、查阅资料,进一步讨论UML与面向对象方法的关系。

3、封装的目的是什么?在面向对象方法中封装的目的是如何达到的?4、针对你过去使用传统开发方法所建造的系统的不足,总结一下问题的原因。

考虑如果使用面向对象方法,在哪些方面可能会获益。

5、面向对象方法的一个主要原则是抽象。

思考一下在工作和学习中你经常在什么场合下运用抽象原则。

第2章什么是面向对象分析1、简述OOA模型及OOA过程。

2、为什么要进行OOA?3、简述问题域与系统责任间的关系。

4、OOA是如何应对需求变化性的?5、为什么把用类图构建的模型称为基本模型?6、你对本章讲述的分析面临的主要问题有过什么实际感受?请举例说明。

第3章建立需求模型——用况图1、用况之间的关系可为包含关系、扩展关系或继承关系,三种关系之间有相同之处吗?它们之间的区别又在哪?2、论述用况图在面向对象方法中的地位。

3、怎样理解把系统内外的交互情况描述清楚了,就明确了系统边界?4、对于3.3.1节中的收款用况,补充用信用卡付款和使用优惠卡的描述。

5、通常自动售货机会按用户的要求进行自动售货,供货员会巡查向其内供货,取款员会定时取款。

针对上述要求,请建立用况图,并描述各个用况。

6、现要开发一个购书积分系统,其中至少要具有申请积分卡、增加积分、查看积分和按积分奖励功能。

请建立用况图,并描述各个用况。

第4章建立类图1、论述类与对象之间的关系以及关联与链之间的关系。

这四者之间还有什么联系吗?2、在什么情况下使用组合关系进行建模?3、总结继承关系的用途。

4、图4-44表明,一名教师可以在一个或多个系中任职,而且在二者间使用的是聚合关系。

在二者间可以使用组合关系吗?请解释原因。

5、举例说明类继承结构中的重载与多态。

6、面包是由面包片组成的。

面包与面包片之间的关系是聚合还是组合?7、一本书含有若干章,一章有若干节,一节由一些段落和图组成,一个段落由一些句子组成。

第2章 C++类和对象

第2章 C++类和对象
按这一思路,分解到每一小功能模块可以采用一个函数实现为止。
2
模块之间的分解关系,在编程实现时体现为函数之间的调用关系。 因此,在学习C语言的过程中,大家重点是要掌握函数相关的知识。
3
2、面向对象的编程思想 计算机发展到一定阶段后,编写软件的为模拟实现世界,即
将现实生活中的某些现象或场景在计算机中模拟出来。 例如,现实生活中的商店购物过程对应于互联网的天猫店购
-成员变量:课名
-编号:CS1001
-编号:CS1002
-编号:...
-成员变量:编号
-行为:
-行为:
-行为:...
-成员函数:
C++类中有什么内容?
10
类是什么?
在C++语言中,类是一种自定义的数据类型,用来描 述同一类对象的属性与行为。
数据
状态
对象
代码
行为

成员变量 成员函数
11
4、对象与类的关系 先由现实世界中的对象抽象出类,然后在计算机世界中依据
13
单选题 1分
下列术语中,能表明面向对象思想主要特征的是 ( )。
A 封装性 B 灵活性 C 安全性 D 可靠性
提交
14
单选题 1分 下列关于类的叙述中,错误的是( )。 A 类是一种抽象数据类型 B 类是面向对象程序设计的核心 C 类与类之间不能形成层次结构 D 类可以实现对数据的封装和隐藏
李四 -状态:1002 -状态:李四 -行为:选课
C++语言 -状态:C++语言 -状态:CS1002 -行为:
张三
李四
...
学生类
-学号:1001
-学号:1002
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

② 保护内部实现。所有私有数据和私有 操作都被封装在对象内部,其它对象不能 直接访问。
封装性是保证软件部件具有优良的 模块性的基础,对外界隐蔽了实现细节, 有效地实现了信息隐蔽。面向对象的类是 封装良好的模块。
(6) 继承:继承是子类自动共享基类属性 和操作的机制,这是类之间的一种关系。 在定义和实现一个类的时候,可以在一个 已经存在的类的基础之上来进行,把这个 已经存在的类所定义的内容作为自己的内 容,并加入若干新的内容。
对象实现了数据和操作的集成,使数据和 操作封装于对象的统一体中。
(3) 类:类是具有相同或相似性质的对象 的抽象。因此,对象的抽象是类,类的具 体化就是对象,也说类的实例是对象。类 具有属性,它是对象的状态的抽象,用数 据结构来描述类的属性。类具有操作,它 是对象的行为的抽象,用操作名和实现该 操作的算法来描述。类由类名、属性、操 作组成。
对象的使用者也不需要知道对象内部的具 体实现和数据内容。
对象的模型如图2.3所示,对象的属 性数据是封装的,对象中实现功能的操作 (算法)也是封装的,n个功能接口是对象 的对外界面,其它对象根据接口的名称和 参数向该对象发送消息。对象有力支持了 抽象、信息隐蔽、模块化、局部化等软件 工程基本原则。
来,它向外界开放的操作就如录音机上的按键, 对象A只有通过对象B的接口才能向对象B发送 消息。对象中对外开放的操作就像录音机上的 按键,使用者只需要知道操作的名字(如录音机 的功能名)和需要的参数(如录音机中听某首歌曲, 歌曲在磁带中的位置),使用者不需要知道这些 操作的具体实现方法(就如使用录音机录音,不 需要知道具体实现的电路)。
(4) 消息和方法:对象之间进行的通信叫做传递 消息。在对象的操作中,当一个消息发送给某 个对象时,消息包含接收对象去执行某种操作 的信息。发送一条消息至少要包括说明接受消 息的对象名、发送给该对象的消息名(即对象名、 方法名)。一般还要对参数加以说明,参数应该 是认识该消息的对象所知道的变量名。
2.2.3 对象的特点
(1) 独立性:对象是数据和对数据所有操 作的统一体,对象经过消息接收、操作处 理、变换对象状态,最后完成消息所指定 的处理任务。对象自身状态的变化,完全 取决于自身的操作
(2) 封闭性:对象以数据为中心。对象的 数据被封装在对象的内部,外面是看不见 的
(3) 交互性:交互性是指对象之间具有通 信能力,对象之间通过互相发送消息进行 通信。通过定义的接口互相传递信息,协 调完成工作流程。
(4) 并行性:对象各自独立处理自己的数 据,同时改变自己的状态;对象之间并行 工作,通过发送消息实现相互通信。
(5) 被动性:被动性是指对象的功能都是 由其它对象发送消息来启动的。一般情况 下.对象不能自发启动操作。
(6) 动态性:对象的动态性具有两个方面 的含义,一是对象可以动态地被创建和取 消,对象不是一开始运行软件就存在的, 是在软件运行过程中被创建的,也是在软 件运行过程中被取消的;二是对象的状态 是不断变化的,随着软件的运行,对象的 状态在不断变化。
多态性允许每个对象以适合自身的 方式去响应共同的消息。
多态性增强了软件的灵活性,减少了 信息冗余,提高了软件的重用性和可扩充 性。
(8) 重载:重载是指同一个操作名,对于 不同的参数结构,可以执行不同的操作。
重载提高面向对象系统的灵活性和可读性。
2.2 对象 2.2.1 一个对象实例
对象把它的内部数据和功能的实现封装起
继承具有传递性,如果类C继承类B, 类B又继承类A,则类C也继承了类A。一 个类实际上可以继承它上层的所有基类的 属性和操作。
在类层次中,子类只继承一个基类 的属性和操作,则称为单重继承。
在类层次中,子类继承了多个基类 的属性和操作,则称为多重继承。
类的继承性提高了软件的重用性。
(7) 多态:多态性指相同的操作可作用于 多种类型的对象上并获得不同的结果。不 同的对象,收到同一消息可以产生不同的 结果,这种现象称为多态性。
2.3 面向对象方法学概述
2.3.1 面向对象方法学基本原则
面向对象方法学认为程序是相互独立 而又相互协作的对象的集合,对象是最基 本的程序单位。运行软件就是对象之间通 过传递消息,互相协作、独立运行,完成 预定的任务。
2.1.2 面向对象的基本概念
(1) 对象:现实世界中客观存在的事物都 被称之为对象。
对象不仅能表示具体的事物,还能表示抽 象的规则、计划或事件,如旅游、球赛等 都是对象。
(2) 对象的状态和行为:对象具有属性 (或 状态),一个对象用数据值来描述它的状 态。对象还有操作(或行为、方法、算法、 服务、函数)。操作用于改变对象的状态。 对象由对象名、属性、操作组成。
2.2.2 对象的定义
对象是属性数据和操作的封装。 对象 = 对象名 + 操作集合 + 数据集合
+ 对外接口集合
对象是封装了数据,并且封装了对 数据的操作的模块,这个模块有惟一的名 字,有公开的对外接口。对象中的数据值 表示了对象所处的状态,对象的状态是可 以变化的,一个对象的状态只能由该对象 自己的操作改变。当一个对象收到其他对 象的消息时,执行对应的操作,同时改变 自身的状态。
类中操作的实现过程经常为方法,一个方法 有方法名、参数、方法体。
(5) 封装:对象的封装就是把对象包起来, 使外界只能看到对象的接口,而不能知道 对象内部的具体内容。一个对象的数据其 它对象不能直接访问,一个对象的操作其 它对象也不能直接使用。
封装性主要表现在如下两个方面:
① 有固定的接口。这些接口规定了对象 接受消息的格式,其它对象只有通过这些 接口才能向这个对象发送消息。
第2章 面向对象技术基础
2.1 面向对象概述 2.2 对象 2.3 面向对象方法学概述 2.4 对象模型 2.5 小结
2.1 面向对象概述
2.1.1 传统软件开发方法存在的问题 传统的生命周期软件开发方法学主要
存在下列问题: (1) 软件重用性差 (2) 软件可维护性差 (3) 开发出的软件不能满足用户需要
相关文档
最新文档