从一个猜单词的小程序开始---征服OOP的思维方式01

记得刚开始学Java的时候看到MOOC上有个老师写了一个猜数字的游戏,出于兴趣,小风就写了一个猜单词的小游戏来描述

OOP编程的思维方式。PS:OOP(Object Oriented Programing,面向对象程序设计)可以理解为计算机编程的一种架构。

好了,不BB了。开始了!

首先我们按照常规的面向过程的思维方式来分析这个程序。仅仅定义Demo一个类,该类中存放所有的逻辑代码

由于便于理解,程序先成员的位置上定义两个字符串数组english和chinese。即一个用来存储英文单词,一个用来存储单词对应的中文意思。

String english = {"deprecated", "category", "figure", "confirm", "profile", "argument"};//用来存储英文单词,你可以自己设置存储多少个
String chinese = {"不赞成", "类型", "数字", "确认", "侧面", "争论"};//用来存放对应的中文意思,

注意顺序保持一致。

接着,通过Math类中的random方法获取一个范围在0到english长度之间的随机数i,然后将i作为索引,打印出english[i];并返回chinese[i].

将此部分代码封装成show方法。如下所示:

// 随机从arr1中抽取一个单词显示在控制台,并返回他的中文意思
    public String show() {
        int i = (int) (Math.random() * arr1.length);// 产生一个随机数
        System.out.println(arr1[i]);
        return arr2[i];
    }

接下来需要实现用户通过键盘来输入一个字符串,在Java中的util包下有一个Scanner类,该类是JDK5.0之后新增的特性,用来实现用户从键盘输入信息。

这里我们便需要用到Scanner类。因此也要在程序的开头带入该类。同样这部分代码我们也将之封装成方法。

复制代码
// 用户的输入
    public String input() {
        Scanner in = new Scanner(System.in);
        // 接受用户的输入值
        String sum = in.nextLine();
        // 返回用户输入的值
        return sum;
    }
复制代码

有了用户的输入,下一步自然就是将用户的输入和show方法返回的值进行比较了,这里有个代码优化的小技巧,自己慢慢体会。

复制代码
// 判断用户的输入
    public boolean judge(String str1, String str2) {
        /*
        //这样写便于理解,但比较消耗内存空间
          boolean flag = false;
        if (str1.equals(str2))
        {
            flag = true;
        }
        return flag;
        */
    
        //可以这样简化代码,稍微节省内存
        /*boolean flag = str1.equals(str2);
        return flag;*/
        
        //这样更加简洁,一行代码就搞定!更加节省内存。推荐这样用,爽不爽!!!
        return    str1.equals(str2);
    }
复制代码

好了,基本的过程似乎已经完成了!不过为了程序的体验,这里我将用户猜单词的结果显示单独封装成一个 方法

原因是:你想想,考试的时候你每做一道题就能够知道你的答案对不对么?所以我这里将用户猜的结果单独封装成一个方法,当需要做一个题就知道答案正不正确的情况下

调用就可以了。当要模拟考试的情况时,直接根据judge方法返回的布尔值记录分数即可,不调用该方法。

复制代码
// 给用户反馈信息
    public void showMessage(boolean flag) {
        if (flag) {
            System.out.println("恭喜你答对了!");
            
        } else {
            System.out.println("不好意思,你答错了");
        }
        return;
    }
复制代码

好了,程序到这里就基本已经完成了。剩下的就剩下我们的程序的入口main方法了。在main里面创建Demo类的对象d。然后通过d去按顺序调用逻辑方法即可

代码如下:

复制代码
public static void main(String[] args) {
    Demo d = new Demo();
        System.out.println("欢迎来记单词!");
        //调用show方法用来显示出现的单词
        String str1=d.show();
        System.out.println("请输入他的中文意思:");
        //用户输入中文意思
        String str2= d.input();
        //判断用户的输入是否正确
        boolean ans = d.judge(str1, str2);
        //将用户猜的信息输出
        d.showMessage(ans);
    }
复制代码

嗯!程序已经完成了。下面就可以试试运行的结果了,下图是我运行的结果:

嗯,还行,程序能够正常的跑起。不过我想了想,觉得似乎有哪里不对啊。一般的开发中,main方法里含有大量的逻辑代码貌似并不理智吖。于是下面来尽行改进!

复制代码
//执行函数
    public static void start() {
        Demo d = new Demo();
        System.out.println("欢迎来记单词!");
        //调用show方法用来显示出现的单词
        String str1=d.show();
        System.out.println("请输入他的中文意思:");
        //用户输入中文意思
        String str2= d.input();
        //判断用户的输入是否正确
        boolean ans = d.judge(str1, str2);
        //将用户猜的信息输出
        d.showMessage(ans);
    }
复制代码

将主函数中大量的逻辑代码进行抽取,单独封装到一个成员方法中,接着直接在main方法中调用该方法即可。

public static void main(String[] args) {
        //开启执行函数
        start();
    }

看,这样main方法中就只有一行代码!这样是不是很完美!

好了,以上就是以面向过程的思维方式编写的整个猜单词的小程序,快去试试吧!

PS:由于用的Java本来就是一种OOP语言,上述代码的逻辑中其实也带有一丝OOP的思想

下一篇文章我将用面向对象的思维方式来用代码描述这个小程序。

猜你喜欢

转载自blog.csdn.net/qq_38701478/article/details/79823252
今日推荐