Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Классы в Паскале

1.8K
26 июня 2009 года
Death Knight
139 / / 19.02.2006
Задача состоит в следующем:

Сконструировать новый класс, соответствующий фигуре "Три точки", в котором обязательно реализованы следующие методы: рисование фигуры на экране, стирание фигуры с экрана, перемещение фигуры на вектор. Продемонстрировать применение класса с помощью программы

Саму программу я сделаю просто Turbo Pascal не видит ключевого слова class Т е хначит не поддерживает ООП а зачада стоит сделать на паскале т е это препод ошибся или есть какой нить паскаль с поддержкой ООП скачал:
TMT Pascal и Borland Pascal та же фишка кто сзнает че делать)
44K
26 июня 2009 года
OCTAGRAM
30 / / 11.03.2009
Цитата: Death Knight
просто Turbo Pascal не видит ключевого слова class Т е хначит не поддерживает ООП а зачада стоит сделать на паскале



В Turbo Pascal используется ключевое слово object, по результату очень похожее на record.

[highlight=pascal]type
PMyClass = ^TMyClass;
TMyClass = object
constructor Init;
end;

{...}

var
R : TMyClass;
S : PMyClass;

begin
R.Init;
New(S, Init);
end;

[/highlight]

6
26 июня 2009 года
George
4.1K / / 05.01.2007
Цитата: OCTAGRAM
В Turbo Pascal используется ключевое слово object, по результату очень похожее на record.


а по моему разница достаточно большая. object - экземпляр класса (хотя может в паскале по другому совсем? я то дельфист), который содержит как переменные, константы, так и методы и пр. ерунду. а record - просто структурированная запись, содержащая различные данные.

1.8K
26 июня 2009 года
Death Knight
139 / / 19.02.2006
Спс разабрался тока вот одна проблемка Паскаль graph не видит перепробывал все и дериктории ставил в настройках и копировал сам файл в папку с программой и в bgi все равно не видит пришлось писать прогу без него тока проверить никак мб проверит кто?
я приложил файл вот код на всякий случай:

Код:
Program xx;
uses crt, graph;
type
Point = record
x, y:integer;
end;
cl = object
Private
p1, p2, p3:point;
Color : Word;
Public
Procedure Init(x1, x2, y1, y2, z1, z2:integer);
Procedure Draw(aColor:Word);
Procedure Hide;
Procedure Move(dX, dY, dZ:integer);

end;

Procedure cl.Init(x1, x2, y1, y2, z1, z2:integer);
begin
     p1.x := x1;
     p1.y := x2;
     p2.x := y1;
     p2.y := y2;
     p3.x := z1;
     p3.y := z2;
     Color := 5;

end;

Procedure cl.Draw(aColor:word);
begin
     SetColor(aColor);
     Line(p1.x, p1.y, p2.x, p2.y);
     Line(p1.x, p1.y, p3.x, p3.y);
     Line(p2.x, p2.y, p3.x, p3.y);
end;

Procedure cl.Hide;
begin
     Draw(GetBkColor);
end;

Procedure cl.Move(dX, dY, dZ:integer);
begin
        Hide;
        p1.x:= p1.x+dX;
        p2.x:= p2.x+dY;
        p3.x:= p3.x+dZ;
        Draw(Color);
end;

var Pnt:cl; x1, x2, y1, y2, z1, z2, grDriver, grMode, ErrCode, m : Integer; c:char;

begin
Writeln('Enter 1st point');
ReadLn(x1, x2);
Writeln('Enter 2st point');
ReadLn(y1, y2);
Writeln('Enter 2st point');
ReadLn(z1, z2);
Pnt.Init(x1, x2, y1, y2, z1, z2);
  grDriver := Detect;
  InitGraph(grDriver, grMode,'');
  ErrCode := GraphResult;
  if ErrCode = grOk then
  begin  { Do graphics }
Pnt.Draw(5);
 while (m<>27)do
  begin
  C := Readkey;
  m := Ord(c);
  Pnt.Move(5, 5, 5);
  end;
CloseGraph;
end
  else
    Writeln('Graphics error:', GraphErrorMsg(ErrCode));
end.


Все я разобрался все работает попдправил немного, если никто не против тему можно закрывать....
3.7K
26 июня 2009 года
0nni
326 / / 24.06.2008
Washington, ты немного отстал от жизни :p. Начиная с Delphi 2006 записи творят что хотят - содержат свойства, методы, приватные и публичные области, вложенные объявления констант других записей и даже классов.
44K
27 июня 2009 года
OCTAGRAM
30 / / 11.03.2009
Цитата: Washington
а по моему разница достаточно большая. object - экземпляр класса (хотя может в паскале по другому совсем? я то дельфист), который содержит как переменные, константы, так и методы и пр. ерунду. а record - просто структурированная запись, содержащая различные данные.



Я имел в виду, что object — это объект, занимающий место. Если объявить переменную типа TMyClass, она будет занимать место, которое нужно под экземпляр TMyClass. Собственно, это и будет экземпляр. Если нужен указатель, его нужно сделать руками. Во многом это напоминает работу с record и совсем непохоже на class в Delphi.

3.7K
27 июня 2009 года
0nni
326 / / 24.06.2008
[QUOTE=OCTAGRAM]Если объявить переменную типа TMyClass, она будет занимать[/QUOTE]
ровно 4 байта. Если нужно выделить память под экземпляр TMyClass, то нужно вызвать конструктор (руками), и те 4 байта уже будут указывать на выделенную область памяти. Так что класс это не запись, а скорее указатель на запись.
Конечно если паскаль не 32-х разрядный, размер указателя будет не 4 байта.
44K
28 июня 2009 года
OCTAGRAM
30 / / 11.03.2009
Цитата: 0nni
ровно 4 байта. Если нужно выделить память под экземпляр TMyClass, то нужно вызвать конструктор (руками), и те 4 байта уже будут указывать на выделенную область памяти. Так что класс это не запись, а скорее указатель на запись.
Конечно если паскаль не 32-х разрядный, размер указателя будет не 4 байта.


ВОПРОС БЫЛ НЕ ПРО Delphi!!!

6
29 июня 2009 года
George
4.1K / / 05.01.2007
Цитата: 0nni
Washington, ты немного отстал от жизни :p. Начиная с Delphi 2006 записи творят что хотят - содержат свойства, методы, приватные и публичные области, вложенные объявления констант других записей и даже классов.


хех, и правда не знал... интересно нафига оно? городят че то огород =))

5
29 июня 2009 года
hardcase
4.5K / / 09.08.2005
Цитата: Washington
хех, и правда не знал... интересно нафига оно? городят че то огород =))


Это для поддержки возможностей CLR. Возможности record подтянули до функционала struct в C# (типичный value-type). Именно 2006ой Делфи стал компилироваться в CLR 1.1.

6
29 июня 2009 года
George
4.1K / / 05.01.2007
ааа, они же в дотнет ударились с 2006 версии, действительно... )))
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог