《面向对象是怎样工作的》笔记

news2024/9/27 20:13:48

6、1、在面向对象的世界中,我们需要事先为所有的行动准备好方法并通过消息传递来调用方法,这样事物才会开始运作。

2、实际上,类、继承和多态应该被明确定义为能提高软件的可维护性和可重用行的结构。类将变量和子程序汇总在一起,创建独立性高的构件;多态和继承用于消除重复代码,创建通用性强的构件。另外,实例能够在运行时将实例变量在堆栈区展开,可以轻松地确保类的逻辑

3、类的功能是汇总、隐藏和“创建多个实例”:1)汇总子程序和变量;2)隐藏只在类内部使用的变量和子程序;3)从一个类创建多个实例;

4、多态可以说是创建公用主程序的结构。公用主程序将被调用端的逻辑汇总成一个逻辑。而多态则相反,它统一调用端的逻辑,如下图所示:

多态吃统一调用子程序端的逻辑的结构,即创建公用主程序的结构。

5、继承就是“将类的共同部分汇总到其他类中的结构”,借助该结构,我们可以创建一个公用类来汇总变量和方法,其他类则可以完全借用其定义,即:继承是将类定义的共同部分汇总到另一个类中,并去除重复代码的结构

6、用一句话概括异常:采用与返回值不同的形式,从方法返回特殊错误的结构。传统的子程序结构中,通常使用错误码来处理网络通信故障、硬盘访问故障或者数据库死锁等特殊情况,具体来说就是确定值的含义并将其作为子程序的返回值返回,但是这样的做法存在着如下问题:1)需要在应用程序执行错误码的判断处理,若忘记编写判断处理或者弄错值,那么在发生故障时很难确定具体原因,并且在添加删除错误码值的情况下,程序员需要亲自确认所有相关的子程序来改写。2)判断错误码的相同逻辑在子程序之间时连锁的。通常在调用端的子程序中必须编写判断错误码的值的逻辑。另外,在被调函数(即被调子程序)中无法执行错误的后续处理时,就会返回同样的错误码。如果错误码的判断在整个应用程序中连锁,那么程序逻辑就会变得很冗长。异常结构会在方法中声明可能会返回特殊错误,这种特殊错误的返回值就是异常,其语法不同于子程序的返回值。在声明异常的方法的调用方,有时在发生错误时并不执行特殊错误处理,而是将错误传递给更上层的调用方。在此类场景下,只需在方法中声明异常,没必要编写错误处理。异常可以将重复的错误处理汇总到一处,并且当忘记编写必要的错误处理时,编译器和运行环境会进行提醒,非常方便。这种结构可以达到去除冗余、防止出错的效果

7、计算机的工作并不只是执行机器语言的命令,还有读写硬盘、使用打印机打印、与其他联网的计算机进行通信、等待来自键盘和鼠标的输入等等,需要与外部进行很多交互。这种与外部的交互对于人类而言可能只是一瞬间的事情,但对以毫秒和微秒为单位进行作业的CPU来说确实很长的等待时间。因此,如果在此期间只是默默等待,那么CPOU不执行作业的空闲时间占比就会很大

8、栈区是用于线程的控制的内存区域。堆区供多个线程共同使用,而栈区则是为每个线程准备一个。各个线程依次调用子程序(在OOP中是方法)进行动作。栈区是用于控制子程序调用的内存区域,存储这子程序的参数、局部变量和返回位置等信息。

9、框架和类库都指可重用的软件构件群,一般会根据目的和使用方法区分二者。通常在称为类库的情况下,只是利用OOP结构创建的可重用构建,并不限制其目的和使用方法。但在称为框架的情况下,则并不只是只利用OOP闯将的类库,还指用于特定目的的应用程序的半成品。另外,从应用程序中的使用方法来说,并不是像传统的函数库那样简单地进行调用,而是从框架来调用应用程序。也就是说,在框架端预先提供基本的控制流程,在应用程序中嵌入自定义的特殊处理。如下图所示

在这种框架中,多态和继承具有非常重要的作用:基本的处理由框架端提供,应用程序特有的处理规则利用多态进行调用,如好莱坞原则一般:所有的控制流程都由框架端决定,应用程序的处理规则使用多态在需要时进行调用

10、计算机不会“完全替换”现实世界中的工作和娱乐,它只是为了让人们变轻松而承担了现实世界中的一部分工作。计算机擅长的是处理大规模的计算、记录信息等固定工作和记忆工作。即使是管理计算机的软件也只是承担了现实世界中的一部分工作,而不能表示现实世界本身。

11、在OOP中,消息传递是一种通过指定实例来调用类中汇总的子程序(方法)的结构,这种结构在上流工程中被应用于表示“具有某种特定功能的事物按照固定的方法相互联系的情形”的职责分配模型中

12、类图表示静态信息,时序图和通信图表示动态信息。时序图中的“时序”有“连续”“顺序”的含义,因为是将方法调用表示为时间序列,所以才如此命名。由于OOP中的方法会指定对象实例来调用,所以时序图表示的是实例之间的相互作用。通信图表示的信息与时序图基本是一样的,区别在于通信图的表示方法以实例的关系为中心。三种图形的特征:1)类图表示类的定义信息和类之间的关系;2)时序图将运行时的实例之间的方法调用表示为时间序列;3)通信图将运行时的实例之间的方法调用以实例关系为中心进行表示,在通信图表示现实世界的情况下,实例就是人或者组织。在通信图表示程序结构的情况下,箭头表示消息调用,而在表示现实世界的情况下,则是通过对话等进行沟通的意思。

13、用例图用于明确表示计算机的工作范围。具体来说,就是确对象系统和外部(用户或者其他系统)的界限,简洁的表示交给计算机的工作内容。用例是用例图的中心,意思是“实际使用的例子”,此处指计算机提供给用户的功能

14、活动图经常被用来表示现实世界的业务流程,虽然现实世界的工作流程也可以通过时序图和通信图来表示,但在分析实际的工作情况时,相比于人物的职责分配,理解整体流程可能更为重要。

15、面向对象并不是直接将现实世界表示为软件的技术,计算机只是承担了人们的一部分工资哦,并不会完全替换现实世界。因此当开发软件时,我们需要填补这道沟壑。

16、在推进软件开发时,需要进行如下三个阶段的工作:1)业务分析:整理现实世界的工作的推进方法,在此阶段,需要整理好如何对现实世界中的工作进行职责分配,以及如何推进工工作。除此之外,还应提取出业务相关的课题,并以此信息依据来确定交给计算机的工作,业务分析是整理为什么使用计算;2)需求定义:定义可以交给计算机的现实世界中尔等工作,由于计算机擅长记忆工作和固定工作,所以我们需要从现实世界中的工作中遴选出这些工作,需求定义相当于确定让计算干什么;3)设计:确定软件的编写方法,设计相当于确定管理计算机的软件如何实现。

16、易于维护和冲用的软件结构的目标汇总为如下三点:1)去除重复;2)提高构件的独立性;3)避免依赖关系发生循环

17、在使用面向对象编写软件的情况下,无生命的事物会承担职责,互相发送消息,从而完成整个工作。通过这样的设计,可以提高类和包的独立以及整个软件的可维护性和可重用性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2170916.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

叉车高位显示器无线摄影,安装更加便捷!

叉车叉货,基本功能,但货叉升降高度确不一定,普通的3米左右,高的十几米,特别是仓储车,仓库叉货空间小,环境昏暗,视线受阻严重,司机叉货升的那么高怎么准确无误的插到货呢&…

尊享免费博导实验指导、结果解读、一站式实验服务与论文润色,助力科研人员成就卓越

🌟 教授团队领衔,全方位服务! 🚀 从实验设计到论文发表,一站式解决方案! 📈 选择我们,加速您的科研进程,让成果不再等待! 📝 专业分析 定制服…

C高级(Day21)

一、学习内容 shell指令 学习回顾 mkdir 创建目录 cd 切换目录 cd \ cd . \ cd .. touch 、 vim 创建文件 rm 删除文件 rm -r 删除文件/删除目录 rmdir 只能删除空目录 cp 复制文件 mv 移动、重命名、剪切 cat 显示文件内容 ls 查看目录下的所有文件 ls -a 、ls -l pw…

kali的tplmap使用报错解决

问题 当我们直接使用kali下的tplmap时报错了。 Tplmap 0.5 Automatic Server-Side Template Injection Detection and Exploitation Tool Testing if GET parameter name is injectable Exiting: module collections has no attribute Mapping 这是因为tplmap要求的版本…

USB 3.1 标准 A 型到 USB 3.1 标准 A 型或 B 型的电缆组件

电线分配 下表定义了电线编号和电线的信号分配: Unshielded twist pair:非屏蔽双绞线Shielded differential pair:屏蔽差分对Braid:编织层Cable external braid to be 360 terminated on to plug metal shell:电缆外部…

文笔差只因没找对工具,这5个AI帮你变身写作高手!

在详细评估了超过二十种AI写作辅助应用后,我挑选了四款特别出色的工具来向您介绍。这些工具不仅能显著提高您的写作速度,而且在特定用途下能够创造出优秀的内容,从而避免了一些常见的AI写作缺陷。 通常情况下,对AI生成内容感到不…

8--苍穹外卖-SpringBoot项目中套餐管理 详解(二)

目录 删除套餐 需求分析和设计 代码开发 根据id查询套餐 mapper层 Service层 ServiceImpl层 Mapper层 批量删除套餐 mapper层 Service层 ServiceImpl层 Mapper层 SetmealMapper.xml 修改套餐 需求分析和设计 代码开发 起售停售套餐 需求分析和设计 代码开发…

【智享AI直播官网】—智享AI直播源码部署—OEM贴牌!

【智享AI直播官网】—智享AI直播源码部署—OEM贴牌! 在当今数字化浪潮的推动下,直播行业正以前所未有的速度蓬勃发展,而AI(人工智能)技术的融入更是为这一领域注入了新的活力与无限可能。【智享AI直播官网】作为行业内…

gMLP:Pay Attention to MLPs--模型代码讲解

gMLP模型代码讲解 IntroductiongMLP网络结构Spatial Gating Unit (SGU) codegMLPBlockSpatial Gating Unit 基于MLP-Mixer 的改进… Introduction 总的来说,gMLP 在视觉和NLP领域的惊人有效性表明,自我注意并不是扩大机器学习模型的必要因素&#xff0c…

基于STM32的DHT11功能实现(操作时序)

1.引脚定义 Pin名称注释1VDD供电 3-5.5V2GND接地,电源负极3DATA串行数据,单总线4NC空脚,请悬空 2.数据格式 DHT11 采用单总线协议与单片机通信,单片机发送一次复位信号后,DHT11 从低功耗模式转换到高速模式&#xff…

新品:新一代全双工音频对讲模块SA618F22-C1

SA618F22-C1是我司一款升级版的无线数字和音频二合一全双工传输模块,支持8路并发高音质通话。用户不仅可以通过串口实现数据的无线传输,还可以通过I2S数字音频或模拟音频接口来传输语音信号。该模块内置高速微控制器、回声消除电路、ESD静电防护、高性能…

全国自闭症学校全寄宿制:为特殊儿童提供专业教育护理

在全国范围内,随着对自闭症儿童教育需求的日益增长,全寄宿制自闭症学校逐渐成为了一种重要的教育模式。这些学校以其专业的教育团队、全面的生活护理以及个性化的教学方案,为自闭症儿童提供了一个安全、稳定、充满爱的成长环境。在广州&#…

走进灯塔工厂,腾讯云携手业界专家共筑AI智造未来

现在,我国工业正处于从数字化向智能化转型的关键阶段,而人工智能、云计算和大数据等前沿技术正成为推动这进程的核心力量。以大模型为例,大模型通过高效处理和分析海量数据,帮助企业挖掘出有价值的规律和趋势,有效拓展…

使用双向链表和哈希表实现LRU缓存

在日常开发中,缓存 是一个非常常见且重要的技术手段,能够显著提升系统性能。为了保证缓存的有效性,需要实现一种机制,在缓存空间不足时,能够自动淘汰最久未被使用的数据。这种机制就是**LRU(Least Recently…

CSS文本格式化

通过 CSS 中的文本属性您可以像操作 Word 文档那样定义网页中文本的字符间距、对齐方式、缩进等等,CSS 中常用的文本属性如下所示: text-align:设置文本的水平对齐方式;text-decoration:设置文本的装饰;te…

面试题-部分

目录 1. 从输入url到渲染页面,中间经历了什么? 2. vue中的v-if和v-show有什么区别 3. 什么是Css中的回流(重排)与重绘 4. 介绍一下let、const、var的区别 5. 箭头函数和普通函数有什么区别 6. Css中常用的水平垂直居中解决方…

传输大咖49 | 科学研究院跨网文件交换高效、安全解决方案

在科学研究领域,数据的价值堪比黄金。科学研究所的日常运作依赖于大量的数据交换,高效的文件交换系统离不开内部合作和与外部合作伙伴的交流。然而,随着数据量的激增和网络环境的复杂性,传统的文件交换方法很难满足需求。本文将讨…

RK3568 android11 适配鼎桥MT5710-CN 5G模块

一,概述 鼎桥MT571X设备和Android系统主要通过USB接口进行数据通信,Android系统上的Linux内核需要根据鼎桥模块设备上报的USB设备接口加载USB驱动,USB驱动正确加载后,鼎桥模块才能正常工作。 Android系统中支持鼎桥模块设备相关的Linux内核驱动架构,如下图所示: 在Lin…

js删除emoji表情问题

emoji标签占位两个 &#xff0c;直接删除后一位会出现乱码符&#xff1b; 判断是否是emoji function isEmoji(char) {let code char.charCodeAt(0);return code>55296&&code<57343 } // 使用方法&#xff0c;传入单字符 console.log(isEmoji(1)); // false con…

Kubernetes 配置管理

一、什么是 ConfigMap&#xff1f; 在传统架构中&#xff0c;配置文件往往被保存在宿主机上&#xff0c;程序启动是可以指定某个配置文件&#xff0c;但是使用容器部署时&#xff0c;容器所在的节点并不固定&#xff0c;所以不能使用这种方式&#xff0c;此处在构建镜像时&…