Java封装综合案例
Java封装综合案例
模拟场景实现:
某校开设“计算机科学与应用”专业,专业编号J0001,学制4年。 现有3名学生都报名学习了这个专业。
代码逻辑:
student类:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
package com.geekmubai.moudel; public class Student { //成员属性:学号、姓名、性别、年龄 private String studentNo; private String studentName; private String studentSex; private int studentAge; //无参构造方法 public Student() { } //多参构造方法实现对全部属性的赋值 public Student(String studentNo, String studentName, String studentSex, int studentAge) { this.setStudentNo(studentNo); this.setStudentName(studentName); this.setStudentSex(studentSex); this.setStudentAge(studentAge); } public String getStudentNo() { return studentNo; } public void setStudentNo(String studentNo) { this.studentNo = studentNo; } public String getStudentName() { return studentName; } public void setStudentName(String studentName) { this.studentName = studentName; } public String getStudentSex() { return studentSex; } public void setStudentSex(String studentSex) { if (studentSex !="男" && studentSex != "女" ) this.studentSex = "男"; else this.studentSex = studentSex; } public int getStudentAge() { return studentAge; } public void setStudentAge(int studentAge) { if (studentAge<10 || studentAge>100) this.studentAge = 18; else this.studentAge = studentAge; } //学生自我介绍的方法 public String introduction(){ String str = "学生信息如下:\n姓名:" + this.getStudentName()+ "\n学号:" + this.getStudentNo() + "\n性别:" + this.getStudentSex()+"\n年龄:"+getStudentAge(); return str; } //传入字符串 public String introduction(String subjectName,int subjectLife){ String str = "学生信息如下:\n姓名:" + this.getStudentName()+ "\n学号:" + this.getStudentNo() + "\n性别:" + this.getStudentSex()+"\n年龄:"+getStudentAge()+ "\n专业:" + subjectName+"\n年限:"+subjectLife; return str; } //传入对象 public String introduction(Subject mySubject){ String str = "学生信息如下:\n姓名:" + this.getStudentName()+ "\n学号:" + this.getStudentNo() + "\n性别:" + this.getStudentSex()+"\n年龄:"+getStudentAge()+ "\n专业:" + mySubject.getSubjectName()+"\n年限:"+mySubject.getSubjectLife(); return str; } } |
subject类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
package com.geekmubai.moudel; public class Subject { //成员属性:学科名称、学科编号、学制年限、学生信息、报名的学生数 private String subjectName; private String subjetcNo; private int subjectLife; private Student[] myStudents; private int studentNum; //无参构造方法 public Subject() { } //带参构造,实现对学科名称、编号、学制年限的赋值 public Subject(String subjectName, String subjectNo, int subjectLife) { //this赋值,调用成员属性 没有业务逻辑 不推荐 //this.subjectName = subjectName; //推荐用下面的set方法赋值 this.setSubjectName(subjectName); this.setSubjetcNo(subjectNo); this.setSubjectLife(subjectLife); } //带参构造,实现对属性的全部赋值 public Subject(String subjectName, String subjectNo, int subjectLife,Student[] myStudents) { this.setSubjectName(subjectName); this.setSubjetcNo(subjectNo); this.setSubjectLife(subjectLife); } //get、set方法 public String getSubjectName() { return subjectName; } public void setSubjectName(String subjectName) { this.subjectName = subjectName; } public String getSubjetcNo() { return subjetcNo; } public void setSubjetcNo(String subjetcNo) { this.subjetcNo = subjetcNo; } public int getSubjectLife() { return subjectLife; } public Student[] getMyStudents() { //数组初始化 if (this.myStudents == null) this.myStudents = new Student[200]; return myStudents; } public void setMyStudents(Student[] myStudents) { this.myStudents = myStudents; } public int getStudentNum() { return studentNum; } public void setStudentNum(int studentNum) { this.studentNum = studentNum; } //设置学制年限>0 public void setSubjectLife(int subjectLife) { if (subjectLife <= 0) return; this.subjectLife = subjectLife; } //专业介绍的方法 public String info() { String str = "专业信息如下:\n专业名称:" + this.getSubjectName() + "\n专业编号:" + this.getSubjetcNo() + "\n学制年限:" + this.getSubjectLife(); return str; } // 1、将学生保存到数组中。 // 2、将学生数保存到studentNum public void addStudent(Student stu){ for (int i=0;i<this.getMyStudents().length;i++){ if (this.getMyStudents()[i]==null){ this.getMyStudents()[i]=stu; this.studentNum=i+1; return; } } } } |
测试类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
package com.geekmubai.test; import com.geekmubai.moudel.Student; import com.geekmubai.moudel.Subject; public class SubjectTest { public static void main(String[] args) { //测试subject Subject sub = new Subject("计算机科学与技术","J0001",4); System.out.println(sub.info()); System.out.println("======================="); //测试student Student stu = new Student("S01","慕白","男",20); System.out.println(stu.introduction()); System.out.println("======================="); //新增student Student stu1 = new Student("S02","南宫","女",18); System.out.println(stu1.introduction("网络工程",4)); System.out.println("======================="); Student stu2 = new Student("S03","刘严","女",18); System.out.println(stu2.introduction(sub)); System.out.println("======================="); //测试指定专业报名人数 sub.addStudent(stu); sub.addStudent(stu1); sub.addStudent(stu2); System.out.println(sub.getSubjectName()+"的专业已有"+sub.getStudentNum()+"人报名!"); } } |