Оберон-клуб «ВЄДАsoft» https://zx.oberon.org/forum/ |
|
Есть ли в КП альтернатива виртуальным методам Турбо Паскаля https://zx.oberon.org/forum/viewtopic.php?f=79&t=394 |
Страница 1 из 1 |
Автор: | Len [ 15 авг 2018, 16:49 ] |
Заголовок сообщения: | Есть ли в КП альтернатива виртуальным методам Турбо Паскаля |
В книге "Основы объектно-ориентированного программирования в языке паскаль" (Ростов-на-Дону, 1999) есть следующий код: Uses Crt, Graph; Var gd,gm : integer; Type Tp=Object X,y,c : integer; Constructor Init(ax,ay,ac : integer); Procedure Show; Virtual; Procedure Hide; Virtual; Procedure Moveto(dx,dy : integer); End; Constructor Tp.Init; Begin X:=ax; y:=ay; c:=ac End; Procedure Tp.Show; Begin Putpixel(x,y,c); End; Procedure Tp.Hide; Begin Putpixel(x,y,Getbkcolor) End; Procedure Tp.Moveto; Begin Delay(1000); Hide; X:=x+dx; y:=y+dy; Show End; Type Tc=Object(Tp) R : integer; Constructor Init(ax,ay,ac,ar : integer); Procedure Show; Virtual; Procedure Hide; Virtual; End; Constructor Tc.Init; Begin Inherited(ax,ay,ac); R:=ar End; Procedure Tc.Show; Begin Setcolor(c); Circle(x,y,r) End; Procedure Tc.Hide; Begin Setcolor(Getbkcolor); Circle(x,y,r) End; Var P : Tp; C : Tc; Begin Gd:=Detect; Initgraph(Gd,Dm,’c:\bp\bgi’); P.Init(100,120,yellow); P.Show; P.Moveto(50,50); Readln; C.Init(200,300,Green,150); C.Show; C.Moveto(10,10); Readln; Closegraph End. В методе Tp.Moveto методы Hide и Show в зависимости от типа объекта вызываются соответственно в объекте предке или потомке. Я сочинил небольшую програмку ради эксперимента: Код: "OBERON"
Как сделать чтобы в методе Output метод Init вызывался в объекте предке или потомке в зависимости от типа объекта, без оператора IS? |
Автор: | Comdiv [ 15 авг 2018, 21:18 ] |
Заголовок сообщения: | Re: Есть ли в КП альтернатива виртуальным методам Турбо Паскаля |
Я так понимаю, Вы не запускали эту программу, потому что не смогли собрать? |
Автор: | Len [ 16 авг 2018, 02:43 ] |
Заголовок сообщения: | Re: Есть ли в КП альтернатива виртуальным методам Турбо Паскаля |
Comdiv писал(а): Я так понимаю, Вы не запускали эту программу, потому что не смогли собрать? В моей программе компилятор выдаёт ошибку в 31 строке. |
Автор: | ivan_denisov [ 16 авг 2018, 06:32 ] |
Заголовок сообщения: | Re: Есть ли в КП альтернатива виртуальным методам Турбо Паскаля |
Код: "OBERON"
Вот так надо вызывать. |
Страница 1 из 1 | Часовой пояс: UTC + 2 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |