Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 05.08.2011, 16:08
bezzzare bezzzare вне форума
Прохожий
 
Регистрация: 05.08.2011
Сообщения: 27
Репутация: 10
Вопрос создание класса

Доброго времени суток.
Никак не могу разобраться с классами.
Читаю литературу, но не могу составить общую картину что к чему.

//как создать его я понял)
Код:
type
NewClass = class

private
//переменные
public
//объявление каких-то функций
а что дальше?
где описывать эти функции?
зачем нужен конструктор?
зачем свойства(property)?

Заранее спасибо.

Последний раз редактировалось lmikle, 05.08.2011 в 21:53.
Ответить с цитированием
  #2  
Старый 05.08.2011, 16:32
Аватар для ALexandr555
ALexandr555 ALexandr555 вне форума
Специалист
 
Регистрация: 09.10.2010
Адрес: Тольятти
Сообщения: 803
Версия Delphi: Delphi 7
Репутация: 2064
По умолчанию

Код:
type
  TMyThread = class(TThread)
  private
    nomer,n1,index: Integer;
    text: String;
    function anek: string;
  protected
    procedure Execute; override;
  public
    constructor Create;
  end;
вот пример создания класса потока

функцию и процедуру описываешь ниже

конструктор в данном случае нужен чтобы отработать создание
Ответить с цитированием
  #3  
Старый 05.08.2011, 16:37
bezzzare bezzzare вне форума
Прохожий
 
Регистрация: 05.08.2011
Сообщения: 27
Репутация: 10
По умолчанию

А можно попроще пример?)
я начинающий)

этот класс, я так понимаю потомок уже?
Ответить с цитированием
  #4  
Старый 05.08.2011, 16:39
bezzzare bezzzare вне форума
Прохожий
 
Регистрация: 05.08.2011
Сообщения: 27
Репутация: 10
По умолчанию

а конструктор создает объект данного класса?
Ответить с цитированием
  #5  
Старый 05.08.2011, 16:41
Pyro Pyro вне форума
Так проходящий
 
Регистрация: 18.07.2011
Сообщения: 805
Версия Delphi: 7Lite
Репутация: 6063
По умолчанию

Цитата:
где описывать эти функции?
если ткнуть правой кнопкой на объявление функции и выбрать Complete Class at cursor (ctrl+shift+c) то появятся пустые заготовки ниже в разделе реализации
Ответить с цитированием
  #6  
Старый 05.08.2011, 16:48
bezzzare bezzzare вне форума
Прохожий
 
Регистрация: 05.08.2011
Сообщения: 27
Репутация: 10
По умолчанию

невыходит. может из-за версии (делфи5)?

но с функциями вроде понятно.
в разделе implementation описывать..
Ответить с цитированием
  #7  
Старый 05.08.2011, 16:58
Pyro Pyro вне форума
Так проходящий
 
Регистрация: 18.07.2011
Сообщения: 805
Версия Delphi: 7Lite
Репутация: 6063
По умолчанию

а contol+клик работает?
например у меня если по слову TForm контрол-кликнуть то откроется то место где класс TForm описан, а там от описания методов к реализации можно прыгать ctrl+shift+стрелка-вниз или стрелка-вверх
Ответить с цитированием
  #8  
Старый 05.08.2011, 17:41
bezzzare bezzzare вне форума
Прохожий
 
Регистрация: 05.08.2011
Сообщения: 27
Репутация: 10
По умолчанию

объясните пожалуйста
как используется конструктор?
Ответить с цитированием
  #9  
Старый 05.08.2011, 21:16
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

В общем случае, конструктор даёт команду Дельфи(компилятору) выделить память под класс. В расширенном, здесь задаётся инициализация всего и вся, что будет использоваться в классе.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #10  
Старый 06.08.2011, 09:33
bezzzare bezzzare вне форума
Прохожий
 
Регистрация: 05.08.2011
Сообщения: 27
Репутация: 10
По умолчанию

как я понял, с помощью конструктора память выделяется под экземпляр класса(объект) это неправильно?

и что значит "десь задаётся инициализация всего и вся, что будет использоваться в классе"

ведь например переменную можно объявить без использования конструктора..??

не шарю
Ответить с цитированием
  #11  
Старый 06.08.2011, 18:23
Pyro Pyro вне форума
Так проходящий
 
Регистрация: 18.07.2011
Сообщения: 805
Версия Delphi: 7Lite
Репутация: 6063
По умолчанию

правильно, ex - объект, tbitmap - класс
var
ex: tbitmap;
begin
ex = tbitmap.create;
..
ex.free;
end;

в конструкторе принято устанавливать значения по умолчанию для переменных экземпляра класса, или если есть обязательные то передавать прямо в конструктор. смысл всего этого чтобы спрятать внутренние переменные объекта от внешнего доступа в секцию private. Что по-идее ведет к более чистому и гибкому коду
Ответить с цитированием
  #12  
Старый 08.08.2011, 17:38
bezzzare bezzzare вне форума
Прохожий
 
Регистрация: 05.08.2011
Сообщения: 27
Репутация: 10
По умолчанию

напишите пожалуйста самый элементарный пример с классом
Ответить с цитированием
  #13  
Старый 08.08.2011, 17:47
Аватар для Viajero
Viajero Viajero вне форума
Активный
 
Регистрация: 14.06.2011
Адрес: РБ
Сообщения: 214
Версия Delphi: Delphi 7 FB 2.5
Репутация: 5849
По умолчанию

Такой подойдёт?
Код:
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  
Старый 08.08.2011, 18:03
bezzzare bezzzare вне форума
Прохожий
 
Регистрация: 05.08.2011
Сообщения: 27
Репутация: 10
По умолчанию

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  
Старый 08.08.2011, 18:03
bezzzare bezzzare вне форума
Прохожий
 
Регистрация: 05.08.2011
Сообщения: 27
Репутация: 10
По умолчанию

посмотрите что не так((
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 15:20.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter