[升级版][Java作业]创建PC对象展示cpu速度和硬盘容量

发布于:2022-10-27 ⋅ 阅读:(368) ⋅ 点赞:(0)

//注意:本篇既包含了实现题目要求,但又运用了swing组件将显示内容做了升级,简单几个操作让你在同学间脱颖而出。但是基本逻辑代码还是一样的。

题目如图:

本题主要考察由UML图创建类及基本调用,让新学者掌握抽象类并代码实现

包的整体结构如图:

   

 

先完成基本逻辑代码:(也就是先完成题目)

根据UML图,我们得先创建CPU类,并且该类有speed属性,还有setSpeed()、getSpeed()方法。

public class CPU {
    //可以先写属性,再用快捷键(ALT+Shift+Insert)里的get和set直接创建方法,后面的也一样
    private int speed;
    //给CPU类中的speed属性赋值
    public void setSpeed(int speed){
        //将形参赋值给成员变量(CPU类中的速度)
        this.speed = speed ;
    }
    //将CPU类中的speed属性返回给调用它的方法
    public int getSpeed(){
        return this.speed;
    }
}

再创建HardDisk类,该类下有amount属性,需实现的方法有 setAmount()、getAmount().

public class HardDisk {
    //容量属性
    private int amount;
    //设置硬盘的容量
    public void setAmount(int amount){
        //this 可指代当前类, .调用它的属性和方法
        this.amount = amount ;
    }
    //返回硬盘容量
    public int getAmount(){
        return this.amount;
    }

 最后是我们的PC类,该类有 cpu 和 HD 属性,还有set、get、show 等方法。

public class PC {
    //CPU类型的属性(因为在一个包下,IDEA能自动识别,就不用自动导包)
    private CPU cpu;
    //HardDisk类型的属性
    private HardDisk HD;
    //设置cpu属性的值
    public void setCpu(CPU cpu){
        //给当前类中属性赋值
        this.cpu = cpu;
    }
    //设置HD属性的值
    public void setHardDisk(HardDisk hardDisk){
        this.HD = hardDisk;
    }
    //就是将两个 getcpu 和 getHD 结合起来并输出
    public void show(){
        //之前写cpu时speed属性是 private 私密类型,所以需要写 set,get 改变和获取他的值
        System.out.println("当前PC的cpu速度为"+this.cpu.getSpeed());
        System.out.println("当前PC的硬盘容量为"+this.HD.getAmount());
    }
}

最后根据题目要求在主类中创建对象,调用他们的方法。

public class Main {
    public static void main(String[] args) {
        PC pc = new PC();
        //创建一个CPU,并给他的属性赋值
        CPU cpu = new CPU();
        cpu.setSpeed(2200);
        //将赋值后的CPU当成参数传给pc
        pc.setCpu(cpu);
        //创建一个硬盘,并给他的属性赋值
        HardDisk HD = new HardDisk();
        HD.setAmount(200);
        //再将赋值好后的硬盘传给pc,当成pc的属性
        pc.setHardDisk(HD);

        //最后使用show()方法查看是否赋值成功
        pc.show();
    }
}

运行结果如下:

 

本题题目到这已经结束了,但老师是不会注意到你滴!这时候就需要一个亮眼的窗口了。

Swing组件大部分老师是不会教的,当然以后实际开发中也不会使用到,这里使用仅仅是 秀

将主程序中的实现代码先复制再全部干掉,我们要在窗口类中去实现了。

主程序代码:

public class Main {
    public static void main(String[] args) {
         new Dialog1();

    }
}

new的这个是我们自己创建的类,可以看作是窗口。所以接下来我们要去写 Dialog1 这个类。

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;

public class Dialog1 extends JFrame {
   //构造函数构造一个窗口,因为我们在主函数new这个对象时会执行构造函数
    public Dialog1(){
        JFrame frm = new JFrame();
        //设置面板的显示位置和大小
        frm.setBounds(200,100,400,300);
        frm.setTitle("pc查看器");
        JButton jButton = new JButton("查看cpu");
        jButton.setBounds(50,150,120,60);
        //点击查看cpu按钮则显示查看cpu页面
        jButton.addActionListener(new AbstractAction() {
            @Override
            public void actionPerformed(ActionEvent e) {
                new Dialog3();
            }
        });

        //创建查看硬盘按钮
        JButton jButton1 = new JButton("查看硬盘");
        jButton1.setBounds(250,150,120,60);
        //点击显示查看硬盘页面
        jButton1.addActionListener(new AbstractAction() {
            @Override
            public void actionPerformed(ActionEvent e) {
                new Dialog2();
            }
        });

        //像容器添加两个按钮
        frm.add(jButton);
        frm.add(jButton1);
        //将面板设置为可见
        frm.setVisible(true);
        //设置布局方式
        frm.setLayout(new FlowLayout(FlowLayout.LEADING,60,60));
        //设置关闭按钮
        frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    }

}

效果如下:

 我们点击 查看cpu 按钮时,会执行 new Dialog3(); 所以我们显示 cpu速度 的逻辑代码要在  Dialog3的构造函数中写。

import javax.swing.*;
import java.awt.*;

//查看cpu速度
public class Dialog3 {
    public Dialog3(){

        JFrame jFrame = new JFrame();
        jFrame.setBounds(50, 50, 600, 300);
        jFrame.setLayout(new GridLayout(4,3,10,10));

        /*
        实际代码块(之前写在main方法里的)
         */
        //实例化一个PC
        PC pc = new PC();
        //创建一个CPU,并给他的属性赋值
        CPU cpu = new CPU();
        cpu.setSpeed(2200);
        //将赋值后的CPU当成参数传给pc
        pc.setCpu(cpu);
        //创建一个硬盘,并给他的属性赋值
        HardDisk HD = new HardDisk();
        HD.setAmount(200);
        //再将赋值好后的硬盘传给pc,当成pc的属性
        pc.setHardDisk(HD);

        JLabel text = new JLabel("当前PC的CPU运行速度为"+pc.getCpu().getSpeed());
        text.setSize(80,80);
        text.setLocation(20,150);
        //设置字体
        text.setFont(new Font("微软雅黑", Font.BOLD, 40));

        jFrame.add(text);
        jFrame.setVisible(true);
    }
}

由于这里是分开展示的,所以得在pc类中补充getCpu()方法,直接使用快捷键即可

下面的原因也要一并补充getHD()方法。

接下来是Dialog2,和上面差不多

import javax.swing.*;
import java.awt.*;

public class Dialog2 {
    public Dialog2(){
        JFrame jFrame = new JFrame();
        jFrame.setBounds(50, 50, 600, 300);
        jFrame.setLayout(new GridLayout(4,3,10,10));

        /*
        实际代码块
         */

        //实例化一个PC
        PC pc = new PC();
        //创建一个CPU,并给他的属性赋值
        CPU cpu = new CPU();
        cpu.setSpeed(2200);
        //将赋值后的CPU当成参数传给pc
        pc.setCpu(cpu);
        //创建一个硬盘,并给他的属性赋值
        HardDisk HD = new HardDisk();
        HD.setAmount(200);
        //再将赋值好后的硬盘传给pc,当成pc的属性
        pc.setHardDisk(HD);

        JLabel text = new JLabel("当前PC的硬盘容量为"+pc.getHD().getAmount());
        text.setSize(80,80);
        text.setLocation(20,150);
        //设置字体
        text.setFont(new Font("微软雅黑", Font.BOLD, 40));

        jFrame.add(text);
        jFrame.setVisible(true);
    }
}

运行结果:

 

完成!

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到