Endil

oop-lab6

Dec 22nd, 2015
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.83 KB | None | 0 0
  1. // oop-lab4.cpp: определяет точку входа для консольного приложения.
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include <iostream>
  6. #include <string>
  7.  
  8. using namespace std;
  9.  
  10. class Part abstract {
  11. protected:
  12.     double power_consumption;
  13. };
  14.  
  15. class Memory : public Part {
  16. private:
  17.     int capacity;
  18. public:
  19.     int read() {}
  20. };
  21.  
  22. class ProcessingUnit abstract : public Part {
  23. protected:
  24.     double bclk;
  25.     unsigned int multiplier;
  26. };
  27.  
  28. class Videocard abstract : public ProcessingUnit {
  29. public:
  30.     virtual void DoOpenGL() {
  31.         cout << "Not supported" << endl;
  32.     }
  33.     virtual void DoDirect3D() {
  34.         cout << "Not supported" << endl;
  35.     }
  36.     virtual void DoGlide() {
  37.         cout << "Not supported" << endl;
  38.     }
  39. };
  40.  
  41. class VideocardNvidia : public Videocard {
  42. public:
  43.     virtual void DoOpenGL() override {
  44.         cout << "Supported" << endl;
  45.     }
  46.     virtual void DoDirect3D() override {
  47.         cout << "Supported" << endl;
  48.     }
  49. };
  50.  
  51. class VideocardAMD : public Videocard {
  52. public:
  53.     virtual void DoOpenGL() override {
  54.         cout << "Supported" << endl;
  55.     }
  56.     virtual void DoDirect3D() override {
  57.         cout << "Supported" << endl;
  58.     }
  59. };
  60.  
  61. class Videocard3dfx : public Videocard {
  62. public:
  63.     virtual void DoGlide() override {
  64.         cout << "Supported" << endl;
  65.     }
  66.     virtual void DoOpenGL() override {
  67.         cout << "Supported" << endl;
  68.     }
  69. };
  70.  
  71. class ICpuid {
  72. public:
  73.     virtual void Cpuid() {}
  74. };
  75.  
  76. class CPU abstract : public ProcessingUnit, ICpuid {
  77. protected:
  78.     string architecture;
  79.     unsigned int thread_count;
  80. public:
  81.     virtual void DoIA() {
  82.         cout << "Not supported" << endl;
  83.     }
  84.     virtual void DoAMD64() {
  85.         cout << "Not supported" << endl;
  86.     }
  87.     virtual void Dox86_x64() {
  88.         cout << "Not supported" << endl;
  89.     }
  90.     virtual void DoARM() {
  91.         cout << "Not supported" << endl;
  92.     }
  93.     virtual void Cpuid() override  {
  94.         cout << "Not supported" << endl;
  95.     }
  96. };
  97.  
  98. class CPU_Intel : public CPU {
  99. protected:
  100.     bool HyperThreading_enabled;
  101. public:
  102.     virtual void DoIA() override {
  103.         cout << "Supported" << endl;
  104.     }
  105.     virtual void Dox86_x64() override {
  106.         cout << "Supported" << endl;
  107.     }
  108.     virtual void Cpuid() override {
  109.         cout << power_consumption << " " << bclk << " " << multiplier << " " << architecture << " " << thread_count << " " << HyperThreading_enabled << endl;;
  110.     }
  111. };
  112.  
  113. class CPU_AMD : public CPU {
  114. public:
  115.     virtual void DoIA() override {
  116.         cout << "Supported" << endl;
  117.     }
  118.     virtual void DoAMD64() override {
  119.         cout << "Supported" << endl;
  120.     }
  121. };
  122.  
  123. class CPU_ARM : public CPU {
  124. public:
  125.     virtual void DoARM() override {
  126.         cout << "Supported" << endl;
  127.     }
  128. };
  129.  
  130. class Computer : public CPU, public Videocard {
  131. private:
  132.     CPU *cpu;
  133.     Videocard *videocard;
  134.     Memory *memory;
  135. public:
  136.     Computer(CPU *_cpu, Videocard *_videocard, Memory *_memory) {
  137.         cpu = _cpu;
  138.         videocard = _videocard;
  139.         memory = _memory;
  140.     }
  141.     virtual void DoIA() override {
  142.         return cpu->DoIA();
  143.     }
  144.     virtual void DoAMD64() override {
  145.         return cpu->DoAMD64();
  146.     }
  147.     virtual void Dox86_x64() override {
  148.         return cpu->Dox86_x64();
  149.     }
  150.     virtual void DoARM() override {
  151.         return cpu->DoARM();
  152.     }
  153.     virtual void DoOpenGL() override {
  154.         return videocard->DoOpenGL();
  155.     }
  156.     virtual void DoDirect3D() override {
  157.         return videocard->DoDirect3D();
  158.     }
  159.     virtual void DoGlide() override {
  160.         return videocard->DoGlide();
  161.     }
  162.     virtual void Cpuid() {
  163.         cpu->Cpuid();
  164.     }
  165. };
  166.  
  167. int main()
  168. {
  169.     CPU_Intel cpu1;
  170.     Videocard3dfx videocard1;
  171.     Memory memory1;
  172.     Computer comp1((CPU *)&cpu1, (Videocard *)&videocard1, &memory1);
  173.     cout << "comp1: Intel CPU & 3dfx videocard" << endl;
  174.     cout << "Calling CPUID" << endl;
  175.     comp1.Cpuid();
  176.     CPU_ARM cpu2;
  177.     VideocardNvidia videocard2;
  178.     Memory memory2;
  179.     Computer comp2((CPU *)&cpu2, (Videocard *)&videocard2, &memory2);
  180.     cout << "comp2: ARM CPU & Nvidia videocard" << endl;
  181.     cout << "Calling CPUID" << endl;
  182.     comp2.Cpuid();
  183.     system("pause");
  184.     return 0;
  185. }
Advertisement
Add Comment
Please, Sign In to add comment