Добавление параметризированного метода в класс Building



Мы поможем в написании ваших работ!


Мы поможем в написании ваших работ!



Мы поможем в написании ваших работ!


ЗНАЕТЕ ЛИ ВЫ?

Добавление параметризированного метода в класс Building



С помощью параметризированного метода можно дополнить класс Building но­вым средством, позволяющим вычислять максимальное количество жильцов в здании, исходя из определенной величины минимальной площади на одного человека. Этим новым средством является приведенный ниже метод MaxOccupant().

// Возвратить максимальное количество человек, занимающих здание,

// исходя из заданной минимальной площади на одного человека.

public int MaxOccupant(int minArea)

{

return Area / minArea;

}

Когда вызывается метод MaxOccupant(), его параметр minArea принимает вели­чину необходимой минимальной площади на одного человека. На эту величину делит­ся общая площадь здания при выполнении данного метода, после чего он возвращает результат.

Ниже приведен весь класс Building, включая и метод MaxOccupant().

Листинг 6.7

/*

Добавить параметризированный метод, вычисляющий

максимальное количество человек, которые могут

занимать здание, исходя из заданной минимальной

площали на одного человека.

*/

 

using System;

 

class Building

{

public int Floors; // количество этажей

public int Area; // общая площадь здания

public int Occupants; // количество жильцов

 

// Возвратить площадь на одного человека.

public int AreaPerPerson() {

return Area / Occupants;

}

 

// Возвратить максимальное количество человек, занимающих здание

// исходя из заданной минимальной площади на одного человека.

public int MaxOccupant(int minArea) {

return Area / minArea;

}

}

 

// Использовать метод MaxOccupant().

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" +

"если на каждого должно приходиться " +

300 + "кв. футов: " +

house.MaxOccupant(300));

 

Console.WriteLine("Максимальное количество человек " +

"в учреждении, \n" +

300 + "кв. футов: " +

office.MaxOccupant(300));

}

}

Выполнение этой программы дает следующий результат.

Максимальное количество человек в доме,

если на каждого должно приходиться 300 кв. футов: 8

Максимальное количество человек в учреждении,

если на каждого должно приходиться 300 кв. футов: 14

Исключение недоступного кода

При создании методов следует исключить ситуацию, при которой часть кода не мо­жет быть выполнена ни при каких обстоятельствах. Такой код называется недоступным и считается в C# неправильным. Если создать метод, содержащий недоступный код, компилятор выдаст предупреждающее сообщение соответствующего содержания. Рассмотрим следующий пример кода.

public void MyMeth()

{

char a, b;

 

// ...

 

if(a==b)

{

Console.WriteLine("равно") ;

return;

}

else

{

Console.WriteLine("не равно") ;

return;

}

Console.WriteLine ("это недоступный код");

}

В данном примере возврат из метода MyMeth() всегда происходит до выполнения последнего оператора, содержащего вызов метода WriteLine(). Если попытаться скомпилировать этот код, то будет выдано предупреждающее сообщение. Вообще го­воря, недоступный код считается ошибкой программирования, и поэтому предупре­ждения о таком коде следует воспринимать всерьез.

Конструкторы

В приведенных выше примерах программ переменные экземпляра каждого объек­та типа Building приходилось инициализировать вручную, используя, в частности, следующую последовательность операторов. -

house.Occupants = 4;

house.Area = 2500;

house.Floors = 2;

Такой прием обычно не применяется в профессионально написанном коде С#. Кро­ме того, он чреват ошибками (вы можете просто забыть инициализировать одно из по­лей). Впрочем, существует лучший способ решить подобную задачу: воспользоваться конструктором.

Конструктор инициализирует объект при его создании. У конструктора такое же имя, как и у его класса, а с точки зрения синтаксиса он подобен методу. Но у конструк­торов нет возвращаемого типа, указываемого явно. Ниже приведена общая форма конструктора.

доступ имя_класса{список_параметров)

{

// тело конструктора

}

Как правило, конструктор используется для задания первоначальных значений пе­ременных экземпляра, определенных в классе, или же для выполнения любых других установочных процедур, которые требуются для создания полностью сформирован­ного объекта. Кроме того, доступ обычно представляет собой модификатор доступа типа public, поскольку конструкторы зачастую вызываются в классе. А список_параметров может быть как пустым, так и состоящим из одного или более указываемых параметров.

У всех классов имеются конструкторы, независимо от того, определите вы их или нет, поскольку в C# автоматически предоставляется конструктор, используемый по умолчанию и инициализирующий все переменные экземпляра их значениями по умолчанию. Для большинства типов данных значением по умолчанию является ну­левое, для типа bool - значение false, а для ссылочных типов - пустое значение. Но как только вы определите свой собственный конструктор, то конструктор по умол­чанию больше не используется.

Ниже приведен простой пример применения конструктора.

Листинг 6.8

// Простой конструктор.

 

using System;

 

class MyClass

{

public int x;

 

public MyClass()

{

x = 10;

}

}

 

class ConsDemo

{

static void Main()

{

MyClass t1 = new MyClass();

MyClass t2 = new MyClass();

 

Console.WriteLine(t1.x + " " + t2.x);

}

}

В данном примере конструктор класса MyClass имеет следующий вид.

public MyClass()

{

x = 10;

}

Обратите внимание на то, что этот конструктор обозначается как public. Дело в том, что он должен вызываться из кода, определенного за пределами его класса. В этом конструкторе переменной экземпляра класса MyClass присваивается значе­ние 10. Он вызывается в операторе new при создании объекта. Например, в следующей строке:

MyClass tl = new MyClass();

конструктор MyClass() вызывается для объекта t1, присваивая переменной его эк­земпляра tl.х значение 10. То же самое происходит и для объекта t2. После констру­ирования переменная t2.х будет содержать то же самое значение 10. Таким образом, выполнение приведенного выше кода приведет к следующему результату.

10 10



Последнее изменение этой страницы: 2016-12-27; просмотров: 90; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 52.23.219.12 (0.011 с.)