面向对象的概念
什么是面向对象、对象是什么、什么是类、如何使用对象、类和对象的关系

什么是⾯向对象、对象是什么、什么是类、如何使⽤对象、类和对象的关系⾯向对象⼀、⾯向对象 概念:⾯向对象是⼀种编程思想,使⽤编程语⾔解决现实问题的⼀种思路。
分类: ⾯向过程: C 语⾔ ⾯向对象: Java ⾯向对象的思想: ⾯向对象的思想: ⾯向过程的思想:⾃顶向下 逐步执⾏。
---> 当解决⼀件事情的时候,⾸先想到的是我该怎么去做⾯向对象思想:以对象为中⼼,使⽤对象调⽤其功能。
---> 当解决⼀件事情的时候,⾸先想到的是我该让谁帮我做。
想到的谁 ---> 对象 对象:现实⽣活中存在的真实的事物都是对象,Java 中有⼀句名⾔: 万物皆对象,⼤到宇宙、⼩到夸克在Java 的世界中都可以看成对象。
提起对象,就需要提起另⼀个概念——类。
类是对象的模板,对象是类的实例。
⼆、类 概念: 将具有相同特征的⼀类事物的共性进⾏抽取(抽取的过程叫做抽象),形成的⼀个概念叫做类。
类的抽象: 1. 怎么去描述⼀个事物,从哪些维度进⾏描述? 这个事物具有什么 ---> 属性 这个事物会做什么 ---> ⾏为 2. 怎么去描述⼀类事物的共性? 这些事物具有什么 ---> 属性 这些事物会做什么 ---> ⾏为 类和对象的关系: 类是对象的模板 对象是类的实例 类的定义: 概述: 属性 : 使⽤成员变量来进⾏描述 ⾏为 : 使⽤成员⽅法进⾏描述 语法:关键词:class语法:public class 类名{} 成员变量 定义位置:类中⽅法外 语法: 数据类型 变量名; / 数据类型 变量名 = 初始值;作⽤域:⾄少在本类 默认值: 和数组元素的默认值是⼀样的 基本数据类型 整数类型 0 ⼩数类型 0.0 字符类型空字符 布尔类型 false 引⽤数据类型 null 定义的注意事项 1. 在同⼀个类中不能定义两个同名的成员变量 2. 在同⼀个类中成员变量可以和局部变量可以重名,但是在访问的时候,局部变量优先。
面向对象编程相关概念

1. 概念1.1 面向过程和面向对象的通俗理解面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了;面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。
例如五子棋,面向过程的设计思路就是首先分析问题的步骤:1、开始游戏,2、黑子先走,3、绘制画面,4、判断输赢,5、轮到白子,6、绘制画面,7、判断输赢,8、返回步骤2,9、输出最后结果。
把上面每个步骤用不同的方法来实现。
面向对象的设计则是从另外的思路来解决问题。
整个五子棋可以分为1、黑白双方,这两方的行为是一模一样的,2、棋盘系统,负责绘制画面,3、规则系统,负责判定诸如犯规、输赢等。
第一类对象(玩家对象)负责接受用户输入,并告知第二类对象(棋盘对象)棋子布局的变化,棋盘对象接收到了棋子的变化就要负责在屏幕上面显示出这种变化,同时利用第三类对象(规则系统)来对棋局进行判定。
可见,面向对象是以功能来划分问题,而不是步骤。
面向过程的设计很可能出现不同的版本,因为通常设计人员会考虑到实际情况进行各种各样的简化。
面向对象的设计中,不同可能只存在于某一个功能对象内部,绘图只可能在棋盘对象中出现,从而保证了绘图的统一。
1.2 面向过程和面向对象的优缺点方法优点缺点面向过程性能好难维护、复用、拓展面向对象性能差易维护、易复用、易扩展用面向过程的方法写出来的程序是一份蛋炒饭,而用面向对象写出来的程序是一份盖浇饭,形容的十分贴切。
到底是蛋炒饭好还是盖浇饭好呢?非要比个上下高低的话,就必须设定一个场景,否则只能说是各有所长。
盖浇饭的好处就是"菜"“饭"分离,从而提高了制作盖浇饭的灵活性。
饭不满意就换饭,菜不满意换菜。
用专业术语就是"可维护性"比较好,“饭” 和"菜"的耦合度比较低。
面向对象的概念

1.面向对象的概念面向对象(Object-Oriented)=对象(Object)+类(Class)+ 继承(Inheritance)+通信(Communication)如果一个软件系统是使用这样4个概念设计和实现的,则将该软件系统称为面向对象的。
下面给出每个概念的具体定义。
1.1 对象从一般意义上讲,对象是现实世界中一个实际存在事物,它可以是有形的(比如一辆汽车),也可以是无形(比如一项计划)。
对象构成世界的一个独立单位,它具有自己的静态特征和动态特征。
静态特征即可用某种数据来描述的特征,动态特征即对象所表现的行为或对象所具有的功能。
现实世界中的任何事物都可以称作对象,它是大量的、无处不在的。
不过,人们在开发一个系统时,通常只是在一定的范围(问题域)内考虑和认识与系统目标有关的事物,并用系统中的对象抽象地表示它们。
所以面向对象方法在提到“对象”这个术语时,既可能泛指现实世界中的某些事物,也可能专指它们在系统中的抽象表示,即系统中的对象。
我们主要对后一种情况讨论对象的概念,其定义是:对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位。
一个对象由一组属性和对这组属性进行操作的一组服务构成。
属性和服务,是构成对象的两个主要因素,其定义是:属性是用来描述对象静态特征的一个数据项。
服务是用来描述对象动态特征(行为)的一个操作序列。
一个对象可以有多项属性和多项服务。
一个对象的属性和服务被结合成一个整体,对象的属性值只能由这个对象的服务存取。
在有些文献中把对象标识(OID)列为对象的另一要素。
对象标识也就是对象的名字,有“外部标识”和“内部标识”之分。
前者供对象的定义者或使用者用,后者为系统内部惟一的识别对象。
(怎么感觉这点跟android开发里面的id是一样的,在某个文件下有编程人员定义的所有属性的id,并且是唯一的,一般不允许更改,属于系统内部分配。
) 另外需要说明以下两点:第一点是,对象只描述客观事物本质的与系统目标有关的特征,而不考虑那些非本质的与系统目标无关的特征。
软件工程第十一章面向对象设计

THANKS
感谢观看
01
抽象类是一种不能被实例化的 类,它只能被其他类继承。
02
抽象类可以包含抽象方法和具 体方法。抽象方法是没有具体 实现的方法,需要在继承抽象 类的子类中实现。
03
通过继承抽象类,子类可以继 承抽象类的属性和方法,并且 可以重写或实现抽象类中的方 法。
接口与抽象类的选择
在设计软件时,选择使用接口还是抽象类取决于具体需求和设计目标。
关系
关系描述了对象之间的交互和联系。 常见的关系包括关联、聚合和继承。
继承与多态的设计
继承
继承是一种实现代码重用的方式,子类可以继承父类的属性和方法,并可以扩展或覆盖它们。通过继承,可以建 立类之间的层次结构,使得代码更加清晰和易于维护。
多态
多态是指一个接口可以有多种实现方式,或者一个对象可以有多种形态。多态可以提高代码的灵活性和可扩展性, 使得程序更加易于维护和修改。
02
类与对象的设计
类的定义与属性
类的定义
类是对象的抽象,它描述了一组具有相同属性和行为的对象。类定义了对象的结构、行为和关系。
属性
属性是类中用于描述对象状态的变量。每个对象都有其自己的属性值,这些属性值决定了对象的状态 。
对象的行为与关系
行为
行为是类中定义的方法,用于描述对 象可以执行的操作。方法定义了对象 的行为和功能。
高层模块不应该依赖于低层模块,它们都应 该依赖于抽象。
面向对象设计的优势
提高代码可重用性
通过类和继承实现代码重用,减少重 复代码。
提高代码可维护性
面向对象设计使得代码结构更加清晰, 易于理解和维护。
提高开发效率
通过快速原型开发,快速构建软件系 统。
简述面向对象的概念

简述面向对象的概念
面向对象是一种编程思想,将问题抽象成对象,通过对象之间的交互来解决问题。
面向对象的概念包括以下几个要点:
1. 类:类是对象的模板,定义了对象的属性和行为。
它可以看作是一种数据类型,通过实例化类可以创建对象。
2. 对象:对象是类的一个具体实例,具有自己的状态(属性)和行为(方法)。
对象可以相互交互,通过调用方法来完成特定的功能。
3. 封装:封装是面向对象的一种特性,将数据和操作数据的方法封装在一个对象中,隐藏内部实现细节,只提供对外的接口。
4. 继承:继承是指一个类可以派生出子类,子类继承了父类的属性和方法,并可以在此基础上进行扩展或修改。
5. 多态:多态是指同一类型的对象,在不同的情况下可以呈现出不同的行为。
通过继承和重写父类的方法,实现不同对象对同一消息的响应。
面向对象的编程思想使得程序的设计更加灵活和易于维护,通过抽象、封装、继承和多态,可以提高代码的复用性、可扩展性和可读性。
面向对象的名词解释是什么

面向对象的名词解释是什么在计算机科学中,面向对象(Object-Oriented)是一种编程范式,它将系统的组织和设计建立在对象的概念上。
面向对象编程的核心理念是将问题分解成不同的对象,每个对象都有自己的状态和行为,并且能够与其他对象进行交互。
面向对象编程的基本概念是“类”和“对象”。
类是一种抽象的概念,描述了一组具有相同属性和行为的对象。
通过类的定义,我们可以创建一些具体的实例,即对象。
对象是类的具体实例化,它拥有类定义的属性和行为。
在面向对象的编程中,我们通过创建对象来解决问题,每个对象都具有自己的数据和可执行的代码。
面向对象编程具有许多特性,其中最重要的是封装、继承和多态。
封装是面向对象编程的基本原则之一。
它指的是将数据和相关操作封装在单个对象中,同时隐藏对象内部的细节。
通过封装,我们可以将对象的数据和行为组织在一起,使其成为一个独立的实体。
封装有助于减少代码的耦合性,提高代码的可维护性和复用性。
继承是面向对象编程的另一个重要概念。
继承允许我们创建一个新的类,该类继承现有类的属性和行为。
新类称为子类或派生类,而被继承的类称为父类或基类。
通过继承,子类可以重用父类的代码,并且可以在其基础上进行扩展或修改。
继承可以提高代码的可读性和可维护性,同时也促进了代码的重用。
多态是面向对象编程的第三个重要特性。
多态允许不同的对象对相同的消息作出不同的响应。
具体来说,多态使我们可以使用一个通用的接口来处理不同类型的对象,而不需要关心对象的具体类型。
这种特性使得代码更加灵活和可扩展,使得程序具有更好的适应性和可复用性。
除了封装、继承和多态,面向对象编程还有其他一些重要的概念,如抽象、接口和消息传递等。
抽象指的是将问题的共同特征提取出来,形成类或接口的过程。
接口定义了类所提供的方法和属性,它为类提供了一种协议,规定了类和外部世界之间的交互方式。
消息传递是面向对象编程中对象之间通信的方式,对象通过发送消息来请求其他对象执行某个操作。
01 第一章 面向对象概述
1.1面向对象基本概念
2 对象——具有属性 属性刻画了对象的静态特征
车型名称 厂商 级别
十代思域220turbo 东风本田 紧凑型车
能源类型
汽油
环保标准
国V
上市时间
最大功率 (kW)
最大扭矩 (N·m)
发动机
2016.04 130 220
1.5T 177马力 L4
1.3面向对象与项目设计
1 使用面向对象方法分析项目需求
面向对象的分析过程
用户 开发者
一般需求
管理者 用户知识
问题域建模
专业领域知识
现实世界经验
问题域陈述
对象模型 动态模型
功能模型
1.3面向对象与项目设计
1 使用面向对象方法分析项目需求
面向对象分析的一般过程
获取需求内容陈述
建立系统的对象模型结构 建立对象的动态模型
类的例子
信息工程系的 帧一一同学
学生类
经贸管理系的 贾三三同学
尝试抽象——试将下列图标分类
不同角度,分类结果不一定 根 据 问 题 需 要 进 行 分 类
1.1面向对象基本概念
3 类——与对象的关系
• 每一个对象都是某一 个类的实例
• 每一个类在某一时刻 有零个或更多的实例
• 类是静态的:其语义 和关系在执行前就已 经定义好了
1.4面向对象思想与软件工程模型
1 瀑布模型
瀑布模型将软件生 命周期划分为软件 计划、需求分析和 定义、软件设计、 软件实现、软件测 试、软件运行和维 护这6个阶段,并 且规定了它们自上 而下的次序,如同 瀑布一样下落。每 一个阶段完成才进 行下一阶段。
面向对象程序设计
C# 类的访问修饰符
非嵌套类的类访问修饰符只能是public或 internal(默认的)。 访问修饰符 作用说明 public 表示不限制对类的访问。 internal 表示该类能够被程序集中的所有文件 访问,而不能有程序集之外的对象访 问。
C# 分部类
分部类可以将类(结构或接口等)的声 明拆分到两个或多个源文件中。
面向对象程序设计
《C#程序设计》
面向对象概念(Object-Oriented)
面向对象程序设计(Object-Oriented Programming)简称OOP技术。 OOP的主要思想是将数据和处理这些数 据的操作都封装( Encapsulation)到一个称 为类(Class)的数据结构中。 在程序里用到的是对象,即类的实例。
定义方法的基本格式如下: 修饰符 返回类型 方法名(参数列表) { //方法的具体实现; }
C# 方法参数(值参数)
当利用传值方式向方法传递参数时,编 译程序给实参的值做一份拷贝,并且将此拷 贝传递给该方法,被调用的方法不会修改内 存中实参的值,所以使用值类型参数时可以 保证实际值的安全性。
C# 方法参数(引用参数)
类的声明语法格式如下: [类的修饰符] class 类名 [:基类名]
{
//类的成员;
பைடு நூலகம்
}[;]
C# 类
从编程语言的角度讲,类就是一种数据结 构,它定义数据和操作这些数据的代码。
例如,以下声明了一个Person类:
public class Person { private int pno; //编号 private string pname; //姓名 public void setdata(int no,string name) { pno=no; pname=name; } public void dispdata() { Console.WriteLine("{0} {1}", pno, pname); } }
面向对象的概念是什么?和面向过程有什么区别
面向对象的概念是什么?和面向过程有什么区别?面向对象是尽可能模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程。
面向过程,也就是结构化程序设计是一种自顶向下逐步求精的设计方法,和单入口单出口的程序结构。
面向对象的概念,特点是什么?1.编程模型所有计算机均由两种元素组成:代码和数据.精确的说,有些程序是围绕着"什么正在发生"而编写,有些则是围绕"谁正在受影响"而编写的.第一种编程方式叫做"面向过程的模型",按这种模型编写的程序以一系列的线性步骤(代码)为特征,可被理解为作用于数据的代码.如C 等过程化语言.第二种编程方式叫做"面向对象的模型",按这种模型编写的程序围绕着程序的数据(对象)和针对该对象而严格定义的接口来组织程序,它的特点是数据控制代码的访问.通过把控制权转移到数据上,面向对象的模型在组织方式上有:抽象,封装,继承和多态的好处.2.抽象面向对象程序设计的基本要素是抽象,程序员通过抽象来管理复杂性.管理抽象的有效方法是使用层次式的分类特性,这种方法允许用户根据物理含义分解一个复杂的系统,把它划分成更容易管理的块.例如,一个计算机系统是一个独立的对象.而在计算机系统内部由几个子系统组成:显示器,键盘,硬盘驱动器,DVD-ROM,软盘,音响等,这些子系统每个又由专门的部件组成.关键是需要使用层次抽象来管理计算机系统(或其他任何复杂系统)的复杂性.面向对象程序设计的本质:这些抽象的对象可以被看作具体的实体,这些实体对用来告诉我们作什么的消息进行响应./* (我的理解)*计算机是一个实体,我要输入字符,显示器显示出来,那么*计算机(对象).输入(键盘属性).显示(显示方法)*使用分层来引用,操作.而不用管计算机内部如何处理.*只要有计算机对象,它就能响应我的操作,而我敲键盘,*计算机对象就把这个消息传给屏幕,屏幕显示.*/计算机对象包含了它所有的属性,以及操作,这就是面向对象程序设计的三大原则之一:封装.3.封装封装是一种把代码和代码所操作的数据捆绑在一起,使这两者不受外界干扰和误用的机制.封装可被理解为一种用做保护的包装器,以防止代码和数据被包装器外部所定义的其他代码任意访问.对包装器内部代码与数据的访问通过一个明确定义的接口来控制.封装代码的好处是每个人都知道怎样访问代码,进而无需考虑实现细节就能直接使用它,同时不用担心不可预料的副作用.在JAVA中,最基本的封装单元是类,一个类定义着将由一组对象所共享的行为(数据和代码).一个类的每个对象均包含它所定义的结构与行为,这些对象就好象是一个模子铸造出来的.所以对象也叫做类的实例.在定义一个类时,需要指定构成该类的代码与数据.特别是,类所定义的对象叫做成员变量或实例变量.操作数据的代码叫做成员方法.方法定义怎样使用成员变量,这意味着类的行为和接口要由操作实例数据的方法来定义.由于类的用途是封装复杂性,所以类的内部有隐藏实现复杂性的机制.所以JA VA中提供了私有和公有的访问模式,类的公有接口代表外部的用户应该知道或可以知道的每件东西.私有的方法数据只能通过该类的成员代码来访问.这就可以确保不会发生不希望的事情.4.继承继承是指一个对象从另一个对象中获得属性的过程.是面向对象程序设计的三大原则之二,它支持按层次分类的概念.例如,波斯猫是猫的一种,猫又是哺乳动物的一种,哺乳动物又是动物的一种.如果不使用层次的概念,每个对象需要明确定义各自的全部特征.通过层次分类方式,一个对象只需要在它的类中定义是它成为唯一的各个属性,然后从父类中继承它的通用属性.因此,正是由于继承机制,才使得一个对象可以成为一个通用类的一个特定实例.一个深度继承的子类将继承它在类层次中的每个祖先的所有属性.继承与封装可以互相作用.如果一个给定的类封装了某些属性,它的任何子类将会含有同样得属性,另加各个子类所有得属性.这是面向对象程序在复杂性上呈线性而非几何增长的一个重要概念.新的子类继承其所有祖先的所有属性.子类和系统中的其他代码不会产生无法预料的交互作用.5.多态多态是指一个方法只能有一个名称,但可以有许多形态,也就是程序中可以定义多个同名的方法,用"一个接口,多个方法"来描述.可以通过方法的参数和类型引用.6.封装,继承,多态的组合使用在由封装,继承,多态所组成的环境中,程序员可以编写出比面向过程模型更健壮,更具扩展性的程序.经过仔细设计的类层次结构是重用代码的基础.封装能让程序员不必修改公有接口的代码即可实现程序的移植.多态能使程序员开发出简洁,易懂,易修改的代码.例如:汽车从继承的角度看,驾驶员都依靠继承性来驾驶不同类型(子类)的汽车,无论这辆车是轿车还是卡车,是奔驰牌还是菲亚特牌,驾驶员都能找到方向盘,手刹,换档器.经过一段时间驾驶后,都能知道手动档与自动档之间的差别,因为他们实际上都知道这两者的共同超类:传动装置.从封装的角度看,驾驶员总是看到封装好的特性.刹车隐藏了许多复杂性,其外观如此简单,用脚就能操作它.发动机,手刹,轮胎大小的实现对与刹车类的定义没有影响.从多态的角度看,刹车系统有正锁反锁之分,驾驶员只用脚踩刹车停车,同样的接口可以用来控制若干种不同的实现(正锁或反锁).这样各个独立的构件才被转换为汽车这个对象的.同样,通过使用面向对象的设计原则,程序员可以把一个复杂程序的各个构件组合在一起,形成一个一致,健壮,可维护的程序类是对象的抽象,实例是类的实现C++中对象和类有何联系和区别:它的区别就像int a = 0;中的int 和a 的区别一样。
面向对象的概念和常见的面向对象的语言
默.这也是意料中的事情,我觉得,因为Java近来很成 功而使用Java的公司都报告说它们在生产效率上比 C++获得了提高. Java所带来的巨大影响和大家对 它的广泛接受已经由工作于这种语言和平台之上的 程序员数量明显的说明了(估计世界范围内共有两百 五十万程序员使用Java).由这种语言写成的应用程序 的数量是令人惊讶的并已经渗透了每一个级别的计 算,包括无线计算和移动电话(比如日本发明的Java电 话).C#能够在用户领域获得这样的礼遇吗?
Java名字的来源 Java是印度尼西 亚爪哇岛的英文名称,因 盛产咖啡而闻名。Java 语言中的许多库类名称, 多不咖啡有关:如 JavaBeans(咖啡豆) 、NetBeans(网络豆) 以及ObjectBeans (对象 豆)等等。SUN和JAVA 的标识也正是一杯正冒着 热气的咖啡。
Java分为三个体系J2SE(Java2 Platform Standard Edition,java平台标准版),J2EE(Java 2 Platform,Enterprise Edition,java平台企业版), J2ME(Java 2 Platform Micro Edition,java平台微型 版)。 • 不传统程序丌同,Sun 公司在推出 Java 之际就将 其作为一种开放的技术。全球数以万计的 Java 开发公司 被要求所设计的 Java 软件必须相亏兼容。“Java 语言 靠群体的力量而非公司的力量”是Sun公司的口号之一, 幵获得了广大软件开发商的认同。这不微软公司所倡导的 注重精英和封闭式的模式完全丌同。 •
• JAVA简介 • Java是由Sun Microsystems公司亍1995年5月 推出的Java面向对象程序设计语言(以下简称Java语言 )和Java平台的总称。由James Gosling和同事们共同 研发,幵在1995年正式推出。用Java实现的HotJava浏 觅器(支持Java applet)显示了Java的魅力:跨平台、 劢态的Web、Internet计算。从此,Java被广泛接受幵 推劢了Web的迅速发展,常用的浏觅器均支持Java applet。另一方面,Java技术也丌断更新。(2010年 Oracle公司收购了SUN) • Java由四方面组成:Java编程语言、Java类文件 格式、Java虚拟机和Java应用程序接口(Java API)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
16
面 向 对 象 的 方 法
面向对象的基本概念
——继承 继承
继承对于软件复用有着重要意义, 继承对于软件复用有着重要意义,是 面向对象技术能够提高软件开发效率 的重要原因之一。 的重要原因之一。 定义: 定义:特殊类的对象拥有其一般类的 全部属性与服务, 全部属性与服务,称作特殊类对一般 类的继承。 类的继承。 例如:将轮船作为一个一般类,客轮 例如:将轮船作为一个一般类, 便是一个特殊类。 便是一个特殊类。
C++: 兼容原有 语言,加入面向对象的有关内容 兼容原有C语言 语言, 和规则
面 向 对 象 的 方 法
程序设计方法的发展历程
程序的目的: 程序的目的:用于数学计算 主要工作:设计求解问题的过程 主要工作:
——面向过程的程序设计方法 面向过程的程序设计方法 面向过程
缺点:对于庞大、复杂的程序难以开发 缺点:对于庞大、 和维护
前一页 休息 26
——封装 封装 利用抽象数据类型将数据和基于数据的操 作封装在一起 ——继承 继承 存在于面向对象程序的两个类之间的一种 关系。 关系。 当一个类拥有另一个类的所有数据和操作 就称这两个类之间具有继承关系; 时,就称这两个类之间具有继承关系;被继承 的类称为父类或基类, 的类称为父类或基类,继承了父类属性的类称 为子类或派生类
——面向过程的结构化程序设计方法 面向过程 结构化程序设计方法 过程的 缺点:可重用性差、数据安全性差、 缺点:可重用性差、数据安全性差、 难以开发图形界面的应用
– 把数据和处理数据的过程分离为相互独 立的实体。 – 当数据结构改变时,所有相关的处理过 程都要进行相应的修改。 – 每一种相对于老问题的新方法都要带来 额外的开销。 – 图形用户界面的应用,很难用过程来描 述和实现,开发和维护都很困难。
休息
11
面 向 对 象 的 方 法
面向对象的基本概念
——对象 对象
一般意义上的对象: 一般意义上的对象:
– 是现实世界中一个实际存在的事物。 – 可以使有形的(比如一辆汽车),也可 以是无形的(比如一项计划)。 – 是构成世界的一个独立单位,具有:
静态特征:可以用某种数据来描述 动态特征:对象所表现的行为或具有的功能
前一页 休息
手表: 手表:类 老王的手表: 老王的手表:对象
21
计算机世界
现实世界 映射
对象
实 例 化 抽 象
实体
抽 象
类
计算机 逻辑的 实现
抽象数据类
前属性 状态:对象的静态属性 行为:对象的操作 标志:用以区分
前一页
休息
23
调整时间
显示时间
报时
状态 (种类 指示时间 上弦 …) )
前一页 休息 10
面 向 对 象 的 方 法
程序设计方法的发展历程
优点: 优点:
——面向对象的方法 面向对象的方法 面向对象
– 程序模块间的关系更为简单,程序模块 的独立性、数据的安全性就有了良好的 保障。 – 通过继承与多态性,可以大大提高程序 的可重用性,使得软件的开发和维护都 更为方便。
前一页
前一页 休息 15
面 向 对 象 的 方 法
面向对象的基本概念
——封装 封装
把对象的属性和服务结合成一个独立 的系统单位。 的系统单位。 尽可能隐蔽对象的内部细节。对外形 尽可能隐蔽对象的内部细节。 成一个边界(或者说一道屏障), ),只 成一个边界(或者说一道屏障),只 保留有限的对外接口使之与外部发生 联系。 联系。
前一页
休息
9
面 向 对 象 的 方 法
程序设计方法的发展历程
——面向对象的方法 面向对象 面向对象的方法
将数据及对数据的操作方法封装在一 作为一个相互依存、 起,作为一个相互依存、不可分离的 整体——对象。 对象。 整体 对象 对同类型对象抽象出其共性,形成类。 对同类型对象抽象出其共性,形成类。 类通过一个简单的外部接口, 类通过一个简单的外部接口,与外界 发生关系。 发生关系。 对象与对象之间通过消息进行通讯。 对象与对象之间通过消息进行通讯。
前一页 休息 7
面 向 对 象 的 方 法
程序设计方法的发展历程
优点: 优点:
——面向过程的结构化程序设计方法 面向过程的结构化程序设计方法 面向过程
有效地将一个较复杂的程序系统设计 任务分解成许多易于控制和处理的子任务, 便于开发和维护。
前一页
休息
8
面 向 对 象 的 方 法
程序设计方法的发展历程
软件的质量 外部质量:软件中与用户和维护人员有关的 ——正确性 ——健壮性 ——可扩充性 ——可复用性 ——其他(兼容性,效率,可移植性…) 内部质量:与开发人员有关的 ——可读性 ——可维护性
前一页
休息
4
• 面向对象方法的提出
Simula I 1966 Smalltalk-80 1980 Lisp Object Pascal C++ JAVA
前一页 休息
6
面 向 对 象 的 方 法
程序设计方法的发展历程
设计思路
——面向过程的结构化程序设计方法 面向过程 结构化程序设计方法 过程的
– 自顶向下、逐步求精。采用模块分解与 功能抽象,自顶向下、分而治之。
程序结构: 程序结构:
– 按功能划分为若干个基本模块,形成一 个树状结构。 – 各模块间的关系尽可能简单,功能上相 对独立;每一模块内部均是由顺序、选 择和循环三种基本结构组成。 – 其模块化实现的具体方法是使用子程序。
前一页 休息
特点: 特点:将数据 及数据的操做 封装在一起
20
• 对象、实体与类
对象: 对象:现实世界中某个具体的物理实体在计算 机逻辑中的映射和体现 类:是一种抽象的数据类型,是同种对象的集 是一种抽象的数据类型, 合与抽象。 合与抽象。属于类的某一个对象则被称为类的 一个实例 鸭子: 鸭子:类 那只红嘴巴的鸭子: 那只红嘴巴的鸭子:对象
前一页 休息 17
面 向 对 象 的 方 法
面向对象的基本概念
——多态性 多态性
多态是指在一般类中定义的属性或行 被特殊类继承之后, 为,被特殊类继承之后,可以具有不 同的数据类型或表现出不同的行为。 同的数据类型或表现出不同的行为。 这使得同一个属性或行为在一般类及 其各个特殊类中具有不同的语义。 其各个特殊类中具有不同的语义。 例如: 例如:
前一页 休息 14
面 向 对 象 的 方 法
面向对象的基本概念
——类 类
面向对象方法中的"类 面向对象方法中的 类"
– 具有相同属性和服务的一组对象的集合 – 为属于该类的全部对象提供了抽象的描述, 包括属性和行为两个主要部分。 – 类与对象的关系: 犹如模具与铸件之间的关系,一个属于某 类的对象称为该类的一个实例。
前一页 休息 32
面 向 对 象 的 软 件 开 发
系统分析
系统分析阶段应该扼要精确地抽象出 系统必须做什么, 系统必须做什么,但是不关心如何去 实现。 实现。 面向对象的系统分析, 面向对象的系统分析,直接用问题域 中客观存在的事物建立模型中的对象, 中客观存在的事物建立模型中的对象, 对单个事物及事物之间的关系, 对单个事物及事物之间的关系,都保 留他们的原貌,不做转换, 留他们的原貌,不做转换,也不打破 原有界限而重新组合, 原有界限而重新组合,因此能够很好 地映射客观事物。 地映射客观事物。
面向对象的语言
优点: 优点:
使程序能够比较直接地反问题域的本 来面目,软件开发人员能够利用人类认识 事物所采用的一般思维方法来进行软件开 发。
前一页
休息
2
面向对象程序设计的基本概念
一、面向对象思想的由来 程序设计方法的前期发展 软件危机 估计不准确 用户不满意 不可维护 没有适当的文档资料 面向机器 面向过程
前一页
休息
13
面 向 对 象 的 方 法
面向对象的基本概念
——类 类
分类——人类通常的思维方法 人类通常的思维方法 分类 分类所依据的原则——抽象 分类所依据的原则 抽象
– 忽略事物的非本质特征,只注意那些与 当前目标有关的本质特征,从而找出事 物的共性,把具有共同性质的事物划分 为一类,得出一个抽象的概念。 – 例如,石头、树木、汽车、房屋等都是 人们在长期的生产和生活实践中抽象出 的概念。
前一页
休息
25
• 面向对象程序设计方法的特点
——抽象: 抽象: 抽象 通过从特定的实例中抽取共同的性质以形 一般化的概念的过程 两类:过程抽象,数据抽象 两类:过程抽象, 面向对象的软件开发方法的主要特点之一就 是采用数据抽象的方法 数据抽象包含了模块化和信息隐藏 原理:数据抽象,行为共享,进化, 原理:数据抽象,行为共享,进化,确定性
计 算 机 语 言 的 发 展
面向对象的语言
出发点: 出发点:
–更直接地描述客观世界中存在的事物 (对象)以及它们之间的关系。
特点: 特点:
–是高级语言。 –将客观事物看作具有属性和行为的对象。 –通过抽象找出同一类对象的共同属性和 行为,形成类。 –通过类的继承与多态实现代码重用
前一页 休息 1
计 算 机 语 言 的 发 展
——可重用性 ——可扩展性 —— ——可管理性 • 面向对象程序设计语言 ——纯粹的 纯粹的OOP 纯粹的 (Object-c, Eiifel, Smalltalk 80) ) ——混合型 混合型
前一页 休息 29
• 消息
——什么是消息? 什么是消息? 什么是消息 对象之间相互请求或相互协作的途径 三个性质: 三个性质:1. 同一对象可接收不同形式的多个 消息, 消息,产生不同的响应 2. 相同形式的消息可以送给不同对 象,所作出的响应可以是不同的 3. 对消息的响应并不是必须的