|
#1
|
|||
|
|||
создание класса
Доброго времени суток.
Никак не могу разобраться с классами. Читаю литературу, но не могу составить общую картину что к чему. //как создать его я понял) Код:
type NewClass = class private //переменные public //объявление каких-то функций где описывать эти функции? зачем нужен конструктор? зачем свойства(property)? Заранее спасибо. Последний раз редактировалось lmikle, 05.08.2011 в 21:53. |
#2
|
||||
|
||||
Код:
type TMyThread = class(TThread) private nomer,n1,index: Integer; text: String; function anek: string; protected procedure Execute; override; public constructor Create; end; функцию и процедуру описываешь ниже конструктор в данном случае нужен чтобы отработать создание |
#3
|
|||
|
|||
А можно попроще пример?)
я начинающий) этот класс, я так понимаю потомок уже? |
#4
|
|||
|
|||
а конструктор создает объект данного класса?
|
#5
|
|||
|
|||
Цитата:
|
#6
|
|||
|
|||
невыходит. может из-за версии (делфи5)?
но с функциями вроде понятно. в разделе implementation описывать.. |
#7
|
|||
|
|||
а contol+клик работает?
например у меня если по слову TForm контрол-кликнуть то откроется то место где класс TForm описан, а там от описания методов к реализации можно прыгать ctrl+shift+стрелка-вниз или стрелка-вверх |
#8
|
|||
|
|||
объясните пожалуйста
как используется конструктор? |
#9
|
||||
|
||||
В общем случае, конструктор даёт команду Дельфи(компилятору) выделить память под класс. В расширенном, здесь задаётся инициализация всего и вся, что будет использоваться в классе.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#10
|
|||
|
|||
как я понял, с помощью конструктора память выделяется под экземпляр класса(объект) это неправильно?
и что значит "десь задаётся инициализация всего и вся, что будет использоваться в классе" ведь например переменную можно объявить без использования конструктора..?? не шарю |
#11
|
|||
|
|||
правильно, ex - объект, tbitmap - класс
var ex: tbitmap; begin ex = tbitmap.create; .. ex.free; end; в конструкторе принято устанавливать значения по умолчанию для переменных экземпляра класса, или если есть обязательные то передавать прямо в конструктор. смысл всего этого чтобы спрятать внутренние переменные объекта от внешнего доступа в секцию private. Что по-идее ведет к более чистому и гибкому коду |
#12
|
|||
|
|||
напишите пожалуйста самый элементарный пример с классом
|
#13
|
||||
|
||||
Такой подойдёт?
Код:
unit OrderClasses; interface uses DetailClasses, Contnrs,Controls; type {###########################################################} {êîëëåêöèÿ äåòàëåé â çàêàçå (íåâèçóàëüíûõ)} ODetailList = class(TObjectList) private pclParent:TWinControl; protected function GetItem(Index: Integer): ODetailItem; procedure SetItem(Index: Integer; const Value: ODetailItem); public constructor Create(clParent:TWinControl); function Join(LineItem:ODetailItem): integer; procedure Remove(clIndex:integer); property Items[Index: Integer]: ODetailItem read GetItem write SetItem; default; function IndexOfDetail(aDetailId: Integer): Integer; end; implementation { OGroupCollection } constructor ODetailList.Create(clParent: TWinControl); begin inherited; pclParent:=clParent; end; function ODetailList.GetItem(Index: Integer): ODetailItem; begin result:=inherited items[Index] as ODetailItem; end; procedure ODetailList.SetItem(Index: Integer; const Value: ODetailItem); begin inherited items[Index]:=Value; end; function ODetailList.Join(LineItem: ODetailItem): integer; begin result:=inherited add(LineItem); end; procedure ODetailList.Remove(clIndex: integer); begin inherited Delete(clIndex); end; function ODetailList.IndexOfDetail(aDetailId: Integer): Integer; var cItem:integer; begin for cItem:=0 to Count-1 do begin if Items[cItem].DetailId=aDetailId then begin Result:=cItem; exit; end; end; Result:=-1; end; end. - Товарищ прапорщик!!! Остановите поезд!!! - Поезд СТОЙ! РАЗ! ДВА! |
#14
|
|||
|
|||
unit Unit1;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Label1: TLabel; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; test = class private a: integer; public function x(y: integer): integer; end; var Form1: TForm1; implementation constructor test.create; begin a:=0; end; function test.x(y: integer):integer; begin x:=a+y; end; {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject); begin label1.Caption := inttostr(function test.x(5)); end; end. |
#15
|
|||
|
|||
посмотрите что не так((
|