Автоматизация бизнеса

Пользовательский поиск

суббота, 7 апреля 2012 г.

Объекты и классы

     Начинающие осваивать ООП, часто путают термины "объект" и "класс". 
     Есть разные трактовки термина "класс", показывающие, в частности, чем класс отличается от объекта. Считайте, что класс — это просто новый тип данных (как char, int или long), с которым связаны некие методы. Объект же — это экземпляр типа, или класса. Но мне больше по душе определение класса как чертежа объекта. Как разработчик объекта, вы сначала создаете его "чертеж", так же как инженер-строитель чертит план дома. Имея такой чертеж, вы располагаете всего лишь проектом дома этого типа. Однако те, кто приобрел этот чертеж, могут по нему построить себе дом. Таким же образом на базе класса — "чертежа" набора функциональных возможностей — можно создать объект, обладающий всеми возможностями этого класса.


Реализация
     Реализация (instantiation) в ООП означает факт создания экземпляра (он же объект) некоторого класса. В следующем примере мы создадим только класс, или спецификацию (specification) объекта. А поскольку это не сам объект, а лишь его "чертеж", то память для него не выделяется.


class Animal
{
      public Animal(string petName, int age,double weight)
           {
              this.PetName =  petName;
              this.Age = age;
              this.Weight = weight; 
           }
  
  protected string  PetName;
  protected int Age;
  protected double Weight;


  public double GetAge()
       {
          return Age;
       }
}

Чтобы получить объект класса и начать с ним работу, необходимо объявить экземпляр класса в своем методе примерно так:


public static void Main()
{
  Animal dog = new Animal("Dobie", 2, 1.5 );
}

    В этом примере объявлена переменная dog типа Animal, и с помощью оператора new выполнена ее реализация. Переменная dog представляет собой экземпляр класса Animal и является объектом Animal. Выполнив реализацию объекта, мы можем установить с ним связь через его открытые (public) члены, например GetAge(). Пока реально объект не существует, вызывать его методы нельзя.

Взгляните на следующий код С#:

public static void Main()
{
    Animal dog = new Animal("Doberman",3, 2 );
    Animal dog1 = new Animal("Tuzik", 1 , 2.4);
}

    Здесь два экземпляра одного класса Animal — dog и dog1. Оба объекта одинаковы с точки зрения программной реализации, но у каждого экземпляра свой набор данных, который может обрабатываться отдельно от другого.



Комментариев нет:

Отправить комментарий