1.面向对象概述

合集下载

1、OOP概述

1、OOP概述
传习教育
OOP概述
目标


了解 基于过程的程序设计方法 理解 OOP概念 理解 OOP编程的思路和方法
2
基于过程的程序设计
1. 2.
3.
首先确定要执行的任务。 把要执行的任务分解成子任务,然后 再把子任务分解成子子任务,直到子 任务简单到可以直接实现(自顶向下 法)。 编写可以解决简单任务的过程,然后 把这些过程组合成较复杂的过程,直 到实现所需的功能(自底向上法)。
3
什么是 OOP

OOP: Object Oriented Programing 面向对象编程

在 OOP 中,程序由对象组成,这些对象 具有某种属性以及对象可执行的某些操 作
4
OOP编程思路
1.
2. 3. 4.
首先确定要执行的任务。 根据任务的描述把类找出来。 类确定之后,再去寻找类的方法。 根据业务逻辑,使用类的实例(也 就是对象)的方法来完成任务。
5
OOP与过程编程的不同


过程编程的重点在于设计一系列的函数 (或者说算法)来解决某一问题。 过程编程先确定如何操作数据,然后才 确定采用什么样的数据结构。 OOP把数据放在首位,然后才考虑在数 据上操作的算法。
6
Java程序设计

Java程序就是类! “万物皆对象”, Java程序就是对象!

7
总结
OOP编程如何下手?
首先设计类,然后往每个类 中添加方法,最后根据业务 逻辑调用不同对象的各种方 法来完成任务

8

1 面向对象程序设计概述

1 面向对象程序设计概述

面向对象程序的特点 面向对象程序的特点 程序
4.多态 4.多态( polymorphism )
优点: 优点: 1. 可以为具有继承关系的不同类所形成的类族 提供统一的外部接口; 提供统一的外部接口; 2. 减少记忆操作名的负担。 减少记忆操作名的负担。
对象和类的概念 对象和类的概念
1. 对象(object) 对象是软件开发所涉及的问题域中一些事物的抽 象; 对象是用来描述客观事物的一个实体, 对象是用来描述客观事物的一个实体,它是构成 系统的一个基本单位; 系统的一个基本单位; 对象由一组属性(attribute)和对这组属性进行 对象由一组属性 和对这组属性进行 操作的一组方法(method)的封装体,具有唯 的封装体, 操作的一组方法 的封装体 一的标识; 一的标识; 属 性 作 为 类 中 的 数 据 项 称 为 数 据 成 员 ( data member),表示一类对象所共有的静态特性; ) 表示一类对象所共有的静态特性; 方 法 作 为 类 中 的 操 作 称 为 成 员 函 数 ( member function),表示一类对象所共有的动态特性。 ) 表示一类对象所共有的动态特性。
对象和类的概念 对象和类的概念
消息和方法的关系 对象根据接收到的消息, 调用相应的方法; 对象根据接收到的消息 , 调用相应的方法 ; 反过 有了方法, 对象才能响应相应的消息。 来 , 有了方法 , 对象才能响应相应的消息 。 所以 消息模式与方法界面应该是一致的。 同时, 消息模式与方法界面应该是一致的 。 同时 , 只要 方法界面保持不变, 方法界面保持不变 , 方法体的改动不会影响方法 的调用。 的调用。 C++语言中方法是通过函数来实现的 语言中方法是通过函数来实现的, 在C++语言中方法是通过函数来实现的, 称为成员 函数。 函数。

4-1UML类目介绍

4-1UML类目介绍
1986:G.Booch的OOD; : 的 ; 1990:P.Coad和E.Yourdon的OOA,OOD : 和 的 , 1994:Embly的OSA等。 : 的 等 1991:J.Rumbbaugh的OMT; : 的
期间,形成了以下 大学派 大学派, 期间,形成了以下2大学派,即: 第一种: 驱动的方法学。 第一种:以“方法(method )”驱动的方法学。 方法( 基本思想:在给出符号体系的基础上, • 基本思想:在给出符号体系的基础上,明确规定 进行的“步骤” 进行的“步骤”,并在每一步中给出 “实施策略”。 实施策略” 代表:P.Coad的 OOA(1990) OOD(91) • 代表:P.Coad的“OOA(1990)”, “ OOD(91) ” 优缺点分析: • 优缺点分析: 优点:容易学习和掌握。 优点:容易学习和掌握。 缺点:不够灵活, 缺点:不够灵活,可能对出现的新问题就没有 办法处理。 办法处理。
2 UML UML概述 1) UML概述
UML是一种可视化语言,用于: 是一种可视化语言,用于: 是一种可视化语言 规约系统的制品 系统的制品; (1)规约系统的制品; 构造系统的制品 系统的制品; (2)构造系统的制品; 建立系统制品的文档 系统制品的文档。 (3)建立系统制品的文档。 UML应用范围 应用范围 UML作为一种一般性的语言 作为一种一般性的语言: UML作为一种一般性的语言: 可用于对象方法和构件方法; (1)可用于对象方法和构件方法; (2)可用于 •所有应用领域 所有应用领域
•••••• •••••• •••••• ••••••
表达模型的工具 -类图、交互图等 需求分析层 类图、 类图 表达模型的工具 -类图、交互图等 类图、 类图 表达模型的工具 设计层
2)面向对象方法术语/符号 2)面向对象方法术语/ 面向对象方法术语 基于面向对象方法的世界观, 大千世界是由对象组成的, 基于面向对象方法的世界观,即“大千世界是由对象组成的, 面向对象方法的世界观 对象有其自己的属性和运动规律, 对象有其自己的属性和运动规律,对象之间的相互作用构成了 客观世界各种各样的系统。 为了支持软件开发, 客观世界各种各样的系统。” 为了支持软件开发,面向对象方 法 主要提供了两类术语: 主要提供了两类术语: 一类是表达结构化事物的术语; 一类是表达结构化事物的术语; 一类是表达关系的术语。 一类是表达关系的术语。

java面向对象总结(一)

java面向对象总结(一)

java⾯向对象总结(⼀)1. 对象的概念及⾯向对象的三个基本特征⾯向对象的三⼤核⼼特性⾯向对象开发模式更有利于⼈们开拓思维,在具体的开发过程中便于程序的划分,⽅便程序员分⼯合作,提⾼开发效率。

⾯向对象程序设计有以下优点。

1. 可重⽤性:它是⾯向对象软件开发的核⼼思路,提⾼了开发效率。

⾯向对象程序设计的抽象、继承、封装和多态四⼤特点都围绕这个核⼼。

2. 可扩展性:它使⾯向对象设计脱离了基于模块的设计,便于软件的修改。

3. 可管理性:能够将功能与数据结合,⽅便管理。

该开发模式之所以使程序设计更加完善和强⼤,主要是因为⾯向对象具有继承、封装和多态 3 个核⼼特性。

继承性如同⽣活中的⼦⼥继承⽗母拥有的所有财产,程序中的继承性是指⼦类拥有⽗类数据结构的⽅法和机制,这是类之间的⼀种关系;继承只能是单继承。

例如定义⼀个语⽂⽼师类和数学⽼师类,如果不采⽤继承⽅式,那么两个类中需要定义的属性和⽅法.语⽂⽼师类和数学⽼师类中的许多属性和⽅法相同,这些相同的属性和⽅法可以提取出来放在⼀个⽗类中,这个⽗类⽤于被语⽂⽼师类和数学⽼师类继承。

当然⽗类还可以继承别的类,学校主要⼈员是⼀个⼤的类别,⽼师和学⽣是学校主要⼈员的两个⼦类,⽽⽼师⼜可以分为语⽂⽼师和数学⽼师两个⼦类,学⽣也可以分为班长和组长两个⼦类。

使⽤这种层次形的分类⽅式,是为了将多个类的通⽤属性和⽅法提取出来,放在它们的⽗类中,然后只需要在⼦类中各⾃定义⾃⼰独有的属性和⽅法,并以继承的形式在⽗类中获取它们的通⽤属性和⽅法即可。

封装性封装是将代码及其处理的数据绑定在⼀起的⼀种编程机制,该机制保证了程序和数据都不受外部⼲扰且不被误⽤。

封装的⽬的在于保护信息,使⽤它的主要优点如下。

保护类中的信息,它可以阻⽌在外部定义的代码随意访问内部代码和数据。

隐藏细节信息,⼀些不需要程序员修改和使⽤的信息,⽐如取款机中的键盘,⽤户只需要知道按哪个键实现什么操作就可以,⾄于它内部是如何运⾏的,⽤户不需要知道。

01 第一章 面向对象概述

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基础及Rose建模实用教程课后习题及答案

UML基础及Rose建模实用教程课后习题及答案

UML根底与Rose建模实用教程课后习题及答案第1章面向对象概述1. 填空题〔1〕软件对象可以这样定义:所谓软件对象,是一种将状态和行为有机结合起来形成的软件构造模型,它可以用来描述现实世界中的一个对象。

〔2〕类是具有一样属性和操作的一组对象的组合,即抽象模型中的“类〞描述了一组相似对象的共同特征,为属于该类的全部对象提供了统一的抽象描述。

〔3〕面向对象程序的根本特征是抽象、封装、继承和多态。

2. 选择题〔1〕可以认为对象是ABC。

〔A〕某种可被人感知的事物〔B〕思维、感觉或动作所能作用的物质〔C〕思维、感觉或动作所能作用的精神体〔D〕不能被思维、感觉或动作作用的精神体〔2〕类的定义要包含以下的要素ABD。

〔A〕类的属性〔B〕类所要执行的操作〔C〕类的编号〔D〕属性的类型〔3〕面向对象程序的根本特征不包括B。

〔A〕封装〔B〕多样性〔C〕抽象〔D〕继承〔4〕以下关于类与对象的关系的说法不正确的选项是A。

〔A〕有些对象是不能被抽象成类的〔B〕类给出了属于该类的全部对象的抽象定义〔C〕类是对象集合的再抽象〔D〕类用来在存中开辟一个数据区,并存储新对象的属性3. 简答题〔1〕什么是对象?试着列举三个现实中的例子。

对象是某种可被人感知的事物,也可是思维、感觉或动作所能作用的物质或精神体,例如桌子.椅子.汽车等。

〔2〕什么是抽象?抽象是对现实世界信息的简化。

能够通过抽象将需要的事物进展简化、将事物特征进展概括、将抽象模型组织为层次构造、使软件重用得以保证。

〔3〕什么是封装?它有哪些好处?封装就是把对象的状态和行为绑在一起的机制,使对象形成一个独立的整体,并且尽可能地隐藏对象的部细节。

封装有两个含义;一是把对象的全部状态和行为结合在一起,形成一个不可分割的整体。

对象的私有属性只能够由对象的行为来修改和读取。

二是尽可能隐蔽对象的部细节,与外界的联系只能够通过外部接口来实现。

通过公共访问控制器来限制对象的私有属性,使用封装具有以下好处:防止对封装数据的未授权访问、帮助保护数据的完整性、当类的私有方法必须修改时,限制了在整个应用程序的影响。

面向对象方法UML(1)

面向对象方法UML(1)

类(Class):是一组具有相同属性、操作、关系和语 义的对象的描述。 对象(object):对象是类的一个实例。
类表示为具有三个栏目的矩形,如下所示:
依据类出现的场景, 可以给出如下简化的表示:
类所在的包名
简单名 限定名
类可以是抽象类,即没有实例的类,此时类名采用斜体字. 例如: Window Window size:Area visibility:Boolean display( ) hide( )
属性的作用范围:
(1)实例范围的属性:一个类的所有对象具有相同的属性即属性的个数、名 称、数据类型相同,但属性值可不同,并随程序的执行而变化.实例范围的 属性是默认的,不需要附加的符号. (2)类范围的属性:描述类的所有对象共同特征的一个数据项,对于任何对 象实例,它的属性值都是相同的,通常对属性加下划线来表示该属性为实例 范围的属性. 注:如C++中冠以static的成员变量和smalltalk中的class attribute都是 类属性。
19
返回类型 返回类型是对操作的实现类型或操作的返回值类型的 规约,它与具体的实现语言有关。如果操作没有返回值(例 如C++ 中的void),就省略冒号和返回类型。当需要表示多 个返回值时,可以使用表达式列表。 根据实际问题的需要,可以省略全部的参数表和返回类 型,但不能只省略其中的一部分。
20
性质串 给出应用于该操作的性质值。该项是是可选的,但若省略操 作的性质串,就必须省略括号。UML提供了以下标准的性质值:
•leaf:指明该操作是“叶子”操作; •abstract:指明该操作是抽象操作; •query:指明该操作的运行不会改变系统状态,即是完全没有副作用的纯函数。 •sequential:指明在该类对象中,一次仅有一个控制流. •guarded:指明执行该操作的条件,实现操作调用的顺序化,即一次只能调用对 象的一个操作,以保证在出现多控制流的情况下,对象具有的语义和完整性. •Concurrent:指明来自并发控制流的多个调用可以同时作用于一个对象的任何一 个并发操作,而所有操作均能以正确的语义并发进行.并发操作必须设计成:在 对一个对象同时进行顺序的或监护的操作情况下仍能正确地执行. •static 指明该操作没有关于目标对象的隐式参数,其行为如同传统的全局过程 . 其中,包含一些用于表达操作的并发语义,例如guarded、Concurrent等, 这些特性是一些仅与主动对象、进程或线程有关的特性。如果没有对并发语义进 行说明,那么就假设操作是顺序执行的。

第1章 面向对象的方法学

第1章 面向对象的方法学
为了在程序中使用cin/cout,必须在程序中包含iostream库
的相关头文件
#include<iostream>
计算机科学与工程学院
西安理工大学
C++流类库简介
iostream类同时从istream(输入流)类和ostream(输出 流)类派生而来,允许双向输入/输出。输入由重载的操作 符>>完成,输出由重载的操作符<<来完成。 cin>>变量名; cout<<变量名或常量;
对象
对象是封装了数据结构及可以施加在这些数据结构上的操作的封装体。 对象是我们认识世界的基本单元,可以是人,也可以是物,还可以是一 件事。 术语“对象”既可以是指一个具体的对象,也可以泛指一般的对象。
实例
实例是一个类所描述的一个具体的对象。
例如,通过“大学生”类定义一个具体的对象学生王明就是大学生类的 一个实例,就是一个对象。 类和对象之间的关系是抽象和具体的关系。
面向对象分析
分析是问题抽象(即做什么)。 结构化方法采用面向过程的方法对问题进行分解 面向对象分析是指在深入、全面理解问题本质需求的基础上,准确地抽象出 系统必须做什么。
面向对象设计
分析是提取和整理用户需求,建立问题精确模型的过程,即做什么。设计是 问题求解 (即怎么做),是对分析阶段所建立的模型进行精雕细凿,并逐渐扩 充的一个过程。
[例9-5] 简单输出实例1。
[例9-6] 简单输出实例2。
计算机科学与工程学院
西安理工大学
基本输入流
流输入可以用流读取运算符——即重载的>>(右移位运算
符)来完成。 注意:
输入运算符>>也支持级联输入。在默认情况下,运算符>>跳过空格,读 入后面与变量类型相应的值。因此给一组变量输入值时,用空格或换行 将输入的数值间隔开,例如:
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

面向对象概述0.英语单词
1.课程介绍
2.面向过程编程和面向对象编程
1)面向对象是相对面向过程而言,两者都是编程思想。

2)面向过程强调的是功能行为,程序的实现是基于一个一个功能的实现;而面向对象强
调的是将功能封装进对象,程序的实现是基于对象的之间的消息传递。

3)面向对象是基于面向过程的,也就是说面向对象是在面向过程的基础上发展起来的。

4)面向过程程序设计中,程序的构成主体是一个一个的方法,而面向对象的程序设计中,
程序的构成主体是一个一个的类(生成对象的原型)
实例:
----------------------------------
3.面向对象思想的特点
是一种符合人类思考或做事的习惯的思想,可以将复杂的事情简单化;
将程序员从执行者转换成了指挥者,不是将一件事情拆分完成,而是找到具有所需功能的对象来用,如果对象不存在,那么就创建一个具有所需功能的对象。

实例:
---------------------------------------
4.面向对象开发、设计的特征
设计的过程:其实就是在管理和维护对象之间的关系
开发的过程:其实就是在不断的创建对象,使用对象,指挥对象做事情
特征:
抽象abstract
封装encapsulation
继承inheritance
多态polymorphism
-----------------------------------
5.如何发现对象(抽象)
我们认识事物的过程一般是这样的:这是什么?有什么样的特征?能够做什么?所以,从现实中抽象出类分为三步:
1)找出它的种类☞是什么?找(简单)名词
2)找出它的属性☞有什么特征?找(修饰性)名词、形容词
3)找出它的行为☞能够做什么?找动词
4)方法放的位置,那个类最清楚,就放在那个类中
5)只找关心的
实例1:美女
Gril
颜值:非常漂亮
实例2:帅哥钟打开玻璃门

姓:钟
性别:男

材料:玻璃
功能:打开
实例3:老张开车去东北,撞了!

姓:张
年龄:有点老

move(东北)
地点
名称:东北
6.类和对象
1)使用计算机语言就是不断的在描述现实生活中的事物,Java中描述事物通过类的形式体
现,类是具体事物的抽象,概念上的定义。

2)对象即是该类事物实实在在存在的个体。

3)可以这样理解类和对象的关系:类是对象的原型,对象是类的实例
7.使用类图描述类
1)Unified Modeling Language (UML)又称统一建模语言或标准建模语言,是始于1997年
一个OMG标准,它是一个支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供模型化和可视化支持,包括由需求分析到规格,到构造和配置。

2)UML提供了5种类型,10种模型图
用例图:用例图
静态图:类图、对象图、包图
行为图:活动图、状态图
交互图:顺序图、合作图
实现图:配置图
3)使用UML利用分析和设计,便于沟通,是软件工程师交流的工具性语言
8.作业
1)我们需要设计一个电子宠物系统,其中领养宠物功能的详细需求如下:
根据控制台提示,输入领养宠物的昵称;
根据控制台提示,输入领养宠物的类型,有两种选择:狗狗和企鹅;
如果选择狗狗,要选择狗狗的品种,有两种选择:“聪明的拉布拉多犬”或“中华田园犬”如果选择类型,选择企鹅的性别:“Q仔”或“Q妹”。

所领养宠物的健康值默认值是100,表示非常健康。

所领养的宠物和主人的亲密度是0,表示和主人不熟。

在控制台打印宠物信息,包括昵称、健康值、亲密度、品种或性别,表示领养成功。

领养成功后主人可以和狗狗玩接飞盘的游戏,也可以让狗狗看家;如果领养的是企鹅,主人可以和企鹅一起游泳,也可以和企鹅玩过家家的游戏。

根据上面的描述,进行分析和设计,找出类,设计类;并画出类图!
控制台
标准输出打印System.out.println()
标注输入输入Scanner input = new Scanner(System.in);
-----------------------------------------------------------------------------------------
狗Dog
nickname , strain , health, love keepHouse(), catchFlyDisk(), print()
企鹅Penguin
nickname, sex, health, love swim(), play() , print()
主人Master
name playWith() feed()
宠物Pet
nickname, health,love print()
1.2 自己添加设计一个类(一种宠物,比如Pig、Tiger、Bird ........)
------------------------------------------------------------------------------------------------------------
2)预习第二章,将第1题用代码实现。

相关文档
最新文档