6-1 面向对象的基本概念
java期末考点总结

java期末考点总结一、基础知识1. Java语言的起源和特点2. Java开发环境的配置和使用3. Java程序的基本结构和语法规则4. 数据类型和变量5. 运算符和表达式6. 控制流程和循环结构二、面向对象编程1. 面向对象的基本概念和原则2. 类和对象的定义和使用3. 封装、继承和多态4. 接口和抽象类5. 继承和多态的应用6. 继承和接口的区别三、异常处理1. 异常的概念和分类2. 异常的处理机制3. try-catch语句的使用4. finally语句的作用5. 异常的抛出和捕获6. 自定义异常四、常用类库1. String类的常用方法2. Math类和常用数学方法3. Date类和Calendar类的使用4. 集合框架和常用集合类5. IO流的使用6. 文件的读写操作五、多线程编程1. 进程和线程的概念2. 创建线程和实现Runnable接口的区别3. 同步和互斥的实现4. 线程的状态和控制5. 线程的优先级和调度6. 线程池的使用和管理六、网络编程1. 网络通信的基本概念和协议2. Socket编程和TCP/IP协议3. UDP协议和DatagramSocket类4. URL和URLConnection类的使用5. 服务器和客户端的通信6. HTTP协议和网页的访问七、图形用户界面1. AWT和Swing的区别和优缺点2. 组件的布局和事件处理3. 容器和组件的层次结构4. 图形用户界面的设计和优化5. 多线程和事件处理6. 用户界面的国际化和本地化八、数据库编程1. 数据库的基本概念和SQL语句2. JDBC的使用和连接数据库3. Statement和PreparedStatement的使用4. ResultSet的处理和数据库操作5. 事务和批处理的管理6. 数据库连接池的使用九、Web开发1. HTML和CSS的基本语法和标签2. JavaScript的基本语法和事件处理3. Servlet和JSP的概念和使用4. MVC模式的理解和应用5. 数据库连接和数据处理6. Web应用的发布和部署十、设计模式1. 设计模式的基本概念和分类2. 单例模式和工厂模式的实现3. 观察者模式和适配器模式的应用4. MVC模式和策略模式的理解和应用5. 模板方法模式和装饰者模式的实现6. 设计模式的优缺点和使用场景以上是Java期末考点的总结,希望能帮助你复习和理解Java编程的重要知识点。
VF 第六章、表单

6
7 8 9
ControlBox
MaxButton MinButton
决定是否有控制图标和控制按钮
决定表单是否具有最大化按钮 决定表单是否具有最小化按钮
WindowType 决定表单是无模式表单还是模式表单,如果表单是模式 表单,用户在访问应用程序其他单元前,必须关闭这个 表单
6.2
案例1
创建表单
序号 1 属性
Value
说明
默认情况下,命令按钮组中的各个按钮被自动赋予了一 个编号,如1,2,3,等,当运行表单时,一旦用户单 击某个按钮,则Value将保存该按钮的编号,于是在程序 中通过检测Value的值,就可以为相应的按钮编写特定的 程序代码。如果在设计时,给Value赋予一个字符型数据, 当运行表单时,一旦用户单击某个按钮,则Value将保存 该按钮的Caption属性值 命令按钮组包含按钮的个数 用于存取命令按钮组中每个命令按钮的数组,代码中可 以通过该数组访问命令按钮组中的各个按钮.
6.2
创建表单
表单属性窗口中可以 设置表单及其控件的各个 属性。
6.2
创建表单
表单常用的属性
序号 1 属性 Caption 说 决定表单标题栏显示的文本 明
2
3 4 5
Name
AutoCenter BackColor Closable
表单的名称
决定表单初始化时是否居中 决定表单背景颜色 决定能否通过双击窗口菜单图标来关闭表单
6.1
面向对象的基本概念
• 面向对象设计的原则
–封装
–继承 –多态
看不到我体内有什么器官吧?!
我和我父亲像吧?!
但也有不同吧?!
6.1
面向对象的基本概念
《软件工程实用教程》第6_章_面向对象的软件设计

第6 章 面向對象的軟體設計
例:
第6 章 面向對象的軟體設計
2.部署圖 部署圖描述了處理器、設備和軟體構件運行時 的體系結構。 ( 1 )結點:是某種計算資源的物理對象,包括電 腦、設備(如印表機、通信設備)等 (2) 連接:連接用一條直線表示,它指出結點之間 存在著某種通信路徑,並指出通過哪條通信路 徑可使這些結點間交換對象或發送消息
第6 章 面向對象的軟體設計
2.詳細設計 (1)細化、補充類的屬性和操作 (2)設計類操作的實現演算法 (3)優化數據訪問路徑 (4)實現外部互動式的控制 (5)調整類結構,增加繼承性 (6)設計類之間的關聯的實現方式 (7)確定對象屬性的精確表示 (8)把類和關聯打包歸納到模組中
第6 章 面向對象的軟體設計
第6 章 面向對象的軟體設計
3)依賴倒置原則:指的是依賴關係應該是儘量依賴介面 (或抽象類),而不是依賴於具體類。在面向對象 的設計中,高層的類往往與領域的業務有關,這些 類只依賴於一些抽象的類或介面,當具體的實現細 節改變時,不會對高層的類產生影響。 4)介面分離原則:指的是在設計時採用多個與特定客戶 類有關的介面比採用一個通用的介面要好。即一個 類要給多個客戶類使用,那麼可以為每個客戶類創 建一個介面,然後這個類實現所有這些介面,而不 要只創建一個介面,其中包含了所有客戶類需要的 方法,然後這個類實現這個介面。
第6 章 面向對象的軟體設計
2.設計基於類的構件 (1)基本設計原則 2)Liskov替換原則:指的是子類可以替 換父類出現在父類能出現的任何地方。 例如,類ClassA要使用ClassB,ClassC 是ClassB的子類。如果在運行時,用 ClassC代替ClassB,則ClassA仍然可以 使用原來ClassB中提供的方法,而不需 要做任何改動。
C语言程序设计课件第6章 类与对象

2021/7/13
18
【例6.5】 使用构造函数替代例6.3中SetTime() 成员函数,并在主函数中,使用构造函数设置 时间为15时19分56秒并显示该时间。 构造函数也可以重载。关于重载的概念将在第 7章详细介绍,这里先看一个例子。 【例6.6】 构造函数重载定义示例。
【2021例/7/163 .8】 构造函数的调用。
21
6.3.2 析构函数 1.析构函数的特点 当对象创建时,会自动调用构造函数进行初始 化。当对象撤消时,也会自动调用析构函数进 行一些清理工作,如释放分配给对象的内存空 间等。与构造函数类似的是:析构函数也与类 同名,但在名字前有一个“~”符号,析构函数 也具有公有属性,也没有返回类型和返回值, 但析构函数不带参数,不能重载,所以析构函 数只有一个。 【例6.9】 析构函数程序举例。
26
6.4 对象数组与对象指针 6.4.1 对象数组 对象数组是指数组的每一个元素都是相同类型对象的 数组,也就是说,若一个类有若干个对象,把这一系 列的对象用一个数组来表示。对象数组的元素是对象, 不仅具有数据成员,而且还有成员函数。
对象数组的定义和普通数组的定义类似,一般格式如 下: 类名 数组名[第一维大小][第二维数组大小] 其中,类名是指该数组元素属于该类的对象,方括号 内的数组大小给出了某一维元素的个数。一维对象数 组只有一对方括号,二维对象数组要有两个方括号对, 等等。
25
普通构造函数在建立对象时被调用,而复制构造函数
在用已有对象初始化一个新对象时被调用。复制构造
函数被调用通常发生在以下3种情况:
(1)程序中需要新建一个对象并用一个类的对象
《数据库基础与应用》第6章 窗体的操作

2.控件的分类 绑定型控件与表或查询中的字段相关联,可用于 显示、输入、更新数据库中字段的值。
➢ 未绑定型控件是无数据源的控件,其“控件来源” 属于没有绑定字段或表达式,可用于显示文本、线 条、矩形和图片等。
➢ 计算型控件用表达式作为数据源,表达式可以利 用窗体或报表所引用的表或查询字段中的数据,也 可以是窗体或报表上的其他控件中的数据。
1.“窗体”命令按钮
单击“窗体”命令按钮将根据用户所选定的表 或查询自动创建窗体。使用“窗体”命令所创建的 窗体,其数据源来自单个表或单个查询,且窗体的 布局结构简单。这种方法创建的窗体是一种单记录 布局的窗体。窗体对表中的各个字段进行排列和显 示,左边是字段名,右边是字段的值,字段排成一 列或两列。
➢ 默认值:用于设定一个计算型文本框控件或未绑定 型文本框控件的初始值。
➢ 有效性规则:用于设定在文本框控件中输入数据的 合法性检查表达式。 ➢ 有效性文本:在窗体运行期间,当在该文本框中输 入的数据违背了有效性规则时,即显示有效性文本中 的提示信息。 ➢ 可用:用于指定该文本框控件是否能够获得焦点。 ➢ 是否锁定:用于指定是否可以在窗体视图中编辑控 件数据。
2.表格式窗体 在表格式窗体中一页显示表或查询中的多条记录, 每条记录显示为一行,每个字段显示为一列。字段 的名称显示在每一列的顶端。
3.数据表窗体 数据表窗体从外观上看与数据表和查询显示数据 的界面相同,通常是用来作为一个窗体的子窗体。 数据表窗体与表格式窗体都以行列格式显示数据, 但表格式窗体是以立体形式显示的。
第6章 窗体的操作
本章要点 ➢ 窗体概述 ➢ 创建窗体的方法 ➢ 在设计视图中创建窗体 ➢ 控件的应用
6.1 窗体概述
6.1.1 窗体的功能 (1)显示数据。 (2)编辑数据。 (3)查找数据。 (4)分析数据。 (5)控制应用程序流程。
“计算机程序设计”课程教学大纲

“计算机程序设计”教学大纲一、课程性质、目的和任务性质:“计算机程序设计”是面向非计算机类各专业的必修计算机类基础课程,是计算机教育的基础和重点。
目的:使学生掌握一门高级程序设计语言,掌握结构化程序设计和面向对象程序设计的基本方法,同时了解初步的数据结构与算法等方面的知识,具有把各个领域的基本计算和数据处理问题变成计算机应用程序的能力,为后续课程的学习创造条件。
任务:介绍计算机程序设计语言的基本知识和程序设计的方法与技术,同时包括程序设计方法学、数据结构与算法基础等方面的内容。
二、教学基本要求1.C++语言基础知识掌握变量与常量的定义与使用方法;掌握基本数据类型和表达式的使用方法,掌握C++的基本语句。
理解结构化和面向对象程序设计的基本思想和有关概念,掌握C++程序的基本框架和上机调试计算机程序的过程。
2.数组、指针与引用掌握数组的定义、初始化和访问方法;掌握字符串使用方法;理解指针和引用的概念,掌握指针使用方法,理解指针与数组的关系,了解动态内存管理方法。
3.函数掌握函数的定义与函数调用方法,理解变量的生命周期、作用域和存储类别(自动、静态、寄存器、外部),掌握C++库函数的使用方法。
4.类与对象的基础知识理解类与对象的基本概念,掌握类及其成员的声明、定义、访问方法,对象的创建与使用方法;掌握构造函数与析构函数的定义与使用;掌握静态数据成员与静态成员函数的定义与使用。
5.类的复用掌握类的组合语法;掌握派生类的定义和访问权限,类的数据成员与成员函数的继承;理解多态性概念及虚函数机制的要点;了解运算符重载。
6.输入/输出流理解C++流的概念,掌握数据的格式输入输出,掌握文件的I/O操作。
7.综合程序设计能力掌握利用所学到的面向对象的程序设计方法,编制含有多个类的程序;掌握根据实际问题和给定的算法,设计类结构并编码实现,解决小型问题。
8.程序调试掌握C++程序调试的基本方法;理解程序错误的种类和产生的原因,掌握排除语法错误的基本技能;掌握程序调试的基本技能(如设置断点、单步执行、查看中间运行结果等)。
(人工智能)人工智能基础考试大纲
(人工智能)人工智能基础考试大纲(人工智能)人工智能基础考试大纲人工智能基础(8017)考试大纲壹、课程性质和设置目的(一)课程性质和特点“人工智能”是21世纪计算机科学发展的主流,为了培养国家建设跨世纪的有用人才,于计算机专业本科开设《人工智能基础》课程是十分必要的。
《人工智能基础》是计算机专业本科的壹门必修课程,本课程中涉及的理论、原理、方法和技术有助于学生进壹步学习其他专业课程。
开设本课程的目的是培养学生软件开发的“智能”观念;掌握人工智能的基本理论、基本方法和基本技术;提高解决“智能”问题的能力,为今后的继续深造和智能系统研制,以及进行关联的工作打下人工智能方面的基础。
(二)本课程的基本要求(课程总目标)《人工智能基础》是理论性较强,涉及知识面较广,方法和技术较复杂的壹门学科。
通过对本课程的学习,学生应掌握人工智能的壹个问题和三大技术,即通用问题求解和知识表示技术、搜索技术、推理技术。
具体要求是:学生于较坚实打好的人工智能数学基础(数理逻辑、概率论、模糊理论、数值分析)上,能够利用这些数学手段对确定性和不确定性的知识完成推理;于理解Herbrand域概念和Horn 子句的基础上,应用Robinson归结原理进行定理证明;应掌握问题求解(GPS)的状态空间法,能应用几种主要的盲目搜索和启发式搜索算法(宽度优先、深度优先、有代价的搜索、A算法、A*算法、博弈数的极大—极小法、α―β剪枝技术)完成问题求解;且能熟悉几种重要的不确定推理方法,如确定因子法、主观Bayes方法、D—S证据理论等,利用数值分析中常用方法进行正确计算。
另外,学生仍应该了解专家系统的基本概念、研究历史、系统结构、系统评价和领域应用。
学生仍应认识机器学习对于智能软件研制的重要性,掌握机器学习的关联概念,机器学习的方法及其相应的学习机制,几个典型的机器学习系统的学习方法、功能和领域应用。
(三)本课程和关联课程的联系、分工或区别和本课程关联的课程有:离散数学、算法设计、数值分析、程序设计语言等。
uml 基础教程 第一章--uml与面向对象
2020/6/13
基础内容:类和对象的关系 重点掌握:面向对象的四个特征 一般了解:面向对象项目的设计
2020/6/13
1.1 面向对象开发
1.1.1 理解面向对象
一、对象
• 面向对象认为客观世界是由各种各样的对象组成, 每个对象都有自己的数据和操作,对象和对象之间 是通过对象暴露在外的接口进行调用的,不同对象 之间的相互作用和联系构成了各种系统。
2020/6/13
•面向对象概念中,这种关系叫继承。每个Appliance 的子类都继承了Appliance的特征。同时,要重点注 意下,每个子类都增加了自己的属性和操作。 •因此,继承是一种连接类与类之间的层次模型,是 指特殊类的对象拥有其一般类的属性和行为。特殊 类中不必重新对已经在一般类中所定义的属性和行 为进行定义。特殊类自动地、隐含地拥有其一般类 的属性和行为。
0/6/13
• 在设计阶段,要考虑的是定义软件系统中技术细 节的类(如处理用户接口、数据库、通信和并行性 等问题的类),把分析阶段的结果扩展成技术解决 方案。
• 构造阶段,把设计阶段的类转换成某种面向对象 程序设计语言的的代码(工具可以完成)。
• 测试阶段,系统通常需要经过单元测试、集成测 试、系统测试和验收测试。不同的测试小组使用不 同的UML图作为测试依据:单元测试使用类图和类 规格说明;集成测试使用构件图和协作图;系统测 试使用用例图来验证系统的行为;验收测试由用户 进行,以验证系统测试的结果是否满足在分析阶段 确定的需求。
2020/6/13
1.2 UML简介
1.2.1 对系统建模的必要性
UML具体有哪些作用:
• (1)对于软件系统用户,软件的开发模型向他们 描述了软件开发者对于软件系统需求的理解。
《软件工程概论》实验教学大纲
《软件工程概论》实验教学大纲课程名称:软件工程概论英文名称:Software Engineering课程编号:1500280003课程性质:课程类型:专业必修是否为独立设课的实验课:否适用专业:软件工程学时与学分:总学时:72 总学分:3+1 实验学时:18 实验学分:1执笔人:钱嘉玮制定时间:2014.03.15一、课程简介和基本要求1.软件工程与软件过程软件危机、软件工程、软件过程2.结构化分析结构化分析过程和准则、分析建模与规格说明、实体-关系图、数据流图、状态转化图、数据字典3.结构化设计与实现结构化设计与结构化分析的关系、软件设计的概念和原理、模块独立、启发规则、表示软件结构的图形工具、人机界面设计、过程设计、过程设计的工具、面向数据结构的设计方法、结构化实现4.面向对象分析面向对象的概念与模型:面向对象建摸、对象模型、动态模型、功能模型;面向对象分析(OOA):分析过程、需求陈述、建立对象模型、建立动态模型、建立功能模型、定义服务、面向对象分析实例5.面向对象设计与实现面向对象设计(OOD):面向对象设计的准则、设计问题域子系统、设计人-机交互子系统、设计任务管理子系统、设计数据管理子系统、设计类中的服务、设计关联、设计优化、面向对象分析与设计实例、面向对象实现(OOP)6.软件项目管理软件项目管理与计划、软件质量与质量管理、CMM、国际标准形式化方法7.高级课题形式化方法、统一建模语言UML、软件重用二、实验课的任务、性质与目的软件工程实践是计算机科学与技术专业的重要专业实践。
课程的目的是让学生掌握求解软件的基本思想、途径和方法,为从事计算机软件开发、维护和应用奠定良好的基础。
软件工程实践从实用的角度讲述软件工程的基本原理、概念和技术,强调软件开发过程的方法研究。
学生通过一个实际课题的课程设计,掌握软件分析、设计、实现和测试的基本技术以及面向对象分析和设计的基本方法。
通过该课程实践,实际运用软件工程的技术和方法,掌握软件项目管理和团队开发的工作方法。
软件工程课程要求及学时安排
软件工程课程要求及学时安排软件工程(S o f t w a r e E n g i n e e r i n g)学分数3周学时3课程性质专业基础课预修课程程序设计,离散数学,数据结构教学目的通过本课程的教学,使学生掌握软件工程的基本概念和原则,培养学生用工程化的方法高效地开发高质量软件的初步能力,以及项目管理的初步能力。
基本内容软件工程的基本概念、原则、模型、方法、过程基本要求掌握软件工程的基本概念和原则,能运用软件工程的基本原理、模型、方法和过程开发简单的应用软件。
增强软件开发的工程化和规范化意识,提高高效率、高质量开发软件的能力。
教学用书钱乐秋、赵文耘、牛军钰编《软件工程》,清华大学出版社,2007教学内容、要求和课时安排一.概论(学时数:5)教学内容1.计算机软件软件定义,软件语言及分类(需求定义语言,功能性语言,设计性语言,程序设计语言,文档语言),软件的特点和分类,软件发展历史,软件危机2.软件工程软件工程定义,目标,过程,原则,软件生存周期3.软件过程软件过程定义和分类,软件过程能力成熟度模型CMM,软件过程能力成熟度模型集成CMMI4.软件过程模型瀑布模型,演化模型,增量模型,原型模型,螺旋模型,喷泉模型,基于构件的开发模型,形式化方法模型5.敏捷软件开发敏捷软件开发的价值观和开发原则,XP方法6.CASE工具与环境计算机辅助软件工程(CASE),CASE工具,集成型开发环境教学要求1.掌握软件及软件工程的基本概念2.掌握软件生存周期各阶段的任务3.了解软件过程的概念,以及CMM和CMMI的由来、作用、各等级的特点、结构4.掌握各种软件过程模型的特点5.了解敏捷软件开发的基本思想6.了解CASE工具与环境的作用二.计算机系统工程(学时数:1)教学内容基于计算机的系统,系统工程的任务,可行性分析教学要求1.了解系统工程的任务2.掌握可行性分析的方法三.需求工程(学时数:3)教学内容1.需求工程概述需求工程定义,需求工程六个阶段2.需求获取软件需求定义,软件需求内容,需求获取方法与策略3.需求分析、协商与建模需求分析原则,信息域、抽象、分解与多视点分析,需求协商,需求建模基本方法简介4.需求规约与验证需求规约的原则、需求规约、需求验证5.需求管理需求管理定义、需求跟踪教学要求1.掌握需求工程的定义及六个阶段2.掌握软件需求内容3.掌握需求获取的方法与策略4.掌握需求分析原则5.掌握需求规约的原则6.掌握需求规约的内容7.了解需求验证过程8.了解需求管理相关概念四.设计工程(学时数:3)教学内容1.软件设计工程概述软件设计的任务、软件设计的目标、软件设计的过程2.软件设计原则抽象化与逐步求精、模块化、信息隐藏、模块独立、耦合、内聚3.软件体系结构设计体系结构发展过程、软件体系结构的风格、评估可选的体系结构4.部件级设计技术结构化程序设计方法、图形表示法、判定表、设计性语言PDL 5.设计规约与设计评审设计规约、设计评审教学要求1、掌握软件设计工程的任务、目标和过程2、掌握软件设计原则3、了解软件体系结构设计4、掌握部件级设计技术5、了解设计规约与设计评审五.结构化分析与设计(学时数:6)教学内容1.结构化分析结构化分析的基本思想,结构化分析的步骤,分析模型的描述形式2.数据流图图形表示,分层数据流图的画法,分层数据流图的审查3.数据字典数据流、文件、数据项、加工、源或宿等条目的内容,描述基本加工的方法,包括结构化语言、判定表、判定树4.结构化设计结构图,启发式设计策略,结构化设计的步骤5.DFD到结构图的映射变换流,事务流,变换分析,事务分析,分层DFD的映射6.设计优化初始结构图的改进,结构图改进技巧教学要求1.掌握结构化分析和设计的基本概念和原理2.掌握结构化分析和设计的步骤3.会应用结构化分析方法画分层数据流图,并建立相应的数据字典4.会判断分层数据流图的合理性5.会应用结构化设计方法画结构图,并掌握优化结构图的基本手段六.面向数据结构的分析与设计(学时数:1)教学内容面向数据结构方法的基本思想,Jackson图,JSP方法,JSD方法教学要求1.掌握面向数据结构方法的基本思想2.了解JSP方法和JSD方法七.面向对象的分析与设计(学时数:8)教学内容7.面向对象的基本概念面向对象,对象,类,继承,消息,多态性,动态绑定8.面向对象分析和设计的一般过程面向对象分析的任务、步骤和一般分析过程,面向对象设计的一般过程,系统设计,对象设计,设计模式9.UMLUML发展历史,视图,图10.用况建模用况建模的步骤,确定执行者,确定用况,用况描述,用况间的关系11.静态建模标识类及CRC技术,类之间的关系:关联(二元关联,三元关联,受限关联,聚集,组合,关联类,导航性)、泛化、实现、依赖,约束,派生,模板12.动态建模用状态机图、活动图、顺序图、通信图描述系统的动态行为13.物理体系结构建模用构件图、内部结构图、部署图描述系统物理上的体系结构教学要求1.掌握面向对象的基本概念2.掌握面向对象分析和设计的一般步骤3.会应用UML建立用况模型,并给出用况的描述4.会应用UML建立静态模型5.会应用UML建立动态模型6.会应用UML建立物理体系结构模型八.基于构件的软件开发(学时数:2)教学内容14.基于构件的软件开发(CBSD)CBSD的基本思想和原理,CBSD对质量、生产率和成本的影响15.CBSD过程CBSD模型,领域工程,应用系统工程16.可复用构件对可复用构件的要求,可变性分析,可变性机制17.应用系统工程基于CBSD的应用系统分析和设计,构件的鉴定、特化和组装18.构件的管理构件的分类描述,构件库管理系统教学要求1.掌握CBSD的基本思想和原理2.了解CBSD的过程以及基于CBSD的应用系统分析和设计3.了解可复用构件的构建和管理九.人机界面设计(学时数:2)教学内容1.人的因素人对感知过程的认识、用户的技能和行为方式、人体测量学对设计的影响2.人机界面风格语言界面、图形用户界面、直接操纵用户界面、多媒体用户界面、多通道用户界面3.人机界面分析与建模人机界面设计过程、人机界面设计中设计的模型、任务分析的途径与方法4.界面设计活动定义界面对象和动作、设计问题、黄金原则5.实现工具6.设计评估教学要求1.了解人机界面设计中的人的因素2.了解人机界面风格3.掌握人机界面设计过程4.掌握界面设计活动5.了解实现工具6.了解设计评估十.程序设计语言和编码(学时数:2)教学内容1.程序设计语言程序设计语言的基本成分、程序设计语言特性、程序设计语言分类、程序设计语言选择2.程序设计风格源程序文档化、数据说明、语句结构、输入和输出教学要求掌握程序设计语言和程序设计风格。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
6-1 面向对象的基本概念
面向对象的软件工程
现实世界
OOA
OOD OOP
结构化分析 结构化设计 结构化编程
可执行软件系统
6-1 面向对象的基本概念
区域
点
线
采购钢材 采购办公用品
城市
草原
水坝 湿地 山脉 海洋
建筑
陆上 桥梁 机场 码头
水上
用例之间的继承关系 继承关系使类之间 形成层次化结构
公路 河流 输油管 铁路 输电线
6-1 面向对象的基本概念
例如:对“汽车”对象来说,“司机”对象只能通过方向盘 和仪表来操作“汽车”,而“汽车”的内部实现机制则被隐 藏起来。
6-1 面向对象的基本概念
封装(Encapsulation)
使对象形成两个部分:接口(可见)和 实现(不可见),将对象所声明的功能 (行为)与内部实现(细节)分离 ——信息隐藏(Information Hiding)
对象
具体到一个等腰、等边或一般的三角形 三角形 某个三角形 三角形共有的属性(三条边的长度、面积、周长) 和行为(计算周长、计算面积、计算角度)
6-1 面向对象的基本概念
类与对象的对比
类与对象的比较
– “同类对象具有相同的属性和操作”是指它们的定义形式 相同,而不是说每个对象的属性值都相同。
– 类是静态的,类的存在、语义和关系在程序执行前就已经 定义好了。 – 对象是动态的,对象在程序执行时可以被创建和删除。
在面向对象的系统分析和设计中,并不需要逐个对对象进行 说明,而是着重描述代表一批对象共性的类。
6-1 面向对象的基本概念
类与对象的对比
定义一个学生类:
Class Student { String sno; String sname;
使用这个类:
Student ZSY = new Student (“110310501”, “ZSY”, “CS” ); Student GY = new Student (“110310502”, “GY”, “CS” );
6-1 面向对象的基本概念
封装(Encapsulation)
封装(Encapsulation):把对象的属性和操作结合成一个独立 的单元,并尽可能对外界隐藏对象的内部实现细节; 对外界其他对象来说,不需了解对象内部是如何实现的(how to do),只需要了解对象所呈现出来的外部行为(what to do) 即可。
而软件设计应尽可能去描述那些极少发生变化的稳定要素: 对象 – 银行客户、帐户、ATM
6-1 面向对象的基本的集合;
每个对象包含一组描述自身特性的数据以及作用在数据上的
操作(功能集合)。 对象
对象
对象
对象
6-1 面向对象的基本概念
面向对象方法的优势
– 系统功能不断变化
– 许多变化出现在项目后期 – 维护过程中发生许多变化
系统结构的崩溃
– 系统在不断的变化中最终变得不可用
6-1 面向对象的基本概念
造成上述问题的根本原因…
结构化方法以功能分解和数据流为核心,但是…系统功能和
数据表示极有可能发生变化;
– 以ATM银行系统为例:帐户的可选项、利率的不同计算方 式、ATM的不同界面;
属性(Attribute):描述对象静态特性的数据项; 操作(Operation):描述对象动态特性的一个动作;
6-1 面向对象的基本概念
类(Class)
类(Class):具有相同属性和操作的一组对象的集合,它为属 于该类的全部对象提供了统一的抽象描述。
类(Class) 对象(Object)
软件工程
软件工程 第六章 OO分析与设计
6-1 面向对象的基本概念
初佃辉 2019年3月8日
6-1 面向对象的基本概念
主要内容
1 面向对象技术概述
2 面向对象的基本概念
3 对象之间的五类关系
软件工程
1 面向对象技术概述
6-1 面向对象的基本概念
先看结构化程序开发…
Main
f1
f2
f3
从功能的观点设计系统 自顶向下,逐步分解和细化 将大系统分解为若干模块,主程序调用 这些模块实现完整的系统功能
6-1 面向对象的基本概念
结构化分析方法
结构化分析方法(SA):将待解决的问题看作一个系统,从 而用系统科学的思想方法(抽象、分解、模块化)来分析和 解决问题。 – 起源于结构化程序设计语言(事先设计好每一个具体的功 能模块,然后将这些设计好的模块组装成一个软件系统) ; – 以动词性的“功能”为核心展开分解。
消息(Message)
多态(Polymorphism)
类间关系(Relationships)
6-1 面向对象的基本概念
对象(Object)
对象(Object):用来描述客观事物的实体,是构成系统的一个 基本单位,由一组属性以及作用在这组属性的操作构成。
6-1 面向对象的基本概念
属性和操作
抽象
具体
“类”所代表的是一个抽象的概念或事物,现实世界中并不 存在,而“对象”是客观存在的。
[例] “学生”是一个类,计算机学院110310501号学生则是 “学生”类的一个实例,是一个具体的“对象”。
6-1 面向对象的基本概念
类与对象的对比
类
类的一个具体实现,称为实例 描述这类对象共有的、本质的属性和行为
结构化软件=算法+数据结构 结构化需求分析 = 结构化语言+数据字典+数据流图(DFD)
6-1 面向对象的基本概念
结构化方法的常见问题
需求的错误
– 不完整、不一致、不明确
– 开发人员和用户无法以同样的方式说明需求 需求的变化
– 需求在整个项目过程中始终发生变化
– 设计后期发生改变 持续的变化
6-1 面向对象的基本概念
消息(Message)
消息(Message):一个对象向其他对象发出的请求,一般包含提 供服务的对象标识、服务标识、输入信息和应答信息等信息; – 一个对象向另一个对象发出消息请求某项服务; – 另一个对象接收该消息,触发某些操作,并将结果返回给发 出消息的对象; – 对象之间通过消息通信彼此关联在一起,形成完整的系统。 发送消 息 启动 转向 接收并响应消息
最早产生于1970年代中期,1980年代开始成为主流
– Yourdon于1989年出版《Modern Structured Analysis》 核心思想: – 自顶向下的分解(top-down)
6-1 面向对象的基本概念
结构化分析方法
6-1 面向对象的基本概念
结构化程序开发的特点
把软件视为处理数据的流,并定义成由一系列步骤构成的算法; 每一步骤都是带有预定输入和特定输出的一个过程; 把这些步骤串联在一起可产生合理的稳定的贯通于整个程序的控 制流,最终产生一个简单的具有静态结构的体系结构。 数据抽象、数据结构根据算法步骤的要求开发,它贯穿于过程, 提供过程所要求操作的信息; 系统的状态是一组全局变量,这组全局变量保存状态的值,把它 们从一个过程传送到另一个过程。
OO中的喷泉过程模型
喷泉模型:
– 在OO开发过程中,各阶段之间形 成频繁的迭代;
– OO各阶段均采用统一的“对象” 概念,各阶段之间的区分变得不 明显,形成“无缝”连接,从而
容易实现多次反复迭代。
软件工程
2 面向对象的基本概念
6-1 面向对象的基本概念
面向对象的基本概念
对象(Object) 类(Class) 封装(Encapsulation) 继承(Inheritance)
账户 余额
存 款
账户 余额
取 款
利息结算 外部消息
6-1 面向对象的基本概念
面向对象方法的发展历史
初始阶段 – 1960’s:Simula编程语言 – 1970’s:Smalltalk编程语言 发展阶段
– 1980’s:理论基础,许多OO 编程语言(如C++, Objective-C 等)
面向对象模型更接近于问题域(尽可能模拟人类习惯的思维方 式) – 以问题域中的对象为基础建模
– 以对象、属性和操作对问题进行建模
反复细化高层模型直到可以实现的程度 – 努力避免在开发过程中出现大的概念跳变 将模型组织成对象的集合 – 真实世界中的具体事物
• 驾驶执照、信用卡、汽车等 – 逻辑概念
“封装”的作用是什么?
– 保护对象,避免用户误用;
– 保护客户端,其实现过程的改变不 会影响到相应客户端的改变。
6-1 面向对象的基本概念
接口(interface)
接口(Interface):描述了一个类的一组外部可用的属性和服 务(操作)集。 注意:接口定义的是一组属性和操作的描述,而不是操作的 实现,体现了“接口与实现的分离”的思想,即“信息隐 藏”。
成熟阶段 – 1990’s:面向对象分析和设计方法(Booch, OMT等), Java – 1997:OMG 组织的统一建模语言(UML) – 逐渐替代了传统的结构化方法
6-1 面向对象的基本概念
面向对象的软件工程
面向对象分析(Object Oriented Analysis, OOA)
– 分析和理解问题域,找出描述问题域和系统责任所需的类及 对象,分析它们的内部构成和外部关系,建立OOA 模型。
面向对象设计(Object Oriented Design, OOD) – 将OOA 模型直接变成OOD 模型,并且补充与一些实现有关 的部分,如人机界面、数据存储、任务管理等。