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

目录

#创作原因

要求: 

1. 封装性及其好处

2. setter/getter模式与封装性

3. toString()方法

4. 工具类

5. 面向对象设计


#创作原因

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

要求: 

对于Student类,我们可以添加一个toString()方法来打印学生的信息:

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

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

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

 3. 案例中某些类的toString()方法
简述toString()方法从哪里来?toString方法有什么用?toString一般应包含什么内容?

 4. 案例中常见的工具类
简述案例代码中使用了哪些工具类。

工具类名1,作用概述,常见方法(入参、返回参数、功能)

工具类名2,作用概述,常见方法(入参、返回参数、功能)

 5. 案例中的面向对象设计
5.1 尝试用一段话描述案例所解决的问题。找到其中的名词与动词。
5.2 如果让你设计,根据上面的分析你会抽象出什么类?各具备什么功能?

1. 封装性及其好处

在给出的学生管理系统代码中,封装的主要体现在Student类和StudentManagementSystem类上。Student类封装了学生的一些属性和行为,如姓名、学号、专业和GPA等。这些属性都被设置为私有(private),然后通过公有的(publicsettergetter方法来访问和修改。这种做法的好处在于,它保护了对象的内部状态,防止直接访问和修改,从而增加了代码的健壮性和可维护性。

例如,如果我们试图直接访问Studentname属性并修改它,我们将会收到编译错误。相反,我们必须使用setName()方法来修改该属性。这样,如果以后我们想要改变name的内部表示或验证它的值(例如,确保它不为空或符合某种格式),我们可以在setName()方法中进行,而不会影响到使用该对象的代码。

2. setter/getter模式与封装性

settergetter方法是Java面向对象编程中的重要概念。setter方法用于修改类的属性,getter方法用于获取类的属性。settergetter方法通常被用于封装类的内部状态。

对于Student类,我们可以有如下的settergetter方法:


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;
    }

//setters and getters

    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;
    }


}

3. toString()方法

toString()方法是一个Java对象的方法,它返回一个代表该对象的字符串。这个字符串通常包含对象的所有或部分属性值。toString()方法可以帮助我们更好地理解或调试代码。

对于Student类,我们可以添加一个toString()方法来打印学生的信息:

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

这个toString()方法将返回一个形如 "Student{"John", 20, "Male", "001", "Computer Science", 3.5} " 的字符串。如果我们将这个toString()方法添加到Student类,我们就可以通过System.out.println(student)来打印学生的信息。

4. 工具类

代码中使用了两个主要的工具类:一个是ArrayList,它是Java集合框架的一部分,用于存储动态数组;另一个是String类,它是Java的基础类之一,用于处理文本字符串。

  • ArrayList:这个类允许我们动态地添加和删除元素,这非常适合存储学生管理系统中的学生数据。例如,我们可以通过students.add(new Student())来添加一个新的学生。
  • String:这个类提供了许多用于处理字符串的方法,例如连接字符串("Hello " + "World" 返回 "Hello World"),查找字符串中的子字符串,将字符串转换为大写或小写等。例如,在searchByName()searchByMajor()方法中,我们使用String类的equals()方法来比较字符串。

5. 面向对象设计

5.1 这个案例主要解决的是对学生信息进行管理的问题,主要的名词是学生和动作是管理。

5.2 在这个案例中,我们抽象出了三个主要的类:StudentStudentManagementSystem 和 ArrayList

  • Student类:它代表一个学生,有姓名、学号、专业和GPA等属性,以及相应的setter和getter方法。此外,它还有一个toString()方法用于打印学生信息。
  • StudentManagementSystem类:它是对学生管理系统的一个抽象,它包含了一个学生列表并且提供了添加、删除、搜索学生等方法。
  • ArrayList类:在StudentManagementSystem类中作为工具类使用,用于存储学生数据并提供动态添加和删除学生的功能。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值