项目案例作业2:对案例进行面向对象分析
文章目录
前言
使用自己已经学习的面向对象知识,针对学生管理系统编写简易面向对象分析报告。
报告可分为如下几个部分:
1. 案例中哪里体现出了封装性及其好处?
封装性:体现在Student类中,通过private变量(如name, age, gender, id, major, gpa)和public的setter/getter方法来体现。
好处:通过private变量,外面的代码不能直接访问或修改代码本身对象的内部状态,只能通过public的setter/getter方法进行,这可以保护数据的安全隐蔽。且public的setter/getter方法给外部代码提供了明确的接口,有利于外部代码与对象之间的联系。
2. 案例中的setter/getter模式与封装性
2.1什么是setter/getter?
Setter和Getter是Java中用于访问和修改对象private变量的两个方法。Setter方法用于设置成员变量的值,Getter方法用于获取成员变量的值。
2.2有什么用?
通过Setter和Getter方法来实现代码的封装性。
2.3怎么自动生成?
在IDE中,可以通过快捷键或菜单选项自动生成setter和getter方法,可以通过Alt + Insert快捷键,然后选择Getter and Setter或者Constructor来自动生成。
3. 案例中某些类的toString()方法
3.1简述toString方法有什么用?
toString()方法用于返回对象的字符串表示形式。
3.2 toString一般应包含什么内容?
toString()方法一般应包含能够唯一标识对象或描述对象状态的信息。在案例中,Student类的toString()方法包含了学生的姓名、年龄、性别、ID、专业和GPA,描述了一个学生的基本信息。
3.3 toString()方法从哪里来?
toString()方法是Object类的一个方法,Java中所有的类都直接或间接继承自Object类,子类通常会覆盖(Override)这个方法。
4. 案例中几个常用方法解析
1.public Student(String name, int age, String gender, String id, String major, double gpa) 功能描述:构造一个Student对象,并初始化其成员变量。
2.StudentManagementSystem.addStudent(Student student)功能描述:向StudentManagementSystem中添加一个Student对象。
3.StudentManagementSystem.searchByName(String name)功能描述:根据姓名搜索学生,并返回匹配的学生列表。
5. 案例中的面向对象设计
5.1 尝试用一段话描述案例所解决的问题。找到其中的名词与动词。
案例通过面向对象的方式设计了一个学生管理系统,该系统允许用户添加、删除、按姓名、专业和GPA搜索学生,并显示所有学生信息。
名词:“学生管理系统”、“学生”、“姓名”、“专业”、“GPA”;
动词:“添加”、“删除”、“搜索”、“显示”。
5.2 如果让你设计,根据上面的分析你会抽象出什么类?各具备什么功能?
类:
(1)Student
功能:表示一个学生,包含学生的基本信息(姓名、年龄、性别、ID、专业、GPA)以及相关的setter/getter方法。
(2)StudentManagementSystem
功能:管理学生信息,包括添加学生、删除学生、按姓名/专业/GPA搜索学生以及获取所有学生列表。