// currPay автоматически приравнивается к 0.0F через значения,
// заданные по умолчанию.
public Employee(string fullName) {
this.fullName = fullName;
this.empID = IDGenerator.GetNewEmpID();
}
Следует понимать, что использование ключевого слова this для передачи вызовов конструктора не является обязательным. Однако при использовании этого подхода вы получаете более удобное и более краткое определение класса. Фактически, используя этот подход, вы можете упростить свои программистские задачи, поскольку реальная работа делегируется одному конструктору (обычно это конструктор, который имеет наибольшее число параметров), а остальные конструкторы просто перекладывают ответственность.
Определение открытого интерфейса класса
После создания данных внутреннего состояния класса и набора конструкторов следующим шагом должно быть определение деталей
С точки зрения построения класса открытый интерфейс формируют те элементы, которые объявлены в классе с использованием ключевого слова public. Кроме далей данных и конструкторов, открытый интерфейс класса может иметь множество других членов, включая следующие.
•
•
•
Замечание. Из последующего материала данной главы вам станет ясно, что вложенные определения типа тоже могут появляться в рамках открытого интерфейса типа. К тому же
С учетом того, что наш класс Employee определяет два открытых метода (GiveBonus() и DisplayStats()), мы имеем возможность взаимодействовать с открытым интерфейсом так, как показано ниже.
// Взаимодействие с открытым интерфейсом класса Employee.
static void Main(string[] args) {
Console.WriteLine("*** Тип Employee в процессе работы ***\n");
Employee e = new Employee("Джо", 80, 30000);
e.GiveBonus(20.0);
e.DisplayStats();
Employee e2;
e2 = new Employee("Бет", 81, 50000);
e2.GiveBonus(1000);
e2.DisplayStats();
Console.ReadLine();
}
Если выполнить это приложение в том его состоянии, в котором оно находится сейчас, вы должны получить вывод, подобный показанному на рис. 4.2.
На этот момент у нас имеется очень простой тип класса с минимальным открытым интерфейсом. Перед тем как двигаться дальше к более сложным примерам, давайте потратим некоторое время на обсуждение принципов объектно-ориентированного программирования (рассмотрение типа Emplоуее мы продолжим немного позже).
Рис. 4.2. Тип класса Employee в процессе работы
Принципы объектно-ориентированного программирования
Все объектно-ориентированные языки используют три базовых принципа объектно-ориентированного программирования.
•
•
•
Перед тем как начать рассмотрение синтаксических особенностей реализации каждого из этих принципов, важно понять базовую роль каждого из них. Поэтому здесь предлагается краткая теоретическая информация по соответствующим вопросам, просто для того, чтобы исключить разночтения, которые могут возникать у людей, ощущающих постоянную нехватку времени на теорию из-за жестких сроков окончания их проектов.
Инкапсуляция
Первым принципом ООП является
// DatabaseReader инкапсулирует средства работы с базой данных.
DatabaseReader dbObj = new DatabaseReader();
dbObj.Open(@"C:\Employees.mdf");
// Работа с базой данных...