美文网首页
java封装案例

java封装案例

作者: 数据工程师从入门到放弃 | 来源:发表于2018-12-12 23:13 被阅读0次
package com.imooc.model;

public class Subject {
    
    private String subjectName;
    private String subjectNo;
    private int subjectLife;
    private Student[] myStudents;
    private int studentNum;
    
    // 无参构造方法
    public Subject() {
        
    }
    
    // 带参构造,带参构造,实现对全部属性的赋值
    public Subject(String subjectName,String subjectNo,int subjectLife) {
//      this.subjectName = subjectName;
//      this.subjectNo = subjectNo;
//      this.subjectLife = subjectLife;
        this.setSubjectName(subjectName);
        this.setSubjectNo(subjectNo);
        this.setSubjectLife(subjectLife);
        
    }
    
    public Subject(String subjectName,String subjectNo,int subjectLife,Student[] myStudents) {
        this.setSubjectName(subjectName);
        this.setSubjectNo(subjectNo);
        this.setSubjectLife(subjectLife);
        this.setMyStudents(myStudents); 
    }
    
    public int getStudentNum() {
        return studentNum;
    }



    public void setStudentNum(int studentNum) {
        this.studentNum = studentNum;
    }

    /**
     * 获取选修专业的学生信息 如果保存学生信息的数组未被初始化,则,先初始化长度200
     * @return 保存学生信息的数组
     */
    public Student[] getMyStudents() {
        if(this.myStudents==null)
            this.myStudents=new Student[200];
        return myStudents;
    }

    public void setMyStudents(Student[] myStudents) {
        this.myStudents = myStudents;
    }
    
    public String getSubjectName() {
        return subjectName;
    }
    public void setSubjectName(String subjectName) {
        this.subjectName = subjectName;
    }
    
    public String getSubjectNo() {
        return subjectNo;
    }
    public void setSubjectNo(String subjectNo) {
        this.subjectNo = subjectNo;
    }
    
    public int getSubjectLife() {
        return subjectLife;
    }
    // 设置学制年限,限制必须>0
    public void setSubjectLife(int subjectLife) {
        if(subjectLife<=0)
            return;
        this.subjectLife = subjectLife;
    }
    
    /**
     * 专业介绍的方法
     * @return 专业介绍的相关信息,包括名称、编号、年限
     */
    public String info() {
        String str = "专业信息如下:\n专业名称:" + this.getSubjectName() + "\n专业编号:" + this.getSubjectNo() + "\n学制年限:"
                + this.getSubjectLife() + "年";
        return str;
    }
    
    public void addStudent(Student stu) {
        /*
         * 1、将学生保存到数组中
         * 2、将学生个数保存到studentNum
         * */
        //1、将学生保存到数组中
        for(int i=0;i<this.getMyStudents().length;i++) {
            if(this.getMyStudents()[i]==null) {
                this.getMyStudents()[i] = stu;
                // 2、将学生个数保存到studentNum
                this.studentNum=i+1;
                return;
            }
        }
        
    }

    

}

package com.imooc.model;

public class Student {
    // 成员属性:学号、姓名、性别、年龄、专业
        private String studentNo;
        private String studentName;
        private String studentSex;
        private int studentAge;
        private Subject studentSubject;
        
        
        public Student() {
            super();
        }
        //多参构造方法,实现对学号、姓名、性别、年龄的赋值
        public Student(String studentNo, String studentName, String studentSex, int studentAge) {
            this.setStudentNo(studentNo);
            this.setStudentName(studentName);
            this.setStudentSex(studentSex);
            this.setStudentAge(studentAge);
        }
        
        // 多参构造方法,实现对全部属性的赋值
        public Student(String studentNo, String studentName, String studentSex, int studentAge,Subject studentSubject) {
            this.setStudentNo(studentNo);
            this.setStudentName(studentName);
            this.setStudentSex(studentSex);
            this.setStudentAge(studentAge);
            this.setStudentSubject(studentSubject);
        }
        
        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.equals("男"))
            if(studentSex=="男" || studentSex=="女")
                this.studentSex = studentSex;
            else
                this.studentSex = "男";
            
        }
        public int getStudentAge() {
            return studentAge;
        }
        public void setStudentAge(int studentAge) {
            if(studentAge<10 || studentAge>=100)
                this.studentAge = 18;
            else
                this.studentAge = studentAge;
        }
        
        /**
         * 获取专业对象,如果没有实例化,先实例化后再返回
         * @return 专业对象信息
         */
        public Subject getStudentSubject() {
            if(this.studentSubject ==null)
                this.studentSubject = new Subject();
            return studentSubject;
        }
        public void setStudentSubject(Subject studentSubject) {
            this.studentSubject = studentSubject;
        }
        
        /**
         * 学生自我介绍的方法
         * 
         * @return 自我介绍的信息,包括姓名、学号、性别、年龄
         */
        public String introduction() {
            String str = "学生信息如下:\n姓名:" + this.getStudentName() + "\n学号:" + this.getStudentNo() + "\n性别:"
                    + this.getStudentSex() + "\n年龄:" + this.getStudentAge()+ "\n所报专业名称:" + this.getStudentSubject().getSubjectName() + "\n学制年限:"
                            + this.getStudentSubject().getSubjectLife();
            return str;
        }
        
        /**
         * 学生自我介绍的方法
         * @param subjectName 所学专业名称
         * @param subjectLife 学制年限
         * @return 自我介绍的信息,包括姓名、学号、性别、年龄、所学专业名称、学制年限
         */
        public String introduction(String subjectName, int subjectLife) {
            String str = "学生信息如下:\n姓名:" + this.getStudentName() + "\n学号:" + this.getStudentNo() + "\n性别:"
                    + this.getStudentSex() + "\n年龄:" + this.getStudentAge() + "\n所报专业名称:" + subjectName + "\n学制年限:"
                    + subjectLife;
            return str;
        }
        
        /**
         * 学生自我介绍的方法
         * @param mySubject 所选专业的对象 
         * @return自我介绍的信息,包括姓名、学号、性别、年龄、所学专业名称、学制年限
         */
        public String introduction(Subject mySubject){
            String str = "学生信息如下:\n姓名:" + this.getStudentName() + "\n学号:" + this.getStudentNo() + "\n性别:"
                    + this.getStudentSex() + "\n年龄:" + this.getStudentAge() + "\n所报专业名称:" + mySubject.getSubjectName() + "\n学制年限:"
                    + mySubject.getSubjectLife()+"\n专业编号:"+mySubject.getSubjectNo();
            return str;
        }

}

package com.imooc.test;

import com.imooc.model.Student;
import com.imooc.model.Subject;

public class Test {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        
        Subject sub1 = new Subject("计算机科学与应用","J0001",4);
        System.out.println(sub1.info());
        
        System.out.println("================================");
        
        //测试Student
        Student stu1=new Student("S01","张三","女",200,sub1);
        System.out.println(stu1.introduction());
        
        System.out.println("================================");
        Student stu2=new Student("S02","李四","女",17);
        System.out.println(stu2.introduction("计算机科学与应用", 4));
        
        
        System.out.println("================================");
        Student stu3=new Student("S03","王五","男",18);
        System.out.println(stu3.introduction(sub1));
        
        System.out.println("================================");
        //测试指定专业中到底有多少学生报名
        sub1.addStudent(stu1);
        sub1.addStudent(stu2);
        sub1.addStudent(stu3);
        System.out.println(sub1.getSubjectName()+"的专业中已有"+sub1.getStudentNum()+"学生进行了报名");
    
        
    }

}

相关文章

网友评论

      本文标题:java封装案例

      本文链接:https://www.haomeiwen.com/subject/quumhqtx.html