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

***使用自己已经学习的面向对象知识,针对学生管理系统编写简易面向对象分析报告***

一. 案例中哪里体现出的封装性及其好处?

(张子翔 202221336080)

在学生管理系统中,封装性的体现主要在于将学生的属性(如姓名、学号、性别等)和学生的行为(如增加学生、删除学生、查找学生等)封装在“学生”这个类中。这样做的好处有:

  1. 提高安全性:通过封装,我们可以限制对内部属性的直接访问,防止数据被随意修改。例如,我们可以用private来修饰学生成绩,这样学生就无法自行更改。
  2. 提高可维护性:首先,学生管理系统可以采用模块化设计,当某个模块需要修改时,只需要对该模块进行更改,而不会影响到其他模块的正常运行。这降低了维护的难度和成本。其次学生管理系统中的某些功能可能会被多次使用,例如学生信息的增加和查询。通过封装这些功能和逻辑在单独的类或方法中,可以在不同的地方重复使用这些代码,节省时间,避免了重复编写和修改。
  3. 简化接口:通过封装,我们可以把复杂的内部实现简化成一个简单的接口,方便其他类进行调用。例如,学生类可以提供查询成绩的方法,而不需要关心成绩是如何计算的。

二. 案例中的setter/getter模式与封装性

(张子翔 202221336080)

1.什么是setter/getter模式?怎么自动生成?

setter/getter模式是学生管理系统中常用的一种设计模式,其主要目的是为了实现封装性。在Java等面向对象的编程语言中,通常会为类的每一个属性设置一个getter方法(用于获取属性值)和一个setter方法(用于设置属性值)。 

在学生管理系统中我们可以有如下:

public class Student {
    private String name;
    private int age;
    private String gender;
    private String id;
    private String major;
    private double gpa;

    public Student(String name, int age, String gender, String id, String major, double gpa) {
        this.name = name;
        this.age = age;
        this.gender = gender;
        this.id = id;
        this.major = major;
        this.gpa = gpa;
    }

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public String getId() {
        return id;
    }

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

    public String getMajor() {
        return major;
    }

    public void setMajor(String major) {
        this.major = major;
    }

    public double getGpa() {
        return gpa;
    }

    public void setGpa(double gpa) {
        this.gpa = gpa;
    }
  1. 打开Eclipse,并在Package Explorer中选择要为其生成setter和getter的Java类。
  2. 右键单击所选的Java类,然后选择“Source”菜单下的“Generate Getters and Setters”选项。
  3. 在弹出的“Generate Getters and Setters”对话框中,选择要生成setter和getter的字段,然后单击“OK”按钮。

三. 案例中某些类的toString()方法

(梁星星 202221336072)

1)简述toString()方法从哪里来?toString方法有什么用?toString一般应包含什么内容?

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

在学生管理系统中,toString()方法通常用于返回学生的一些信息(姓名,性别,成绩等)。这样做的好处是当我们需要打印学生信息时,不需要一个一个的获取学生信息,而是直接使用toString()方法。

toString()方法一般应包含足够的信息来唯一标识一个对象(姓名,年纪,性别等),但是最好不要把一些隐私信息放在里面。在学生管理系统中toString()方法一般包含如下信息:

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

四. 案例中几个常用方法解析

(陈健 202221336070)

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

sms.searchByName(String name),功能:按照学生姓名在学生管理系统中进行搜索。它接受一个String类型的参数name,并返回一个包含所有姓名与搜索条件匹配的学生对象的List<Student>类型的列表。

sms.searchByMajor(String major),功能:按照学生专业在学生管理系统中进行搜索。它接受一个String类型的参数major,并返回一个包含所有专业与搜索条件匹配的学生对象的List<Student>类型的列表。

sms.searchByGpa(double gpa),功能:按照学生GPA在学生管理系统中进行搜索。它接受一个double类型的参数gpa,并返回一个包含所有gpa与搜索条件匹配的学生对象的List<Student>类型的列表。

五. 案例中的面向对象设计

(何涛 202221336074)

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

学生管理系统主要解决的问题是记录和管理学生的信息,包括他们的个人信息、成绩、专业课等。名词包括学生、个人信息、成绩、专业课等;动词包括增加、删除、搜索等。


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

1.学生类(Student):存储和管理学生个人信息,如姓名、学号、登陆密码等。

2.课程类(Course)存储和管理课程信息,如课程名、课程编号、教师等。

3.成绩类(Grade):存储和管理学生成绩,如课程成绩、平均成绩等。

4.登陆界面类(Login):登录学生管理系统。

这些类之间可以通过关联、依赖,聚合等方式进行交互,形成一个完整的学生管理系统。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值