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

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.rhkb.cn/news/433395.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

单片机的两种看门狗原理解析——IWDG和WWDG

一、IWDG独立开门狗的主要性能 计时机制: 递减计数器 独立开门狗的初始频率: LSI低速内部时钟:RC震荡器,40kHz 独立开门狗是以LSI为初始频率的,所以独立开门狗的初始时钟频率取决与单片机本身,因此在使…

AES CCM详解

AES CCM是一种对数据进行加密及完整性检查的算法,主要用到AES中的CBC(完整性检查)和CTR(对明文进行加密),除此之外,还涉及到对数据的格式化(本文着重阐述)。 文章目录 加密过程STEPS 解密及校验过程STEPS 格式化B0的构成B0解析举例AAD的格式化…

David律所代理Beau Parsons的小狗插画图案版权维权,速排查下架

案件基本情况:起诉时间:2024-9-16案件号:2024-cv-08505原告:Beau Parsons原告律所:David起诉地:伊利诺伊州北部法院涉案商标/版权:原告品牌简介:Beau Parsons是一位来自澳大利亚的专…

C++模拟实现list:list、list类的初始化和尾插、list的迭代器的基本实现、list的完整实现、测试、整个list类等的介绍

文章目录 前言一、list二、list类的初始化和尾插三、list的迭代器的基本实现四、list的完整实现五、测试六、整个list类总结 前言 C模拟实现list:list、list类的初始化和尾插、list的迭代器的基本实现、list的完整实现、测试、整个list类等的介绍 一、list list本…

[Linux]从零开始的Minecraft服务器搭建教程

一、前言 学习Linux有一段时间了,当然,我们要把学习的知识运用到实际生活中去。最近朋友们都在玩我的世界,网易版的我的世界联机非常不稳定,用起来也算是非常难受了。所以还是准备转战JAVA版。为了联机,可以考虑一个人…

计算机网络 --- Socket 编程

序言 在上一篇文章中,我们介绍了 协议,协议就是一种约定,规范了双方通信需要遵循的规则、格式和流程,以确保信息能够被准确地传递、接收和理解。  在这篇文章中我们将介绍怎么进行跨网络数据传输,在这一过程中相信大家…

CSS调整背景

一、设置背景颜色 通过 background-color 属性指定,值可以是十六进制 #ffffff,也可以是rgb(0, 255, 255),或是颜色名称 "red" div {background-color: red; /* 通过颜色名称设置 */background-color: #ff0000; /* 通过十六进制设…

图像分割(九)—— Mask Transfiner for High-Quality Instance Segmentation

Mask Transfiner for High-Quality Instance Segmentation Abstract1. Intrudouction3. Mask Transfiner3.1. Incoherent Regions3.2. Quadtree for Mask RefinementDetection of Incoherent Regions四叉树的定义与构建四叉树的细化四叉树的传播 3.3. Mask Transfiner Architec…

GreenPlum与PostgreSQL数据库

*** Greenplum*** 是一款开源数据仓库。基于开源的PostgreSQL改造,主要用来处理大规模数据分析任务,相比Hadoop,Greenplum更适合做大数据的存储、计算和分析引擎 它本质上是多个PostgreSQL面向磁盘的数据库实例一起工作形成的一个紧密结合的数…

【数据结构中的哈希】

泛黄的春联还残留在墙上.......................................................................................................... 文章目录 前言 一、【哈希结构的介绍】 1.1【哈希结构的概念】 1.2【哈希冲突】 1.3【哈希函数的设计】 1.4【应对哈希冲突的办法】 一、…

神经网络(一):神经网络入门

文章目录 一、神经网络1.1神经元结构1.2单层神经网络:单层感知机1.3两层神经网络:多层感知机1.4多层神经网络 二、全连接神经网络2.1基本结构2.2激活函数、前向传播、反向传播、损失函数2.2.1激活函数的意义2.2.2前向传播2.2.3损失函数、反向传播2.2.4梯…

数据工程师岗位常见面试问题-1(附回答)

数据工程师已成为科技行业最重要的角色之一,是组织构建数据基础设施的骨干。随着企业越来越依赖数据驱动的决策,对成熟数据工程师的需求会不断上升。如果您正在准备数据工程师面试,那么应该掌握常见的数据工程师面试问题:包括工作…

Spring Cloud Gateway接入WebSocket:实现实时通信

在现代的微服务架构中,实时通信变得越来越重要。Spring Cloud Gateway作为Spring Cloud生态中的API网关,提供了动态路由、监控、弹性、安全等功能。本文将介绍如何通过Spring Cloud Gateway接入WebSocket,实现服务之间的实时通信。 为什么需…

Spring异常处理-@ExceptionHandler-@ControllerAdvice-全局异常处理

文章目录 ResponseBodyControllerAdvice最终的异常处理方式 异常的处理分两类 编程式处理:也就是我们的try-catch 声明式处理:使用注解处理 ResponseBody /*** 测试声明式异常处理*/ RestController public class HelloController {//编程式的异常处理&a…

Mitsuba 渲染基础

Mitsuba 渲染基础 0. Abstract1. 安装 Mitsuba21.1 下载 Mitsuba2 源码1.2 选择后端 (variants)1.3 编译 2. [Mitsuba2PointCloudRenderer](https://github.com/tolgabirdal/Mitsuba2PointCloudRenderer)2.1 Mitsuba2 渲染 XML2.2 Scene 场景的 XML 文件格式2.2.1 chair.npy to…

设计模式之装饰模式(Decorator)

前言 这个模式带给我们有关组合跟继承非常多的思考 定义 “单一职责” 模式。动态(组合)的给一个对象增加一些额外的职责。就增加功能而言,Decorator模式比生成子类(继承)更为灵活(消除重复代码 & 减少…

JavaWeb招聘信息管理系统

目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 spring-mybatis.xml3.5 spring-mvc.xml3.5 login.jsp 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍:CSDN认证博客专家,CSDN平台Java领域优…

利用Langchain开发框架研发智能体Agent的过程,以及相关应用场景

大家好,我是微学AI,今天给大家介绍一下本文主要介绍了利用langchain开发智能体agent的过程。文章首先阐述了项目背景,随后通过给出样例代码,详细展示了执行过程。此外,本文还探讨了该智能体agent在实际应用场景中的运用…

Excel根据一个值匹配一行数据

根据一个值从一个表中匹配一行数据,例如从左边的表中找到指定姓名的所有行数据 使用VLOOKUP函数,参数: Lookup_value:需要搜索的值,单个值 Table_array:被搜索的区域,是个表 Col_index_num&…

【Python基础(一)】

学习分享 一、基本语法1、输出print语句2、常量的写法3、运算符 (/) 与(//)4、字符串5、列表5.1、列表查询元素是否存在5.2、列表查询元素是否存在5.3、身份运算符5.4、列表的增删改查 6、元组6.1、tuple() 7、字典8、函数8.1、值传递8.2、引用传递8.3、函数的传参 二、文件的操…