面向对象中的概念(理论课)
什么是面向对象、对象是什么、什么是类、如何使用对象、类和对象的关系

什么是⾯向对象、对象是什么、什么是类、如何使⽤对象、类和对象的关系⾯向对象⼀、⾯向对象 概念:⾯向对象是⼀种编程思想,使⽤编程语⾔解决现实问题的⼀种思路。
分类: ⾯向过程: 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,并且是唯一的,一般不允许更改,属于系统内部分配。
) 另外需要说明以下两点:第一点是,对象只描述客观事物本质的与系统目标有关的特征,而不考虑那些非本质的与系统目标无关的特征。
面向对象程序设计方法中的概念

面向对象程序设计方法中的概念
①、类(Class):是对一组具有相同属性和相同操作的事物、 实体(对象)的集合的抽象。如果某个事物(对象)属于一个 类,那么这个对象就具有这个类的属性,能进行这个类的 操作。
②、对象(Object) :对象是指一组属性以及这组属性上的 专用操作的封装体。
⑧、多态性:多态性是指同一个操作作用于不同的对象可ቤተ መጻሕፍቲ ባይዱ以有不同的解释,产生不同的执行结果。
⑨、封装性:封装是面向对象程序设计术语,用于说明包 含和隐藏对象信息的能力。封装将操作对象的内部复杂性 与应用程序的其他部分隔离开来。
Visual Basic 程序设计
③、继承:继承是在某个类的层次关联中不同的类共享属 性和操作的一种机制。继承是类与类这间的关系,不是对 象与对象或对象与类这间的关系。
④、消息 :消息是对象间通信的手段,一个对象通过向 另一个对象发送消息来请求其服务。
⑤、属性(Properity):对象的属性标识了对象的特征 。 设置属性的语法为:Object.Properity=Value
⑥、方法(Method) :对象的方法是指对象可执行的动作。 即在类的定义时,封装在其中的对象的行为,表示对象所 能提供的服务。对象方法执行过程是不需要外界的干预, 是对象本身具有的能力。
⑦、事件(Event)和事件驱动: 事件是由对象识别和响应的某些操作,是一些特定的预定 义的活动,可由用户或系统触发。 事件驱动是指程序的执行由事件驱动,程序的执行顺序由 事件的发生顺序决定。事件是对象识别的某种操作,程序 的运行是事件驱动的。在用面向对象的方法设计程序时, 必须要注意两个基本点: ①你写的代码是在什么事件发生时执行; ②这个事件由谁来识别。
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个阶段,并 且规定了它们自上 而下的次序,如同 瀑布一样下落。每 一个阶段完成才进 行下一阶段。
UML第1章 面向对象方法概论

1.3
面向对象开发的概念
面向对象开发是现实世界中以抽象为基础的 软件思维的一种崭新方式。面向对象开发的本质 是应用领域概念的鉴别和组织,而不是它们在一 种程序设计语言中的最终表示。
1.3.1
面向对象方法学
• • • •
分析 系统设计 对象设计 实现
1.3.2 • 对象模型 • 动态模型 • 功能模型
• 所谓“描述”是指用一种语言把人们对问题域 中事物的认识、对问题及其解决方法的认识描 述出来。最终的描述必须使用一种能够被机器 读得懂的语言,即编程语言。
1.2.2 • • • • • • 标识 分类 多态性 继承 封装 抽象
对象的特性
1.2.3
软件工程学的作用
• 软件工程学从认识事物方面看,它在分析阶段 提供了一些对问题域的分析认识方法。从描述 事物方面看,它在分析和设计阶段提供了一些 从问题域逐步过渡到编程语言的描述手段 。 • 传统的软件工程方法(图1-1)与面向对象的 软件工程方法(图1-2)比较
问题域 需求分析 总体设计和详细设计 编程和测试 软件维护
图1-1
问题域 自然语言 面向对象的编程语言 OOA OOD OOP OOT 计算机
图1-2
• 传统的软件工程方法: 1)需求分析 2)总体设计和详细设计 3)编程和测试 4)软件维护
• 面向对象的软件工程方法 1)面向对象的分析 2)面向对象设计 3)面向对象的编程 4)面向对象的测试 5)面向对象的软件维护
• 面向对象方法的主要优点是 : (1)与人类习惯的思维方法一致 (2)稳定性好 (3)可重用性好
(4)可维护性好 (5)面向对象的软件稳定性比较好 (6)面向对象的软件容易修改 (7)面向对象的软件容易理解 (8)易于测试和调试
面向对象方法学

表示类的图
4.2 表示关系的符号
如前所述,类图由类及类与类之间的关系组成。定 义了类之后就可以定义类与类之间的各种关系了。 类与类之间通常有关联、泛化(继承)、依赖和细 化等4种关系。 1. 关联
关联表示两个类的对象之间存在某种语义上的联系。 例如,作家使用计算机,我们就认为在作家和计算 机之间存在某种语义连接,因此,在类图中应该在 作家类和计算机类之间建立关联关系。
(3) 实例(instance)
实例就是由某个特定的类所描述的一个具体的对 象。类是对具有相同属性和行为的一组相似的对象 的抽象,类在现实世界中并不能真正存在。实际上 类是建立对象时使用的“样板”,按照这个样板所 建立的一个个具体的对象,就是类的实际例子,通 常称为实例。当使用“对象”这个术语时,既可以 指一个具体的对象,也可以泛指一般的对象,但是, 当使用“实例”这个术语时,必然是指一个具体的 对象。
(1) 普通关联
普通关联是最常见的关联关系,只要在类与类之间 存在连接关系就可以用普通关联表示。普通关联的 图示符号是连接两个类之间的直线。通常,关联是 双向的,可在一个方向上为关联起一个名字,在另 一个方向上起另一个名字(也可不起名字)。为避 免混淆,在名字前面(或后面)加一个表示关联方 向的黑三角。
面向对象方法学的优点
1. 与人类习惯的思维方法一致 传统的程序设计技术是面向过程的设计方法,这
种方法以算法为核心,把数据和过程作为相互独立 的部分,数据代表问题空间中的客体,程序代码则 用于处理这些数据。
2. 稳定性好
传统的软件开发方法以算法为核心,开发过程基 于功能分析和功能分解。用传统方法所建立起来的 软件系统的结构紧密依赖于系统所要完成的功能, 当功能需求发生变化时将引起软件结构的整体修改。 事实上,用户需求变化大部分是针对功能的,因此, 这样的软件系统是不稳定的。
面向对象 教学大纲

面向对象教学大纲面向对象教学大纲引言:在计算机科学领域,面向对象编程(Object-Oriented Programming,简称OOP)是一种广泛应用的编程范式。
面向对象的思想将现实世界中的事物抽象为对象,并通过对象之间的交互来完成任务。
作为一种重要的编程方法,面向对象编程已经成为计算机科学教育中必不可少的内容。
本文将探讨面向对象教学大纲的设计和实施。
一、概述面向对象教学大纲的目标是培养学生的面向对象思维和编程能力。
通过深入理解面向对象的原理和方法,学生能够更好地设计和开发软件系统。
教学大纲应包含以下内容:1. 面向对象的基本概念:类、对象、继承、多态等。
2. 面向对象分析与设计方法:用例分析、类图、时序图等。
3. 面向对象编程语言:Java、C++等。
4. 面向对象开发工具和环境:Eclipse、Visual Studio等。
5. 面向对象的软件开发过程:需求分析、设计、编码、测试等。
二、教学内容1. 面向对象的基本概念1.1 类与对象的定义与关系1.2 继承与多态的原理和应用1.3 封装与信息隐藏的概念和实现1.4 抽象与接口的设计与应用2. 面向对象分析与设计方法2.1 用例分析与系统需求的获取2.2 类图的绘制与类之间的关系描述2.3 时序图的绘制与对象之间的交互描述2.4 面向对象设计原则的应用3. 面向对象编程语言3.1 Java语言的基本语法和特性3.2 C++语言的基本语法和特性3.3 面向对象编程的常见问题和解决方法4. 面向对象开发工具和环境4.1 Eclipse集成开发环境的使用和配置4.2 Visual Studio集成开发环境的使用和配置4.3 版本控制工具的使用和团队协作5. 面向对象的软件开发过程5.1 需求分析与软件架构设计5.2 编码与单元测试5.3 集成测试与系统测试5.4 软件维护与版本更新三、教学方法1. 理论讲授:通过课堂讲解,向学生介绍面向对象的基本概念和原理。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
19
OOP
OOP:采用支持面向对象的编程语言实现 采用支持面向对象的编程语言实现OOAD 采用支持面向对象的编程语言实现 OOP的主要任务: 的主要任务: 的主要任务
用支持面向对象的语言实现OOAD 用支持面向对象的语言实现
OOP的优点 的优点
容易编码 代码重用 容易调试 多态性
20/18
20
总结
信息隐藏: 信息隐藏:一个对象必须通过方法访问其他对象的属性
4/18
4
封装(2) 封装
姓名: 姓名:张军 性别:男 性别: 薪水: 薪水:5000 被提升薪水 +1000 对象2 对象
姓名: 姓名:李永波 性别:男 性别: 薪水: 薪水:15000 提升薪水命令
对象1 对象
5/18
5
封装(3) 封装
零件厂商A 零件厂商
公开信息: 公开信息 Email 电话号码 产品目录 私有信息: 私有信息: 如何制作零件 有多少库存 生产零件的成本
6/18
汽车制造商B 汽车制造商
公开信息: 公开信息 Email 电话号码 产品目录 私有信息: 私有信息: 零件如何装备成车 有多少库存 装配车的成本
6
封装(4) 封装
8/18
8
继承(1) 继承
继承(Inheritance) 继承
继承是允许重用现有的类而建立一个新类的特性
动物类 哺乳类 两栖类 昆虫类 爬行类 交通工具 汽车 船 火车
9/18
9
继承(2) 继承
泛化和特化 单继承和多继承
骡子
10/18
10
内容进度
掌握封装的概念 掌握继承的概念 掌握多态的概念 掌握抽象的概念 了解OOA 了解OOA OOD OOP
分析构成系统的对象,及系统须遵守的应用环境决定的规则和约束 分析构成系统的对象, 明确规定构成系统的对象如何协同工作
16/18
16
OOA的四个方面 的四个方面
识别类和对象
概念模型 基本元素
属性层和服务层
属性层
属性: 属性:对象保存的信息 实例连接: 实例连接:对象之间的关系
服务层: 服务层:
消息连接: 消息连接:由于通信需要而形成的联系 服务: 服务:对象收到消息后所能执行的操作
11/18
11
多态
多态(Polymorphism) 多态
能够表现出不同形态的能力
理解shape接口 接口 理解 Nhomakorabea12/18
12
接口
接口(Interface) 接口
只提供了抽象方法,没提供任何实现方法的类 只提供了抽象方法,
13/18
13
抽象
抽象(Abstract) 抽象
抽象是识别应用程序的相关特定实体的属性和方法的 过程
面向对象概念
目标
掌握封装的概念 掌握继承的概念 掌握多态的概念 掌握抽象的概念 了解OOA 了解OOA OOD OOP
2/18
2
面向对象的三大特性
封装 继承 多态
3/18
3
封装(1) 封装
定义
将数据结构和操作数据的方法放在一起, 将数据结构和操作数据的方法放在一起,并有选择地隐藏或公开类中 属性和方法的技术
设计学生类
14/18
14
内容进度
掌握封装的概念 掌握继承的概念 掌握多态的概念 掌握抽象的概念 了解OOA 了解OOA OOD OOP
15/18
15
OOA
面向对象分析 (Object-Oriented Analysis)
把真实世界中的对象和概念用精简的概念模型进行描述的过程
OOA的两个任务: 的两个任务: 的两个任务
属性: 属性 Email 电话号码 产品目录 材料需求细节 方法: 方法: 接受订单 计算效益 计算生产成本 属性: 属性 Email 电话号码 产品目录 车型目录 方法: 方法: 接受订单 计算薪水 计算生产成本 计算效益
零件厂商A 零件厂商
7/18
汽车制造商B 汽车制造商
7
内容进度
掌握封装的概念 掌握继承的概念 掌握多态的概念 掌握抽象的概念 了解OOA 了解OOA OOD OOP
面向对象的三大特性 抽象 OOA的四个层次 的四个层次 OOD OOP的优点 OOP的优点
21/18
21
实现OOA阶段的结果,通过添加非功能性需求,实现环境、性能等需求。 阶段的结果,通过添加非功能性需求,实现环境、性能等需求。 实现 阶段的结果
OOD的四个组成部分 的四个组成部分
问题相关部分的设计
OOA阶段的增补 阶段的增补
用户界面部分的设计 任务管理部分的设计
任务的选择和调整
数据管理部分的设计
19/18
结构层 主题层
17/18
17
OOA的四个方面 的四个方面
结构层
组装结构(多个类的成员聚合形成新类 组装结构 多个类的成员聚合形成新类) 多个类的成员聚合形成新类 分类结构(泛化和特化 泛化和特化) 分类结构 泛化和特化
主题层
高层的模块或子系统
18/18
18
OOD
OOD:设计程序中对象之间交互关系集合的过程。 :设计程序中对象之间交互关系集合的过程。 目的: 目的: