Поиск

Реализация.

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

class Employee
{
public Employee(string firstName, string lastName, int age, double payRate)
{
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
this.payRate = payRate; }
protected string firstName;
protected string lastName;
protected int age;
protected double payRate;
public double CalculatePay(int hoursWorked)
{
// Здесь вычисляется зарплата, return (payRate *
(double)hoursWorked); } }

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

public static void Main()
{
Employee emp = new Employee ("Эми", "Андерсон", 28, 100);
}

В этом примере объявлена переменная етр типа Employee, и с помощью оператора new выполнена ее реализация. Переменная етр представляет собой экземпляр класса Employee и является объектом Employee. Выполнив реализацию объекта, мы можем установить с ним связь через его открытые (public) члены. Например, для объекта етр это метод Calcula-tePay. Пока реально объект не существует, вызывать его методы нельзя. (Есть, правда, одно исключение: мы можем вызывать статические члены. Но об этом мы поговорим в главах 5 и 6.) Взгляните на следующий код С#:

public static void MainQ {
Employee emp = new EmployeeQ;
Employee emp2 = new Employee(); }

Здесь два экземпляра одного класса Employee — етр и етр2. Оба объекта одинаковы с точки зрения программной реализации, но у каждого экземпляра свой набор данных, который может обрабатываться отдельно от другого. Аналогично можно создать массив или набор (collection) объектов Employee. Здесь же я хочу обратить ваше внимание на то, что большинство объектно-ориентированных языков поддерживает создание и обработку массивов объектов. При этом объекты можно объединять в группы и обрабатывать в операторах цикла, вызывая методы массива этих объектов либо обращаясь к элементам массива по индексу. Сравните это с той работой, которую нужно проделать со связанным списком, когда требуется вручную увязывать каждый элемент списка с предыдущим и последующим элементами.