软件构造第三章——ADT设计数据类型

LVI-SAM适配KITTI数据集避坑指南:IMU频率与数据同步问题解析 本文深入解析了将LVI-SAM框架适配KITTI数据集时,在IMU频率与多传感器数据同步方面遇到的核心挑战与解决方案。针对KITTI数据集中sync与extract两种数据包的差异,文章提供了从数据选择、参数调优到时间戳诊断与修复的完整避坑指南,帮助开发者实现稳定高效的SLAM系统部署。 阅读详情

一.数据类型

正如老师所说,编程比作写文章的时候,数据就是里面的名词。但我觉得这么比喻有点儿不充分,我觉得文章本身就是一种数据类型,尤其像JAVA面向对象来说,把数据,操作,代码绑定的十分紧密。在现实生活中很难找到一个概念与现在我们要探讨的数据相区分,不如说这个概念就是现实世界本身。
我们定义数据类型就是一组值和其上能进行的操作。
而变量就是空间,可存储满足约束的值。
JAVA类型包括基本类型和引用类型两种

基本类型引用类型
StackHeap
不可变可变,不可变
有值有值有ID
价格低价格昂贵

基本类型允许使用包装类包装为对象类型。

二.静态/动态检查

静态检查:发生在编译阶段,编译器推断类型。
是“类型”检查
其中,调用方法名错误,参数,返回值类型错误,语法错误,都是静态类型检查。

动态检查:发生在运行阶段。
是“值”检查
其中,除零错,数组越界都是动态检查。
静态检查更能避免BUG把BUG留在编译阶段。

四.可变与不可变

可变与不可变是使用数据类型时类型的属性。
也是我们设计ADT时的设计决策。
1.可变类型允许修改值。
2.不可变类型一旦创建不允许修改。
注意改变变量与改变变量的值是不同的。
我是这么理解的.我们的对象变量是new出来的,而引用只是一个指向。
改变变量是改变了引用,而我new出来的对象没有变。
改变变量的值就是改变我new的对象。
而基本类型不可变int a = 1;
这个1才是我的数据,我不能把1变成2但我可以把a指向2.

final关键字
final表示我的一种设计决策
final引用:不可改变的引用,虽然我们不能改变对象的引用,但是我们仍旧可以改变属性。
集合类同理
final类:不可派生的类
final方法:不可override的方法。

典型的不可变对象string

String a = new String("a");
String b=a;
a = a.concat("b");
System.out.println(a); //ab
System.out.println(b); //a

a的方法创建一个新对象

而StringBuilder就是一个可变

StringBuilder a = new StringBuilder ("a");
StringBuilder b=a;
a = a.concat("b");
System.out.println(a); //ab
System.out.println(b); //ab

五.为什么要区分可变与不可变

可变的优点:
1.不用创建大量拷贝,节约空间。
2.性能更好
3,共享数据
不可变优点:
安全和其他的性能
可变类型给出数据有表示泄露的危险,客户端可以轻易修改你的数据。
防范:防御拷贝,对于所有给出内部可变类型的方法,给出一份副本。
不如直接用不可变类型。

六,代码快照

反映了运行某一时刻的各变量或对象的状态以及变化情况; 其中箭头代表引用, 由变量名指向引用地址.

用单箭头表示可变引用,用双箭头表示不可变引用,
用单椭圆表示可变对象,用双椭圆表示不可变对象,

使用Android Studio调试系统应用之TvSettings(一):移植 对于做ROM的同仁、以及想要深入学习Android同学,必定会去调试Android的系统APK,而 *aosp* 源码中的系统APK源码,无法直接在Android Studio中进行调试,本文将持续更新细节,手把手教你,使用Android Studio调试安卓的系统应用。在每个阶段,提供知识点的梳理、总结,为您答疑解惑! 阅读详情

相关推荐

计算机三级考试嵌入式系统重点精简汇总

第一章 嵌入式系统概论 1.1.1嵌入式系统 (1)特点:(1)专用性;(2)隐蔽性;(3)资源受限;(4)高可靠性;(5)实时性;(6)软件固化。 (2)应用:(1)冰箱、洗衣机、电饭煲、空调、摄影机、DVD播放器等;(2)数控机床、飞机、汽车、电梯、X光机、血压计等;(3)电话机、传真机、打印机、pos机、GPS导航仪、路由器等。 1.1.2嵌入式系统组成与分类 (1)逻辑组成:硬件和软件,分为处理器、存储器、I|0设备与I|O接口,数据总线; (2)处理器:分为主处理器(CPU)和协处

chemkrik的博客 1万+

ADT的设计

简要介绍ADT的设计

qq_64219369的博客 340

从原理到代码:拆解UniFormer中动态位置嵌入(DPE)的3D卷积实现

本文深入解析了UniFormer模型中动态位置嵌入(DPE)模块的3D卷积实现原理与代码。DPE通过一个轻量的3D深度可分离卷积,替代传统静态位置编码,使模型能自动学习视频数据的时空位置关系。文章对比了其与Swin Transformer相对位置偏置的优劣,并提供了PyTorch实现代码与高级定制方案,为视频理解任务提供了高效灵活的动态位置编码解决方案。

weixin_29207149的博客 310

数据结构课程(共40课) 第二课 抽象数据类型的表示与实现

本课主题: 抽象数据类型的表示与实现 教学目的: 了解抽象数据类型的定义、表示和实现方法 教学重点: 抽象数据类型表示法、类C语言语法 教学难点: 抽象数据类型表示法 授课内容: 一、抽象数据类型定义(ADT) 作用:抽象数据类型可以使我们更容易描述现实世界。例:用线性表描述学生成绩表,用树或图描述遗传关系。 定义:一个数学模型以及定义在该模型上的一组操作。 关键:使用它的人可...

weixin_30263277的博客 1938

InsightFace(RetinaFace + ArcFace)人脸识别实战:从模型部署到Web服务构建

本文详细介绍了如何利用InsightFace框架,结合其集成的RetinaFace人脸检测与ArcFace人脸识别预训练模型,从零开始构建一个高性能的Web人脸识别服务。内容涵盖环境搭建、模型部署、核心代码解析(包括五点仿射对齐关键步骤)、FAISS向量检索集成以及基于FastAPI的Web服务开发,并提供了实战优化与常见问题排查指南,帮助开发者快速实现工业级应用。

weixin_29054245的博客 229

还在手敲LaTeX公式?用Rime小狼毫打造你的专属数学输入法(附完整配置包)

本文介绍如何利用Rime小狼毫输入法引擎打造专属数学公式输入方案,显著提升LaTeX公式输入效率。通过详细配置教程和智能补全技巧,帮助科研人员和学生实现3-5倍的输入速度提升,特别适合学术写作和技术文档创作场景。

weixin_32520601的博客 283

抽象数据类型(ADT)-软件构造学习总结04

这篇文章是我对软件构造课程的抽象数据类型章节的学习总结,以供未来使用。主要内容包括用户自定义类和数据抽象数据类型和操作的分类设计抽象数据类型表示独立性表示不变量和表示泄露RI和AF以及各自的记录。

YDDonald的博客 2825

【OpenCV】手眼标定实战:从原理到calibrateHandEye的完整实现

本文详细解析了机器人视觉中的手眼标定原理与实战,重点介绍了如何使用OpenCV的calibrateHandEye函数实现从数据采集到结果验证的完整流程。文章深入剖析了AX=XB核心方程,区分了眼在手上与眼在手外两种配置,并提供了详细的代码示例与避坑指南,帮助开发者精准建立相机与机械臂末端的坐标转换关系,是机器人精准抓取的关键技术。

weixin_29046611的博客 510

软构:抽象数据类型 (ADT)

抽象数据类型 (ADT) 目 录 第1节抽象类型和用户定义的类型 第2节对类型和操作进行分类 第3节抽象数据类型示例 第4节抽象类型设计 第5节Git作为软件配置管理工具的一个示例 第6节测试抽象数据类型 第7节不变量 第8节表示不变性和抽象函数 第9节有益的可变性 第10节记录AF、RI、以及表示泄露的安全性 抽象类型和用户定义的类型 抽象类型: 强调“作用于数据上的操作”,程序员和client无需关心数据如何具体存储的,只需设...

gsdks的博客 264

PCL——KITTI数据集.bin文件转.pcd并可视化【2025最新版】

kitti数据集中的bin格式点云主要存储的字段为:`x`、`y`、`z`、`intensity`,对应于PCL中的PointXYZI。因此,只需将bin中的属性信息读取出来放入`PointXYZI`即可。本文给出简单易用的实现代码。博客长期更新,本文最近更新时间为:2025年1月11日。

点云侠的博客 3957

2025年上半年第1批信息系统项目管理师论文真题解析与范文

文章首先分析了项目经理在交付绩效域中应关注的重点领域,然后按照项目管理五大过程组顺序,阐述了各过程组中与交付绩效域协同的绩效域及协调目标,最后制定了各过程组中交付绩效域的测量指标。本项目的实践表明,系统化的交付绩效管理不仅能保证项目成功,还能创造超出预期的业务价值。需要结合具体项目案例,按照五大过程组(启动、规划、执行、监控、收尾)顺序,分析各过程组中与交付绩效域协同的其他绩效域及其协调目标。价值交付连续性:建立敏捷交付机制,将项目分解为12个迭代周期,每周期交付可验证成果,确保价值持续流动。

Programming Talk 823

抽象数据类型(ADT)的学习总结及思考

一.抽象数据类型(ADT)的概念 一个ADT是一个仅由保存的数据类型和可能在这个数据类型上进行的操作定义的。开发者们只能通过ADT的操作方法来访问ADT的属性,而且他们不会知道这个数据类型内部各种操作是如何实现的。 在Java中,我们常常使用一个接口来给出一个操作集合而不需要透露这些操作实现的细节。ADT提供了一个将对象公共接口中的操作和其具体的实现分开的强有力的工具。这使得一个ADT的实现可以不断变化和演化同时保持其公共接口不变。 可以说,数据得抽象是用抽象数据类型来实...

MDNLNDZ的博客 2675

【CASS精品教程】006:CASS7.1 道路设计参数文件打开无响应,提示roadpara解决办法,权威解决办法汇总

在用CASS7.1 软件进行断面法土方量计算,在生成断面图后,需要进行道路设计参数文件的设计,打开断面设计参数文件的时候,无响应,提示roadpara,如下所示: 道路设计参数文件 解决办法有三种 第一种方法:Win+R (1)64位系统:输入regsvr32 C:\Windows\SysWOW64\CellCtrl5.ocx,回车 (2)32位系统输入regsvr32 C:...

智慧空间实验室 1万+

#软件构造 ADT与OOP的总结 (1)

在软件构造课程的第三章 Abstract Data Type (ADT) and Object Oriented Programming (OOP) 中主要分为五个子章节 3-1 Data Type and Type Checking 数据类型与类型检验 3-2 DesigningSpecification 设计规约 3-3 Abstract Data Type (ADT) 抽象数据类型 3-4...

Franklins_Fan的博客 453

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

软件构造复习大纲第三章

qq_43412364的博客 144

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

软件构造第三章总结笔记

ABCstar_super的博客 373

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

软件构造复习(第三章)

软件构造复习(第三章)

qq_44746288的博客 259

软构第三章 (一)

weixin_43838400的博客 137

软件构造ADT总结

除了编程语言所提供的基本数据类型和对象数据类型,程序员可定义自己的数据类型。

Kzernb的博客 1107

软件构造—ADT的理解

最近学习了ADT,即抽象数据类型,刚学的时候理解的不是很好,在完成lab2的过程中,我对ADT的构造以及作用有了一定的理解。(以下仅是我个人理解,很可能会有错误,请批评指正) 首先什么是ADT,它是计算机科学中具有类似行为的特定类别的数据结构的数学模型;或者具有类似语义的一种或多种程序设计语言的数据类型。抽象数据类型是间接定义的,通过其上的可执行的操作以及这些操作的效果的数学约束(与可能的代价)。抽象数据类型(ADT)是纯粹理论实体,用于简化描述抽象算法,分类与评价数据结构,形式描述程序设计语言的类型系统。

weixin_59437923的博客 2410

#软件构造 ADT与OOP的总结 (3) 抽象数据类型 (ADT)

在软件构造课程的第三章 Abstract Data Type (ADT) and Object Oriented Programming (OOP) 中主要分为五个子章节 3-1 Data Type and Type Checking 数据类型与类型检验 3-2 DesigningSpecification 设计规约 3-3 Abstract Data Type (ADT) 抽象数据类型 3-4...

Franklins_Fan的博客 640

软件构造-Java中ADT的设计

文章目录前言一、ADT是什么?二、ADT分类三、ADT操作的分类3.1 Creator3.2 Producer3.3 Observer3.4 Mutator四、ADT的设计4.1 表示独立性 Representation Independence4.2 表示不变性 Representation Invariants4.3 抽象函数 Abstraction Function总结 前言 ADT,即抽象数据型,在计算机科学中有重要的意义。抽象数据型不关心数据如何存储和实现,强调作用于数据的操作。ADT又有如下特

1119

软件构造总结笔记

哈工大计算机学院2020春课程软件构造总结笔记

Zhuoning Guo's Blog 3115

软件构造第三章——ADT的设计细节

一.回顾 上一篇我们说了ADT定义,应该遵循的一些原则,表示独立性,不变性,防止表示泄露。这回我认为我们侧重于ADT设计的一些具体内容。 二.RI与AF 一个ADT是定义在一组操作上的数据类型,操作有了以后,我们要实现rep,而rep是具体的,功能是抽象的。我们需要解释如何把具体的rep映射成抽象的表示。 我们把具体的rep值空间称之为R空间,把抽象的值称为A空间。 比如说:我们要表示一个小写字母...

wangbichen的博客 330

软件构造 ADT总结

ADT ADT特性 ADT设计方法

qq_45666624的博客 346

软件构造第三章——ADT的设计综述

一.抽象数据类型 抽象数据类型是一种定义在操作上的数据类型。与以前的数据类型不同,ADT倾向于操作,而不是具体的存储逻辑。对于JAVA来说,就像LIST抽象接口,我们只需要存,取,索引操作,而对具体的链表还是数组很多情况我们不需要考虑。 二.ADT类型与操作分类 ADT设计中不可变类型与可变类型的决定,是很重要的设计原则。 可变类型要求提供改变数据值的方法(这个值请参考下文)。 不可变类型中不提供...

wangbichen的博客 430
上一篇: 软件构造第三章——ADT的设计细节
下一篇: 软件构造第三章——ADT设计.方法规约
入过栈你
博客等级 码龄7年 2粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值