Java项目案例作业2:对案例进行面向对象分析

对学生管理系统进行面向对象分析

1. 案例中哪里体现出了封装性及其好处?(吴惠敏 202321336006)

封装性的体现:
(1)在Student类中,students的所有属性(name,age,gender,id,major,gap)都被声明为private,但公有的构造方法和getter/setter方法来访问和修改这些私有属性如getName()和setName()允许外部代码在不直接访问属性的情况下获取和设置学生的姓名。
(2)在StudentManagementSystem类中,students属性被声明为private,但addStudent(), removeStudent(), getStudents(), searchByName()等公有的方法可以来操作这个私有属性。

封装性的好处:
(1)保护数据:外部代码不需要知道属性的具体实现细节,只需要通过方法来添加、删除和搜索学生。
(2)提高代码的可维护性:如果需要改变学生存储的方式或者搜索算法,只需要修改StudentManagementSystem类的方法,而不需要修改使用这些方法的代码。

2.案例中的setter/getter模式与封装性(吴惠敏 202321336006)

2.1 什么是setter/getter?
setter方法用于设置对象的私有属性,getter方法用于获取对象的私有属性。如Student类中的setName和getName方法分别用于设置和获取学生的姓名。

2.2 有什么用?
(1) 保护数据:外部代码在不直接访问属性的情况下获取和设置students的属性。
(2) 提高代码的可维护性:如果需要更改属性的存储方式,只需要修改setter和getter方法,而不需要修改使用这些属性的代码。

2.3 怎么自动生成?
在IntelliJ IDEA中,首先需要有一个已经存在的类或者创建一个新的类,然后在类中定义一个属性,将光标放置在属性名上,按下Alt + Insert,在弹出的菜单中,勾选getter和setter,然后点击OK。

3. 案例中某些类的toString()方法(卢林宏 202221221027)

3.1 简述toString方法有什么用?
toString() 方法,它被用来返回一个对象的字符串表示。这个方法在 java.lang.Object 类中定义,所有的 Java 对象都继承自 Object 类,因此所有的对象都继承了 toString() 方法。这个方法通常被用来打印或者记录对象的信息,或者在需要将对象转换为字符串形式时使用。

3.2 toString一般应包含什么内容?
toString() 方法实现应该返回一个易于理解的字符串,通常包含对象的主要属性。如,在 Student 类中, toString() 方法可能会返回学生的姓名、年龄、性别、学号、专业和 GPA。

3.3 toString()方法从哪里来?
toString() 方法是从 java.lang.Object 类继承而来的。每个 Java 类都是 Object 类的子类,因此它们都继承了 Object 类的方法,包括 toString()。

4. 案例中几个常用方法解析(卢林宏 202221221027)

(1)Student 类的构造方法:

在这里插入图片描述

  • Student(String name, int age, String gender, String id, String major, double gpa)
    功能描述: 这是一个构造方法,用于创建一个新的 Student 对象。它接受学生的姓名、年龄、性别、学号、专业和 GPA 作为参数,并初始化对象的相应属性。

(2)StudentManagementSystem 类的方法:

在这里插入图片描述

  • void addStudent(Student student)
    入参: Student student - 要添加到系统中的学生对象。
    功能描述: 将一个学生对象添加到学生管理系统中的学生列表。

  • void removeStudent(Student student)
    入参: Student student - 要从系统中移除的学生对象。
    功能描述: 从学生管理系统中移除一个学生对象。

  • List getStudents()
    入参: 无
    返回参数: List - 包含系统中所有学生对象的列表。
    功能描述: 返回一个包含系统中所有学生对象的列表。

  • List searchByName(String name)
    入参: String name - 要搜索的学生的姓名。
    返回参数: List - 包含所有匹配指定姓名的学生对象的列表。
    功能描述: 搜索并返回所有姓名与指定姓名匹配的学生对象。

5. 案例中的面向对象设计(王琳悦 202321336004)

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

这个学生管理系统可以存储并管理学生信息,包括添加学生姓名、年龄、性别、学号、专业、绩点,删除现有学生信息,通过姓名、专业、绩点查询学生信息,以及展示所有现有学生信息。

名词: 姓名、年龄、性别、学号、专业、绩点
动词: 存储、添加、删除、查询

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

(1) Student类:

  • 存储学生信息(姓名、年龄、性别、学号、专业、绩点)
  • 提供设置和获取学生信息的方法
  • 重写同String方法使其更符合系统要求

(2) StudentManagement类:

  • 维护学生列表
  • 提供添加学生,删除学生,通过姓名、专业、绩点查询学生信息的方法
  • 提供展示所有现有学生信息的方法

(3)Main类:

  • 提供程序入口
  • 提供系统控制菜单
  • 调用已有的Student类和StudentManagement类实现与用户的交互
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值