面向对象编程思想(一) - 电脑组装

面向对象编程 - 电脑组装

(一)首先需要分析电脑的组装

1.电脑的构成:显示器+主机

2.而主机的构成是由:电源+硬盘+主板

3.在主板上应该包含:cpu+内存条+PCI插槽+USB插槽

4.PCI插槽上可能还有:显卡+声卡

5.USB插槽上可能会插有:U盘

(二)进行接口的划分

因为,电脑的每一个部件并不存在什么共同点,因此不能用一个接口去表示所有的部件,为了达到后期可能会扩展或更换电脑的部件,这里把电脑的每一个部件都写成接口,当进行电脑部件的更换时,只需要新的部件实现该部件的接口即可,需要编写的接口如下:

1首先需要有Computer这个接口,即:

1 /**
2  * 电脑接口
3  * @author Wfei
4  *
5  */
6 public interface IComputer
7 {
8     
9 }

2.同样的,还有:显示器接口:IDisplyer、主机的接口:IMainBox、电源接口:IPower、硬盘接口:IHardDisk、主板接口:IMainBoard、CPU接口:ICpu、内存条接口:IMemory、PCI插槽接口:IPci、USB插槽接口:IUsb、显卡接口:IGraphicsCard、声卡接口:IAudioCard、U盘接口:IUsbDisk

(三)编写实现上述接口的方法

1.电脑类的编写,电脑需要实现电脑接口,并且在电脑需要包含:主机+显示器,因此在电脑类中需要包含两个属性:主机+显示器,代码如下:

 1 /**
 2  * 实现电脑接口
 3  * @author Wfei
 4  *
 5  */
 6 public class Computer implements IComputer
 7 {
 8     /**
 9      * 电脑会包含两个组成部分:显示器+主机,因此需要两个属性
10      */
11     //显示器
12     private IDisplyer displyer;
13     //主机
14     private IMainBox mainBox;
15     
16     public IDisplyer getDisplyer()
17     {
18         return displyer;
19     }
20     public void setDisplyer(IDisplyer displyer)
21     {
22         this.displyer = displyer;
23     }
24     public IMainBox getMainBox()
25     {
26         return mainBox;
27     }
28     public void setMainBox(IMainBox mainBox)
29     {
30         this.mainBox = mainBox;
31     }
32 }

2.同样的,主机也包含3个部分,即:电源+硬盘+主板,因此也需要3个属性;而主板包含4个部分,即:cpu+内存+pci+usb,因此需要4个属性,因为主板上可能有多个pci接口和usb接口,因此变量pci和usb需要用数组进行存储,并且还需要另外添加两个方法,用于将相应的硬件插入到相应的接口编号上,代码如下:

1 //这里还需要两个方法,用于将pci、usb插槽上的硬件安装到相应的插槽编号上
2     public void setPci(IPci pci,int index)
3     {
4         pcis[index] = pci;
5     }
6     public void setUsb(IUsb usb,int index)
7     {
8         this.usb[index] = usb;
9     }

 

3.其他的类在实现相应的接口的方法有:

显示器类实现IDisplyer接口:public class Displayer implements IDisplyer

cpu类实现ICpu接口:public class Cpu implements ICpu

显示器类实现IDisplyer接口:public class Displayer implements IDisplyer

硬盘类实现IHardDisk接口:public class HardDisk implements IHardDisk

内存类实现IMemory接口:public class Memory implements IMemory

电源类实现IPower接口:public class Power implements IPower

4.特别的,显卡类需要实现两个接口,即:IGraphicsCard接口、IPci接口,因为显卡需要满足一定的PCI接口才可以插在显卡的插槽上,代码如下:

1 /**
2  * 显卡类实现IGraphicsCard接口、IPci接口
3  * @author Wfei
4  *
5  */
6 public class GraphicsCard implements IGraphicsCard, IPci
7 {
8 
9 }

5.类似的还有:

声卡类实现IAudioCard接口、IPci接口:public class AudioCard implements IAudioCard, IPci

u盘实现IUsbDisk接口、IUsb接口:public class UsbDisk implements IUsbDisk, IUsb

(四)所有的接口和实现类编写完毕后,就需要实例化出来米一个部件的实体,并进行电脑的组装,代码如下:

 1 public class Person
 2 {
 3 
 4     /**
 5      * @param args
 6      */
 7     public static void main(String[] args)
 8     {
 9         //实例化电脑类,以接收电脑的组装
10         Computer computer = new Computer();
11         //购买显示器
12         Displayer displayer = new Displayer();
13         //购买机箱
14         MainBox mainBox = new MainBox();
15         
16         //进行电脑的初步组装
17         computer.setDisplyer(displayer);
18         computer.setMainBox(mainBox);
19         
20         //购买电源
21         Power power = new Power();
22         //购买硬盘
23         HardDisk hardDisk = new HardDisk();
24         //购买主板
25         MainBoard mainBoard = new MainBoard();
26         
27         //将主板、电源、硬盘安装到机箱内
28         mainBox.setHardDisk(hardDisk);
29         mainBox.setMainBoard(mainBoard);
30         mainBox.setPower(power);
31         
32         //购买cpu
33         Cpu cpu = new Cpu();
34         //购买内存条
35         Memory memory = new Memory();
36         
37         //将内存条、cpu安装到主板上
38         mainBoard.setCpu(cpu);
39         mainBoard.setMemory(memory);
40         
41         //因为主板上会存在多个pci接口,所以在插入pci接口硬件时,需要设定该插入到那个接口上
42         //首先,购买声卡、显卡
43         AudioCard audioCard = new AudioCard();
44         GraphicsCard graphicsCard = new GraphicsCard();
45         //然后,将声卡插入到第一个pci插槽上
46         mainBoard.setPci(audioCard, 0);
47         //再将显卡插入到第二个pci插槽上
48         mainBoard.setPci(graphicsCard, 1);
49         
50         //类似的插入usb插槽的硬件
51         UsbDisk usbDisk = new UsbDisk();
52         mainBoard.setUsb(usbDisk, 0);
53         
54         System.out.println("电脑组装完毕!");
55     }
56 }

(五)总结

 面向对象的编程思想,这样进行电脑的组装,可能看上去会比一般的编写方法用到了更多的文件,写了更多行的代码,但是当后期进行电脑部件更换时,只需要在添加一个类用于实现相应的部件接口,并进行购买,插入到相应的位置即可,根本不需要改动程序的“主要逻辑设计”,也不会影响到其他代码的编写

(六)源码

 

转载于:https://www.cnblogs.com/Wfei/p/3278579.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值