为了学习面向对象程序设计,今天我们先利用面向对象以前的知识,设计一个学生类。
要求进行结构化程序设计。
学生类: 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 }
运行结果:
我们发现简单的修改一下性别和学历,函数也发生了改变,输入有人发生了改变,代码变动的范围很大,那么有没有一种方法可以更好的解决这个问题。
也就是修改一部分固定的东西就可以,而是全篇的修改代码。
这就引入了面对对象设计。
我们在面向对象以前学习的知识就可以解决大部分问题。
面向对象是为了让我们更好的解决问题,是问题处理变的简单,重复部分的工作减少。