Android 之路14---Java基础封装案例

来源:互联网 发布:淘宝微淘话题在哪里找 编辑:程序博客网 时间:2024/06/08 04:12

导读

1.学生与专业信息封装案例
2.新增需求统计专业人数

学生与专业信息封装案例

Subject类

package com.hala.modle;public class Subject {    private String SubjectName;    private String SubjectNum;    private int SubjectLife;    public Subject(){    }    public Subject(String subjectName,String subjectNum,int subjectLife){        this.setSubjectName(subjectName);        this.setSubjectNum(subjectNum);        this.setSubjectLife(subjectLife);    }    public String getSubjectName() {        return SubjectName;    }    public void setSubjectName(String subjectName) {        SubjectName = subjectName;    }    public String getSubjectNum() {        return SubjectNum;    }    public void setSubjectNum(String subjectNum) {        SubjectNum = subjectNum;    }    public int getSubjectLife() {        return SubjectLife;    }    public void setSubjectLife(int subjectLife) {        if(subjectLife<=0)            return ;        else           SubjectLife = subjectLife;    }    public String info() {        String str = "专业信息如下:\n专业名称:" + this.getSubjectName() + "\n专业编号:" + this.getSubjectNum() + "\n专业年限:"                + this.getSubjectLife();        return str;    }}

Student类

package com.hala.modle;public class Student {    private String num;    private String name;    private String sex;    private int age;    private Subject studentSubject;    public Subject getStudentSubject() {        if(this.studentSubject==null)            this.studentSubject=new Subject();        //无参构造的重要性在此显现        return studentSubject;    }    public void setStudentSubject(Subject studentSubject) {        this.studentSubject = studentSubject;    }    public Student() {    }    public Student(String num, String name, String sex, int age) {        this.setAge(age);        this.setName(name);        this.setNum(num);        this.setSex(sex);    }    public Student(String num, String name, String sex, int age,Subject studentSubject) {        this.setAge(age);        this.setName(name);        this.setNum(num);        this.setSex(sex);        this.setStudentSubject(studentSubject);    }    public String getNum() {        return num;    }    public void setNum(String num) {        this.num = num;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getSex() {        return sex;    }    public void setSex(String sex) {        this.sex = sex;    }    public int getAge() {        return age;    }    /**     *      * @param age年龄     * 年龄>0且<100     *      */    public void setAge(int age) {        if(age<=0||age>=100)            age=18;        this.age = age;    }    /**     * 学生的介绍     * @return 姓名,学号,性别,年龄     */    public String introduction(){        String str = "学生信息如下:\n学生姓名:" + this.getName() + "\n学生学号:" + this.getNum() + "\n学生性别:"                + this.getSex()+"\n学生年龄:"+this.getAge();            return str;    }    /**     * 学生的介绍     * @param SubjectName     * @param SubjectLife     * @return 姓名,学号,性别,年龄,专业,学习年限     * 解决方案1;需要什么传什么     */    public String introduction(String SubjectName,String SubjectLife){        String str = "学生信息如下:\n学生姓名:" + this.getName() + "\n学生学号:" + this.getNum() + "\n学生性别:"                + this.getSex()+"\n学生年龄:"+this.getAge()+"\n所学专业:"+SubjectName+"\n学习年限:"+SubjectLife;            return str;    }    /**     * 学生的介绍     * @param mySubject     * @return 姓名,学号,性别,年龄,专业,学习年限,专业编号     * 解决方案2;把Subject当作方法参数传进去     */    public String introduction(Subject mySubject) {        String str = "学生信息如下:\n学生姓名:" + this.getName() + "\n学生学号:" + this.getNum() + "\n学生性别:" + this.getSex()                + "\n学生年龄:" + this.getAge() + "\n学习专业:" + mySubject.getSubjectName() + "\n学习年限:"                + mySubject.getSubjectLife() + "\n专业编号" + mySubject.getSubjectNum();        return str;    }    /**     * 学生的介绍     * @return 姓名,学号,性别,年龄,专业,学习年限,专业编号     * 解决方案3:把Subject当作Student的一个属性     */    public String introduction1s() {        String str = "学生信息如下:\n学生姓名:" + this.getName() + "\n学生学号:" + this.getNum() + "\n学生性别:" + this.getSex()                + "\n学生年龄:" + this.getAge() + "\n学习专业:" + this.getStudentSubject().getSubjectName() + "\n学习年限:"                + this.getStudentSubject().getSubjectLife() + "\n专业编号" + this.getStudentSubject().getSubjectNum();        return str;    }}

SubjectTest 类

package com.hala.test;import com.hala.modle.*;public class SubjectTest {    public static void main(String[] args) {        Subject sub1=new Subject("计算机科学与应用","J0001",4);        System.out.println(sub1.info());    }}

StudentTest类

package com.hala.test;import com.hala.modle.Student;import com.hala.modle.Subject;public class StudentTest {    public static void main(String[] args) {        Student stu1=new Student("s01","张三","男",18);        System.out.println(stu1.introduction());        System.out.println("+++++++++++++++++++++++++++++++++");        Student stu2=new Student("s02","李四","女",19);        System.out.println(stu2.introduction("计算机科学与技术", "4年"));        System.out.println("+++++++++++++++++++++++++++++++++");        Subject sub1=new Subject("计算机科学与应用","J0001",4);        Student stu3=new Student("s03","王五","女",18);        System.out.println(stu3.introduction(sub1));        System.out.println("+++++++++++++++++++++++++++++++++");        Student stu4=new Student("s04","赵六","男",20,sub1);        System.out.println(stu4.introduction1s());    }}

输出结果
学生信息如下:
学生姓名:张三
学生学号:s01
学生性别:男
学生年龄:18
+++++++++++++++++++++++++++++++++
学生信息如下:
学生姓名:李四
学生学号:s02
学生性别:女
学生年龄:19
所学专业:计算机科学与技术
学习年限:4年
+++++++++++++++++++++++++++++++++
学生信息如下:
学生姓名:王五
学生学号:s03
学生性别:女
学生年龄:18
学习专业:计算机科学与应用
学习年限:4
专业编号J0001
+++++++++++++++++++++++++++++++++
学生信息如下:
学生姓名:赵六
学生学号:s04
学生性别:男
学生年龄:20
学习专业:计算机科学与应用
学习年限:4
专业编号J0001

新增需求统计专业人数

Subject类

package com.hala.modle;public class Subject {    private String SubjectName;    private String SubjectNum;    private int SubjectLife;    private int studentNum;    private Student[] myStudent;     public Subject(){    }    public Subject(String subjectName,String subjectNum,int subjectLife){        this.setSubjectName(subjectName);        this.setSubjectNum(subjectNum);        this.setSubjectLife(subjectLife);    }    public Subject(String subjectName,String subjectNum,int subjectLife,Student[] myStudent){        this.setSubjectName(subjectName);        this.setSubjectNum(subjectNum);        this.setSubjectLife(subjectLife);        this.setMyStudent(myStudent);    }    public String getSubjectName() {        return SubjectName;    }    public void setSubjectName(String subjectName) {        SubjectName = subjectName;    }    public String getSubjectNum() {        return SubjectNum;    }    public void setSubjectNum(String subjectNum) {        SubjectNum = subjectNum;    }    public int getSubjectLife() {        return SubjectLife;    }    public void setSubjectLife(int subjectLife) {        if(subjectLife<=0)            return ;        else           SubjectLife = subjectLife;    }    /**     * 获取选修课的学生信息,如果保存学生信息的数组未被初始化,则先初始化数组长度为200     * @return 保存学生信息的数组     */    public Student[] getMyStudent() {        if(this.myStudent==null)            this.myStudent=new Student[200];        //如果未设置此句,会导致空指针异常,空指针异常也常常因为对象未实例化导致的        return myStudent;    }    public void setMyStudent(Student[] myStudent) {        this.myStudent = myStudent;    }    public int getStudentNum() {        return studentNum;    }    public void setStudentNum(int studentNum) {        this.studentNum = studentNum;    }    public String info() {        String str = "专业信息如下:\n专业名称:" + this.getSubjectName() + "\n专业编号:" + this.getSubjectNum() + "\n专业年限:"                + this.getSubjectLife();        return str;    }    /**     * 1.实现将学生信息管理存到数组中     * 2.重新设置学生人数     * @param 学生信息管理     */    public void addStudent(Student stu){        for(int i=0;i<this.getMyStudent().length;i++){            if(this.getMyStudent()[i]==null){                stu.setStudentSubject(this);            //这里表明引用数据类型做参数相当于引用                this.getMyStudent()[i]=stu;            //两句一步到位建立了从学生到学科的联系,也建立了从学科到学生的联系            //其中上边一步到位做法选择的是1问题中的第三种解决方案                this.studentNum=i+1;                break;            }        }    }}

Student类

package com.hala.modle;public class Student {    private String num;    private String name;    private String sex;    private int age;    private Subject studentSubject;    public Subject getStudentSubject() {        if(this.studentSubject==null)            this.studentSubject=new Subject();        //无参构造的重要性在此显现        return studentSubject;    }    public void setStudentSubject(Subject studentSubject) {        this.studentSubject = studentSubject;    }    public Student() {    }    public Student(String num, String name, String sex, int age) {        this.setAge(age);        this.setName(name);        this.setNum(num);        this.setSex(sex);    }    public Student(String num, String name, String sex, int age,Subject studentSubject) {        this.setAge(age);        this.setName(name);        this.setNum(num);        this.setSex(sex);        this.setStudentSubject(studentSubject);    }    public String getNum() {        return num;    }    public void setNum(String num) {        this.num = num;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getSex() {        return sex;    }    public void setSex(String sex) {        this.sex = sex;    }    public int getAge() {        return age;    }    /**     *      * @param age年龄     * 年龄>0且<100     *      */    public void setAge(int age) {        if(age<=0||age>=100)            age=18;        this.age = age;    }    /**     * 学生的介绍     * @return 姓名,学号,性别,年龄     */    public String introduction(){        String str = "学生信息如下:\n学生姓名:" + this.getName() + "\n学生学号:" + this.getNum() + "\n学生性别:"                + this.getSex()+"\n学生年龄:"+this.getAge();            return str;    }    /**     * 学生的介绍     * @param SubjectName     * @param SubjectLife     * @return 姓名,学号,性别,年龄,专业,学习年限     * 解决方案1;需要什么传什么     */    public String introduction(String SubjectName,String SubjectLife){        String str = "学生信息如下:\n学生姓名:" + this.getName() + "\n学生学号:" + this.getNum() + "\n学生性别:"                + this.getSex()+"\n学生年龄:"+this.getAge()+"\n所学专业:"+SubjectName+"\n学习年限:"+SubjectLife;            return str;    }    /**     * 学生的介绍     * @param mySubject     * @return 姓名,学号,性别,年龄,专业,学习年限,专业编号     * 解决方案2;把Subject当作方法参数传进去     */    public String introduction(Subject mySubject) {        String str = "学生信息如下:\n学生姓名:" + this.getName() + "\n学生学号:" + this.getNum() + "\n学生性别:" + this.getSex()                + "\n学生年龄:" + this.getAge() + "\n学习专业:" + mySubject.getSubjectName() + "\n学习年限:"                + mySubject.getSubjectLife() + "\n专业编号" + mySubject.getSubjectNum();        return str;    }    /**     * 学生的介绍     * @return 姓名,学号,性别,年龄,专业,学习年限,专业编号     * 解决方案3:把Subject当作Student的一个属性     */    public String introduction1s() {        String str = "学生信息如下:\n学生姓名:" + this.getName() + "\n学生学号:" + this.getNum() + "\n学生性别:" + this.getSex()                + "\n学生年龄:" + this.getAge() + "\n学习专业:" + this.getStudentSubject().getSubjectName() + "\n学习年限:"                + this.getStudentSubject().getSubjectLife() + "\n专业编号" + this.getStudentSubject().getSubjectNum();        return str;    }}

SubjectTest类

package com.hala.test;import com.hala.modle.*;public class SubjectTest {    public static void main(String[] args) {        Subject sub1=new Subject("计算机科学与应用","J0001",4);        Student stu1=new Student("s01","张三","男",18);        Student stu2=new Student("s02","李四","女",19);        Student stu3=new Student("s03","王五","女",18);        Student stu4=new Student("s04","赵六","男",20);        sub1.addStudent(stu1);        sub1.addStudent(stu2);        sub1.addStudent(stu3);        sub1.addStudent(stu4);        System.out.println(sub1.getStudentNum());        System.out.println(stu1.introduction1s());//这里由于Subject类中一步到位,可以输出学生以及其所学学科的信息    }}

输出结果
4
学生信息如下:
学生姓名:张三
学生学号:s01
学生性别:男
学生年龄:18
学习专业:计算机科学与应用
学习年限:4
专业编号J0001

关于防止空指针异常的两种方法

原创粉丝点击