第 7 章 面向对象编程

合集下载

第7章面向对象的程序设计PPT课件

第7章面向对象的程序设计PPT课件
在大型软件系统设计中,由于软件系统本身的复杂 性,要求必须许多人通力合作,采用工程化的方法进 行开发和管理,这也对程序设计语言和程序设计方法 提出了更高的要求。
通过使用结构化程序设计方法,可以对整个任务进 行清晰严格的划分,使每个程序员能明确了解自己的 工作任务以及与他人的接口。
每个程序员可以独立地设计调试自己负责的模块, 最终各模块也能够顺利地集成到整个系统中去。
§7.2.3 面向对象程序设计的特性(4)
3.继承性
例如,由基本类型的电话(拨号、讲话、听音 功能),可以派生出电话传真机、移动电话、 公用投币电话等,这些电话都继承了电话基本 类型的拨号、讲话、听音功能,又添加了各自 的独特功能。
由于有了继承性,当把基本类型的电话由拨 号改为按键,其它类型的电话都可以改为按键, 继承性使我们不必研究每种电话如何实现按键。
§7.2 面向对象程序设计的基本概念
面向对象技术为软件开发提供了一种新的思 想,引入了许多新的概念,这些概念是理解和 使用面向对象技术的基础和关键。
§7.2.1 对象(Object)(1) 现实世界的实体——事、物、概念等,都统
称为对象。在面向对象系统中一切成份都是对 象,大到整个系统、项目、数据库、表、表单, 小到窗口、控件都被视为对象。
§7.2.3 面向对象程序设计的特性(1)
与结构化程序设计相比,面向对象程序设计 有许多突出特性,即抽象性、封装性、继承性 和多态性。
1.抽象性
一般而们所关心的或认为重要的信息,而 将不重要的信息予以忽略。
例,我们对电话的认识已经抽象化了,拨号、 讲话、听音这就是我们印象中的电话,而不关 心和了解电话内部的线路和工作原理。
视图窗口的位置、大小、和颜色都是视图 对象的“属性”;对视图的修改操作后, 将数据替换源表,是视图对象的“方法”; 当数据修改完用鼠标点动关闭视图按钮, 就产生关闭视图的“事件”,视图对象接 收到这个关闭动作(事件)后,就会执行 另一方法程序将视图数据发送回源表。

C++程序设计教程 第7章 面向对象程序设计

C++程序设计教程 第7章 面向对象程序设计
细节,实现“高内聚、低耦合”。
查询成绩 外内
学生
高考成绩 英语 数学 语文
7.1 类与对象
7.1.4 函数重载
函数重载是指同一个函数名可以对应多个函数的实现,即多个函数可共用 一个函数名。
int sum( int a , int b ) { return a + b ; } double sum( double a , double b ) { return a + b ; } int main( ) {
7.3 多态
7.3.2 多态的实现机制
在 C++中实现多态需要满足以下几个前提条件: (1)必须存在基类和派生类,即多态依赖类的继承。 (2)在基类和派生类中具有同名的虚函数。 (3)对派生类中虚函数的调用必须使用指向基类的指针或引用来进行。
7.3 多态
7.3.3 纯虚函数与抽象类
略。
定义中的基类名必须是已有类的名称,派生类名则是新建的类名。一个派生 类可以只有一个基类,称为单继承;也可以同时有多个基类,称为多重继承。
继承方式有 3 种:公有继承(public)、私有继承(private)和保护继承 (protected)。如果省略继承关键字,系统默认的继承方式是私有继承。继承 方式不同,派生类自身及其使用者对基类成员的访问权限不同。
第7章 面向对象程序设计
7.1 类与对象 7.2 类的继承与派生 7.3 多态
学习目标
LEARNING OBJECTIVES
理解类与对象的概念
掌握类与对象的定义
了解类的继承、派生与多态
7.1 函数
目录
Contents
7.1.1 类的定义 7.1.2 对象的定义 7.1.3 数据封装 7.1.4 函数重载

计算机二级第7章 面向对象的程序设计基础

计算机二级第7章 面向对象的程序设计基础

7.1.1 对象与类



对象与类是面向对象程序设计(OOP)的两个最 基本概念. 在面向对象程序设计中,对象(Object)是构成 程序的基本单位和运行实体,客观世界的任 何事物都可以被看做对象。 对象由属性和方法(行为)两个基本要素构 成,并且能够对外界事件进行响应。属性是 对象的静态特征,方法是对象的动态特征。 对象是特定属性和行为的封装体。

7.2.1 创建表单
1.
使用窗体设计器创建表单
① 菜单方式 ② 命令方式:create form<表单名>[.scx] ③ 保存时会生成一个scx的表单文件和与其同名的sct 表单备注文件
2.
使用表单向导创建表单
① 表单向导 ② 一对多表单向导
例7.1 创建教师情况表维护表单 例7.2 创建维护jsqk和kyqk部分数据的表单



容器也可以包含容器,并可以形成对象的嵌 套包含。 如表单是一个容器对象,既可以包含命令按 钮、文本框等控件对象,也可包含表格、页 框等容器对象,而表格又可以包含其他的容 器对象或控件对象。这样就形成了对象的嵌 套包含关系。 在VF的界面设计中,就是通过在表单中添加 各种容器对象和控件对象,形成可视化的数 据库应用系统的工作界面,从而实现信息传 递和各种交互式操作。



具有相同属性和行为的同种类型的对象称为 “类”。“类”是同类型对象的抽象。 类定义了对象所共有的属性和行为,对象是类 生成的具体实例。 一个“类”可拥有成千上万个具体的对象,这 些对象拥有所属类的全部共有属性和行为,但 是彼此之间相互独立,因为每个对象都具有本 身特有的属性值和行为实现 如:学生类:
7.2.3 表单属性、事件和方法

Java面向对象程序设计第7章 网络编程基础

Java面向对象程序设计第7章 网络编程基础

简单聊天系统-运行与问题

运行程序 发现:无法收发信息。 原因:信息未发送。 解决1:客户端发送按钮
简单聊天系统-运行与问题



仍然存在问题 原因:服务器未进行多次接收 解决:对服务器进行10次信息收发
简单聊天系统-运行与问题

任意多次信息收发的解决? 假死问题出现? 必须发送10条信息,才能显示。 对任意多条,必定永远假死。 假死问题的原因?独占资源 解决办法: 多线程。 演示
内部线程类
将需要循环执行的语句块在线程的run方法中实现
服务器端监听按钮事件
将实现收发功能的代码用线程来实现
简单聊天系统的实现-运行

运行,客户端可以发送多条信息,服务 器端显示。
简单聊天系统-实战演习
在上例中,我们已经实现服务器端不停地接收 信息,请对这两个工程做修改,实现如下功能: ( 1 )服务器在接收到来自客户端的非退出信息 时,发送一条“服务器反馈信息 XX” 信息到客 户端。 ( 2 )服务器在接收到来自客户端的退出信息时, 发送一条“QUIT”信息到客户端。 ( 3 )客户端能实时接收服务器发送的信息,当 接收到“QUIT”信息时,则关闭套接字连接。
Java的网络编程类
3.套接字建立(Socket类) Socket类用于套接字的建立。它常用的方法有: ( 1 ) 构 造 器 方 法 public Socket(InetAddress address, int port) 用于客户端与指定的服务器IP地址及服务器 端口进行套接字连接。 (2)public void close() 关闭用户连接。 (3)public InputStream getInputStream() 从套接字返 回一个输入流 (4)public OutputStream getOutputStream() 从套接 字返回一个输出流

第7章 面向对象开发基础

第7章  面向对象开发基础

信息系统开发与设计 2010
7.2 统一建模语言概述
7.2.1 为什么要进行建模
所谓模型, 所谓模型,就是人们对客观世界和抽象事物之间联系 的具体描述,是对现实世界的抽象和刻画。 的具体描述,是对现实世界的抽象和刻画。 通过建模,可以把一个复杂的系统,按问题的不同方 通过建模,可以把一个复杂的系统, 从系统的不同角度,以一种约定的、大家共同接受的, 面,从系统的不同角度,以一种约定的、大家共同接受的, 同时更容易理解的描述方式进行描述, 同时更容易理解的描述方式进行描述,从而保证了整个开 发团队对系统理解的全面性和一致性,有利于开发出高质 发团队对系统理解的全面性和一致性, 量的软件产品。 量的软件产品。 UML是目前最流行的建模语言。是软件产业界事实上 是目前最流行的建模语言。 是目前最流行的建模语言 的工业标准。 的工业标准。
4.通用机制(General Mechanism) .通用机制( )
利用通用机制为图附加一些额外的信息。例如,添加注 释,或用标签值说明元素的性质等。
信息系统开发与设计 2010
7.2.4 UML的建模过程及工具 的建模过程及工具
UML的建模过程主要有以下几个步骤: 的建模过程主要有以下几个步骤: 的建模过程主要有以下几个步骤
• 建立需求模型 • 建立对象模型 • 建立系统实现模型 • 检查模型之间的一致性 • 在组件图基础上生成开发语言的代码框架
信息系统开发与设计 2010
图7.8 UML建模过程 建模过程
信息系统开发与设计 2010
2.UML建模工具 . 建模工具
• Rational Rose • Microsoft Visio • MagicDraw UML
图7.3 继承的示例

面向对象程序设计第7章

面向对象程序设计第7章

继承
继承是子类继承父类的属 性和行为,子类可以扩展 或覆盖父类的实现。
多态
多态是指不同对象对同一 消息的响应不同,即一个 消息可以作用于多个对象, 产生不同的结果。
抽象
抽象是通过定义抽象类和 接口来定义对象的通用属 性和行为,具体的实现细 节由子类完成。
面向对象的历史与发展
起源
面向对象的思想起源于20世纪60 年代的Simula语言,后来在
常见的IDE
包括Eclipse、Visual Studio、IntelliJ IDEA等,这些IDE都支持多 种编程语言,并提供丰富的插件和扩展功能。
WENKU DESIGN
WENKU DESIGN
2023-2026
END
THANKS
感谢观看
KEEP VIEW
WENKU DESIGN
WENKU DESIGN
WENKU
REPORTING
https://
UML图的使用
在面向对象程序设计中,UML图主要用于对系统进行可视 化建模,帮助开发人员更好地理解和管理复杂的系统结构。
设计模式的工具支持
设计模式的概念
设计模式是一套经过验证的、可复用的解决方案,用于解决常见的 设计问题。
工具支持的重要性
工具支持可以帮助开发人员更快速地应用设计模式,提高开发效率 和代码质量。
单例模式
单例模式是一种创建型设计模式,它保证一个类只有一个 实例,并提供一个全局访问点来获取该实例。
单例模式通过定义一个私有的静态变量和一个公共的静态 方法来实现,该方法用于创建实例或获取实例。通过这种 方式,可以确保一个类只有一个实例,并提供一个全局访 问点来获取该实例。
PART 04

第7章 面向对象技术CS

第7章 面向对象技术CS

7.1 7.1面向对象的基本概念
7.1.2 基本概念 (4)继承 继承 类之间除了有相互交流或访问的关系以外, 类之间除了有相互交流或访问的关系以外,还可能存在 着一种特殊的关系,这就是继承. C#中只支持单继 着一种特殊的关系,这就是继承.在Visual C#中只支持单继 即一个派生类只能有一个基类. 承,即一个派生类只能有一个基类. (5)重载 重载 重载指的是方法名称一样,但如果参数不同, 重载指的是方法名称一样,但如果参数不同,就会有不 同的具体实现.重载主要有两类:方法重载及运算符重载. 同的具体实现.重载主要有两类:方法重载及运算符重载. 多态性 (6)多态性 所谓多态性就是在程序运行时, 所谓多态性就是在程序运行时,面向对象的语言会自动 判断对象的派生类型,并调用相应的方法. 判断对象的派生类型,并调用相应的方法.
7.1 7.1面向对象的基本概念
7.1.3 类和名称空间 名称空间是.NET环境的核心,因为它提供了把相关类组织到 逻辑组中,使这些类更容易于查找和管理,增加了程序代码的 可读性和可维护性. 名称空间是类的一种组织结构,它将父类命名为名称空间, 即赋予某个名称,所有由它衍生的子类都是这个名称空间的成 员,每个下一级的子类也都拥有自己的子名称空间,因而构成 呈树状分布的一个名称空间集合. 用户也可以自己声明一个名称空间.定义的语法格式为: 用户也可以自己声明一个名称空间.定义的语法格式为:
7.8 密封类与抽象类 把一个类声明为密封类的原因是为了防止该类被其 它类继承,密封类的声明方法是在类名前加上sealed 它类继承,密封类的声明方法是在类名前加上sealed 修饰符. 修饰符. 抽象类表示一种抽象的概念, 抽象类表示一种抽象的概念,一般用于为派生类 提供公共接口.在声明类时,在类名前有abstract修 提供公共接口 饰符则表示该类为抽象类.抽象类只能作为其他类的 基类,不能被实例化,在抽象类中可以包含抽象方法 和抽象访问器.

第7章面向对象程序设计

第7章面向对象程序设计

当用户通过键盘或 鼠标改变一个控 Unload 件的值时
触发时机
释放鼠标键时 按下鼠标键时 拖动鼠标时 按下并释放某键盘键
时 对象失去焦点前 对象失去焦点时
释放对象时
7.2 表单设计器
7.2.1表单设计器工具
1.表单设计器的功能与特点: (1)创建表单及表单上的各个对象。 (2)修改已有的表单。 (3)操作方便与可视化。
2.表单设计工具 可供表单设计使用的各要素与工具: (1)表单设计器窗口与表单窗口:多数设计工作将在表单窗口中完成。 (2)属性窗口:可以完成对象属性的设置与修改。 (3)代码编辑窗口:供用户编写事件或方法的程序代码。 (4)各种工具栏 (5)数据环境设计器窗口:为表单创建或修改数据环境。 (6)快捷菜单:不同对象有不同快捷菜单帮助完成经常性工作。 (7)动态菜单
容器 表单集 表单 页框 页面 表格
表格列
选项按钮组
命令按钮组 工具栏
Container容器
容器及包含的对象
能包含的对象 表单、工具栏 页框、表格、任何控件 页面 表格、任何控件 表格列 标头对象、除表单、表单集、工具栏、计时器和列对象以
外的对象 选项按钮
命令按钮 任何控件、页框、容器
任何控件
Vfp部分常见事件列表
难点:
1 、面向对象程序设计的基本概念 2、事件的触发顺序及触发方式 3、用户自定义属性和方法 要求:
1、掌握面向对象程序设计的基本概念 2、学会使用表单设计器设计表单 3、掌握表单数据环境的概念及其操作方法 4、掌握各种控件共有的属性、方法和事件 5、掌握编程设置属性和调用方法的方法 6、了解带参事件代码的编写、掌握事件的触发顺序 7、了解用户自定义属性和方法 8、学会使用表单向导创建表单,并进一步使用表单设计
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

类和对象
1. 简述类和对象之间的关系
2. 对象的引用和对象本身分别存在哪块存储区?
3. 方法签名由哪些部分组成?
4. 创建一个Teacher类,要求描述姓名、性别、年龄、薪水,定义一个方法,用于在教师
原有薪水的基础上增加5000,再定义一个TeacherTest类,创建一个Teacher对象并初
始化对象的各属性值,调用教师增加薪水的方法,并将增加薪水后的教师信息输出。
5. 小红养了两只猫,一只叫小黑,今年2岁,黑色,另一只叫小白,今年5岁,白色。请
编写一个程序,要求当用户输入小猫的名字时,就显示猫的名字、年龄和颜色。如果用
户输入的小猫名字错误,则显示“小红没有养这只猫”。

封装、继承
1. 编写一个类Student,代表学员,要求:
1) 具有属性:姓名、年龄、性别、专业
2) 具有方法:自我介绍,负责输出该学员的姓名、年龄、性别以及专业
3) 具有两个带参数的构造方法:
第一个构造方法中,设置学员的性别为男,专业为Android,其余属性的值由参数
给定;第二个构造方法中,所有属性都由参数给定
编写测试类StudentTest进行测试,分别以两种方式对两个Student对象进行初始化,
并分别调用他们的自我介绍方法,看看输出结果是否正确。
2. 需求
1) 定义一个(Person)类,包含属性:姓名,年龄,性别;写好相关的方法,能够构造的
时候初始化或者后续修改属性值。
2) 定义一个Employee类继承于Person类,包含新的属性:职位;写好相关的方法,
能够构造的时候初始化或者后续修改属性值,重写equals方法,规则:当两个对
象的姓名,年龄,性别,职位都相等时返回true,否则返回false。
3) 写一个测试类进行相关测试(要求可以打印对象的信息,能够比较对象是否"相等")。
效果:
3. 假设现在需要对员工进行建模,员工包含3个属性:工号、姓名、工资。经理也是员工,
除了含有员工的属性外,另外还有一个奖金属性。请使用继承的思想设计出员工类和经
理类。要求类中提供必要的方法进行属性访问。
4. 用面向对象编程的思想,设计一个猜拳游戏,完成人机猜拳互动游戏的开发。
功能:
1) 选取对战角色
2) 猜拳
3) 记录分数
效果图:

提示:
先思考这个程序中一共涉及到多少个类,需要创建多少个对象。
5. 为某音像店开发一个迷你DVD管理器,实现DVD碟片的管理,包括如下功能:新增DVD、
查看DVD、删除DVD、借出DVD、归还DVD。(后台使用数组来存放DVD对象。默认最多
存放100个)
设计:
1) DVD类(属性:id ,name ,lendCount,lendDate,status)(默认每张DVD都是唯一的)
lendCount字段每借一次加1
2) DVDDB类(提供一个动态数组来保存多张DVD)
3) DVDManager类(提供操纵功能),添加DVD、查看DVD、删除DVD、借出DVD、归还
DVD、DVD排行榜(按借出次数降序排序),退出系统
效果图:

多态
1. 张三可以开关家里的任何电器,比如电灯、电视、电扇等。使用继承和多态来实现开关
电器的方法。
2. 学校中心配备一台打印机(可以是黑白打印机,也可以是彩色打印机)。中心可以通过
打印机打印学员的个人信息(张三和李四等)。通过继承和多态来设计这个程序,使程
序具有更好的扩展性和维护性。
3. 模拟一个军队作战,军队里面有各种兵,骑兵,步兵等等。每种兵的攻击敌人方式不一
样。建立各种各样的兵,至少3种,然后建立一个军官,军官也会上场去攻击敌人,但是
军官还有一种行为,就是发号,军官发号了,无论什么兵都去战场攻击敌人,也可以指
定哪种兵去攻击敌人。最后程序运行效果就是一个军官开始发号,然后所有被指定的士
兵包括军官都去打仗,显示每个人攻击敌人的方式。
4. 用Java程序完成以下场景:
有一个主人(Master类),他养了两只宠物(Pet类),一只宠物是狗(Dog类),
名字叫“旺财”,另一只宠物是猫(Cat类),名字叫“小花”,现在有两种食物(Food
类),分别是骨头(Bone)和鱼(Fish)。主人分别给两只宠物喂食物,两只宠物厌食,
狗只吃骨头(如果主人为够吃别的食物,就显示“狗不吃某某食物”);猫只吃鱼(如果
主人为猫吃别的食物,就显示“猫不吃某某食物”)
提示:
1) 程序结构如下

2) main方法代码如下

3) 程序运行结果如下
抽象类和接口
1. 通过抽象类定义车类的模版,定义一个抽象方法run(),然后通过抽象的车类来派生拖
拉机(Tractor)、卡车(Truck)、小轿车(Saloon),并且有各自的run()方法实现。
2. 编写一个程序,要求:
1) 定义一个Student类(属性:学号、名字、成绩),通过实现comparable接口让它
具有比较大小的能力(通过成绩来比较)
2) 定义一个Student数组stus,生成5个Student对象,存入stus中
3) 定义一个StudentTest类,通过调用Arrays工具类中的sort方法来对stus中的
元素进行排序。

3. 编写一个程序,模拟以下场景:

现有一块电脑主板,其主板本身已经集成了网卡和声卡功能,但是为了满足市场的需求,
主板上提供了3个PCI接口,提供给用户后期扩展功能使用。用户可以在PCI接口上插
上各种PCI设备,例如可以支持千M网速的独立网卡、HIFI音质的独立声卡、检测专
用的检测卡等。
4. 使用策略模式的设计方式来实现对数组的排序,提供两种具体的实施策略,冒泡排序法
和选择排序法。
5. 使用策略模式的设计方式来实现两个数的操作获得相应的结果。提供四种具体的实施策
略,加、减、乘、除操作。
6. 需求:
1) 定义点类(二维,即包含x,y坐标) Point
2) 定义一个图形类Figure(抽象类):包含抽象方法画图(onDraw)
3) 定义一个三角形继承于图形类,
属性:三个点
方法:设置点,获取点等相关方法以及重写的画图方法
PS:画图方法中要求打印出画出的是一个什么图形和各个点坐标
4) 定义一个圆形类,和三角形要求一致
5) 定义一个画家类Painter
方法:画画:可以画出一个图形
6) 写一个测试类,测试画家画画,画一个三角形,一个圆形

相关文档
最新文档