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