于鸿硕项目案例作业2
1 案例中哪里体现了封装性及其好处
在Student类中体现了封装性,主要表现为:public类Student,private成员变量(name、age、gender等),public类下的getter(getName、getAge等)方法和setter(setName、setAge等)方法;
图1.1 Studengt类封装示例
这些方法体现了封装性的好处,例如,private的成员变量可以使得外部无法更改Student类的结构框架,保护稳定;同时,Setter和Getter使得外部可以获得和设置成员变量属性,实现Student类的稳定运行。
2 案例中的setter/getter模式与封装性
-
getter 方法:访问器方法,通常遵循命名小驼峰规范。它的作用是获取对象中私有属性的值 ,并返回给调用者。比如在
Student
类中,有私有属性private String name;
,可以通过public String getName()
方法来获取name
的值。 -
setter 方法:修改器方法,同样遵循命名小驼峰规范 。它的作用是为对象的私有属性设置值。同样在
Student
类中,对于private String name;
,可以通过public void setName(String name)
方法来设置name
的值。
封装性体现于 保护数据安全、方便后续调用(接口)
在IDEA中,可以把光标移到要生成的类,然后使用Alt + Insert,选择Getter/Setter生成
3 案例中某些类的toString()方法
toString方法的作用:
方便输出和调试 将对象转换为一个合适的字符串表示,不需要手动获取每个属性再一个一个System.out.println
toString方法一般包含的内容:
对象的类名以及关键属性值,例如:Student类里的toString输出为“name=‘XXX',age=XX.......”。
图3.1 Student类的toString方法
toString()
方法的来源
toString()
方法定义在java.lang.Object
类中,其原始定义如下:
public String toString() {return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
我们常常通过重写toString方法(@Override)来使他的输出符合我们需要
4 案例中常用方法解析
在StudentManagementSystem类中,存在以下方法:
addStudent,签名add(Student),作用增加一个学生对象
removeStudent,签名remove(Student),作用移除一个学生对象
searchByName,签名search(String),作用按名字查找学生 返回学生
searchByMajor,签名search(String),作用按专业查找学生 返回学生
searchByGpa,签名search(double),作用按绩点查找学生 返回学生
5 案例中的面向对象设计
**5.1 **
该案例实现了一个学生管理系统,解决了对学生信息(姓名、年龄、性别、学号、专业、GPA)的添加、删除、按姓名 / 专业 / GPA 查询及展示所有学生信息的问题,通过命令行交互界面让用户可便捷地管理学生数据。
- 名词:学生(Student)、姓名(name)、年龄(age)、性别(gender)、学号(id)、专业(major)、GPA、学生管理系统(StudentManagementSystem)、用户(user)、命令行界面(interface)、信息(information)。
- 动词:添加(add)、删除(remove)、查询(search)、展示(show)、输入(enter)、退出(exit)、管理(manage)、存储(store)。
5.2
基于上述分析,抽象出的类及功能如下:
-
Student 类
- 功能:封装学生的属性(姓名、年龄、性别、学号、专业、GPA),并提供属性的获取(getter)和修改(setter)方法,以及格式化输出学生信息的
toString()
方法,作为数据载体。
- 功能:封装学生的属性(姓名、年龄、性别、学号、专业、GPA),并提供属性的获取(getter)和修改(setter)方法,以及格式化输出学生信息的
-
StudentManagementSystem 类
-
功能
:负责学生信息的核心管理逻辑,包括:
- 存储学生集合(通过 List 容器);
- 提供添加学生(
addStudent
)、删除学生(removeStudent
)的方法; - 提供按姓名、专业、GPA 查询学生的方法(
searchByName
、searchByMajor
、searchByGpa
); - 提供获取所有学生列表的方法(
getStudents
)。
-
-
Main 类
- 功能:作为用户交互入口,通过命令行界面接收用户输入(如选择操作类型、输入学生信息),调用
StudentManagementSystem
的方法执行对应操作,并将结果反馈给用户,实现人机交互流程的控制。
- 功能:作为用户交互入口,通过命令行界面接收用户输入(如选择操作类型、输入学生信息),调用
-
StudentManagementSystemTest 类
- 功能:作为测试类,通过创建学生对象、调用管理系统的方法,验证添加、删除、查询等功能的正确性,确保核心逻辑正常运行。