面向對象編程 - 電腦組裝編程
(一)首先須要分析電腦的組裝數組
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 }
(五)總結
面向對象的編程思想,這樣進行電腦的組裝,可能看上去會比通常的編寫方法用到了更多的文件,寫了更多行的代碼,可是當後期進行電腦部件更換時,只須要在添加一個類用於實現相應的部件接口,並進行購買,插入到相應的位置便可,根本不須要改動程序的「主要邏輯設計」,也不會影響到其餘代碼的編寫