java学习-初级入门-面向对象①-面向对象概述-结构化程序设计
为了学习面向对象程序设计,今天我们先利用面向对象以前的知识,设计一个学生类。
要求进行结构化程序设计。
学生类: 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学习-初级入门-面向对象①-面向对象概述-结构化程序设计的更多相关文章
- java学习-初级入门-面向对象②-面向对象概述-面向对象程序设计
我们在 面向对象①中学习了,结构化程序设计. 今天我们一起学习面向对象程序设计. 学习面向对象程序设计就要了解,在面向对象中重要的知识点. 继承 . 多态 . 抽象 . 接口 我们会在接下 ...
- java学习-初级入门-面向对象⑥-类与对象-静态static
这次我们来学习静态(static) 知识点 1.静态方法只能调用静态变量 2.静态变量属于整个Class,会随着发生变化. 案例:定义一个自动增长的学生类. 题目要求: 定义一个学生类,除了姓名.性别 ...
- java学习-初级入门-面向对象⑤-类与对象-类与对象的定义和使用3
这次我们要做一个日期类Date类 主要目的是 1. 熟悉-->构造不同参数的函数 2.善于利用已有的函数!! 题目要求: Date类要求 可设定年月日 可转换为字符串,并可指定分隔符, ...
- java学习-初级入门-面向对象④-类与对象-类与对象的定义和使用2
我们继续学习类与对象,上一篇我们定义了 坐标类(Point), 这次我们在Point的基础上,创建一个圆类(Circle). 案例:创建一个圆类 题目要求: 计算圆的周长和面积:求判断两个圆的位置关 ...
- java学习-初级入门-面向对象③-类与对象-类与对象的定义和使用1
今天学习类与对象.先大致解释一下类与对象的含义. 对象:object 有物体这一概念,一切皆对象(物体),对象由静态的属性和动态的行为组成. 比如说水杯: 水杯的静态属性:材质,容量,质量,颜色 动态 ...
- Java入门-浅析Java学习从入门到精通【转】
一. JDK (Java Development Kit) JDK是整个Java的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具和Java基础的类库 ...
- 真正的Java学习从入门到精通
http://www.it.com.cn/f/edu/059/6/169189.htm 一. 工具篇JDK (Java Development Kit) JDK是整个Java的核心,包括了Java运行 ...
- Java学习从入门到精通(2) [转载]
Java Learning Path(二).书籍篇 学习一门新的知识,不可能指望只看一本,或者两本书就能够完全掌握.需要有一个循序渐进的阅读过程.我推荐Oreilly出版的Java系列书籍. 在这里我 ...
- Java性能测试从入门到放弃-概述篇
Java性能测试从入门到放弃-概念篇 辅助工具 Jmeter: Apache JMeter是Apache组织开发的基于Java的压力测试工具.用于对软件做压力测试.JMeter 可以用于对服务器.网络 ...
随机推荐
- AOP的基本认识
一.AOP的概念 AOP(Aspect Oriented Programming),即面向切面编程,可以说是OOP(Object Oriented Programming,面向对象编程)的补充和完善. ...
- 13. 为什么我们会需要 Pod?
13. 为什么我们会需要 Pod? 13.1 docker容器的本质 """ docker容器的本质 是进程. 主要通过 Namespace 做隔离,Cgroups 做限 ...
- 吴裕雄 python 神经网络——TensorFlow训练神经网络:不使用指数衰减的学习率
import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data INPUT_NODE = 784 ...
- JAVA 开学测试
package StudentScore; public class ScoreInformation { String stunumber; //学号 String name; //姓名 doubl ...
- js中的关键字与保留字
关键字就是指:js中用到的单词,比如var : function: 保留字是指:js以后可能会发展成为关键字的,先保留起来不让你用.比如class,要是给一个对象添加class:obj.classNa ...
- string类的具体实现
bigThree,注意拷贝构造函数的写法. #ifndef __MYSTRING__ #define __MYSTRING__ class String { public: String(); Str ...
- linux压缩包管理
1.gzip 文件 ----> .gz格式的压缩包 2.bzip2 文件 ----> .bz2格式的压缩包 3.tar -- 不使用z/j参数 该命令只能对文件或目录打包 参数: c -- ...
- 「USACO5.5」矩形周长Picture
题目描述 墙上贴着许多形状相同的海报.照片.它们的边都是水平和垂直的.每个矩形图片可能部分或全部的覆盖了其他图片.所有矩形合并后的边长称为周长. 编写一个程序计算周长. 如图1所示7个矩形. 如图2所 ...
- Linux - kali Linux重置密码
1. recovery mode -> E 2. ro -> rw 3. plus init=/bin/bash 4. passwd root
- python中模块的制作
1.import 模块名 2.from 模块名 import 类名(或方法名或全局变量) 3.from 模块名 import * 导入模块名下的所有类名,方法,全局变量 4.from 模块名 im ...