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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Vue 技术入门 day1 模版语法、数据绑定、事件处理、计算属性与监视、class和style绑定、条件渲染v-if/v-show、列表渲染v-for

目录 1.Vue 核心 1.1. Vue 简介 1.1.1 介绍与描述 1.1.2 Vue 的特点 1.2 模板语法 1.2.1 模板的分类 1.2.2 插值语法 1.2.3 指令语法 1.2.4 实例 1.3 数据绑定 1.3.1 单向数据绑定 1.3.2 双向数据绑定 1.3.3 MVVM 模型 1.3.4 data与el的2种写法 1.3.5 实例 1.3.…

信息安全工程师(25)网络安全体系框架主要组成和建设内容

一、主要组成 信息安全战略:确立组织的信息安全目标和方向,指导整个网络安全体系的建设和运营。信息安全政策和标准:制定和执行一系列信息安全政策、标准和规范,确保网络安全活动有法可依、有章可循。信息安全管理:包括…

网站建设中常见的网站后台开发语言有哪几种,各自优缺点都是什么?

市场上常见的网站后台开发语言有PHP、Python、JavaScript、Ruby、Java和.NET等。这些语言各有其独特的优缺点,适用于不同的开发场景和需求。以下是对这些语言的具体介绍: PHP 优点:PHP是一种广泛用于Web开发的动态脚本语言,特别适…

《论文阅读》 用于产生移情反应的迭代联想记忆模型 ACL2024

《论文阅读》 用于产生移情反应的迭代联想记忆模型 ACL2024 前言简介任务定义模型架构Encoding Dialogue InformationCapturing Associated InformationPredicting Emotion and Generating Response损失函数问题前言 亲身阅读感受分享,细节画图解释,再也不用担心看不懂论文啦…

成都睿明智科技有限公司赋能商家高效变现

在这个日新月异的数字时代,抖音电商正以不可阻挡之势崛起,成为众多品牌与商家竞相角逐的新战场。在这片充满机遇与挑战的蓝海中,成都睿明智科技有限公司如同一颗璀璨新星,凭借其专业的服务、创新的策略和敏锐的市场洞察&#xff0…

NLP 文本分类任务核心梳理

解决思路 分解为多个独立二分类任务将多标签分类转化为多分类问题更换 loss 直接由模型进行多标签分类 数据稀疏问题 标注更多数据,核心解决方案: 自己构造训练样本 数据增强,如使用 chatGPT 来构造数据更换模型 减少数据需求增加规则弥补…

[element-ui]记录对el-table表头样式的一些处理

1、表头换行 & 列表项换行 可用element-table组件自带的方法实现列标题换行的效果 2、小圆点样式

第五部分:5---三张信号表,信号表的系统调用

目录 信号的递达、未决、阻塞: 进程维护的三张信号表: 普通信号与实时信号的记录: 信号结构的系统调用: bolck表的系统调用: 实例:设置屏蔽信号集中的所有信号都频闭 pending表读取: 信号…

计算机网络——TCP/IP网络模型

1. TCP/IP网络模型有哪几层 对于同一台设备上的进程间通信,有很多种方式,比如管道、消息队列、共享内存、信号等。而对于不同设备上的进程间通信,就需要网络通信,而设备是多样性的,所以要兼容多种多样的设备&#xff…

STM32快速复习(十二)FLASH闪存的读写

文章目录 一、FLASH是什么?FLASH的结构?二、使用步骤1.标准库函数2.示例函数 总结 一、FLASH是什么?FLASH的结构? 1、FLASH简介 (1)STM32F1系列的FLASH包含程序存储器、系统存储器和选项字节三个部分&…

Java每日面试题(JVM)(day15)

目录 Java对象内存布局markWord 数据结构JDK1.8 JVM 内存结构JDK1.8堆内存结构GC垃圾回收如何发现垃圾如何回收垃圾 JVM调优参数 Java对象内存布局 markWord 数据结构 JDK1.8 JVM 内存结构 程序计数器: 线程私有,记录代码执行的位置. Java虚拟机栈: 线程私有&#…

HarmonyOS鸿蒙系统开发应用程序,免费开源DevEco Studio开发工具

DevEco Studio 是华为为 HarmonyOS 和 OpenHarmony 开发者提供的官方集成开发环境(IDE),它基于 IntelliJ IDEA Community 版本打造,提供了代码编辑、编译、调试、发布等一体化服务。 一、DevEco Studio支持系统 DevEco Studio支持…

Centos怎么执行脚本

方法一:切换到shell脚本所在的目录(此时,称为工作目录)执行shell脚本 cd /data/shell ./hello.sh 方法二:以绝对路径的方式去执行bash shell脚本 /data/shell/hello.sh 方法三:直接使用bash 或sh 来执行…

中国算力大会启幕,联想发布异构智算产业创新成果

9月27日,2024中国算力大会在河南郑州拉开帷幕。作为全球领先的算力基础设施和服务提供商,联想集团参会参展并携手异构智算产业联盟承办2024异构智算产业生态联盟技术论坛。 据「TMT星球」了解,论坛发布了新一代AI服务器、AI应用部署解决方案…

飞睿智能实时雷达活体探测传感器模块,智能家居静止检测实时感知人员有无

随着科技的飞速发展,我们的生活正在经历着未有的创新。在这个创新的浪潮中,实时雷达活体探测传感器模块的技术正逐渐崭露头角,以其独特的优势为我们的生活带来安全与便捷。今天,我们就来详细探讨一下这项技术,看看它是…

Spring Boot 学习之路 -- 配置项目

前言 最近因为业务需要,被拉去研究后端的项目,代码框架基于 Spring Boot,对我来说完全小白,需要重新学习研究…出于个人习惯,会以 Blog 文章的方式做一些记录,文章内容基本来源于「 Spring Boot 从入门到精…

python-4-4-编程规范2

str1 ,str2 input("请输入两个学生的姓名,用空格分开").split() print(str1) print(str2)print("hello python")name "Jim" print("His name is :",name)a "hello" b "python" print(a,b)print(&q…

ResNet50V2:口腔癌分类

本文为为🔗365天深度学习训练营内部文章 原作者:K同学啊 一 ResNet和ResNetV2对比 改进点:(a)original表示原始的ResNet的残差结构,(b)proposed表示新的ResNet的残差结构,主要差别就是(a)结构先卷积后进行BN和激活函数…

原生app云打包,更换图标,和名称。PDA的安装正式包

原生app云打包 复制下载即可,是正式版

Python批量处理客户明细表格数据,挖掘更大价值

批量处理 .xls 数据并进行归类分析以挖掘内在价值,通常涉及以下步骤: 读取数据:使用 pandas 库读取 .xls 文件。数据清洗:处理缺失值、异常值、重复值等。数据转换:对数据进行必要的转换,如日期格式统一、…