Java第二阶段---10方法带参---第三节 面向对象和面向过程的区别

1.案例

2.代码实现

面向过程

java 复制代码
import java.util.Scanner;

/**
 * Procedure Oriented Programming 面向过程编程
 */

public class POP {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while(true){
            System.out.println("1.学生成绩管理");
            System.out.println("2.学生选修管理");
            System.out.println("3.退出系统");
            System.out.println("请选择:");
            int input = sc.nextInt();
            if(input == 1){
                outer:
                while(true){
                    System.out.println("1.增加成绩");
                    System.out.println("2.修改成绩");
                    System.out.println("3.删除成绩");
                    System.out.println("4.增加查询成绩");
                    System.out.println("5.返回主菜单");
                    System.out.println("请选择菜单编号");
                    int  order = sc.nextInt();
                    switch(order){
                        case 1 :
                            System.out.println("你选择了增加成绩");
                            break;
                        case 2 :
                            System.out.println("你选择了修改成绩");
                            break;
                        case 3 :
                            System.out.println("你选择了删除成绩");
                            break;
                        case 4 :
                            System.out.println("你选择了查询成绩");
                            break;
                        case 5 :
                            break outer;
                    }
                }
            }else if(input ==2){
                System.out.println("你选择了选课系统");
            }else{
                System.out.println("感谢使用XX系统");
                break;
            }
        }



    }
}

面向对象

分析:

a.该过程涉及到的对象(事物)有两个:用户和菜单

b.用户拥有执行增删改查的动作

java 复制代码
public class Menu {

    public int order;//编号

    public String name;

    public Menu(int order,String name){
        this.order=order;
        this.name=name;
    }
    public void show(){
        System.out.println(order + "." + name);
    }
}
java 复制代码
public class User {

    public void addScore(){
        System.out.println("你选择了增加成绩");
    }

    public void deleteScore(){
        System.out.println("你选择了删除成绩");
    }

    public void updateScore(){
        System.out.println("你选择了修改成绩");
    }

    public void searchScore(){
        System.out.println("你选择了查询成绩");
    }
}
java 复制代码
import java.util.Scanner;

/**
 * Object Oriented Programming 面对对象编程
 */
public class OOP {

    public static Menu[] mainMenus = {
            new Menu(1,"学生成绩管理"),
            new Menu(2,"学生选课管理"),
            new Menu(3,"退出系统")
    };

    public static Menu[] secondMenus = {
            new Menu(1,"增加成绩"),
            new Menu(2,"修改成绩"),
            new Menu(3,"删除成绩"),
            new Menu(4,"查询成绩"),
            new Menu(5,"返回主菜单")
    };

    public static Scanner sc = new Scanner(System.in);

    public static User user = new User();

    public static void main(String[] args) {
       gotoMain();

    }

    //去主菜单
    public static void gotoMain(){
        showMenus(mainMenus);//显示主菜单
        int number = sc.nextInt();
        if(number == 1){
            gotoSecond();
        }else if(number == 2){
            System.out.println("你选择了学生选课管理");
            gotoMain();//去主菜单
        }else{
            System.out.println("感谢使用XX系统");
        }
    }

    //去二级菜单
    public static void gotoSecond(){
        showMenus(secondMenus);//显示二级菜单
         int order = sc.nextInt();
         switch(order){
             case 1:
                 user.addScore();//用户增加成绩
                 gotoSecond();
                 break;
             case 2:
                 user.updateScore();//用户修改成绩
                 gotoSecond();
                 break;
             case 3:
                 user.deleteScore();//用户删除成绩
                 gotoSecond();
                 break;
             case 4:
                 user.searchScore();//用户查询成绩
                 gotoSecond();
                 break;
             case 5:
                 gotoMain();
                 break;
         }
    }

    public static void showMenus(Menu[] menus){
        for(int i=0;i<menus.length;i++){
            menus[i].show();;
        }
        System.out.println("请选择菜单编号:");
    }
}

对比

面向过程侧重点在过程的实现上。面向对象的侧重点在对象上,需要利用对象的行为来完成过程的组装。

相关推荐
凡人的AI工具箱2 分钟前
15分钟学 Python 第38天 :Python 爬虫入门(四)
开发语言·人工智能·后端·爬虫·python
loss_rose77712 分钟前
【场景题】秒杀系统设计以及解决方案
java
码农超哥同学13 分钟前
Python知识点:在Python编程中,如何使用Gensim进行主题建模
开发语言·python·面试·编程
奔跑吧邓邓子16 分钟前
JSON 全知全解:深入探索 JSON 的奥秘
开发语言·python·json
java_heartLake21 分钟前
设计模式之解释器模式
java·设计模式·解释器模式
风清扬_jd37 分钟前
Chromium 硬件加速开关c++
java·前端·c++
哎呦没37 分钟前
Spring Boot框架在医院管理中的应用
java·spring boot·后端
苓诣38 分钟前
Java Vector类
java·数据结构
陈序缘1 小时前
Go语言实现长连接并发框架 - 消息
linux·服务器·开发语言·后端·golang
络71 小时前
Spring14——案例:利用AOP环绕通知计算业务层接口执行效率
java·后端·spring·mybatis·aop