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.