Выпуск №2

Ведущий рассылки - Пугачёв Сергей.

_____________________________________________________________________________

Здравствуйте. В этом выпуске я  расскажу о теории объектно – ориентированного программирования (ООП) и покажу на примере синтаксис такого подхода. В конце же вас ждёт FAQ по DELPHI(просто полезные советы).

Если вам что-то непонятно или у вас есть вопросы (а может и предложения) пишите на  w3ser@yandex.ru 

 

Теория

·        Инкапсуляция

·        Наследование

·        Полиморфизм

Реализация

·        Классы

·        Поля

·        Свойства

·        Методы

 

Маленький FAQ

_____________________________________________________________________________

 

В ООП  есть три основополагающих концепции:

-Инкапсуляция

-Наследование

-Полиморфизм

Инкапсуляция – это объединение данных и обрабатывающих их методов (подпрограмм) внутри класса (объекта). Это значит, что в классе объединяются свойства, методы и поля.

Класс обеспечивает определённую функциональность и может являться  законченным средством выполнения какого-либо действия, например элементом интерфейса.

Экземпляр класса – объект.

Например,  Вы можете у себя в приложении создать кнопку, но все кнопки будут иметь

одинаковые свойства и методы, т.к. принадлежат одному классу.

 

Наследование – это процесс получения объектов-потомков от существующих объектов-родителей (термины “класс” и “объект” могут заменять друг друга), при этом потомок берёт от родителя все его поля, свойства и методы, которые он может использовать в неизменном виде или переопределять (изменять, модифицировать), а также добавлять новые. Удалить какие-либо элементы родителя в потомке нельзя.

При этом от нового объекта можно получить новый объект, в результате чего образуется дерево объектов (иерархия классов).

 

Полиморфизм – это явление, при котором методы различных классов могут иметь одинаковые имена, но разное содержание. Это может происходить по причине переопределения родительского метода в классе-потомке. При  этом обращения к одноимённым методам различных классов выполняются аналогично.

 

Класс – это такой тип записи, который включает в себя поля, свойства и методы.

Поля служат для хранения информации об объекте. Методы – это процедуры или функции служащие для обработки полей. Свойства можно использовать как поля, хотя в нутрии класса доступ к ним осуществляется его методами.

Классы

Общая структура класса  выглядит так:

Type <имя класса>=class<имя родителя>

private //скрытые элементы

protected //защищённые элементы

public //общедоступные элементы

published //опубликованные элементы

end;

Все классы являются потомками класса TObject, поэтому его в качестве родителя можно не указывать

Давайте на примере класса “computer  попытаемся со всем этим разобраться. Класс будет эмулировать компьютер в общих чертах  и, поэтому у него должны быть процессор, материнская карта, видеокарта и винчестер. Представим их в качестве полей. Ведь поля, по сути, обычные переменные, они могут принадлежать любому типу.

Type TComputer=class

            Private

                        Cpu:string;

                        Mainboard:string;

                        Video:string;

                        Harddisk:integer; //Будем измерять по объёму.

End;

Поля

Из-за того, что наш класс является потомком TObject в нём также, есть все его поля, свойства и методы. Вызвать класс computer из программы очень просто:

-Поместите описание класс в модуль за описанием объекта формы и в месте вызова напишите:

var comp:TComputer; //Объект comp класса TComputer;

begin

comp:=TComputer.Create();

end;

Свойства

Свойства реализуют механизм доступа к полям, с которыми они и  связанывойства Имеют два метода, реализующих доступ к полю: read(чтение)  и write(запись).

Синтаксис свойств таков:

property <имя свойства>:тип

[read  {метод чтения}]

[write {метод записи}]

[store {метод или булево значение}]

[default  {константа}];

Store указывает на то, должно ли сохраняться данное свойство компонента при сохранении формы или нет. Это полезно для визуальных компонентов. Свойства отображаются в инспекторе объектов.

Default – это значения свойства по умолчанию.

Но вернёмся к нашему примеру. Для него свойства будут выглядеть так:

//P в названиях свойств буква не обязательная, просто названия должны отличаться

Type TComputer=class

            Private

                        Cpu:string;

                        Mainboard:string;

                        Video:string;

                        Harddisk:integer; //Будем измерять по объёму.

            Published

                        Property PCpu:string read Cpu write Cpu;

                        Property PMainboard:string read Mainboard write Mainboard;

                        Property PVideo:string read Video write Video;

                        Property PHarddisk:integer read Harddisk write Harddisk;

End;

 

Методы

Метод – это подпрограмма (процедура или функция), являющаяся элементом класса.

Заголовок метода располагается в описании класса, а код в разделе реализации.

Имя метода в разделе реализации включает в себя тип класса.

Например в нашем случае для вывода поля Mainboard  в Form1.Edit1 можно использовать следующий метод:

procedure PoleToEdit();//В раздел “Public”

 

procedure TComputer.PoleToEdit();

begin

Form1.Edit1.Text:=MainBoard; // Перед совершением данного действия поле 

//mainboard  должно содержать текст

end;

 

Методы, которые служат для создания или удаления объектов, называются конструкторами и деструкторами. В их заголовках, в отличии от обычных процедур стоят ключевые слова destructor и constructor. В качестве конструкторов и деструкторов используются имена Create и Destroy.

Прежде чем проиллюстрировать это на примере, приведу таблицу модификаторов методов.

Кстати, для того чтобы в потомке можно было к конструктору или деструктору родителя добавить свой код, в начале переопределяемого метода надо указать inherited Create или inherited Destroy соответственно. Добавьте в приложение следующий код.

 

            constructor Create;//В раздел “Public

            destructor Destroy;

 

constructor TComputer.Create();

begin

inherited Create;

            Cpu:=’Pentium’;

            Mainboard:=’ASUS’;

            Video:=’ATI’;

Harddisk:=80;

end;

destructor TComputer.Destroy();

begin

inherited Destroy;

end;

 

Вот и всё, по всем вопросам обращайтесь.

 

FAQ


Сделать окно, перетаскивающееся за любое место

 
 


 
 
 

Если у формы нет заголовка, но возможность двигать его должна остаться, то можно воспользоваться следующим примером.

private
  procedure WMNCHITTEST(var Msg: TMessage); message WM_NCHITTEST;
...
procedure TForm1.FormCreate(Sender: TObject);
begin
  SetWindowLong(Handle, GWL_STYLE,
    GETWINDOWLONG(Handle, GWL_STYLE) and (not WS_CAPTION));
  Height := ClientHeight;
end;
 
procedure TForm1.WMNCHITTEST(var Msg: TMessage);
begin
  inherited;
  Msg.Result := HTCAPTION;
end;
 
 


 
 

Убрать кнопку программы с TaskBar



Эта программа убирает свою кнопку с панели задач (TaskBar).

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowWindow(Application.Handle, SW_HIDE);
end;
 
 
ЗАГРУЗКА ПРИМЕРА http://w3ser.narod.ru/number2.zip
Hosted by uCoz