预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共70页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

LectureNoteson Object-OrientedTechnology (Programming&Design) (Fall2010,BachelorofComputerScience) Duanshihong duansh@ies.ustb.edu.cn Office:Room1203A,InformationBuilding 1-1 第二讲面向对象程序设计 •目标:面向对象的程序是什么样的程序? •程序、程序设计语言和程序设计方法 •对程序本质的认识★ •程序设计语言的形式化途径★ •程序设计方法与程序设计语言 •面向对象概述 •面向对象程序设计的主要特征★★ 1-2 2.1对程序本质的认识 人们对程序本质的认识在不断发展: •程序是指令的集合 •程序是算法在计算机中的实现 •算法+数据结构=程序(N.Wirth) •程序是实体在计算机中的实现(OOP) •......(下一代:Actor?Agent?Aspect?...) 1-3 算法举例:欧几里得算法 给定两个正整数p和q,如何求出p和q的最大公约数g? 欧几里得(Euclid)算法: 步骤1:如果p小于q,则交换p和q。 步骤2:令r是p除以q的余数。 步骤3:如果r等于0,则令g=q并终止程序; 否则令p=q、q=r,并转向步骤2。 1-4 算法的基本特征 •算法由若干可机械执行的操作组成。 交换两个数、相除求余数、比较大小、判断相等、控制转向... •算法可有多个输入和输出。 输入正整数p和q,输出最大公约数g。 •算法对任何输入都会终止。 交替执行2和3,r总小于q,3转2时p和q不断减少,若干步后一定终止。 •算法的主要操作对象是数据。 除输入、输出外还包括保存中间计算结果的数据r。 1-5 银行帐户例子 存款行为 输入:存款金额a和当前余额b。 输出:新余额b′。 步骤1:令b′=b+a并终止程序。 割裂了两者之间的关联! 取款行为 输入:取款金额a、当前余额b和透支限额m。 输出:已取金额a′和新余额b′。 步骤1:如果a>b+m则令a′=0、b′=b并转向步骤2; 否则令a′=a、b′=b–a并终止程序。 步骤2:警告超额透支并终止程序。 1-6 银行帐户例子(续) 实体:银行帐户 属性:帐号、户名、密码、当前余额b、透支限额m 约束:b+m≥0 行为: 存款作为一个整体看待! 输入:存款金额a。 步骤1:令b=b+a并终止。 取款 输入:取款金额a。 输出:已取金额a′。 步骤1:如果a>b+m则令a′=0并转向步骤2; 就系统而言,实体的属性表达了实体的状态;状态可以由实体的否则令a′=a、b=b–a并终止。 行为来改变,并且实体的状态在任何时刻都满足实体的约束!步骤2:警告超额透支并终止。 1-7 在计算机中表达程序 •属性的表达:--类型问题 二进制数值型:符号表示、小数位表示 字符型:ASCII、GB-2312、GBK •行为的表达:--抽象层次问题 指令系统、运算与控制 机器语言1011000001000001000001000000101011110100 B041040AF4 汇编语言MOVAL,41 ADDAL,0A HLT 宏汇编语言 •约束的表达:--表达能力问题 逻辑、一阶谓词逻辑? 1-8 程序是算法和实体在计算机中的体现 •算法的基本特征决定了它很适合以计算机作为计算工具 求解问题。 •实体可将算法更有效地组织起来,可作为更大粒度的构 件用于构建程序。 •人们对程序本质的认识受限于当时的计算机科学与技术 的发展水平。 •把握事物的两种思维方式:外部行为与内部结构。 1-9 程序设计 •区别:Programming/ProgramDesign/Coding •程序设计可看作是为解决某一特定问题而构造一种专用 工具的智力活动。 •必须具备四方面的知识: 应用领域知识(容易被忽略!) 程序设计方法 程序设计语言 程序设计环境与工具 1-10 2.2程序设计方法与程序设计语言 •相互独立: 程序设计方法是独立于具体程序设计语言的一种技术(只是由于程序设计 通常离不开语言作为工具,故易混淆程序设计方法与程序设计语言)。 例如,一个面向对象的设计采用结构化程序设计语言进行编程。 •相辅相成: 采用某种程序设计方法编写程序需要相应的程序设计语言作为工具,而程 序设计语言的设计目标主要是为了支持某种程序设计方法。 两种支持:explicitly和implicitly。 1-11 早期程序设计 •无特定程序设计方法的时期。 •由于片面追求高效率,过份依赖技巧与天份,不太注 重程序结构。 •