8.13 实例:学生类的设计

我们来写一个比较完整的类,Student类:

练习题

  • 按照要求设计Student类,每一道题都是在上一题的基础上增加方法,例如第X题完成的代码是AABB,那么第X+1题的代码就在AABB的基础上增加方法。不要删除上一题已完成的方法。
    1.完成别的getter和setter函数 (10分) [编程]
    模仿name的getter和setter,为以下属性设计getter和setter函数:
    String id;//学号
    String gender;//性别
    String clazz;//班级
    String major;//专业

    本题不需要main函数
    public String getName(){    return name;}public void setName(String name){    this.name=name;}
    
    2.(*)设计函数isSameClazz,接收一个Student对象作为参数,测试他们是不是同班同学,是的话返回true,否则返回false (10分) [编程]
    特别注意,此函数接受Student对象作为参数,不是String类型的clazz属性!
    st.isSameClazz(st2);例如这样的代码,st和st2都是Student对象,假如他们是同班同学(也就是clazz内容是一样的,clazz是字符串,比较内容要用equals方法),返回true,否则返回false
    此题不需要main函数
    3.(*)写一个函数isSameMajor,接收一个student参数,测试他们是不是同专业,是的话返回true,否则返回false (10分) [编程]
    参照上一题
    4.(**)设计没有参数没有返回值的函数checkId,用来检测Id是否为空(id==null||id.equals("")),假如为空值,那么打印“id值为空,请设置”,否则打印出id值。 (10分) [编程]
    id值是字符串,判断一个字符串是否为空,需要判断它是null,或者它的值是空串"",比较内容的时候注意,要用到equals方法比较内容,或者用length方法判断长度是否为0
    5.现在我们要写一个方法info,打印一些信息。 (10分) [编程]
    这个函数没有参数、没有返回值,它的行为是组织了语言并打印信息。调用这个函数之前,很明显需要设置name、major和clazz属性。在main函数里面就可以像代码所示那样调用。
    打印样例是:"我的名字是张二铁,男,我的专业是建筑工程,我是17建筑2班的学生"

    本题需要用到所有的setter和getter函数,不需要main函数
    public static void main(String[]args){    Student st=new Student();    st.setName("上官渡云");    st.setClazz("16软件5班");    st.setGender("男");    st.setMajor("计算机软件");    st.info();}
    
    6.设计一个类Student (10分) [编程]
    含有以下属性:
    String name;//姓名
    String id;//学号
    String gender;//性别
    String clazz;//班级
    String major;//专业
    所有属性必须设置为private
    7.添加一个构造函数,接受一个字符串参数,参数将赋值到对象的id属性 (10分) [编程]
    8.添加静态函数isSameClazz (16分) [编程]
    静态函数isSameClazz,接收两个Student对象作为参数,如果这两个对象是同班,返回true,否则返回false。
    静态函数不需要对象就能调用,调用类似这样:
    Student.isSameClazz(st,st2);
    此题需要上一题的带一个整数的构造函数,需要setClazz方法
    9.添加一个构造函数,接受一个整数为参数,参数将赋值给对象的id属性 (10分) [编程]
    需要把整数转化成字符串再赋值
    此题是重载构造函数