首页 Java java教程 Java OOP:一周 OOP 冒险继续

Java OOP:一周 OOP 冒险继续

Jan 08, 2025 am 06:18 AM

Java OOP: Week  The OOP Adventure Continues

在我的第一周我提到了关于OOP的一般主题,我能够在短时间内学到很多关于这些主题的知识时间量。然而,仍有一些话题需要讨论。考虑到这只是OOP的基础知识,我正在决定Java是否是我想要关注的语言100% ,即使大学毕业了,我也不得不说我对后端情有独钟,因为我有测试的经验,这可能是我决定的一个因素。


在第二周我没有太多时间来复习我的主题,例如线程枚举泛型已悬而未决。不过,我在一个模拟餐厅的小项目上取得了进展,可以在其中执行以下操作:

  • 创建产品或膳食
  • 根据这些产品下订单并注明消耗了多少。
  • 添加后显示单个订单
  • 显示所有订单,可以选择根据用户需要添加任意数量的订单。

我创建它主要是为了涵盖OOP的各个方面,包括数据验证,并不断练习逻辑。我已经快完成了,但仍在添加细节;准备好后我会将其上传到我的存储库。


此外,我介绍了另一个OOP主题和其他非常有用的主题。

哪些? 关系类、try and catch 和文件。

我将简要提及这些主题如何对我有用以及我如何理解它们的实际应用。


关系类

关系类是一个我花了一些时间来理解和使用的主题。然而,一旦掌握了窍门,它们就可以轻松实施。我最常使用这个概念的方式是1对N关系,它用于将类B的多个对象链接到类A

例如,如果我想要一辆汽车拥有多个所有者,我需要从Owners类到Cars类的关系。

在Car类的构造函数中,需要传递一个list(我使用的是ArrayList),这个列表是根据Owner构造函数中的对象创建的。因此,所有者及其属性(名称、年龄、ID等)将链接到 Car 构造函数,该构造函数将能够创建具有这些属性的对象。

这是一个简单的示例,展示了如何应用1对N关系:https://pastebin.com/dX6SDWwp

当您需要将某些对象与其他对象“连接”时,这非常有用,以便您拥有直接关系并且它们不仅仅是通过数组或其他不同方法连接。


尝试并捕捉⚙️

Java 中使用 trycatch 是我比在我使用过的其他语言中实现的更多的东西。我认为这是因为我的 IDE 自动建议对某些需要它的异常使用 try 和 catch。

C 等其他语言相比,这个主题只是一个亮点,在其中我很少使用它,并且更喜欢其他技术来避免错误。不过,我逐渐习惯使用 try 和 catch 来预测错误并避免突然的系统崩溃


文件 - JSON/GSON - 序列化和反序列化

使用Java处理文件占据了我上周末70%的学习时间。尽管如此,我觉得与 C 相比,有更多的信息和示例,我还使用 矩阵 实现了文件使用,以维护数据而不重写它。

这对于以下系统很有用:

  • 购物车
  • 库存管理
  • 订单,或任何需要数据保留的系统。

在这种情况下,使用Java,我需要使用对象,所以这就涉及到序列化和反序列化

这里我注意到一个很大的差异,因为编写方式很大程度上取决于您想要的数据类型。我花费了数小时的研究的主要问题是,当我将字符保存到.txt文件时,它们在打开文件时以二进制格式出现,但它们显示为 控制台中的字符

网上发现有两种方式读写数据:

  • 通过字节
  • 通过角色

我使用的方法是基于字节的,因为我直接传递对象

我还没有足够的知识来分享使用 Writer 和 Reader 子类的各种方法之间的差异,但我正在做一个现实世界的练习我将使用存储在 ArrayList 中的对象并学习如何序列化和使用 GSON 反序列化 它们(以将对象在系统中的状态保存在 .json 文件中),然后将此数据写入 .txt 文件,将它们作为记录存储在 中有组织的方式


结束

上周,我没有取得我希望的那么多进展,但是处理文件花了很多时间研究应用 ,以及概念区分,从我审阅的每篇文章中提取一些内容,以达到最终结果,我将在“真实”项目中测试并分享进展如何。

值得一提的是,这种具体处理以及我在 GSON 和 .txt 中提到的场景是我大学需要做的事情。但是,还有其他方法,例如JPA数据库来处理这个问题。并非绝对有必要使用 GSON 和 .txt 来维护系统中的数据。


没什么可补充的,如果有人对文件或我提到的主题有任何意见,请随时发表评论并分享您的建议!

编码愉快!

以上是Java OOP:一周 OOP 冒险继续的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

公司安全软件导致应用无法运行?如何排查和解决? 公司安全软件导致应用无法运行?如何排查和解决? Apr 19, 2025 pm 04:51 PM

公司安全软件导致部分应用无法正常运行的排查与解决方法许多公司为了保障内部网络安全,会部署安全软件。...

如何使用MapStruct简化系统对接中的字段映射问题? 如何使用MapStruct简化系统对接中的字段映射问题? Apr 19, 2025 pm 06:21 PM

系统对接中的字段映射处理在进行系统对接时,常常会遇到一个棘手的问题:如何将A系统的接口字段有效地映�...

如何优雅地获取实体类变量名构建数据库查询条件? 如何优雅地获取实体类变量名构建数据库查询条件? Apr 19, 2025 pm 11:42 PM

在使用MyBatis-Plus或其他ORM框架进行数据库操作时,经常需要根据实体类的属性名构造查询条件。如果每次都手动...

如何将姓名转换为数字以实现排序并保持群组中的一致性? 如何将姓名转换为数字以实现排序并保持群组中的一致性? Apr 19, 2025 pm 11:30 PM

将姓名转换为数字以实现排序的解决方案在许多应用场景中,用户可能需要在群组中进行排序,尤其是在一个用...

IntelliJ IDEA是如何在不输出日志的情况下识别Spring Boot项目的端口号的? IntelliJ IDEA是如何在不输出日志的情况下识别Spring Boot项目的端口号的? Apr 19, 2025 pm 11:45 PM

在使用IntelliJIDEAUltimate版本启动Spring...

Java对象如何安全地转换为数组? Java对象如何安全地转换为数组? Apr 19, 2025 pm 11:33 PM

Java对象与数组的转换:深入探讨强制类型转换的风险与正确方法很多Java初学者会遇到将一个对象转换成数组的�...

电商平台SKU和SPU数据库设计:如何兼顾用户自定义属性和无属性商品? 电商平台SKU和SPU数据库设计:如何兼顾用户自定义属性和无属性商品? Apr 19, 2025 pm 11:27 PM

电商平台SKU和SPU表设计详解本文将探讨电商平台中SKU和SPU的数据库设计问题,特别是如何处理用户自定义销售属...

使用TKMyBatis进行数据库查询时,如何优雅地获取实体类变量名构建查询条件? 使用TKMyBatis进行数据库查询时,如何优雅地获取实体类变量名构建查询条件? Apr 19, 2025 pm 09:51 PM

在使用TKMyBatis进行数据库查询时,如何优雅地获取实体类变量名以构建查询条件,是一个常见的难题。本文将针...

See all articles