对案例进行面向对象分析

一、案例中哪里体现出了封装性及其好处?(李彤 202321336069)

在Student类中,每个学生属性(如姓名、学号)都被声明为私有(private),这体现了封装性。以下是体现封装性的代码片段:

private String name;
private String id;
// ... 其他属性

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String getId() {
    return id;
}

public void setId(String id) {
    this.id = id;
}

好处:

  • 数据保护:私有属性确保了外部类不能直接访问和修改这些属性,只能通过公共的getter和setter方法,这样可以防止外部代码对数据的不当修改。

  • 灵活性和控制:通过提供公共方法来访问和修改属性,可以在方法内部添加逻辑(例如,验证输入数据的有效性),而不需要修改使用这些属性的其他代码部分。

二、案例中的setter/getter模式与封装性(李彤 202321336069)

  • setter/getter模式是一种在Java中实现封装的常用方法。它们是成对出现的公共方法,用于设置(setter)和获取(getter)类的私有属性值。

1.什么是setter/getter?

setter方法用于设置对象的属性值,而getter方法用于获取属性值。

2.有什么用?

它们提供了对私有属性的受控访问,允许类的设计者定义如何修改和访问属性。

3.怎么自动生成?

IntelliJ IDEA可以通过Alt+Insert自动生成

三、案例中某些类的toString()方法(李彤 202321336069)

简述toString方法有什么用?

toString一般应包含什么内容?

toString()方法从哪里来?

  • toString()方法在Java中用于返回对象的字符串表示形式。以下是案例中Student类的toString()方法的实现:
@Override
public String toString() {
    return "Student{" +
            "name='" + name + '\'' +
            ", id='" + id + '\'' +
            // ... 其他属性
            '}';
}

1.有什么用?

toString()方法通常用于调试目的,当打印对象或拼接字符串时,它会自动调用,提供对象的详细信息。

2.应包含什么内容?

toString()方法通常包含类中所有重要属性的值,以便快速了解对象的状态。

3.从哪里来?

toString()方法继承自Object类,是Java语言中所有类的超类。因此,所有Java对象都有toString()方法,子类可以选择覆盖(override)这个方法以提供自定义的字符串表示形式。

四、 案例中几个常用方法解析(刘思妍 202321336070)

1.Student:

构造方法名:Student(String name, int age, String gender, String id, String major, double gpa)
功能描述:创建一个新的Student对象,并对其的属性如学生的姓名、年龄、性别等进行初始化

2.StudentManagementSystem:

1.addStudent(Student student、添加学生到列表、无)
2.removeStudent(Student student、将学生移除列表、无)
3.getStudents(无、显示列表、List-Student)
4.searchByName(String name、显示与搜索的姓名匹配的学生、List-Student)
5.searchByMajor(String major、显示与搜索的专业匹配的学生、List-Student)
6.searchByGpa(double gpa、显示与搜索的gpa匹配的学生、List-Student)

五、案例中的面向对象设计(刘思妍 202321336070)

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

将新来的学生的信息填入列表,可以通过想要搜索的学生的姓名、专业、gpa搜索列表里的学生,将学生移除列表,最后查看列表里有多少的学生。

名词

学生,(列表),姓名,专业,gpa

动词

填入,搜索,移除,查看

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

1.学生{
String name;
String major;
String GPA;
}//存储学生的信息
2.学生管理{
属性:List<学生>
方法:增加,搜索,移除,查看
}//管理学生列表,可添加、移除和搜索学生

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值