案例分析2

1. 案例中哪里体现出了封装性及其好处?(宁晨阳 202321336009)

案例中的封装性主要体现在Student类StudentManagementSystem 类之中:

(1)在student类中
private String name; private int age; private String gender; private String id; private String major; private double gpa;这些都是student中的成员变量,private说明这些成员变量不能被类的外部直接访问或者修改,并且其中有公共的setter/getter,允许外部的代码通过受控的方式访问和修改这些成员变量。
(2)在StudentManagementSystem 类中
成员变量 students 是 private 的,这意味着外部代码不能直接访问或修改。还有提供了public的公共方法的addStudent, removeStudent, getStudents, searchByName, searchByMajor, searchByGpa,这些都允许外部代码以受控的方式操作成员变量。
(3)封装性的好处通过私有性或者公共性来定义成员变量,可以提高数据的安全性,并且还有代码的灵活性,而且通过封装,可以更容易地修改内部实现而不影响外部代码的使用。

2. 案例中的setter/getter模式与封装性(刘芷晴 202321336010)

什么是setter/getter?有什么用?怎么自动生成?

(1)在Java中setter 和 getter 方法是用于访问和修改类的私有成员变量的方法。它们提供了一种控制对类内部状态的访问方式。
(2)在IDE中自动生成setter/getter的步骤:
在项目中打开类文件,右键点击编辑器中的任意处,选择 Generate…在弹出的菜单中选择 Getter and Setter,在弹出的对话框中,选择需要生成 getter 和 setter 方法的成员变量。点击 OK,IDE 会自动生成相应的 getter 和 setter 方法。

3. 案例中某些类的toString()方法(宁晨阳 202321336009)

简述toString方法有什么用?

toString 方法用于返回对象的字符串表示形式。这个方法在 Object 类中定义,因此所有 Java 类都可以覆盖这个方法,以提供更具体和有意义的字符串表示。在案例中提供对象的字符串表示提供对象的字符串表示,并且在打印对象中更加便捷,在用户界面中,有时需要将对象的某些属性以字符串形式显示给用户。toString 方法可以提供一个统一的字符串表示方式。

toString一般应包含什么内容?

首先toString()需要包含对象的类名、关键属性、属性的名称和值。

toString()方法从哪里来?

toString() 方法是从 Java 的 Object 类中继承来的。

4. 案例中几个常用方法解析(姓名 学号)

4、案例中几个常用方法解析(刘芷晴 202321336010)

StudentManagementSystem 类

1、构造方法

public StudentManagementSystem() {
    students = new ArrayList<>();
}

功能描述:初始化 StudentManagementSystem 对象,创建一个空的 ArrayList 来存储学生对象。

2、添加学生

public void addStudent(Student student) {
    students.add(student);
}

方法签名:public void addStudent(Student student) 入参:Student student - 要添加的学生对象。功能:将指定的学生对象添加到学生列表中。
返回参数:void

3、移除学生

public void removeStudent(Student student) {
    students.remove(student);
}

方法签名: public void removeStudent(Student student)
入参: Student student - 要移除的学生对象。
功能: 从学生列表中移除指定的学生对象。
返回参数: void

4、获取所有学生

public List<Student> getStudents() {
    return students;
}

方法签名: public List getStudents()
入参: 无
功能: 返回当前存储的所有学生对象的列表。
返回参数: List - 存储学生对象的列表。

5、按姓名搜索学生

public List<Student> searchByName(String name) {
    List<Student> result = new ArrayList<>();
    for (Student student : students) {
        if (student.getName().equals(name)) {
            result.add(student);
        }
    }
    return result;
}

方法签名: public List searchByName(String name)
入参: String name - 要搜索的学生姓名。
功能: 在学生列表中查找所有姓名匹配的学生,并返回这些学生的列表。
返回参数: List - 匹配的学生对象列表。

6、按专业搜索学生

public List<Student> searchByMajor(String major) {
    List<Student> result = new ArrayList<>();
    for (Student student : students) {
        if (student.getMajor().equals(major)) {
            result.add(student);
        }
    }
    return result;
}

方法签名: public List searchByMajor(String major)
入参: String major - 要搜索的学生专业。
功能: 在学生列表中查找所有专业匹配的学生,并返回这些学生的列表。
返回参数: List - 匹配的学生对象列表。

7、按GPA搜索学生

public List<Student> searchByGpa(double gpa) {
    List<Student> result = new ArrayList<>();
    for (Student student : students) {
        if (student.getGpa() == gpa) {
            result.add(student);
        }
    }
    return result;
}

方法签名: public List searchByGpa(double gpa)
入参: double gpa - 要搜索的学生GPA。
功能: 在学生列表中查找所有GPA匹配的学生,并返回这些学生的列表。

5. 案例中的面向对象设计(宁晨阳 202321336009)

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

设计一个学生信息管理系统,其中包括用户能够添加学生信息,能够删除学生信息,能够根据姓名专业GPA搜索学生信息,还能够展示全部学生信息,以及退出程序的功能的简单系统,姓名、专业、GPA均是学生数据

上述信息中加粗体是我描述的一段话中的动词,而带颜色的字体,是这段话中的名词。

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

(1)Student(学生)类,其中包括每一个学生的姓名、专业、GPA等详细的信息。
(2)Name(姓名)类,包含所有学生的姓名,方便在查找学生姓名时更快速的找到对应姓名的学生。
(3)Function(功能)类,其中包括系统实现的多种功能可以集结在一个类中便于查找和操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值