![]() |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
![]() |
Vardes |
![]()
Сообщение
#1
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 131 Пол: Мужской Репутация: ![]() ![]() ![]() |
Подскажите в чём разница:
Код type TForm1 = class(TForm) Button1: TButton; Memo1: TMemo; procedure Button1Click(Sender: TObject); end; TInputVector1 = class(TObject) x1:real; end; Код [/code] type TForm1 = class(TForm) Button1: TButton; Memo1: TMemo; procedure Button1Click(Sender: TObject); end; TInputVector1 = class(TObject) end; var Form1: TForm1; InputVector1:TInputvector1; x1:real; Не понимаю того,в чём разница,как обозначать переменную или как переменную класса или как var пар-р.... |
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Цитата Не понимаю того,в чём разница,как обозначать переменную или как переменную класса или как var пар-р.... Смотри... Вот, например, можно сделать так:type, а можно - так: typeИ по первому и по второму варианту будет работать... НО: логически более правильный - первый вариант, т.к. класс должен содержать в себе то, что ему необходимо, а не общаться каждый раз с внешними переменными... Чувствуешь разницу? Кроме этого, поля класса могут быть приватными (чего не так просто добиться во втором случае), они наследуются (в классе-потомке будет доступ к полю, а в постороннем классе - не будет)... |
Vardes |
![]()
Сообщение
#3
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 131 Пол: Мужской Репутация: ![]() ![]() ![]() |
Ну немного стал разбираться...Вот прогу небольшую написал,просто для тренировки классов,вычисляет логарифм четырёх элементов,но почему-то выдаёт ошибку...
Код unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Memo1: TMemo; procedure Button1Click(Sender: TObject); end; TInputVector1 = class(TObject) x1:real; procedure DoSum(var a:real); end; TInputVector2 =class(TInputvector1) x2:real; end; TInputVector3 =class(TInputvector2) x3:real; end; TInputVector4 =class(TInputvector3) x4:real; end; var Form1: TForm1; InputVector1:TInputvector1; InputVector2:TInputvector2; InputVector3:TInputvector3; InputVector4:TInputvector4; implementation {$R *.dfm} procedure TInputVector1.DoSum(var a:real); begin a:=ln(a); end; procedure TForm1.Button1Click(Sender: TObject); begin InputVector1.x1:=1; InputVector2.x2:=2; InputVector3.x3:=3; InputVector4.x4:=4; InputVector1.DoSum(InputVector1.x1); InputVector2.DoSum(InputVector2.x2); InputVector3.DoSum(InputVector3.x3); InputVector4.DoSum(InputVector4.x4); Memo1.Lines.Add(FloatToStr(InputVector1.x1)); Memo1.Lines.Add(FloatToStr(InputVector2.x2)); Memo1.Lines.Add(FloatToStr(InputVector3.x3)); Memo1.Lines.Add(FloatToStr(InputVector4.x4)); end; end. |
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
![]() ![]() А не работает - потому, что надо сначала создать объект ( inputvector1 := tinputvector1.create;), и только потом обращаться к его полям... |
мисс_граффити |
![]()
Сообщение
#5
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
к первому вопросу... если еще не разобрался.
на грубом примере. допустим, у тебя есть класс "человек", а в нем поля "руки", "ноги", "уши". логично? это все - составные части человека. с этими полями работают методы "шевелить", "ходить", "слушать" соответственно. создаешь объект - у тебя нормальный человек. еще один объект - еще нормальный человек. это первый случай. второй случай. есть класс человек (он ничего не имеет). есть объект этого класса - безрукий, безногий, безухий. ты создаешь переменную "руки" (отдельно от человека!). теперь создаешь еще один объект - калечного человечка. ему придется создавать новые руки или оставлять им одни руки на двоих... то есть конкретные руки никак к человеку не приделаны - их можно отдать другому или пользоваться вместе. это удобно? -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
![]() ![]() |
![]() |
Текстовая версия | 14.07.2025 18:26 |