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

Страница 57 из 502

<b><i>объект.член</i></b>

В этой форме объект указывается слева, а член — справа. Например, присваивание значения 2 переменной Floors объекта house осуществляется с помощью следующего оператора.

<b>house.Floors = 2;</b>

В целом, оператор-точка служит для доступа к переменным экземпляра и методам. Ниже приведен полноценный пример программы, в которой используется класс Building.

<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>// В этом классе объявляется объект типа Building, </b>

<b>class BuildingDemo { </b>

<b>  static void Main() {</b>

<b>    Building house = new Building(); // создать объект типа Building </b>

<b>    int areaPP; // площадь на одного человека</b>

<b>    // Присвоить значения полям в объекте house, </b>

<b>    house.Occupants = 4; </b>

<b>    house.Area = 2500; </b>

<b>    house.Floors = 2;</b>

<b>    // Вычислить площадь на одного человека.</b>

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

<b>              areaPP + &quot; приходится на одного человека&quot;);</b>

<b>  }</b>

<b>}</b>

Эта программа состоит из двух классов: Building и BuildingDemo. В классе BuildingDemo сначала создается экземпляр house класса Building с помощью метода Main(), а затем в коде метода Main() осуществляется доступ к переменным экземпляра house для присваивания им значений и последующего использования этих значений. Следует особо подчеркнуть, что Building и BuildingDemo — это два совершенно отдельных класса. Единственная взаимосвязь между ними состоит в том, что в одном из них создается экземпляр другого. Но, несмотря на то, что это раздельные классы, у кода из класса BuildingDemo имеется доступ к членам класса Building, поскольку они объявлены как открытые (public). Если бы при их объявлении не был указан спецификатор доступа public, то доступ к ним ограничивался бы пределами Building, а следовательно, их нельзя было бы использовать в классе BuildingDemo.

Допустим, что исходный текст приведенной выше программы сохранен в файле UseBuilding.cs. В результате ее компиляции создается файл UseBuilding.exe. При этом оба класса, Building и BuildingDemo, автоматически включаются в состав исполняемого файла. При выполнении данной программы выводится следующий результат.

<b>Дом имеет:</b>

<b>2 этажа</b>

<b>4 жильца</b>

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

<b>625 приходится на одного человека</b>

Но классам Building и BuildingDemo совсем не обязательно находиться в одном и том же исходном файле. Каждый из них можно поместить в отдельный файл, например Building.cs и BuildingDemo.cs, а компилятору C# достаточно сообщить, что оба файла должны быть скомпилированы вместе. Так, если разделить рассматриваемую здесь программу на два таких файла, для ее компилирования можно воспользоваться следующей командной строкой.

<b>csc Building.cs BuildingDemo.cs</b>

Если вы пользуетесь интегрированной средой разработки Visual Studio, то вам нужно ввести оба упомянутых выше файла в свой проект и затем скомпоновать их.

Прежде чем двигаться дальше, рассмотрим следующий основополагающий принцип: у каждого объекта имеются свои копии переменных экземпляра, определенных в его классе. Следовательно, содержимое переменных в одном объекте может отличаться от их содержимого в другом объекте. Между обоими объектами не существует никакой связи, за исключением того факта, что они являются объектами одного и того же типа. Так, если имеются два объекта типа Building, то у каждого из них своя копия переменных Floors, Area и Occupants, а их содержимое в обоих объектах может отличаться. Этот факт демонстрируется в следующей программе.

<b>// В этой программе создаются два объекта типа Building.</b>

<b>using System;</b>

<b>class Building {</b>