• 面向对象编程思想(一)


    面向对象编程 - 电脑组装

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

    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 }

    (五)总结

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

    (六)源码

  • 相关阅读:
    玩转git分支
    python元组、列表的异同总结
    IOS推送通知測试工具PushMeBaby
    Target runtime Apache Tomcat v6.0 is not defined.错误解决方法
    Jmeter变量参数化及函数应用
    在Jmeter中使用自定义编写的Java测试代码
    使用LoadRunner监控Apache的步骤 (转)
    mysql-This version of MySQL doesn’t yet support ‘LIMIT & IN/ALL/ANY/SOME 错误解决
    Web服务器性能/压力测试工具http_load、webbench、ab、Siege使用教程
    JVM调优总结-调优方法
  • 原文地址:https://www.cnblogs.com/Wfei/p/3278579.html
Copyright © 2020-2023  润新知