//注意:本篇既包含了实现题目要求,但又运用了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当成参数传给pcpc.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() {@Overridepublic void actionPerformed(ActionEvent e) {new Dialog3();}});//创建查看硬盘按钮JButton jButton1 = new JButton("查看硬盘");jButton1.setBounds(250,150,120,60);//点击显示查看硬盘页面jButton1.addActionListener(new AbstractAction() {@Overridepublic 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方法里的)*///实例化一个PCPC pc = new PC();//创建一个CPU,并给他的属性赋值CPU cpu = new CPU();cpu.setSpeed(2200);//将赋值后的CPU当成参数传给pcpc.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));/*实际代码块*///实例化一个PCPC pc = new PC();//创建一个CPU,并给他的属性赋值CPU cpu = new CPU();cpu.setSpeed(2200);//将赋值后的CPU当成参数传给pcpc.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);}
}

运行结果:

完成!

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

  1. java动态创建代理对象

    代理模式在开发过程中有着众多好处,现在我先给大家首先介绍什么是代理模式,以及java的中代理模式的使用,最后再看代理模式的概念作用等自然就会明白了 1.动态创建代理对象 >>>> ...

  2. Java快速创建大量对象_3分钟 快速理解JVM创建对象的步骤!

    原标题:3分钟 快速理解JVM创建对象的步骤! 我们平时创建一个对象只需要new.然而我们知道对象的创建到底经历了哪些呢?实际上只不过仅仅的3步就完成了.先来看看完整的创建过程,再来一步一步的分析. ...

  3. java的创建管理员对象_java--更改管理员密码,请列位帮忙看看有没有更好的实现方式...

    需求说明:输入旧的用户名和密码,如果正确,方有权限更新,从键盘获取新密码,进行更新 实现思路:1.创建管理员类的对象:2.利用while实现循环执行 import java.util.Scanner; ...

  4. java 获取cup序列号_Qt获取CPU编号和硬盘序列号

    windows下执行命令除了用cmd之外,还有个东西叫WMIC,非常强大,可以通过他获取很多信息,包括硬件信息. QString frmMain::getWMIC(const QString & ...

  5. java 获取对象方法有哪些方法有哪些方法有哪些_Java中创建String 对象的方法有哪些...

    Java中创建String 对象的方法有哪些 发布时间:2020-11-25 16:45:30 来源:亿速云 阅读:71 作者:Leah 这篇文章将为大家详细讲解有关Java中创建String 对象的 ...

  6. java创建的对象存储到什么地方?

    java中创建的对象存储于堆中,但对于基本类型 java不是用new来创建变量的,而是创建一个并非引用的自动变量.这个变量直接存储"值",并存储于堆栈中. 程序运行时,对象是怎么进 ...

  7. 【JAVA程序设计】用类描述计算机中CPU的速度和硬盘的容量。

    用类描述计算机中CPU的速度和硬盘的容量.要求Java应用程序有4个类,名字分别是PC,CPU和HardDisk和Test,其中Test是主类.  PC类与CPU和HardDisk类关联的UML图( ...

  8. java获取windows系统信息(CPU,内存,文件系统,硬盘大小)

    Java怎么获取windows系统信息,如CPU,内存,文件系统,硬盘大小? java实现这些功能的确有点麻烦,没有C语言方便.java在windows这方还是弱了一点.不过麻烦是麻烦点,针对这些功能 ...

  9. java 作业 老师与教员信息 类与对象

    java 作业 老师与教员信息 类与对象 需求 逻辑图 学生类 public class Student {int age; // 年龄String className; // 班级名称String ...

最新文章

  1. .NET Remoting Basic(6)-配置文件
  2. web.xml中load-on-startup的作用
  3. 人声处理_10款免费的人声处理工具
  4. bpmn如何查看代码 idea_提高程序员效率的IDEA插件推荐(五大神器)
  5. vue取数据第一个数据_我作为数据科学家的第一个月
  6. html5 自动保存 提示,html5+ SQLite提示数据表不存在
  7. effective C++ 条款 11:在operator= 处理‘自我赋值’
  8. idea部署项目com.intellij.javaee.oss.admin.jmx.JmxAdminException-未使用最新版本的war包
  9. CentOs6.6安装Python3
  10. java实现文件上传下载功能_java文件上传下载功能实现代码
  11. Vue经典开源项目汇总
  12. 影视观影神器:ZY Player for Mac使用教程
  13. 1_数据分析应掌握的Python基础
  14. 计算机网络之应用层(DNS域名系统)
  15. vue3+ts+vite 路径别名配置
  16. C#语言实例源码系列-实现屏幕放大器和取色
  17. IE 浏览器中不能使remove删除节点的解决方法
  18. 「AI芯片公司」比特大陆的路线图上,除了四款TPU还有在这三个产业落地的野心
  19. Maven assembly打包文件被覆盖问题
  20. 哈工大软件构造课程知识点总结(二)

热门文章

  1. Long Names Are Long
  2. 人工智能算法- 优化算法
  3. vts传感器采取船舶的_船舶交通服务系统介绍
  4. win10安全模式进入方法
  5. 浅析绿萝算法下网站友链的交换策略和处理方法
  6. 2021-08-20 叮~CSS 属性 层叠 继承
  7. DNS 域名解析协议
  8. html按经纬度查询距离,JS根据两点的经纬度坐标得到驾车行驶距离
  9. $.load()的用法
  10. 盘点4个实用视频格式转换方法!mkv、mp4、avi等格式互相转!