目录
2.案例中的setter/getter模式与封装性(林立 01)
4.案例中几个常用方法解析(杨雯惠 202321336011)
5. 案例中的面向对象设计(杨雯惠 202321336011)
5.1 尝试用一段话描述案例所解决的问题。找到其中的名词与动词。
5.2 如果让你设计,根据上面的分析你会抽象出什么类?各具备什么功能?
1.案例中哪里体现出了封装性及其好处?(林立 01)
在提供的StudentManagementSystemTest示例代码中Student类内部会封装学生的各种属性(如姓名、年龄、性别、学号、专业和GPA)以及相关的行为(如添加学生、搜索学生等)。封装性体现在将学生的数据(属性)隐藏起来,只通过公共的方法(如setter和getter)来访问和修改这些数据。
封装性的好处包括:
- 数据隐藏:保护对象内部状态,防止外部代码直接访问和修改对象的私有属性,从而提高程序的安全性。
- 接口清晰:通过公共方法提供对私有属性的访问,使得类的接口更加清晰,易于理解和使用。
- 灵活性:在不影响外部代码的情况下,可以自由地修改类的内部实现,从而提高代码的维护性和可扩展性。
2.案例中的setter/getter模式与封装性(林立 01)
- setter/getter:setter方法用于设置对象的属性值,而getter方法用于获取对象的属性值。它们是实现封装性的重要手段之一。
- 有什么用:setter/getter模式允许外部代码通过公共的接口来访问和修改对象的私有属性,而不需要直接访问这些属性本身。这样做既保证了数据的安全性,又提供了灵活的数据访问方式。
- 怎么自动生成:在Java中,可以使用IDE(如Eclipse、IntelliJ IDEA等)自动生成setter和getter方法。通常,在类中选中一个私有属性,然后右键选择“Generate Getters and Setters”或类似的选项,IDE就会自动生成相应的setter和getter方法。
3.案例中某些类的toString()方法(林立 01)
- 简述toString方法有什么用:toString()方法是Java中Object类的一个方法,用于返回对象的字符串表示。在自定义类中重写toString()方法可以提供有关对象状态的详细信息,使得对象在打印或记录日志时更加易于理解和识别。
- toString一般应包含什么内容:toString()方法一般应包含能够唯一标识对象或描述对象状态的关键信息。例如,在Student类中,toString()方法可能包含学生的姓名、学号、专业和GPA等信息。
- toString()方法从哪里来:toString()方法继承自Java的Object类。在自定义类中,如果需要提供自定义的字符串表示,就需要重写toString()方法。这通常是通过在类中定义一个与Object类中的toString()方法签名相同的新方法来实现的。
4.案例中几个常用方法解析(杨雯惠 11)
Student 类
Student(String name, int age, String gender, String id, String major, double gpa)
: 构造方法,用于创建一个新的Student
对象,初始化学生的姓名、年龄、性别、学号、专业和 GPA。
StudentManagementSystem 类
void addStudent(Student student)
: 接受一个Student
对象作为参数,将其添加到学生管理系统中。void removeStudent(Student student)
: 接受一个Student
对象作为参数,将其从学生管理系统中删除。List<Student> searchByName(String name)
: 接受一个姓名字符串作为参数,搜索并返回与该姓名匹配的所有学生列表。List<Student> searchByMajor(String major)
: 接受一个专业名称字符串作为参数,搜索并返回主修该专业的所有学生列表。List<Student> searchByGpa(double gpa)
: 接受一个 GPA 值作为参数,搜索并返回 GPA 值匹配的所有学生列表。List<Student> getStudents()
: 不接受参数,返回当前学生管理系统中的所有学生列表。
5. 案例中的面向对象设计(杨雯惠 11)
5.1 尝试用一段话描述案例所解决的问题。找到其中的名词与动词。
该案例实现了一个学生管理系统,用于管理学生的基本信息。系统允许用户添加、删除、搜索(按姓名、专业、GPA)以及查看所有学生信息。
动词:添加、删除、搜索、管理
名词:学生、信息、用户、姓名、年龄、性别、专业、GPA、学生管理系统
5.2 如果让你设计,根据上面的分析你会抽象出什么类?各具备什么功能?
如果让我设计,我会抽象出以下类以及它们的功能:
标签:管理系统,GPA,学生,案例,toString,Student,方法,面向对象分析 From: https://blog.csdn.net/ywh923908075/article/details/142601218Student 类:
- 功能: 表示单个学生的基本信息。
- 属性: 姓名、年龄、性别、学号、专业、GPA。
- 方法: 构造方法、
toString()
(返回学生的字符串表示)、equals()
(比较两个学生是否相等)。StudentManagementSystem 类:
- 功能: 管理学生集合,提供添加、删除、搜索和获取学生的功能。
- 属性: 学生列表(List<Student>)。
- 方法:
addStudent(Student student)
: 添加学生。removeStudent(Student student)
: 删除学生。searchByName(String name)
: 按姓名搜索学生。searchByMajor(String major)
: 按专业搜索学生。searchByGpa(double gpa)
: 按 GPA 搜索学生。getStudents()
: 获取所有学生信息。Main 类:
- 功能: 包含
main
方法,处理用户输入,调用StudentManagementSystem
类的方法执行相应操作。- 方法:
main(String[] args)
: 程序入口,处理用户输入和输出。这种设计将学生信息的表示(
Student
类)与学生信息的管理(StudentManagementSystem
类)分离,使得系统更加模块化,易于维护和扩展。