为了学习面向对象程序设计,今天我们先利用面向对象以前的知识,设计一个学生类。

要求进行结构化程序设计。

 

学生类: Student

要求:存储学生的基本信息(姓名、性别、学历层次和年级),实现学生信息的编辑(设置姓名、性别、升级、降级), 功能(升降级)

 

程序如下所示:

 1 public class Student {
 2     public static String name;     //学生姓名
 3     public static String sex;     // 性别(性别男、女)
 4     public static String level;  //学历水平(本科、专科)
 5     public static int    grade;   //年级(本科1-4,专科1-3)
 6   // 主函数,设定初值,进行函数调用。
 7     public static void main(String[] args) {
 8         name = "张三";
 9         sex = "男";
10         level = "专科";
11         grade = 2;
12 
13         upgrade();
14         print();
15     }
16 
17     /**
18      * 升级函数
19      * 本科定义四年,超过四年,年级固定为大四.   专科定义三年,超过三年,年级固定为大三。
20     */
21     public static void upgrade(){
22         grade++;
23         if (level.equals("本科")&&grade>4){
24             grade = 4;
25         }
26         if (level.equals("专科")&&grade>3){
27             grade = 3;
28         }
29     }
30 
31     /**
32      * 降级函数
33      * 最低为大一,不能比大一还低。
34      */
35     public static void downgrade(){
36         grade--;
37         grade = grade<1?1:grade;
38     }
39 
40     public static void print(){
41         System.out.println("输出姓名:"+name);
42         System.out.println("输出性别:"+sex);
43         System.out.println("输出学历:"+level);
44         System.out.println("输出年级:"+grade);
45     }
46 }

运行结果:

 

我们发现不运用面向对象方法我们也可以解决问题。

但是这里存在一个问题,什么问题呢?

性别sex 可以输入一个 “无无无”   学历可以输出一个“我不上学了”

sex = "无无无";
level = "我不上学了";

这就超出了我们的控制范围,这时候我们就需要设定一下要求。

比如  性别0-表示男生 ,1-表示女生。

我们就来修改一下代码。

 

修改后的代码如下所示:

 1 package CouseEx.C01_01_结构化程序设计;
 2 //  姓名 性别 年级
 3 public class c102_02_结构化程序设计改写 {
 4     static String name;     //学生姓名
 5     static byte sex;     // 性别(性别0->男、1->女)
 6     static byte level;  //学历层次(0->专科、1->本科)
 7     static int grade;   //年级
 8     public static void main(String[] args) {
 9         name = "张三";
10         sex = 0;
11         level = 1;
12         grade = 4;
13         System.out.println("输出学生信息:");
14         print();
15         System.out.println(); // 换行
16 
17         System.out.println("输出修改后的个人信息:");
18         upgrade();
19         print();
20     }
21 
22     public static void upgrade(){
23         grade++;
24         if (level==1&&grade>4){
25             grade = 4;
26         }
27         if (level==0&&grade>3){
28             grade = 3;
29         }
30     }
31 
32     public static void downgrade(){
33         grade--;
34         grade = grade<1?1:grade;
35     }
36 
37     public static void print(){
38         System.out.println("输出姓名:"+name);
39         System.out.println("输出性别:"+(sex==0?"男":"女"));
40         System.out.println("输出学历:"+(level==0?"专科":"本科"));
41         System.out.println("输出年级:"+grade);
42     }
43 }

 运行结果:

我们发现简单的修改一下性别和学历,函数也发生了改变,输入有人发生了改变,代码变动的范围很大,那么有没有一种方法可以更好的解决这个问题。

也就是修改一部分固定的东西就可以,而是全篇的修改代码。

这就引入了面对对象设计。

我们在面向对象以前学习的知识就可以解决大部分问题。

面向对象是为了让我们更好的解决问题,是问题处理变的简单,重复部分的工作减少。