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

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

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

运行结果:

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

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

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

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

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

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. iOS-动态库创建(详解)

    https://blog.csdn.net/LisztCoder/article/details/78132147 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原 ...

  2. ubuntu中数据迁移的时候出现ImportError错误

    今天在Flask框架中使用数据库迁移的时候出现了如下错误: ImportError: libmysqlclient.so.20: cannot open shared object file: No ...

  3. python opencv:色彩空间

    RGB色彩空间 常见的色彩空间 色彩空间的转换 cv2.cvtColor(image, 转换选项) 常见的两个颜色转换 HSV与RGB YUV与RGB inRange方法 函数参数: 第一个参数:是原 ...

  4. 解决前端项目启动时报错:Use // eslint-disable-next-line to ignore the next line.

    首先说一下这个问题产生的原因: 项目创建时设置了使用 eslint 进行代码规范检查. 解决办法: 找到webpack.base.conf.js文件,并且将下满这行代码注释掉. ...(config. ...

  5. ubuntu安装zsh终端

    搬砖博文:https://blog.csdn.net/lxn9492878lbl/article/details/80795413 1.安装zsh sudo apt-get install zsh 2 ...

  6. 吴裕雄--天生自然TensorFlow2教程:函数优化实战

    import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D def himme ...

  7. JAXB - java xml解析

    常用API JAXBContext类,是应用的入口,通过该类创建序列化和反序列化对象,也即编组对象和解组对象: Marshaller 编组接口,将Java对象序列化为XML数据: Unmarshall ...

  8. VS中编码格式的问题(待总结)

    今天又遇到这样的事情了,VS中代码明明是正确的,却报某个变量未定义.百思不得解,前面增加了一个换行之后,竟然又神奇般的复原了. 最后确认是编码格式的问题,后来把有问题的那部分代码粘贴到微软的" ...

  9. redhat7.6 crontab 服务,周期性任务

    系统默认安装开启 systemctl status crond.service 查看周期性任务(最多每隔1分钟做周期性任务) crontab   -l 系统自身的周期性任务 配置周期性任务 cront ...

  10. Java日期时间API系列10-----Jdk8中java.time包中的新的日期时间API类的DateTimeFormatter

    1.DateTimeFormatter final修饰,线程安全,用于打印和解析日期-时间对象的格式化程序. 创建DateTimeFormatter: DateTimeFormatter dateTi ...