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

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

学生类: Student

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

程序如下所示:

 public class Student {
public static String name; //学生姓名
public static String sex; // 性别(性别男、女)
public static String level; //学历水平(本科、专科)
public static int grade; //年级(本科1-4,专科1-3)
  // 主函数,设定初值,进行函数调用。
public static void main(String[] args) {
name = "张三";
sex = "男";
level = "专科";
grade = 2; upgrade();
print();
} /**
* 升级函数
* 本科定义四年,超过四年,年级固定为大四. 专科定义三年,超过三年,年级固定为大三。
  */
public static void upgrade(){
grade++;
if (level.equals("本科")&&grade>4){
grade = 4;
}
if (level.equals("专科")&&grade>3){
grade = 3;
}
} /**
* 降级函数
* 最低为大一,不能比大一还低。
*/
public static void downgrade(){
grade--;
grade = grade<1?1:grade;
} public static void print(){
System.out.println("输出姓名:"+name);
System.out.println("输出性别:"+sex);
System.out.println("输出学历:"+level);
System.out.println("输出年级:"+grade);
}
}

运行结果:

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

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

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

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

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

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

我们就来修改一下代码。

修改后的代码如下所示:

 package CouseEx.C01_01_结构化程序设计;
// 姓名 性别 年级
public class c102_02_结构化程序设计改写 {
static String name; //学生姓名
static byte sex; // 性别(性别0->男、1->女)
static byte level; //学历层次(0->专科、1->本科)
static int grade; //年级
public static void main(String[] args) {
name = "张三";
sex = 0;
level = 1;
grade = 4;
System.out.println("输出学生信息:");
print();
System.out.println(); // 换行 System.out.println("输出修改后的个人信息:");
upgrade();
print();
} public static void upgrade(){
grade++;
if (level==1&&grade>4){
grade = 4;
}
if (level==0&&grade>3){
grade = 3;
}
} public static void downgrade(){
grade--;
grade = grade<1?1:grade;
} public static void print(){
System.out.println("输出姓名:"+name);
System.out.println("输出性别:"+(sex==0?"男":"女"));
System.out.println("输出学历:"+(level==0?"专科":"本科"));
System.out.println("输出年级:"+grade);
}
}

运行结果:

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

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

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

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

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

最新文章

  1. 每天一个linux命令(40):wc命令
  2. Asp.Net MVC 自定义的MVC框架(非EF操作数据库)
  3. 在Ubuntu上安装docker常见问题
  4. scala 学习笔记(01) 函数定义、分支、循环、异常处理、递归
  5. MVC NonAction属性
  6. [转]MongoDB for Java】Java操作MongoDB
  7. 每用户订阅上的所有者 SID 不存在 (异常来自 HRESULT:0x80040207)
  8. Spring – ${} is not working in @Value--转载
  9. 如何在Xilinx ISE中使用TCL提高工作效率
  10. Shell的那些事儿
  11. H5非主体结构元素
  12. 关于t分布的证明
  13. PyCharm 2016.1 for Mac 激活方法分享
  14. Role Object(角色对象)
  15. Hadoop优先级调度
  16. Selenium自动化初级/中级网络授课班招生
  17. Python入门 - 时间处理
  18. .NET CORE迁移踩坑
  19. Stanford CS231n - Convolutional Neural Networks for Visual Recognition
  20. ASP中页面之间传递值的几种方式

热门文章

  1. 【Go语言系列】1.4、GO语言简介:第一个Go语言程序
  2. Java后台技术(TDDL)
  3. mybatis用mybatis-generator-core-1.3.5.jar自动生成实体类
  4. 吴裕雄 python 神经网络——TensorFlow 花瓣分类与迁移学习(4)
  5. Cisco Packet Tracer 7.2
  6. Cisco AP-如何识别思科胖瘦AP
  7. 2019年7月22日A股科创板开板首日行情思考
  8. linux 管道相关命令(待学)
  9. class A&lt;T&gt;where T:new()是什么意思
  10. 洛谷 P1082 同余方程(同余&amp;&amp;exgcd)