首页 > 其他分享 >学生管理系统案例分析报告(面向对象分析)

学生管理系统案例分析报告(面向对象分析)

时间:2024-09-28 18:48:36浏览次数:7  
标签:管理系统 GPA 学生 案例 toString Student 方法 面向对象分析

目录

1.案例中哪里体现出了封装性及其好处?(林立 01)

2.案例中的setter/getter模式与封装性(林立 01)

3.案例中某些类的toString()方法(林立 01)

4.案例中几个常用方法解析(杨雯惠 202321336011)

Student 类

StudentManagementSystem 类

5. 案例中的面向对象设计(杨雯惠 202321336011)

5.1 尝试用一段话描述案例所解决的问题。找到其中的名词与动词。

5.2 如果让你设计,根据上面的分析你会抽象出什么类?各具备什么功能?


1.案例中哪里体现出了封装性及其好处?(林立 01)

在提供的StudentManagementSystemTest示例代码中Student类内部会封装学生的各种属性(如姓名、年龄、性别、学号、专业和GPA)以及相关的行为(如添加学生、搜索学生等)。封装性体现在将学生的数据(属性)隐藏起来,只通过公共的方法(如setter和getter)来访问和修改这些数据。

封装性的好处包括:

  1. 数据隐藏:保护对象内部状态,防止外部代码直接访问和修改对象的私有属性,从而提高程序的安全性。
  2. 接口清晰:通过公共方法提供对私有属性的访问,使得类的接口更加清晰,易于理解和使用。
  3. 灵活性:在不影响外部代码的情况下,可以自由地修改类的内部实现,从而提高代码的维护性和可扩展性。

2.案例中的setter/getter模式与封装性(林立 01)

  1. setter/getter:setter方法用于设置对象的属性值,而getter方法用于获取对象的属性值。它们是实现封装性的重要手段之一。
  2. 有什么用:setter/getter模式允许外部代码通过公共的接口来访问和修改对象的私有属性,而不需要直接访问这些属性本身。这样做既保证了数据的安全性,又提供了灵活的数据访问方式。
  3. 怎么自动生成:在Java中,可以使用IDE(如Eclipse、IntelliJ IDEA等)自动生成setter和getter方法。通常,在类中选中一个私有属性,然后右键选择“Generate Getters and Setters”或类似的选项,IDE就会自动生成相应的setter和getter方法。

3.案例中某些类的toString()方法(林立 01)

  1. 简述toString方法有什么用:toString()方法是Java中Object类的一个方法,用于返回对象的字符串表示。在自定义类中重写toString()方法可以提供有关对象状态的详细信息,使得对象在打印或记录日志时更加易于理解和识别。
  2. toString一般应包含什么内容:toString()方法一般应包含能够唯一标识对象或描述对象状态的关键信息。例如,在Student类中,toString()方法可能包含学生的姓名、学号、专业和GPA等信息。
  3. 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 类

  1. void addStudent(Student student): 接受一个 Student 对象作为参数,将其添加到学生管理系统中。
  2. void removeStudent(Student student): 接受一个 Student 对象作为参数,将其从学生管理系统中删除。
  3. List<Student> searchByName(String name): 接受一个姓名字符串作为参数,搜索并返回与该姓名匹配的所有学生列表。
  4. List<Student> searchByMajor(String major): 接受一个专业名称字符串作为参数,搜索并返回主修该专业的所有学生列表。
  5. List<Student> searchByGpa(double gpa): 接受一个 GPA 值作为参数,搜索并返回 GPA 值匹配的所有学生列表。
  6. List<Student> getStudents(): 不接受参数,返回当前学生管理系统中的所有学生列表。

5. 案例中的面向对象设计(杨雯惠 11)

5.1 尝试用一段话描述案例所解决的问题。找到其中的名词与动词。

该案例实现了一个学生管理系统,用于管理学生的基本信息。系统允许用户添加、删除、搜索(按姓名、专业、GPA)以及查看所有学生信息。

动词:添加、删除、搜索、管理

名词:学生、信息、用户、姓名、年龄、性别、专业、GPA、学生管理系统

5.2 如果让你设计,根据上面的分析你会抽象出什么类?各具备什么功能?

如果让我设计,我会抽象出以下类以及它们的功能:

Student 类:

  • 功能: 表示单个学生的基本信息。
  • 属性: 姓名、年龄、性别、学号、专业、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 类)分离,使得系统更加模块化,易于维护和扩展。

标签:管理系统,GPA,学生,案例,toString,Student,方法,面向对象分析
From: https://blog.csdn.net/ywh923908075/article/details/142601218

相关文章