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("请选择菜单编号:");
    }
}

对比

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

相关推荐
也许明天y9 分钟前
Spring AI 核心原理解析:基于 1.1.4 版本拆解底层架构
java·后端·spring
小红的布丁20 分钟前
BIO、NIO、AIO 与 IO 多路复用:select、poll、epoll 详解
java·数据库·nio
Elastic 中国社区官方博客21 分钟前
在 Elastic 中使用 OpenTelemetry 内容包可视化 OpenTelemetry 数据
大数据·开发语言·数据库·elasticsearch·搜索引擎
lifallen21 分钟前
Flink Checkpoint 流程、Barrier 流动与 RocksDB 排障
java·大数据·flink
C+++Python23 分钟前
如何学习Python的应用领域知识?
开发语言·python·学习
疯狂打码的少年26 分钟前
【Day12 Java转Python】Python工程的“骨架”——模块、包与__name__
java·开发语言·python
希望永不加班30 分钟前
SpringBoot 自定义 Starter:从零开发一个私有 Starter
java·spring boot·后端·spring·mybatis
全栈开发圈35 分钟前
新书速览|MATLAB数据分析与可视化实践:视频教学版
开发语言·matlab·数据分析
网域小星球41 分钟前
C 语言从 0 入门(二十二)|内存四区:栈、堆、全局、常量区深度解析
c语言·开发语言
悟空码字1 小时前
别再System.out了!这份SpringBoot日志优雅指南,让你告别日志混乱
java·spring boot·后端