面向对象编程 - 电脑组装编程
(一)首先须要分析电脑的组装数组
1.电脑的构成:显示器+主机this
2.而主机的构成是由:电源+硬盘+主板spa
3.在主板上应该包含:cpu+内存条+PCI插槽+USB插槽设计
4.PCI插槽上可能还有:显卡+声卡code
5.USB插槽上可能会插有:U盘htm
(二)进行接口的划分对象
由于,电脑的每个部件并不存在什么共同点,所以不能用一个接口去表示全部的部件,为了达到后期可能会扩展或更换电脑的部件,这里把电脑的每个部件都写成接口,当进行电脑部件的更换时,只须要新的部件实现该部件的接口便可,须要编写的接口以下:blog
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 }
(五)总结
面向对象的编程思想,这样进行电脑的组装,可能看上去会比通常的编写方法用到了更多的文件,写了更多行的代码,可是当后期进行电脑部件更换时,只须要在添加一个类用于实现相应的部件接口,并进行购买,插入到相应的位置便可,根本不须要改动程序的“主要逻辑设计”,也不会影响到其余代码的编写