面向对象案例:电影院

@TOC

思路

在这里插入图片描述

代码

结构

在这里插入图片描述

具体代码

Movie.java

public class Movie {
    //一共七个
    private int id;
    private String name;
    private double price;
    private double score;
    private String director;
    private String actors;
    private String info;

    //get和set

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    public double getScore() {
        return score;
    }

    public void setScore(double score) {
        this.score = score;
    }

    public String getDirector() {
        return director;
    }

    public void setDirector(String director) {
        this.director = director;
    }

    public String getActors() {
        return actors;
    }

    public void setActors(String actors) {
        this.actors = actors;
    }

    public String getInfo() {
        return info;
    }

    public void setInfo(String info) {
        this.info = info;
    }

    //设计private就需要有构造器,方便访问
    //有参 : 为了创建对象时赋值
    public Movie(int id, String name, double price, double score, String director, String actors, String info) {
        this.id = id;
        this.name = name;
        this.price = price;
        this.score = score;
        this.director = director;
        this.actors = actors;
        this.info = info;
    }
    //无参: 实体类必须有
    public Movie(){}

}

MoiveOperator.java

public class MovieOperator {
    //业务操作类

    private Movie[] movies;

    //有参构造  不太懂为什么
    public MovieOperator(Movie[] movies) {
        this.movies = movies;
    }

    //方法:有什么需求就写什么方法
    //需求1:展示出全部电影的信息
        //不需要传参数 返回值为void
    public void printAllMovies(){
        System.out.println("以下是电影院所有电影信息:");
        for(int i = 0; i<movies.length; i++){
            System.out.println("-------------------------");
            System.out.println(movies[i].getId());
            System.out.println(movies[i].getName());
            System.out.println(movies[i].getActors());
            System.out.println(movies[i].getInfo());
            System.out.println(movies[i].getPrice());
            System.out.println(movies[i].getDirector());
            System.out.println(movies[i].getScore());
        }
    }

    //需求2:根据id查询电影
        //参数 id;返回值为void
    public void selectMovie(int id){
        for(int i = 0;i < movies.length;i++){
            //id和数组下标不一样,不能直接拿接收的参数和数组下标进行比较
            if(id == movies[i].getId()){
                System.out.println(movies[i].getId());
                System.out.println(movies[i].getName());
                System.out.println(movies[i].getActors());
                System.out.println(movies[i].getPrice());
                return;//非常巧妙,找到了就不在执行循环,直接结束整个方法
            }
        }
        System.out.println("您输入的电影id有误");
    }
}

Test.java

import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        //写一个电影数组
        Movie[] movies = new Movie[4];

        //每一个数组对象 都是一个movie类型的对象,所以要new
        movies[0] = new Movie(1, "《热辣苦瓜》", 36.9, 8.8, "甄玲", "张三,里斯", "年度好片"){};
        movies[1] = new Movie(2, "《热辣西瓜》", 48.9, 9.8, "甄玲", "张三,瓦内", "年度超好片"){};
        movies[2] = new Movie(3, "《热辣甜瓜》", 25.3, 6.8, "甄玲", "张三,王五", "年度烂片"){};
        movies[3] = new Movie(4, "《热辣蜜瓜》", 36.9, 3.8, "甄玲", "张三,二狗", "年度动作片"){};

        //创建一个业务控制器类
        MovieOperator operator = new MovieOperator(movies);
        //operator.printAllMovies();
        //System.out.println("----------");
      // operator.selectMovie(1);
        //到上面结束已经完成了基本的功能,下面写一下交互 正规一点的

        System.out.println("----------欢迎来到电影院------------");
        Scanner sc = new Scanner(System.in);
        while(true) {
            System.out.println("输入1查看所有影片;输入2根据id查找电影;输入3退出程序~~~");
            int num = sc.nextInt();
            switch(num) {
                case 1:
                    operator.printAllMovies();
                    break;
                case 2:
                    System.out.println("请输入想要查询的电影id:");
                    int id = sc.nextInt();
                    operator.selectMovie(id);
                    break;
                case 3:
                    System.out.println("退出程序。");
                    return;
                default:
                    System.out.println("您输入的命令有问题,请检查后再输入~~~");
                    break;
            }
        }
    }
}

结果

在这里插入图片描述
在这里插入图片描述

反思

这个代码这是第二遍,写了思路以后比第一遍熟练一点,但是还是不太懂个别为什么要写,比如MovieOperator类中的有参构造,不懂为什么。
还有为什么是业务类对象operator打点调方法,我最开始以为是 直接数组对象打点调方法。
继续学习。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/775992.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2024年【湖北省安全员-C证】考试资料及湖北省安全员-C证考试试卷

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 湖北省安全员-C证考试资料是安全生产模拟考试一点通生成的&#xff0c;湖北省安全员-C证证模拟考试题库是根据湖北省安全员-C证最新版教材汇编出湖北省安全员-C证仿真模拟考试。2024年【湖北省安全员-C证】考试资料及…

解决@Autowired 注入service 到 static接口方法的问题

1 对类进行 Component 定义 2 定义service及 static service Component public class OperationalJudgment {private static MemberService memberService;Resourceprivate MemberService service;PostConstructpublic void init() {memberServicethis.service;}3 static方法中…

PTrade常见问题系列3

量化允许同时运行回测和交易的策略个数配置。 量化允许同时运行回测和交易的策略个数在哪里查看&#xff1f; 在量化服务器/home/fly/config/custom_config_conf文件中&#xff0c;其中运行回测的策略个数由backtest_switch&#xff08;是否限制普通回测个数&#xff09;及ba…

AutoCAD 2022 for Mac/Win版 安装包下载

AutoCAD 2022 是由 Autodesk 开发的一款计算机辅助设计&#xff08;CAD&#xff09;软件。它广泛应用于工程、建筑、制造、动画和媒体娱乐等多个领域。 系统要求&#xff1a; 操作系统&#xff1a;Windows 10 或更高版本。 处理器&#xff1a;Intel 或 AMD 处理器&#xff0c…

算法库应用--寻找最长麦穗

学习贺利坚老师算法库 数据结构例程——串的顺序存储应用_使用顺序串存储身份证号-CSDN博客 本人详细解析博客 串的顺序存储的应用实例二_串的顺序存储应用-CSDN博客 版本更新日志 V1.0: 在原有的基础上, 进行优化名字, 并且有了相应的算法库作为支撑, 我使用了for循环来代替老…

第N7周:seq2seq翻译实战-pytorch复现-小白版

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 理论基础 seq2seq&#xff08;Sequence-to-Sequence&#xff09;模型是一种用于机器翻译、文本摘要等序列转换任务的框架。它由两个主要的递归神经网络&#…

HTML【详解】超链接 a 标签的四大功能(页面跳转、页内滚动【锚点】、页面刷新、文件下载)

超链接 a 标签主要有以下功能&#xff1a; 跳转到其他页面 <a href"https://www.baidu.com/" target"_blank" >百度</a>href&#xff1a;目标页面的 url 地址或同网站的其他页面地址&#xff0c;如 detail.htmltarget&#xff1a;打开目标页面…

全面助力巴西slot游戏包推广本土网盟dsp流量广告优势

全面助力巴西slot游戏包推广本土网盟dsp流量广告优势 在巴西这片充满活力的土地上&#xff0c;电子游戏市场蓬勃发展&#xff0c;成为娱乐产业的重要组成部分。随着网络技术的不断进步和移动互联网的普及&#xff0c;巴西玩家对于电子游戏的热情愈发高涨&#xff0c;游戏市场呈…

Streaming local LLM with FastAPI, Llama.cpp and Langchain

题意&#xff1a; 使用FastAPI、Llama.cpp和Langchain流式传输本地大型语言模型 问题背景&#xff1a; I have setup FastAPI with Llama.cpp and Langchain. Now I want to enable streaming in the FastAPI responses. Streaming works with Llama.cpp in my terminal, but…

google 邮件信息收集

主要介绍通过google和fofax对目标进行邮件信息收集 chrome插件 email-whatsapp-extractor link-klipper-extract-all bulk-url-opener-extension email-whatsapp-extractor 使用正则表达式&#xff0c;获取访问页面内所有的email邮箱和whatsapp号码&#xff0c;以表格的形式导…

C电池 和 D 电池的作用和类型详解及其之间的区别

C 和 D 电池是我们日常生活中必不可少的部件。它们通常用于高功率设备。例如手电筒和玩具。 D 型电池和 C 型电池是两种常见的电池类型。它们是一次性圆柱形电池。您可以在很多设备上使用它们。虽然它们有很多相似之处&#xff0c;但它们也有不同的特点。这些特点使它们适合某…

设置和取消Excel“打开密码”的3种方法

在日常工作中&#xff0c;Excel文件中常常包含敏感数据。为了防止未经授权的访问&#xff0c;给Excel文件设置打开密码是一个非常有效的方法。下面分享3种设置Excel打开密码的方法&#xff0c;以及如何取消这些密码。 先来看看设置Excel打开密码的3种方法。 方法一&#xff1…

CSRF漏洞攻击

05-CSRF 1 CSRF概述 1.1 概述 CSRF (Cross-Site Request Forgery) 跨站请求伪造&#xff0c;也可称为一键式攻击 (one-click-attack)&#xff0c;通常缩写为 CSRF 或者 XSRF。 CSRF 攻击是一种挟持用户在当前已登录的浏览器上发送恶意请求的攻击方法。相对于XSS利用用户对指…

对FPGA开发流程系统的学习

FPGA 开发流程&#xff1a; HDL&#xff08;Hardware Design Language&#xff09;和原理图是两种最常用的数字硬件电路描述方法&#xff0c;HDL 设计法具有更好的可移植性、通用性和模块划分与重用性的特点&#xff0c;在目前的工程设计中被广泛使用。所以&#xff0c;我们在…

JDK新特性之协程

在 JVM 中&#xff0c;java 线程直接映射内核线程&#xff0c;因此 java 线程的创建、销毁和调度都要依赖内核态的操作&#xff08;系统调用&#xff09;。而协程是真正的用户线程&#xff0c;如上图所示很多的协程可以映射很少的几个内核线程&#xff0c;并且协程的创建、销毁…

【kubectl详解】最全的kubectl命令用法

文章目录 简介一.命令帮助翻译1.1.基本命令&#xff08;初学者&#xff09;&#xff1a;1.2.基本命令&#xff08;中级&#xff09;&#xff1a;1.3.部署命令&#xff1a;1.4.群集管理命令&#xff1a;1.5.疑难解答和调试命令&#xff1a;1.6.高级命令&#xff1a;1.7.设置命令…

腾讯混元文生图开源模型推出小显存版本,仅需 6G 显存即可运行

腾讯宣布开源小显存版本的混元文生图模型&#xff0c;降低至 6G 显存即可运行&#xff0c;方便个人电脑本地部署。同时&#xff0c;混元 DiT 模型升级至 1.2 版本&#xff0c;图片质感与构图提升。混元 Captioner 打标模型也正式开源&#xff0c;支持中英文双语&#xff0c;优化…

linux ifconfig未找到命令

linux ifconfig未找到命令 1、使用yum安装net-tools yum install net-toolsyum报未找到命令请查看文章vim未找到命令&#xff0c;且yum install vim安装vim失败 2、安装后使用ifconfig命令 ifconfig

数据库、创建表、修改表

一、数据库 1、登陆数据库 2、创建数据库zoo 3、修改数据库zoo字符集为gbk 4、选择当前数据库为zoo 5、查看创建数据库zoo信息 6、删除数据库zoo 二、创建表 1、创建一个名称为db_system的数据库 2、在该数据库下创建两张表&#xff0c;具体要求如下 员工表 user…

智慧校园-资产管理系统总体概述

智慧校园资产管理系统是面向教育机构设计的一体化数字平台&#xff0c;其核心目标在于通过先进的信息技术手段&#xff0c;全面优化校园内部的资产管理流程。该系统致力于提升资产管理的效率与透明度&#xff0c;同时降低成本并确保所有操作符合财务及审计规范&#xff0c;为校…