面向对象开发技术(第三周)

简介: 所以,本堂课重点来来看看抽象思想

回顾

上一堂课主要学习了面向对象编程与非面向对象编程(面向功能、过程编程),本节课就重点来看看面向对象编程中的一个具体思想——抽象

面向对象编程的特性:1、封装性 2、继承性 3、多态性

封装:意味着提供服务接口

继承:意味着类之间层层的关系,也就是需要从上层到下层具体化,或从下层到上层抽象化

多态:意味着处理继承中的特殊情况,让类的关系更加自由

所以,本堂课重点来来看看抽象思想

抽象定义

抽象:是建立、理解和管理复杂的系统最主要的技术

包括:1、对一个功能实现的过程细节有目的的隐藏

         2、以便让其他方面、细节表达的更清楚

举例:1、世界地图忽略细节以便呈现世界的整体样貌,整体关系

         2、地方性的地图重点展示各山峰、超市、街道等,而忽略了整体的样貌、关系

抽象层次

层次一、团体

在面向对象程序开发过程中,关于“团体有两个层次的含义:

1、首先是指程序员的团体,他们在现实世界中相互作用,以便开发出应用程序来。

2、第二个团体是这些程序员创建的对象的团体,它们在虚拟世界中相互作用,以完成它们的共同目标。

下图可以理解为一个程序的程序员团体一个程序的对象团体

层次二、单元

在面向对象程序开发过程中,单元的含义有:

1、许多协同工作的对象组合到一个“单元”中

2、这些单元允许某些特定的名称暴露在单元以外,而其他特征则隐藏在单元中

3、例如,Java(packages)C++名字空间(name spaces)Delphi中的单元(units)

注意:当用protected修饰类成员时,该类成员能够被其子类同一包中的其他类访问

层次三、CS

在面向对象程序开发过程中,CS的含义有:

1、处理两个独立对象之间的交互

2、两个对象间交互时涉及两层抽象:一个对象(服务者, server)向另一个对象(客户, client)提供服务,二者之间以通信来交互

层次四、服务实现方式

1、考虑第三层次中的服务中具体的实现方式

2、这个具体实现方式仍然存在一定抽象,包括:实现算法、数据结构等

层次五、具体实现

1、方法的具体实现逻辑(具体过程、具体的算法数据结构的实现)

2、关注执行一个方法的具体操作实现

总结

1、在软件产品设计的过程中,我们思考的层次从上到下进行的。因为越上层的抽象层度越高,越简洁。

2、软件开发团队布置任务的顺序也是从上层到下层,层层分解来布置的。越上层的其对应开发团队中的地位也相对更高

抽象方法

特化分层

定义

特化分层又称为特殊化或具体化,在具体化的物体中抽象出一些共同的特性、特点归为一个特殊的上层类的方法就称为抽象

举例

一、汽车是一个有轮的载运工具,而有轮的载运工具又是一个载运工具,所以载运工具就是从汽车这个具体化的物体中抽象提炼出来的

二、生物分为动物和植物,动物又分为脊椎动物和无脊椎动物,脊椎动物包括哺乳动物,哺乳动物又分为猫、狗

分治法

定义

将一层复杂的系统划分为多个组成部分,从而将复杂系统简单化。任何平常接触的名词都是抽象化后的结果,例如:汽车、手机等。这些都是将许多系统(传动系统、显示系统等),甚至更底层可以说是物质组合后抽象归纳出来的东西

举例

汽车是由发动机、传动机构、车身和车轮组成的,要理解汽车这个概念,只要依次检查其组成部件就行了

不同视角

定义

对同一件物品提供不同的视角。每一个视角会强调某一些细节而忽略其他细节,因此,对同一对象描述出不同的特性。本质上就是利用视角不同,对物体的功能和实现方式进行不同程度的抽象处理。

举例

一、机械师眼里的汽车和外行眼里的汽车,看法是很不一样的。机械师眼里的汽车抽象程度相对于外行人眼里的汽车就更低

二、服务视角:服务的制造者仅仅关注服务功能的实现并不关注使用的场地、环境等,服务的使用者仅仅关注什么时候使用服务并不关注服务的具体实现方式

总结

如果觉得写的还不错,可以点个赞收藏一下呀~~

祝大家学业、事业、爱情顺利!

天天开心,没有Bug每一天

相关文章
|
10月前
|
人工智能 监控 数据安全/隐私保护
AI视频监控在大型商场的隐私保护技术
为保障隐私合规,商场采取数据加密与匿名化处理,防止敏感信息泄露;同时通过透明性声明和合法授权,确保顾客知情并同意监控措施。技术手段包括加密算法保护、去除身份识别细节,并在显眼位置张贴隐私政策,采用电子屏幕、语音提示或二维码获取顾客同意,确保监控行为合法合规。
327 0
|
Java 关系型数据库 MySQL
实时计算 Flink版产品使用问题之如何实现MySQL数据库之间的实时同步
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
Kubernetes 关系型数据库 Linux
linux安装centos7 kubenetes 单机版安装k8s
linux安装centos7 kubenetes 单机版安装k8s
755 0
|
Java Go
Golang深入浅出之-Goroutine泄漏检测与避免:pprof与debug包
【5月更文挑战第1天】本文介绍了Go语言中goroutine泄漏的问题及其影响,列举了忘记关闭通道、无限循环和依赖外部条件等常见泄漏原因。通过引入`net/http/pprof`和`runtime/debug`包,可以检测和避免goroutine泄漏。使用pprof的HTTP服务器查看goroutine堆栈,利用`debug`包的`SetGCPercent`和`FreeOSMemory`函数管理内存。实践中,应使用`sync.WaitGroup`、避免无限循环和及时关闭通道来防止泄漏。理解这些工具和策略对维护Go程序的稳定性至关重要。
372 4
|
C# 数据库
C#中的空合并运算符与空合并赋值运算符:简化空值处理
C#中的空合并运算符与空合并赋值运算符:简化空值处理
232 0
kali安装vmtools
kali安装vmtools
451 0
|
前端开发
CSS画心形的三种方法,超级简单(二)
CSS画心形的三种方法,超级简单
|
存储 Java Spring
Spring框架中的Resource接口是什么,以及它在加载和访问资源时的关键作用
使用 Resource 加载资源 要使用 Resource 接口加载资源,首先需要获取一个 ResourceLoader 实例,通常可以通过依赖注入来获得。接下来,您可以使用 ResourceLoader 来获取 Resource 对象,然后使用它来访问资源的内容。
338 0
|
机器学习/深度学习 监控 异构计算
如何监控NVIDIA GPU 的运行状态和使用情况
如果这个值很低,则意味着您的 GPU 并没有全速的工作,可能是受到 CPU或者IO 操作的瓶颈,如果你使用的按小时付费的云服务器,那么就是在浪费时间和金钱!
1812 0
如何监控NVIDIA GPU 的运行状态和使用情况
|
机器学习/深度学习 JSON Rust
我为什么将机器学习主力语言从Python转到Rust
Rust语言诞生于2010年,一种多范式、系统级、高级通用编程语言,旨在提高性能和安全性,特别是无畏并发。虽然与Python相比,Rust还年轻,很多库还在开发中,但Rust社区非常活跃并且增长迅猛。很多大厂都是Rust基金会的成员,都在积极地用Rust重构底层基础设施和关键系统应用。
1360 0
我为什么将机器学习主力语言从Python转到Rust

热门文章

最新文章