第一章 面向对象程序设计

合集下载

Java 语言程序设计:第1章Java语言基础知识

Java 语言程序设计:第1章Java语言基础知识
39
JAVA语言程序设计
1.3.1 变量与常量(续)

本 标识符

– 标识符是一个名称,与内存中的某个位置(地

址)相对应

– 标识符的第一个字符必须是下列字符之一:
型 与
大写字母 (A-Z) 小写字母 (a-z) 下划线(_)

美元符号 ($)

– 标识符的第二个字符及后继字符必须是:

上述列表中的任意字符
数字字符 (0-9)
41
JAVA语言程序设计
1.3.2 基本数据类型

本 整数
数 据
– byte 8 bits -128 ~ +127

– short 16 bits -32768~ + 32767

– int 32 bits –231~(231-1)

– long 64 bits –263~(263-1)
javac MyClass.java


java MyClass
概 述
运行结果如下:
The sum is: 3
26
JAVA语言程序设计
1.2.3 Applet举例
Java
Applet——小应用程序
– 运行于支持Java的Web浏览器中

– 浏览器的解释器把字节码转换成和机器

第一章面向对象程序设计概述

第一章面向对象程序设计概述

1.1面向对象程序设计方法的发展 历史
面向对象程序设计(Object-oriented
programming,OOP)作为20世纪90年 代以来程序设计的新思想、新方法,被 认为是程序设计方法学的一场实质性的 革命,是程序设计方法学的一个里程碑 。
发展历史
在20世纪60年代,软件曾出现过严重危机,为此
,1968年,荷兰学者E.W.Dijkstra提出了程序设计 中常用的GOTO语句的三大危害,由此产生了结 构化程序设计方法,同时诞生了基于这一设计方 法的结构化程序设计语言,如Pascal语言、C语言 等。这些语言为程序员提供了极大的方便性与灵 活性,特别适合微计算机系统,在整个20世纪70 年代的软件开发中占绝对统治地位。
图1-3面向对象程序设计模型
面向对象程序设计方法采用与客观世界相 一致的方法设计软件,其设计方法是模拟人 类习惯的思维方式。 软件开发的方法与过程尽接近人类认识世 界、解决问题的方法与过程。 描述问题的问题空间(即问题域)与实现解 法的解空间(即求解域)在结构上尽可能一致。

现实世界中的事物可以分为两大部分:物质和意 识。
图1-6类与对象的关系
3.实例
实例就是由某个特定的类所描述的一个具体的对 象。比如汽车就是交通工具的一个实例。
实际上类是建立对象时使用的“模板”,按照这
个模板所建立的一个个具体的对象,就是类的实 际例子,简称实例。 如图1-6中,学生王晓是学生类的一个实例。

chap1Java与面向对象程序设计

chap1Java与面向对象程序设计

对象的操作1 对象的操作2
打开
关闭
对象的操作n
对象的状态 静态属性 (变量)
颜色大小开 启
对象的操作3 换台
对象的操作
……
方法一方面把对象内部的变量包裹封 装保护起来,一方面与外部交互
• 对象的标志,一般是指对象名,用于区别同一类 的各个对象
• 由于对象是类的实例化,因此在程序中通常是先 定义类即定义同类对象的公共属性包括变量和方 法,然后再用对象名创建类的实例对象
• 比如:媒体播放器为父类,视频播放器就是子 类,音频播放器也是一子类
• 一个父类可以有多个子类,c++中子类也可以 有多个父类(多重继承),但是java中,子类只 有一个父类(单继承)。
陆地交通工具 牌号轮胎状态 换轮胎,充气
交通工具 速度 载重 启动,加速,减 速,停止
水上交通工具 排水量
空中交通工具 高度 滑行
3. 具有良好的自恰性:通过自身定义的操作管理 装 自己 对象里封装了方法(操作)修改自身状态或
向外界发布消息。
4. 通过相应接口和相应的消息发布机制与外界联 系
5. 通过继承提高了程序的复用性和开发效率
• 在今后的学习中,我们不难发现封装和继承是面 向对象程序设计的基础和核心。而这其中抽象方 法的利用使得封装和继承得以实现。
,最终形成一个广泛联系的可理解扩充维护更接近 问题本来面目的动态对象模型系统

1 JAVA语言与面向对象的程序设计

1 JAVA语言与面向对象的程序设计

1.1.2 JAVA的特点


简单易学 面向对象 平台无关性 安全稳定 支持多线程 很好地支持网络编程(Applet) Java 丰富的类库(各种包齐备)
第1章 Java语言与面向对象的程序设计
1.1.3 Java和C、C++





变量声明、流控制、参数传递、操作符类似。 无类外全局变量(与C++不同) 无GOTO 无直接指针操作 自动内存管理 数据类型长度固定 类型转换(类型相容性检查) 不支持头文件 不包含结构和联合,免去了C++中结构联合成员公有带 来的安全问题 不支持宏(可读性)。
第1章 Java语言与面向对象的程序设计
1.1 JAVA语言简介

1.1.1 Java语言出现的背景、影响及应用前景 1991——OAK (James Gosling) 1994——www快速增长 Java是面向对象的编程语言,最早由Sun 公司推出,适 用于企业网络和 Internet 环境。主要特点:与环境无关、 可靠性好,是一种完全面向对象的语言。
的抽象。主要包含两个概念:模块化
和信息隐蔽。
第1章 Java语言与面向对象的程序设计
封装 模块化:将一个复杂的系统分解为若干
个模块,有特定关系的信息尽可能在一个模 块中。
信息隐蔽:将模块的细节部分对用户隐藏

第1章 面向对象程序设计概述

第1章 面向对象程序设计概述
例如:“学生”类: 属性(数据):学号、姓名、年龄、性别、成绩等; 操作:数据的录入、修改和显示等。 在面向对象程序设计中,总是先声明类,再由类生成其对 象。类是建立对象的“模板”,由此产生一个个具体的对象, 即类的实例。
2013-8-8
主讲:孙 建
6
3 .消息
在面向对象程序设计中,一个对象向另一个 对象发出的请求被称为“消息”,也称为对象之 间的交互,这种机制叫消息传递。 当对象接收到发向它的消息时,就调用有关 的方法,执行相应的操作。 一般情况下,称发送消息的对象为发送者 或请求者,接收消息的对象为接收者或目标对象。 对象中的联系只能通过消息传递来进行。
C++面向对象程序设计
陈维兴 林小茶编著
中国铁道出版社
主讲:孙 建
2013-8-8 1
第1章 面向对象程序设计概述
2013-8-8
主讲:孙 建
2
1.1 什么是面向对象程序设计
1.1.1 新的程序设计范型
面向对象程序设计是一种新型的程序设计 范型。这种范型的主要特征是:
程序 = 对象 + 消息
过程程序设计范型特征:
2013-8-8
主讲:孙 建
9
1.1.3 面向对象程序设计的基本特征
1. 2. 3. 4. 抽 象 封 装 继 承 多 态
2013-8-8

Java语言程序设计第一章PPT课件

Java语言程序设计第一章PPT课件
– 包括JVM,为了运行Java程序,必须要取得JRE并 进行安装。
JDK (Java Development Kits)
– 要开发Java程序,则必须安装JDK。JDK包括JRE, 强大的API类库,以及开发过程中所需的一些工具, 如java.exe,javac.exe等。
6
JSP、Servlet、JavaBean JDBC、EJB、XML Struts、Spring、Hibernate、Ajax、WebService
Java面向对象程序设计
第1章 Java和面向对象 的程序设计
1
掌握Java语言基础知识 理解面向对象的编程思想 理解异常处理机制 能够使用util包的集合类进行对象管理 能够使用io包进行输入输出(I/O)操作 了解多线程编程 了解网络编程 熟悉Eclipse开发环境的使用 能够编写Swing图形用户界面程序 能够使用JDBC编写数据库访问程序
16
面向过程的编程思想
– 以C语言为例
/** *该程序实现长方形求面积的功能 *函数定义重复多次发生的操作 */
void main( )
{ int l = 3; //定义长方形的长度 int w = 4; //定义长方形的宽度 printf("面积为%d\n", area(l, w));
//输出结果 }
情况下要利用该类实例化一个对象。由对象去执行 指定功能。 – 例如,要使用汽车的“加速”功能,必须首先用汽 车类实例化一辆具体的汽车(对象),由这辆现实 的汽车来执行“加速”操作。

《面向对象程序设计》教学大纲

《面向对象程序设计》教学大纲

《面向对象程序设计》教学大纲

课程名称:面向对象程序设计

英文名称:Object Oriented Programming)

学分:2

总学时:36

实验(上机)学时: 8

开课专业:电子商务专业

一、本课程的性质、目的和培养目标

面向对象程序设计是电子商务专业的限定选修课程。面向对象程序设计是当今最为流行的程序设计方法,本课程以C++语言为核心,全面概述面向对象程序设计的基本概念和基本技术。主要内容包括:理解和掌握面向对象程序设计的基本思想和技术,掌握C++中的引用和函数重载、类与对象、静态成员与友元、运算符重载、继承与派生类、多态与虚函数等重要概念和技术。通过教学要求学生基本掌握面向对象的程序设计方法,认识C++是如何支持面向对象程序设计的,培养、训练学生运用面向对象技术进行程序设计的能力。

二、预修课程

计算机语言与程序设计

三、课程内容及学时分配

第一章从C语言到C++语言

1.C++语言出现的历史背景(OOP思想概述)

2.C++中的注释、常量和输入输出

3.C++中的变量定义与作用域

4.C++中的函数

5.C++中的指针与引用

本章学时数:4,本章习题数:4

第二章类与对象

1.类

2.对象

3.构造函数和析构函数

4.对象及其应用

5.对象的生存期

6.再论程序结构

7.面向对象程序设计

本章学时数:6,本章习题数:6

第三章静态成员与友元

1.拷贝构造函数

2.静态数据成员

3.静态成员函数

4.友元函数

本章学时数:6,本章习题数:6

第四章运算符重载

1.运算符重载的概念

2.运算符重载举例

本章学时数:4,本章习题数:4

第五章继承与多态

《C++面向对象程序设计(第2版)》第1章 绪论

《C++面向对象程序设计(第2版)》第1章 绪论

课程学习目的
1. 开拓视野 2. 激发学习兴趣 3. 步入新境地
从前有两个和尚,一个住在左山,一个住在右山,但是 山上沒有水喝,两个人都必须挑着桶子往山下的小溪取水喝, 每天都会见面。时光飞逝,岁月如梭,两个和尚也成了好朋 友。五年过去了,当左和尚照往常一样下山挑水时,奇怪的 是右和尚怎么没下山挑水呢?一个月过去了,左和尚非常担 心,他一定要去右山看看右和尚发生了什么事情。之间右和 尚不疾不徐练着太极,这可怪了,左和尚就问:“你一个月 没水喝,怎么看起来这么健康?”右和尚指着寺庙后方一口 井说到:“这五年来,我每天跟你一样往返于山路挑水来喝, 但是我会多花一个钟头挖这口井,虽然我不知道何时会有井 水跑出来,但是我知道,当我挖通之后,我就不需要再挑水 了。”
第一章
1 2 3 4 5 6
面向对象程序设计概述
程序设计方法与语言的发展历史 面向对象思想和机制方法的关 系 面向过程程序设计
面向对象程序设计 软件工程化方法
VC++开发平台简介
1.1 程序设计方法与语言的发展历史
机器语言 汇编语言
ALOGOL,FORTRAN,BASIC,COBOL 高级语言 PASCAL,C
1.1 程序设计方法与语言的发展历史(续1)
软件危机与程序设计方法论的演变 “计算机软件”一词是1964年提出来的。这个时期,出产 的软件越来越多,规模越来越大。1962年美国金星探测器

面向对象程序设计 1_面向对象方法概述

面向对象程序设计 1_面向对象方法概述

近年来推出的新一代程序设计语言、软件开发工 具与开发环境,以及操作糸统等,几乎都是面向对象 的。 面向对象的程序设计 为什么面向 面向对象的数据库 对象的程序设 面向对象的操作系统 计(OOP)会发 面向对象的系统分析 展的如此迅速, 成为当前的主 面向对象的系统设计 流技术? 例如: C++、VB、VC、PB、VF、Java、 Windows等
1.2.1 面向对象程序设计方法的基本概念 1.2.2 面向对象程序设计方法的基本特征 1.2.3 面向对象程序设计方法的主要优点
1.2.1 面向对象程序设计方法的基本概念
本节主要内容 1.对 象 2.类 3.消 息 4.方 法
1.对象
所谓对象就是可以控制和操作的实体。在现实世 界中,任何事物都是对象。 它可以是人,也可以是物,还可以是一件事,整 个世界就是由形形色色的“对象”构成的。 对象可以是: * 有形的具体存在的事物 例如: 一辆车、一个球、一个小学生; * 无形的、抽象的事件 例如: 一次演出、一场球赛等。 对象既可以很简单,也可以很复杂,复杂的对象 可以由若干简单的对象构成。
#include<stdio.h> //例1.2-1 利用面向对象思想求解计算圆的面积。 class Circle { //声明圆类Circle 程序的一次运行结果如下: double r; //定义数据成员 r(表示圆的半径) Input r :10 double cs; //定义数据成员 cs(表示圆的面积) The area of circle is:314.000000 public: void radius_input() //定义成员函数radius_input { printf("Input r :"); scanf("%lf",&r);} void c_area_out() //定义成员函数c_area_out { cs=3.14*r*r; printf("The area of circle is:%f\n",cs); } }; //圆类Circle到此结束 int main() //定义主函数main { Circle c1; //定义圆类Circle的对象c1 c1.radius_input(); //向对象c1传送一个消息, //即调用函数radius_input,输入圆半径r的值 c1.c_area_out(); //向对象c1传送一个消息,即调用 //函数c_area_out,计算与输出圆面积 return 0;} //主函数main到此结束

面向对象程序设计第一章课件(共32张PPT)

面向对象程序设计第一章课件(共32张PPT)
面向对象程序设计优于传统的结构化程序设计,其优越性表
现在,它有希望解决软件工程的两个主要的问题——软件复杂
性控制和软件生产率的提高,此外它还符合人类的思维习惯, 能够自然地表现现实世界的实体和问题,它对软件开发过程具 有重要的意义。
面向对象程序设计能支持的软件开发策略有: (1) 编写可重用代码;(2) 编写可维护的代码; (3) 共享代码; (4) 精减已有的代码。
(3) 消息的发送可以不考虑具体的接收者,对象可以 响应消息,也可以对消息不予理会,对消息的响应并不 是必须的。
4. 方法(method)
在面向对象程序设计中,要求某一对象做某一操作时, 就向对象发送一个相应的消息,当对象接收到发向它的消 息时,就调用有关的方法,执行相应的操作。方法就是对 象所能执行的操作。方法包括界面和方法体两部分。方法 的界面就是消息的模式,它给出了方法的调用协议;方法 体则是实现某种操作的一系列计算步骤,也就是一段程序。 消息和方法的关系是:对象根据接收到的消息,调用相应 的方法;反过来,有了方法,对象才能响应相应的消息。 所以消息模式与方法界面应该是一致的。同时,只要方法 界面保持不变,方法体的改动不会影响方法的调用。在
(5)模块独立性。 (6)动态连接性 客观世界中的对象之间是有联系的,在面向 (7)易维护性 对象程序设计中,通过消息机制,把对象之
间动态连接在一起,使整个机体运转起来, 便称为对象的连接性。有一组操作(服务), 每一个操作决定对象的一种功能或行为。

面向对象与可视化程序设计第一讲

面向对象与可视化程序设计第一讲
面向对象编程通过封装、继承和 多态等机制,提供强大的抽象能 力,使得代码更加模块化、可复
用和可维护。
可视化界面
可视化程序设计通过图形界面,直 观地展示数据和程序逻辑,方便用 户理解和操作,提高用户体验。
高效开发
面向对象与可视化程序设计使得开 发过程更加高效,减少代码量,降 低开发难度,提高开发效率。
继承
继承(Inheritance)
继承是面向对象程序设计中的一个重要概念,它允许一个类继承另一个类的属性 和方法。继承使得子类可以复用父类的代码,减少重复工作,同时提供了一种代 码组织和层次结构的方式。
多态(Polymorphism)
多态是指一个接口可以有多种实现方式,或者一个对象可以表现出多种形态。多 态使得程序更加灵活,能够根据需要选择不同的实现方式,提高了代码的可重用 性和可扩展性。
详细描述
通过封装,对象的内部状态被隐藏,只暴露必要的接口供外 界使用。这有助于保护对象的内部数据不被随意修改,提高 代码的安全性和稳定性。
通过继承实现代码复用
总结词
继承是子类继承父类的属性和方法,子 类可以扩展或覆盖父类的行为。
VS
详细描述
通过继承,子类可以复用父类的代码,避 免了重复编写相同的功能。子类可以在继 承的基础上添加新的属性和方法,或者覆 盖父类的方法实现不同的行为。
THANKS FOR WATCHING

C++面向对象程序设计课后答案(谭浩强)

C++面向对象程序设计课后答案(谭浩强)

C++面向对象程序设计课后答案(1-4章)

第一章:面向对象程序设计概述

[1_1]什么是面向对象程序设计?

面向对象程序设计是一种新型的程序设计范型。这种范型的主要特征是:

程序=对象+消息。

面向对象程序的基本元素是对象,面向对象程序的主要结构特点是:第一:程序一般由类的定义和类的使用两部分组成,在主程序中定义各对象并规定它们之间传递消息的规律。第二:程序中的一切操作都是通过向对象发送消息来实现的,对象接受到消息后,启动有关方法完成相应的操作。

面向对象程序设计方法模拟人类习惯的解题方法,代表了计算机程序设计新颖的思维方式。这种方法的提出是软件开发方法的一场革命,是目前解决软件开发面临困难的最有希望、最有前途的方法之一。

[1_2]什么是类?什么是对象?对象与类的关系是什么?

在面向对象程序设计中,对象是描述其属性的数据以及对这些数据施加的一组操作封装在一起构成的统一体。对象可以认为是:数据+操作

在面向对象程序设计中,类就是具有相同的数据和相同的操作的一组对象的集合,也就是说,类是对具有相同数据结构和相同操作的一类对象的描述。

类和对象之间的关系是抽象和具体的关系。类是多个对象进行综合抽象的结果,一个对象是类的一个实例。

在面向对象程序设计中,总是先声明类,再由类生成对象。类是建立对象的“摸板”,按照这个摸板所建立的一个个具体的对象,就是类的实际例子,通常称为实例。

[1_3]现实世界中的对象有哪些特征?请举例说明。

对象是现实世界中的一个实体,其具有以下一些特征:

(1)每一个对象必须有一个名字以区别于其他对象。

C++面向对象程序设计教程课后习题答案

C++面向对象程序设计教程课后习题答案
C++面向对象程序设计教程
第1章 C++程序设计基础 习题解答
整理课件
1
一、选择题
1.下列语句中,错误的是

A)const int buffer = 256;
B)const int temp;
C)const double *point;
D)double * const pt = new double(5.5);
{
cout << "欢迎学习C++语言!"<< endl; // 用C++的方法输出一行
system("PAUSE"); // 调用库函数system( ),输出提示信息
return 0;
// 返回值, 返回操作系统
}
整理课件
5
*2.编一个程序,用一个函数实现求n个整型数据的最小值。函数原型如下:
int Min(int a[], int n)
参考程序:
#include <iostream>
// 编译预处理命令
using namespace std;
// 使用命名空间std
int Min(int a[], int n)
// 求n个整型数据的最小值
{
int m = a[0], i;

第一章 面向对象程序设计

第一章 面向对象程序设计

1.2 面向对象的基本概念
1.2.1对象 对象
现实对 象 抽象
问题 对象 表示
计算机 对象
图1.1 三种对象之间的关系
1.2 面向对象的基本概念
1.2.1对象 对象 一个对象之所以区别于其他对象,就是因为它 与别的对象相比有不同的状态,另外,系统的功能是 通过服务和信息的传递来改变某些对象的状态实现的。 因此,对象本身应该具有一定的状态、并具有保持和 记忆这些状态的功能。 对象的状态是由其属性决定的,因此,对象的属 性的选取应该遵循的最基本的原则是:要能反映对象 的基本特征,它是对象真正需要记忆的特征或数据, 这些特征或数据能反映对象的基本性质。通过这些特 征能够将该对象区别于其他对象。比如对“人”这个 对象,可以选择如下一些属性:姓名、身高、性别、 体重等。
1.2 面向对象的基本概念
1.2.1对象 对象 在用面向对象的方法进行软件开发时,根 据开发过程的不同,可将对象分为三种不同的 类型的对象:现实对象,即现实生活中存在的 实体,是我们所模拟系统的原始构成;问题对 象是对象在问题中的抽象,它是现实对象在计 算机解空间中的直接映射;计算机对象是问题 对象在计算机中的表示,即问题对象的计算机 实现。现实对象通过抽象变成问题对象,最后 用计算机将它们表示出来。这三种对象的关系 如图1.1所示。
1.2 面向对象的基本概念
1.2.1对象 对象
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
首先,由于系统分析人员、系统设计人员和程序实施人员之间所采 用的语言符合、表述方式等的不同,使他们之间不能很好地直接沟通, 系统分析人员和程序设计人员的计划和说明不能被实施人员正确理解, 实施人员对系统分析的意见不能及时反馈到系统分析人员和程序设计人 员那里,这就为系统的顺利实施带来了很大的障碍。
其次,在程序的实施过程中,由于大型系统必须由多人合作完成, 各人或各小组完成程序中的一个或几个模块,如何划分任务、估计和分 配资源、掌握每个程序员的进度等就构成了进行大型系统设计时管理的 复杂性,另外,即使每个人或小组所设计的模块都无可挑剔,但将这些 模块整合在一起时未必不会出现问题,因此如何权衡模块内聚度和模块 间的耦合度,也是编程人员必须面对的问题之一。这一问题对多人完成 的大型程序设计来说是不可避免的,对于单人完成的小型程序设计也经 常会碰到这个问题。
模块性。对象是一个功能和数据独立的单元,相互之间只能 通过对象认可的途径进行通信,相互没有预料不到的影响, 也可以较为自由地为各个不同的软件系统所用。 封装功能。为信息隐藏提供了具体的实现手段,用户不必清 楚对象的内部细节,只要了解其功能描述即可使用。 代码共享。继承提供了一种代码共享的手段,可以避免重复 的代码设计,使得面向对象的方法确实有效。 灵活性。对象的功能执行是在消息传递时确定的,支持对象 的主体特征,使得对象可以根据自身的特点进行功能实现, 提高了程序设计的灵活性。
在面向对象思想产生之前,这些问题都不能完美解决。面向对象方 法吸取了程序设计语言和数据建模技术等有益成果,经过近二十年的演 变和发展,逐渐形成了自己的模型,为人们提供了更强的问题求解能 力。面向对象是软件程序设计中的一种新思想,由于这种新思想的引 入,使我们的程序设计能更贴近现实,使系统设计、分析和实施等过程 有一种统一的符号和语言,从而使系统分析人员、系统设计人员、实施 人员之间能够更顺利地沟通。另一方面,面向对象思想能够提供高效的 代码共享机制,从而使软件重用获得生机。基于上述原因,面向对象思 想已为人们所接受,并成为程序设计思想的主流。
面向对象系统中的对象通常与现实世界中的实体相对应,它具有如 下特性:
有一个名字作为对象在系统中的标识,不同对象有不同的名
字,对对象的引用也是通过其名字进行的。 有一组描述它的特征的状态,这些状态பைடு நூலகம்以由一个或多个属 性构成,同类型的对象具有同类型的状态,它们主要是通过 这些状态的不同来区别的。 有一组操作,每个操作决定对象的一种功能或行为,它体现 了对象存在的意义,也是对象之间交互的手段。对象的操作 可以分为两类:一类是自身所承受的操作,这类操作只能供 对象内部使用;另一类是施加于其他对象的操作,通过这类 操作对象就可以与其他对象进行交互了。 在用面向对象的方法进行软件开发时,根据开发过程的不同,可将 对象分为三种不同的类型的对象:现实对象,即现实生活中存在的实 体,是我们所模拟系统的原始构成;问题对象是对象在问题中的抽象, 它是现实对象在计算机解空间中的直接映射;计算机对象是问题对象在 计算机中的表示,即问题对象的计算机实现。现实对象通过抽象变成问 题对象,最后用计算机将它们表示出来。这三种对象的关系如图1.1所 示。
第一章 面向对象程序设计
面向对象思想是程序设计领域中的一种新思想,面向对象思想应用 于程序设计中形成面向对象程序设计方法,通过使用这种方法,使程序 设计的整个过程变得更贴近现实世界,从而更方便地进行分析、设计和 实施。本章主要介绍面向对象程序设计的思想及内涵、面向对象的基本 概念、面向对象系统的特点和面向对象的开发方法。
现实对象 问题对象 计算机对象 抽象 表示
图1.1 三种对象之间的关系 一个对象之所以区别于其他对象,就是因为它与别的对象相比有不 同的状态,另外,系统的功能是通过服务和信息的传递来改变某些对象 的状态实现的。因此,对象本身应该具有一定的状态、并具有保持和记 忆这些状态的功能。 对象的状态是由其属性决定的,因此,对象的属性的选取应该遵循 的最基本的原则是:要能反映对象的基本特征,它是对象真正需要记忆 的特征或数据,这些特征或数据能反映对象的基本性质。通过这些特征 能够将该对象区别于其他对象。比如对“人”这个对象,可以选择如下一 些属性:姓名、身高、性别、体重等。 从对象属性的来源可以把属性划分为四类:
易维护性。对象实现了抽象和封装,使其中可能出现的错误 限制在自身,不会向外传播,易于检测和修改。 增量型设计。面向对象系统可以通过继承机制不断扩充功 能,而不影响原有软件的运行。
1.1.3 面向对象程序设计语言
面向对象程序设计语言的只要优点在于它提供了一种面向对象程序 运行所需要的环境。这种环境最主要的特征就是以对象作为程序的主要 单位,它将数据及对这些数据的操作功能以及与其他对象的通信的能力 都封装在了一起。
1.1 面向对象程序设计概述
1.1.1 面向对象思想及内涵
从计算机诞生到现在,在程序开发和应用领域,特别是大型系统的 开发和使用,软件开发人员一直受到两大问题的困扰:一是如何克服系 统复杂性的障碍;二是如何在计算机系统中自然的表示客观世界,即对 象模型。
不仅大型系统存在复杂性的问题,对于具有很多复杂关系的小型系 统有时也存在系统复杂性问题。由系统复杂性带来的障碍主要表现在如 下三个方面:
描述性属性:用于描述对象特征的属性,属性值随对象的产 生而产生,并随着对象的改变而改变。 定义性属性:是将一个对象区别于同类型其他对象的属性, 不同的定义性属性值可能产生不同的对象。
综合可得属性:为了某种目的将其他属性通过某种关系整合 在一起而形成的属性。这类属性并不能单独存在,它的属性 值是由其他属性值决定的。 偶尔可得属性:在一定的条件下,这类属性可以由其他属性 决定,此时属性值可以由其他数据获得。与综合可得属性相 比,这类属性具有一定的独立性。 现实世界的各种事物都是相互联系的,只有这样才能构成一个有机 的整体。与此相对应,在面向对象系统中,为了达到某种目的或实现某 些功能,通常由多个对象共同协作完成,因此要求对象之间也必须能够 交互,这种交互通常是通过消息进行的。对象与外部对象的每一个交互 都称为对象的一个行为。对象的行为包括对象向别的对象发送消息以及 该对象接收别的对象发送的消息。 消息是对象之间相互请求或相互协作的途径,是要求某个对象执行 其中某个功能操作的规格的说明。 对象的一个重要特征表现在它的私有存储单元只能由它自己的操作 进行处理,消息是外界能够引用对象操作及获得对象状态的惟一方式。 这个特征确保了对象的实现只依赖于它本身的状态和所能接受的消息, 而不依赖于其他对象的内部细节。 对象的行为可以分为内部行为和外部行为,相应地消息也可以分为 私有消息和公有消息。私有消息只能在对象内部传递,这类消息不对外 发送,它主要用于对象内部的数据处理。公有消息是向别的对象发送的 消息,它是对象与外界交互的主要途径。任何对象都必须有公有消息, 否则该对象就无法与外界联系,因此就没有存在的价值。
简单的说,通过使用面向对象的方法可以把一组看似相互之间毫无 联系的对象有效地集成在一起,这些对象都包含代表各自特征的数据以 及对数据的操作即对象的行为。通过面向对象方法,可以把与该对象相 关的数据和操作封装在一个相对独立的实体中,该实体有自己的功能和 特征,它也可以采用某种机制与外界交互。
面向对象技术追求的是软件系统对现实世界近似的或直接的模拟, 它尽可能实现将现实世界中的事物直接映射到软件系统的解空间。它希 望用最小的力气,最大限度地利用软件系统来解决现实世界中的问题。
1.2.2 类
类是具有共同特点的一组对象的抽象,它提起该组对象的共同属性 和操作,从抽象层次描述这组对象。类是构成某些对象系统的最基本的 单位,是面向对象系统中最基本的概念之一。
类是创建对象的模板,以操作、表示和算法的形式完整地定义了一 组对象的行为,因此,类可以被认为是一种用户定义的数据类型,它完 整地描述了规范说明和实现。类的内涵由类模板给出,而外延是该类的 有关对象。通过类可以产生同类型的其他对象,对象可以看成是类的具 体实例。类是抽象的概念,而对象是类的一个具体实例。通过类可以显 示出每个对象所具有的相同结构和行为。同一个类的对象之间有两类不 同:一是每个对象具有不同的句柄;二是任何特定时刻,每个对象可能
比如,对于一个学校的学籍管理系统,教师、学生、课程等都可以 纳入对象的范畴。在比如,组成一台电脑的所有配件都是对象。
在面向对象理论体系中,面向对象方法学将对象定义为:对象是一 个逻辑实体,它是一组信息以及作用于这些信息的操作的描述。也就是 说,对象是将其自身所固有的状态特征或属性与可以对这些状态施加的 操作结合在一起所构成的独立实体。
第三.大型程序具有大量的系统状态,系统的运行就是各种系统状 态之间的转换,而两个系统状态之间还存在许多的中间状态。如何正确 的处理这些系统状态以及中间状态、组织高效的系统程序逻辑和验证系 统的正确性都是非常困难的。
随着计算机应用的普及,人们越来越希望能更直接、更方便地与计 算机进行交互,而不需要经过专门学习和长时间的训练后才能使用它。 最好的方法是在计算机系统中对现实世界进行直接模拟,将日常事务中 的处理方法和流程直接移植到计算机系统中去。而如何更好地模拟现实 世界,一直是程序设计人员追求的目标,实践证明这不是一件简单的事 情。要能模拟现实世界,就要从程序的设计思想和实现机制上彻底改变 以往程序设计中的不足,使程序设计人员能够方便快捷地实现这一目 标。
1.2.1 对象
对象是面向对象思想的核心概念,它是构成面向对象系统的基础。 要掌握面向对象思想,首先必须能够正确地认识和理解对象的概念。
从广义上讲,对象就是人们所关心的事物,它是系统所针对的问题 域中的人、地点、事物等概念的抽象。对象存在于现实世界里,是人们 对现实世界的理解和抽象,它可能是任何类型系统的一部分。
1.1.2 面向对象程序设计
面向对象程序设计(OOP)是通过为数据和代码建立分块内存区域 的方法来对程序进行模块化设计的一种程序设计方法,这些模块可以被 作为样板,在需要时建立其副本。
面向对象程序设计方法利用面向对象思想进行软件系统的设计和实
现。这种新的方法是在利用面向对象思想的基础上,通过增加软件的可 扩充性和可重用性,来改善并提高程序员的生产能力,并能控制软件的 复杂性和软件维护的开销。在使用面向对象程序设计方法时,软件开发 的分析和设计阶段能更加紧密地与实施阶段相联系。
面向对象设计方法追求的是现实问题空间与软件系统解空间的近似 和直接模拟。它希望用户用最小的力气,最大限度地利用软件系统进行 求解。
在具体学习OOP之前,请先注意一下两点: 首先,OOP是一种软件设计和实现的思想。使用面向对象的技术对 于用户看到的软件成品来说并没有增加任何东西。但是,使用面向对象 思想将使程序设计人员获得巨大的收益,尤其是在大型系统工程中。使 用OOP能更好地处理复杂的问题,用户可以利用对象的模块化来使程序 设计人员能够通过相互独立且易于维护和扩充的单元来实现所编制的程 序,从而使之易于维护和扩充。因此,OOP会使程序设计人员更接近于 所要解决的实际问题,也可以通过继承性在对象之间分享代码。 其次,尽管指出OOP的语言将使实现面向对象程序设计变得容易, 但是OOP和程序设计语言无关。 面向对象的设计方法基于信息隐藏和抽象数据类型的概念。它把系 统中的所有资源,如数据、模块以及系统都看成对象,每个对象把一个 数据类型和一组过程封装在一起,使得这组过程负责这种数据类型的处 理,并在定义对象时可以规定外界在其上运行的权限。使用这一方法, 设计人员可以依照自己的意图创建自己的对象,并将问题映射到该对象 上,这一方法直接、自然,可以使设计人员把主要精力放在系统一级 上,而对细节问题可以较少关系。可以简单地这样认为: 面向对象=数据抽象+信息隐藏+继承性+多态性 面向对象程序设计方法之所以被广泛采用,是因为它具有许多优良 的特性。
面向对象技术应用于程序设计语言最早可以追溯到20世纪60年代的 Simula语言,在该语言中引入了几个面向对象程序设计中的最重要的概 念和特性,即数据抽象、类和继承机制。
目前使用的最多面向对象程序设计语言主要有Java、C++、C#等。本 教材主要通过C#来介绍面向对象程序设计的相关方法和技术。
1.2 面向对象的基本概念
相关文档
最新文档