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

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

学生类: 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. }

  1. 运行结果:

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

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

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

  1. sex = "无无无";
  2. 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. }

运行结果:

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

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

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

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

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

java学习-初级入门-面向对象①-面向对象概述-结构化程序设计的更多相关文章

  1. java学习-初级入门-面向对象②-面向对象概述-面向对象程序设计

    我们在  面向对象①中学习了,结构化程序设计. 今天我们一起学习面向对象程序设计. 学习面向对象程序设计就要了解,在面向对象中重要的知识点. 继承  .  多态   . 抽象  . 接口 我们会在接下 ...

  2. java学习-初级入门-面向对象⑥-类与对象-静态static

    这次我们来学习静态(static) 知识点 1.静态方法只能调用静态变量 2.静态变量属于整个Class,会随着发生变化. 案例:定义一个自动增长的学生类. 题目要求: 定义一个学生类,除了姓名.性别 ...

  3. java学习-初级入门-面向对象⑤-类与对象-类与对象的定义和使用3

    这次我们要做一个日期类Date类 主要目的是    1.  熟悉-->构造不同参数的函数  2.善于利用已有的函数!! 题目要求: Date类要求 可设定年月日 可转换为字符串,并可指定分隔符, ...

  4. java学习-初级入门-面向对象④-类与对象-类与对象的定义和使用2

    我们继续学习类与对象,上一篇我们定义了  坐标类(Point), 这次我们在Point的基础上,创建一个圆类(Circle). 案例:创建一个圆类 题目要求: 计算圆的周长和面积:求判断两个圆的位置关 ...

  5. java学习-初级入门-面向对象③-类与对象-类与对象的定义和使用1

    今天学习类与对象.先大致解释一下类与对象的含义. 对象:object 有物体这一概念,一切皆对象(物体),对象由静态的属性和动态的行为组成. 比如说水杯: 水杯的静态属性:材质,容量,质量,颜色 动态 ...

  6. Java入门-浅析Java学习从入门到精通【转】

    一. JDK (Java Development Kit)  JDK是整个Java的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具和Java基础的类库 ...

  7. 真正的Java学习从入门到精通

    http://www.it.com.cn/f/edu/059/6/169189.htm 一. 工具篇JDK (Java Development Kit) JDK是整个Java的核心,包括了Java运行 ...

  8. Java学习从入门到精通(2) [转载]

    Java Learning Path(二).书籍篇 学习一门新的知识,不可能指望只看一本,或者两本书就能够完全掌握.需要有一个循序渐进的阅读过程.我推荐Oreilly出版的Java系列书籍. 在这里我 ...

  9. Java性能测试从入门到放弃-概述篇

    Java性能测试从入门到放弃-概念篇 辅助工具 Jmeter: Apache JMeter是Apache组织开发的基于Java的压力测试工具.用于对软件做压力测试.JMeter 可以用于对服务器.网络 ...

随机推荐

  1. AOP的基本认识

    一.AOP的概念 AOP(Aspect Oriented Programming),即面向切面编程,可以说是OOP(Object Oriented Programming,面向对象编程)的补充和完善. ...

  2. 13. 为什么我们会需要 Pod?

    13. 为什么我们会需要 Pod? 13.1 docker容器的本质 """ docker容器的本质 是进程. 主要通过 Namespace 做隔离,Cgroups 做限 ...

  3. 吴裕雄 python 神经网络——TensorFlow训练神经网络:不使用指数衰减的学习率

    import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data INPUT_NODE = 784 ...

  4. JAVA 开学测试

    package StudentScore; public class ScoreInformation { String stunumber; //学号 String name; //姓名 doubl ...

  5. js中的关键字与保留字

    关键字就是指:js中用到的单词,比如var : function: 保留字是指:js以后可能会发展成为关键字的,先保留起来不让你用.比如class,要是给一个对象添加class:obj.classNa ...

  6. string类的具体实现

    bigThree,注意拷贝构造函数的写法. #ifndef __MYSTRING__ #define __MYSTRING__ class String { public: String(); Str ...

  7. linux压缩包管理

    1.gzip 文件 ----> .gz格式的压缩包 2.bzip2 文件 ----> .bz2格式的压缩包 3.tar -- 不使用z/j参数 该命令只能对文件或目录打包 参数: c -- ...

  8. 「USACO5.5」矩形周长Picture

    题目描述 墙上贴着许多形状相同的海报.照片.它们的边都是水平和垂直的.每个矩形图片可能部分或全部的覆盖了其他图片.所有矩形合并后的边长称为周长. 编写一个程序计算周长. 如图1所示7个矩形. 如图2所 ...

  9. Linux - kali Linux重置密码

    1. recovery mode -> E 2. ro -> rw 3. plus init=/bin/bash 4. passwd root

  10. python中模块的制作

    1.import 模块名 2.from 模块名 import 类名(或方法名或全局变量) 3.from 模块名 import *   导入模块名下的所有类名,方法,全局变量 4.from 模块名 im ...