Принципы объектно-ориентированного программирования

         

Реализация



Реализация

Реализация (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. Работу с массивами мы подробно рассмотрим в главе 7. Здесь же я хочу обратить ваше внимание на то, что большинство объектно-ориентированных языков поддерживает создание и обработку массивов объектов. При этом объекты можно объединять в группы и обрабатывать в операторах цикла, вызывая методы массива этих объектов либо обращаясь к элементам массива по индексу. Сравните это с той работой, которую нужно проделать со связанным списком, когда требуется вручную увязывать каждый элемент списка с предыдущим и последующим элементами.



Содержание раздела