Endil

oop-lab4

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