bar2104

OOP in Pascal

Apr 27th, 2020
636
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. uses crt;
  2. type
  3.     // Наш новый объект
  4.     ObjPos = object
  5.         private
  6.             Line:word; //Поле - кол-во линий
  7.             col:word;  //Поле - кол-во колонок
  8.         public
  9.             constructor init(init_line,init_col:word);  //Ф-ия инициализации
  10.             function getLine:word;                      //Ф-ия возвращает self.Line
  11.             function getCol:word;                       //Ф-ия возвращает self.Col
  12.             procedure Print; virtual;                   //Воспроизводим звуковой сигнал
  13.     end;
  14.    
  15.     // Объект-наследник(Символ)
  16.     ObjSym = object( ObjPos )
  17.         private
  18.             Sym: char; //Символ
  19.         public
  20.             constructor Init(init_line,init_col:word; init_sym:char); //Ф-ия инициализации
  21.             procedure Print;  virtual;                                //Выводим символ
  22.     end;
  23.    
  24.     // Объект-наследник(Строка)
  25.     ObjString = OBJECT( ObjPos )
  26.         private
  27.             SubSt: String;
  28.        
  29.         public
  30.             constructor Init(init_line,init_col:Word; init_ss:string ); //Ф-ия инициализации
  31.             procedure Print;  virtual;                                  //Выводим строку
  32.     END;
  33. {***************Реализация методов объектов***************}
  34.  
  35. {*********************************************************}
  36. //Объект ObjPos
  37. constructor ObjPos.init(init_line,init_col:word);
  38. begin
  39.     Line:=init_line; // Устанавливаем значение поля Line соотв. введенному
  40.     Col:=init_col;   // Устанавливаем значение поля Col соотв. введенному
  41. end;
  42.  
  43. // Ф-ия позволяет "достать" значение поля Line из объекта
  44. function ObjPos.getLine:word;
  45. begin GetLine:=line; end;
  46.  
  47. // Ф-ия позволяет "достать" значение поля Line из объекта
  48. function ObjPos.getCol:word;
  49. begin GetCol:=col; end;
  50.  
  51. // Процедура воспроизводит системный звуковой сигнал
  52. procedure ObjPos.Print;
  53. begin write(#7); end;
  54.  
  55. {*********************************************************}
  56.  
  57. //Объект ObjSym
  58. constructor ObjSym.Init(init_line,init_col:word; init_sym:char);
  59. begin
  60.     ObjPos.Init(init_line,init_col); // Вызываем ObjPos.init, которая Устанавливаем значение поля Line и Col соотв. введенным
  61.     Sym:=init_sym;                   // Устанавливаем значение поля Sym соотв. введенному
  62. end;
  63.  
  64. procedure ObjSym.Print;
  65. begin
  66.     CRT.gotoXY(Col,Line);   // Перемещаем курсор в Точку (Col,Line)
  67.     write(Sym);             // Выводим Sym (В ранее указанные координаты)
  68. end;
  69.  
  70. {*********************************************************}
  71.  
  72. constructor ObjString.Init(init_line,init_col:Word; init_ss:String);
  73. begin
  74.     ObjPos.Init( init_line, init_col ); // Вызываем ObjPos.init, которая Устанавливаем значение поля Line и Col соотв. введенным
  75.     SubSt := init_ss;                   // Устанавливаем значение поля SubSt соотв. введенному
  76. end;
  77. procedure ObjString.Print;
  78. begin
  79.     CRT.GotoXY(Col, Line);  // Перемещаем курсор в Точку (Col,Line)
  80.     Write(SubSt);           // Выводим Sym (В ранее указанные координаты)
  81. end;
  82.  
  83. {*********************************************************}
  84.  
  85. // Процедура, которая выполняет процедуру Print указанного объекта (Obj.Print)
  86. procedure PrintObj(var Obj:ObjPos);
  87. begin
  88.     Obj.Print;
  89. end;
  90.  
  91. {*******************Основная программа********************}
  92.  
  93. var
  94.     ObjSymVar : ObjSym;         // Экземпляр объекта ObjSym
  95.     ObjStringVar : ObjString;   // Экземпляр объекта ObjString
  96.     a:word;
  97. begin
  98.     ObjSymVar.Init( 10, 10, '*' );                  // Инициализация экземпляра ObjSym
  99.     ObjStringVar.Init( 20, 20, '...ПОДСТРОКА...' ); // Инициализация экземпляра ObjString
  100.     PrintObj( ObjStringVar );                       // Вызываем процедуру ObjString.Print
  101.     PrintObj( ObjSymVar );                          // Вызываем процедуру ObjSym.Print
  102.     a:=ObjSymVar.GetCol;
  103.     ObjSymVar.Col:=30;                              // Должно вызвать ошибку
  104. end.
RAW Paste Data