kirix820, не пинай, скажу правду... Слабовато... Попробую чуток поправить
В современном мире есть несколько разных "парадигм" программирования. Сейчас самой модной считается именно объектно-ориентированное программирование (ООП).
Базовое понятие в нем "Класс".
Класс - это данные+функции. Объясню попроще. Представим себе того-же орка. Какие у него характеристики и что он может делать?
Во первых ХП(HP), а также урон(Damage), ну и пожалуй его координаты (Coord).
Что он умеет делать? Ходить (Move) и бить (Attack).
Вот как это описать отдельным классом:
Code
type
TOrk = class
private
FHP:integer; //Это поля класса
FDamage:integer;//
public
property HP:integer read FHP write FHP; //Свойство ХП
property Damage:integer read FDamage write FDamage; //Свойство Урон
procedure Move; //процедура Ходить
procedure Attack(Target:TGameObject); //процедура атаковать
end;
Разберем код.
По рекомендации компании Borland, все названия классов в Delphi должны начинаться с заглавной буквы Т, поэтому мы назвали наш класс TOrk.
Ключевое слово class указывает, что это класс собственно класс.
Ключевые слова private и public определяют область видимости переменных и функции. Т.е. все функции и переменные объявленные после слова public будут "видны" всем и вся, а ко всему что после слова private будет можно обратиться только внутри класса. Возникает вопрос: "Зачем?". Например, пользователь случайно (или специально) попробует дать свойству HP не числовое значение, а текстовое. Программа в этом случае выдаст ошибку.
Поэтому и сокрытие есть один из "постулатов" ООП.
Ключевое слово property объявляет свойство объекта. В этом свойстве как раз и можно "фильтровать" и обрабатывать данные, прежде чем записать и сохранить.
Например:
Code
property Damage:integer read FDamage write FDamage;
в данной строке позволяется записывать прямо в поле в обход "фильтрации". Это не есть "гуд". В идеале записать так:
Code
property Damage:integer read GetDamage write SetDamage;
где GetDamage - это функция возвращающая значение урона, а SetDamage - устанавливает новое. Сами процедуры объявляем в области private. Не зачем остальным знать о их существовании
Code
function GetDamage():integer;
procedure SetDamage(val:integer);
Как воспользоваться своим классом?
Очень просто.
После слова var в модуле объявляем новую переменую типа TOrk.
Вот к примеру отрезок кода по созданию группы орков:
Code
var
Skuad : array[0..9] of TOrk; //Объявляем отряд
procedure CreateOrk();
var
i:integer;
begin
for i:=0 to 9 do
begin
Skuad[i]:=TOrk.Create; //Создаем нового орка
Skuad[i].Damage:=10; //И назначаем ему урон
end;
end;
Вот так просто. Конечно я не описал такую вещь как наследование, динамические "отряды" орков, и конечно не оветил на главный вопрос: "Зачем оно мне?".
Но если будут читатели, то я могу и описать/ответить.
С уважением Wernher von Braun.