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

1. 案例中哪里体现出了封装性及其好处?(张家祎 202321336008)

隐藏实现细节:例如,在Student类中,学生的姓名、年龄等属性被封装,外部代码不能直接访问它们,只能通过公共的 getName(), setName(), getAge(), setAge() 等方法来间接访问和修改。即使Student类的内部实现发生变化,只要公共接口保持不变,就不会影响到使用该类的代码。
增加安全性:外部代码不能直接访问私有属性,所以可以避免外部代码对对象状态的非法修改,从而增加程序的安全性。
灵活性:封装允许在不改变外部接口的情况下修改类的内部实现。例如,如果需要为Student类添加一个新的属性,并且希望这个属性在赋值时进行格式验证,那么可以在一个方法中添加相应的代码,而不需要修改使用Student类的代码。

2. 案例中的setter/getter模式与封装性(邱睿妍 202321336007)

Setter/Getter模式:
是一种用于封装对象属性的常见模式。Setter方法用于设置对象的属性值,而Getter方法用于获取对象的属性值。
有什么用:
封装:通过Setter/Getter模式可以实现对对象属性的封装,保护数据不被非法访问或修改。
校验:在Setter方法中可以添加逻辑来校验输入值,确保数据的正确性。
灵活性:允许在不修改客户端代码的情况下改变属性的内部表示或增加额外的处理逻辑。
怎么自动生成:
在大多数现代IDE(如IntelliJ IDEA、Eclipse)中,可以通过快捷键(如Alt+Insert)或右键菜单选择“Generate Getters and Setters”来自动生成Setter/Getter方法。

3. 案例中某些类的toString()方法(张家祎 202321336008)

toString方法:是Object类的一个方法,用于返回对象的字符串表示。它通常在调试和日志记录时非常有用,可以快速查看对象的状态。
toString()一般应包含什么内容:通常应包含对象的重要属性,以便于识别对象的状态。例如,对于一个学生类,toString()可能返回

"Student{name='John', id='12345'}"

来源:toString()是Java中的Object类的一个方法,所有类默认继承自Object类,因此每个类都可以重写这个方法以提供自定义的字符串表示。
例:

@Override  
public String toString() {  
    return "Student{name='" + name + '\'' +  
           ", age=" + age +  
           ", gender='" + gender + '\'' +  
           ", id='" + id + '\'' +  
           ", major='" + major + '\'' +  
           ", gpa=" + gpa +  
           '}';  
}

4. 案例中几个常用方法解析(邱睿妍 202321336007)

4.1简述案例代码几个常用方法的解析:

(1)构造方法:

public Student(String name, String studentId)
//用于创建 Student 对象并初始化其 name 和 studentId 属性。

(2)Getter 方法:

public String getName()
//返回学生的姓名。
public String getStudentId()
//返回学生的学号。

(3)Setter 方法:

public void setName(String name)
//设置学生的姓名。
public void setStudentId(String studentId)
//设置学生的学号。

(4)toString方法:

@Override public String toString()
//返回学生对象的字符串表示,包含姓名和学号。

4.2类名,构造方法名,功能描述:

类名:Student
构造方法名:Student.Student(String name, int age, String gender, String id, String major, double gpa)
功能描述:用于创建一个新的Student对象,并初始化其属性,包括姓名、年龄、性别、学号、专业和GPA。

4.3类名,方法签名(入参、功能、返回参数),功能描述:

Student.getName() 
获取学生的姓名。无入参,返回类型为StringStudent.setName(String name) 
设置学生的姓名。入参为String类型,无返回值(void)。
Student.getAge() 
获取学生的年龄。无入参,返回类型为intStudent.setAge(int age) 
设置学生的年龄。入参为int类型,无返回值(void)。
Student.getGender() 
获取学生的性别。无入参,返回类型为StringStudent.setGender(String gender) 
设置学生的性别。入参为String类型,无返回值(void)。
Student.getId() 
获取学生的学号。无入参,返回类型为StringStudent.setId(String id) 
设置学生的学号。入参为String类型,无返回值(void)。
Student.getMajor() 
获取学生的专业。无入参,返回类型为StringStudent.setMajor(String major) 
设置学生的专业。入参为String类型,无返回值(void)。
Student.getGpa() 
获取学生的GPA。无入参,返回类型为doubleStudent.setGpa(double gpa)
 设置学生的GPA。入参为double类型,无返回值(void)。
Student.toString() 
返回学生的详细信息的字符串表示。无入参,返回类型为String

5. 案例中的面向对象设计(张家祎 202321336008)

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

案例定义了一个Student类,并提供了方法以操作学生的基本信息(如姓名、年龄、性别、学号、专业和GPA)。解决的问题:在程序中以面向对象的方式表示和操作学生信息,使得数据管理和维护更加便捷和直观。
名词:学生(Student)、姓名(Name)、年龄(Age)、性别(Gender)、学号(ID)、专业(Major)、GPA;动词:表示(Represent)、获取(Get)、设置(Set)、操作(Operate)。

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

可以抽象出一个Course类:
属性:
课程名称 (String title)、课程编号 (String courseId)、学生列表 (List students)
方法:

public void addStudent(Student student):向课程中添加学生。
public void removeStudent(Student student):从课程中移除学生。
public List<Student> getStudents():获取当前课程的所有学生。
@Override public String toString():返回课程的字符串表示,包含课程名称和学生数量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值