第三周:面向对象入门2与类的识别

news/2025/9/21 12:07:18/文章来源:https://www.cnblogs.com/BJFXSSP/p/19103340

第三周:面向对象入门2与类的识别

集美大学课程实验报告-第三周:面向对象入门2与类的识别

项目名称 内容
课程名称 Java程序设计
班级 网安2412
指导教师 郑如滨
学生姓名 王嘉熙
学号 202421336061
实验项目名称 面向对象入门2与类的识别

一、什么样的方法应该用static修饰?不用static修饰的方法往往具有什么特性?Student的getName应该用static修饰吗?

  • static方法(静态方法)通常用于表示不属于特定对象实例,而是属于类本身的功能,适合以下场景:
    工具方法:如字符串处理、数学计算等与实例状态无关的功能(例如Math.random()、Arrays.sort())。
    工厂方法:用于创建类的实例(例如Integer.parseInt())。
    类级别的操作:对类的静态变量进行操作,或实现不依赖实例状态的逻辑。
    辅助方法:为类内部的其他方法提供支持,且不依赖实例数据。
  • 非静态方法(实例方法)的核心特性是与具体对象实例绑定,表现为:
    必须通过类的实例(对象)调用(对象.方法名)。
    可以直接访问实例变量(对象的属性)和其他实例方法,也能访问静态成员。
    行为依赖于具体实例的状态(例如对象的属性值不同,方法执行结果可能不同)。
    隐含一个this引用,指向调用该方法的当前对象。
  • Student的getName不应该用static修饰;因为getName方法的作用是获取某个Student对象的姓名(实例属性),其行为依赖于具体的学生实例。每个学生对象的姓名可能不同,必须通过具体的Student实例调用(如student1.getName()),因此它属于实例方法,不应加static修饰。

二、购物车案例中,使用了什么方法将问题描述中的类、方法、属性找出来?方法与属性到底属于哪个类,要怎么判定呢?

  • 找出类、方法、属性的方法:通常采用面向对象分析的方法,先从问题描述中识别出涉及的实体(这些实体可能对应类),然后分析每个实体具有的特征(对应属性)和行为(对应方法)。
  • 判定方法与属性所属类:根据现实世界中事物的归属关系来判定。比如,“商品” 这个实体有 “名称”“价格” 这些特征(属性),还有 “计算折扣后价格” 这样的行为(方法),那么 “名称”“价格” 属性和 “计算折扣后价格” 方法就属于 “商品” 类。

三、一个项目中有很多类。怎样才能避免你项目中的类与别人编写的类同名呢?项目中类各种各样要怎么管理这些代码呢?举例说明。

  • 避免类同名:可以使用包(Package)来进行类的组织和区分。不同的包可以包含同名的类,通过 “包名。类名” 的方式来唯一标识一个类。例如,自己项目中的com.mycompany.entity.Student类和别人项目中的com.othercompany.entity.Student类,因为包名不同,就不会冲突。
  • 管理项目代码:利用包来对类进行分类管理。比如,在一个电商项目中,创建com.mycompany.entity包存放实体类(如Student、Product等),com.mycompany.service包存放业务逻辑类(如StudentService、ProductService等),com.mycompany.dao包存放数据访问类(如StudentDao、ProductDao等),这样不同功能的类分门别类,方便查找和维护。

四、实验步骤和调试过程

  • 1.变量命名:采用小驼峰命名法,如studentName,要见名知意,避免使用单个字符(如i、j除外循环变量)。
  • 2.类命名:采用大驼峰命名法,如StudentManager,同样要体现类的功能或职责。
  • 3.方法命名:采用小驼峰命名法,动词在前,如getStudentName(获取学生姓名)、calculateTotalPrice(计算总价)。
  • 4.常量命名:全部大写,单词间用下划线分隔,如MAX_STUDENT_COUNT。
  • 5.包命名:全部小写,用域名倒置的方式,如com.alibaba.demo,体现项目的层级和归属。
  • 6.代码格式:大括号要遵循换行风格,左大括号不单独占行,右大括号单独占行;缩进使用 4 个空格,禁止使用 Tab 键;每行代码长度不超过指定长度(如 120 个字符),便于阅读。
  • 7.OOP 规约:类成员变量若为非public、非protected、非private,需明确标注访问控制符;避免在循环体内创建大量对象,减少内存消耗;重写方法时,方法签名(包括返回值、参数、异常)要与父类方法一致。

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

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

相关文章

详细介绍:Flink-新增 Kafka source 引发状态丢失导致启动失败

详细介绍:Flink-新增 Kafka source 引发状态丢失导致启动失败2025-09-21 11:59 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !impor…

【面向接口编程(IOP)典型场景】底层组件如何实现回调通知上层应用系统? 另外一种实现方式

【面向接口编程(IOP)典型场景】底层组件如何实现回调通知上层应用系统? 另外一种实现方式偶然看到一篇文章, https://www.cnblogs.com/buguge/p/19055703 对这篇文章的设计进行了更改。 原来设计的类图 和流程图 :…

GEE训练教程:Sentinel-2卫星影像揭秘飓风奥蒂斯破坏力 - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

设置Redis在CentOS7上的自启动配置

在CentOS 7系统中,要设置Redis服务的自启动,需要配置Redis服务以便它能够在系统启动时自动运行。为此,我们将使用 systemctl命令,这是CentOS 7 中管理服务的推荐方法。 首先,确保已经正确地安装了Redis服务并且它…

挂载配置文件以Docker启动Redis服务

要使用Docker启动Redis服务,并挂载配置文件,首先需要确保已经安装好Docker环境。以下是具体步骤和相关的解释: 步骤1:准备Redis配置文件 您需要准备一个Redis配置文件,此文件会包含Redis服务器的配置指令。创建一…

abc418d

AtCoder ABC418 D XNOR Operation link 题意 给定一个长度为 \(n\) 的 01 串 \(s\),每次可以选择相邻的两个位置。如果两个位置字符相同,把它们缩成 \(1\),否则缩成 \(0\)。求 \(s\) 中有多少个子串经过操作可以变成…

Chapter 6 Joining Images

# 这个是numpy的功能 # imgHor = np.hstack((img, img)) # imgVer = np.vstack((img, img))def stackImages(scale, imgArray):rows = len(imgArray)cols = len(imgArray[0])rowsAvailable = isinstance(imgArray[0], …

动态主机配置协议(DHCP)中的中继机制及其配置

动态主机配置协议(Dynamic Host Configuration Protocol, DHCP)是一种网络协议,用于自动分配IP地址和其他网络配置信息给网络设备。在一个复杂的网络环境中,尤其是在不同子网之间,一台DHCP服务器可能无法直接为所…

DDD - 概念复习

领域 在 DDD 中,“领域(Domain)” 指的是软件要解决的 “业务范围” 及其包含的所有业务概念、规则和逻辑。 简单来说:如果你开发的是 “电商系统”,那么 “电商” 就是核心领域,包含 “商品、订单、支付、物流”…

进一步理解自适应卡尔曼滤波(AKF) - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

CSP-J1S1_2025

考点小记与错题整理。考点小记等比数列求和公式 已知等比数列 \(\{a_n\}\) ,公比为 \(q\),前 \(n\) 项和为 \(S_n\) 。 则有 \(S_n = \begin{cases} na_1, &q = 1 \\ \large \frac{a_1(1 - q ^ n)}{1 - q}, &…

完整教程:基于Spring Boot植物销售管理系统的设计与实现

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

​​Final Cut Pro 11.0 for Mac 剪视频安装教程|DMG文件安装步骤详解​(附安装包)

​​Final Cut Pro 11.0 for Mac 剪视频安装教程|DMG文件安装步骤详解​(附安装包)​一、下载文件 首先,你得先把这个 ​​Final Cut Pro 11.0 for Mac.dmg​​ 文件下载到你的 Mac 上。 安装包下载:https://pan.…

Vdd Vcc

Vdd Vcc二、在STM32中的具体含义和关系 对于STM32这类现代MCU,VCC和VDD的用法非常明确: 1. VDD / VDDA含义:I/O端口和外部外设的模拟电源。功能:这是给芯片的GPIO引脚驱动电路、部分外部外设以及模拟-to-数字转换器…

实用指南:物联网赋能24H共享书屋:智能化借阅管理的完整解决方案!

实用指南:物联网赋能24H共享书屋:智能化借阅管理的完整解决方案!2025-09-21 11:30 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !…

基于ThinkPHP实现动态ZIP压缩包的生成

在ThinkPHP框架中生成动态ZIP压缩包涉及到文件处理和压缩包管理,可以通过PHP的ZipArchive类来实现。下面逐步介绍如何在ThinkPHP框架中实现动态ZIP压缩包的生成首先,确保你的PHP环境支持zip扩展。 在你的控制器中添加…

使用Java实现用户的注册和登录流程

第一步:构建用户模型 首先,我们需要一个用户模型,以 Java 类的形式表现: public class User {private String username;private String password; // 注意:实际生产中密码应加密存储// 构造函数、getter 和 sette…

Windows安装Kafka(kafka_2.12-3.9.1),配置Kafka,以及遇到的困难解决方案

Windows安装Kafka(kafka_2.12-3.9.1),配置Kafka,以及遇到的困难解决方案pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family…

准备工作之动态内存分配[基于郝斌课程]

定义一块内存可以用数组定义,也可以动态分配: 使用数组定义一块内存,则该块内存是静态的,也就是一旦定义之后,这块内存的大小就固定了,例如,数组元素个数是5,则定义后,这=这块内存大小就是5,不能再改变 但是…

2025.6第一套六级听力生词

"Escalate" 是一个英语动词,在不同语境下有不同的含义,常见用法包括: 升级/加剧‌ 指问题、冲突或局势的严重性增加。例句:The dispute escalated into a full-scale war.(争端升级为全面战争。) (正…