Добавить в цитаты Настройки чтения

Страница 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(&quot; &quot; + Area / Occupants +</b>

<b>             &quot; приходится на одного человека&quot;);</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(&quot;Дом имеет:n &quot; +</b>

<b>           house.Floors + &quot; этажаn &quot; + </b>

<b>           house.Occupants + &quot; жильцаn &quot;</b>

<b>                   + house.Area +</b>

<b>           &quot;кв. футов общей площади, из них&quot;);</b>

<b>    house.AreaPerPerson() ;</b>

<b>    Console.WriteLine();</b>

<b>    Console.WriteLine(&quot;Учреждение имеет:n &quot; +</b>

<b>            office.Floors + &quot; этажаn &quot; +</b>

<b>            office.Occupants + &quot; работниковn &quot; +</b>

<b>            office.Area +</b>

<b>            &quot; кв. футов общей площади, из них&quot;);</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>