Страница 60 из 502
Как пояснялось выше, методы класса, как правило, манипулируют данными класса и предоставляют доступ к ним. С учетом этого напомним, что в приведенных выше примерах в методе Main() вычислялась площадь на одного человека путем деления общей площади здания на количество жильцов. И хотя такой способ формально считается правильным, на самом деле он оказывается далеко не самым лучшим для организации подобного вычисления. Площадь на одного человека лучше всего вычислять в самом классе Building, просто потому, что так легче понять сам характер вычисления. Ведь площадь на одного человека зависит от значений в полях Area и Occupants, инкапсулированных в классе Building. Следовательно, данное вычисление может быть вполне произведено в самом классе Building. Кроме того, вводя вычисление площади на одного человека в класс Building, мы тем самым избавляем все программы, пользующиеся классом Building, от необходимости выполнять это вычисление самостоятельно. Благодаря этому исключается ненужное дублирование кода. И наконец, добавление в класс Building метода, вычисляющего площадь на одного человека, способствует улучшению его объектно-ориентированной структуры, поскольку величины, непосредственно связанные со зданием, инкапсулируются в классе Building.
Для того чтобы добавить метод в класс Building, достаточно указать его в области объявлений в данном классе. В качестве примера ниже приведен переработанный вариант класса Building, содержащий метод AreaPerPerson(), который выводит площадь, рассчитанную на одного человека в конкретном здании.
<b>// Добавить метод в класс Building.</b>
<b>using System;</b>
<b>class Building {</b>
<b> public int Floors; //количество этажей</b>
<b> public int Area; //общая площадь здания</b>
<b> public int Occupants; //количество жильцов</b>
<b> // Вывести площадь на одного человека,</b>
<b> public void AreaPerPerson() {</b>
<b> Console.WriteLine(" " + Area / Occupants +</b>
<b> " приходится на одного человека");</b>
<b> }</b>
<b>}</b>
<b>// Использовать метод AreaPerPerson(). </b>
<b>class BuildingDemo { </b>
<b> static void Main() {</b>
<b> Building house = new Building();</b>
<b> Building office = new Building();</b>
<b> // Присвоить значения полям в объекте house, </b>
<b> house.Occupants = 4; </b>
<b> house.Area = 2500; </b>
<b> house.Floors = 2;</b>
<b> // Присвоить значения полям в объекте office, </b>
<b> office.Occupants = 25;</b>
<b> office.Area = 4200; </b>
<b> office.Floors = 3;</b>
<b> Console.WriteLine("Дом имеет:n " +</b>
<b> house.Floors + " этажаn " + </b>
<b> house.Occupants + " жильцаn "</b>
<b> + house.Area +</b>
<b> "кв. футов общей площади, из них");</b>
<b> house.AreaPerPerson() ;</b>
<b> Console.WriteLine();</b>
<b> Console.WriteLine("Учреждение имеет:n " +</b>
<b> office.Floors + " этажаn " +</b>
<b> office.Occupants + " работниковn " +</b>
<b> office.Area +</b>
<b> " кв. футов общей площади, из них");</b>
<b> office.AreaPerPerson() ;</b>
<b> }</b>
<b>}</b>
Эта программа дает такой же результат, как и прежде.
<b>Дом имеет:</b>
<b> 2 этажа</b>
<b> 4 жильца</b>
<b> 2500 кв. футов общей площади, из них </b>
<b> 625 приходится на одного человека</b>
<b>Учреждение имеет:</b>
<b> 3 этажа</b>
<b> 25 работников</b>
<b> 4200 кв. футов общей площади, из них </b>
<b> 168 приходится на одного человека</b>
Рассмотрим основные элементы этой программы, начиная с метода AreaPerPerson(). Первая его строка выглядит следующим образом.
<b>public void AreaPerPerson() {</b>