C# 4.0 полное руководство - 2011
Шрифт:
Building.
// Программа, в которой используется класс Building.
using System;
class Building {
public int Floors; // количество этажей
public int Area; // общая площадь здания
public int Occupants; // количество жильцов
}
// В этом классе объявляется объект типа Building, class BuildingDemo { static void Main {
Building house = new Building; // создать объект типа Building int areaPP; // площадь на одного
// Присвоить значения полям в объекте house, house.Occupants = 4; house.Area = 2500; house.Floors = 2;
// Вычислить площадь на одного человека. areaPP = house.Area / house.Occupants;
Console.WriteLine("Дом имеет:\п " +
house.Floors + " этажа\п " + house.Occupants + " жильца\п " + house.Area +
" кв. футов общей площади, из них\п " + агеаРР + " приходится на одного человека");
}
}
Эта программа состоит из двух классов: Building и BuildingDemo. В классе BuildingDemo сначала создается экземпляр house класса Building с помощью метода Main , а затем в коде метода Main осуществляется доступ к переменным экземпляра house для присваивания им значений и последующего использования этих значений. Следует особо подчеркнуть, что Building и BuildingDemo — это два совершенно отдельных класса. Единственная взаимосвязь между ними состоит в том, что в одном из них создается экземпляр другого. Но, несмотря на то, что это раздельные классы, у кода из класса BuildingDemo имеется доступ к членам класса Building, поскольку они объявлены как открытые (public). Если бы при их объявлении не был указан спецификатор доступа public, то доступ к ним ограничивался бы пределами Building, а следовательно, их нельзя было бы использовать в классе BuildingDemo.
Допустим, что исходный текст приведенной выше программы сохранен в файле UseBuilding.cs. В результате ее компиляции создается файл UseBuilding.exe. При этом оба класса, Building и BuildingDemo, автоматически включаются в состав исполняемого файла. При выполнении данной программы выводится следующий результат.
Дом имеет:
2 этажа
4 жильца
2500 кв. футов общей площади, из них
625 приходится на одного человека
Но классам Building и BuildingDemo совсем не обязательно находиться в одном и том же исходном файле. Каждый из них можно поместить в отдельный файл, например Building. cs и BuildingDemo. cs, а
csc Building.cs BuildingDemo.es
Если вы пользуетесь интегрированной средой разработки Visual Studio, то вам нужно ввести оба упомянутых выше файла в свой проект и затем скомпоновать их.
Прежде чем двигаться дальше, рассмотрим следующий основополагающий принцип: у каждого объекта имеются свои копии переменных экземпляра, определенных в его классе. Следовательно, содержимое переменных в одном объекте может отличаться от их содержимого в другом объекте. Между обоими объектами не существует никакой связи, за исключением того факта, что они являются объектами одного и того же типа. Так, если имеются два объекта типа Building, то у каждого из них своя копия переменных Floors, Area и Occupants, а их содержимое в обоих объектах может отличаться. Этот факт демонстрируется в следующей программе.
// В этой программе создаются два объекта типа Building.
using System;
class Building {
public int Floors; // количество этажей public int Area; // общая площадь здания
public int Occupants; // количество жильцов
}
// В этом классе объявляются два объекта типа Building, class BuildingDemo { static void Main {
Building house = new Building;
Building office = new BuildingO;
int areaPP; // площадь на одного человека
// Присвоить значения полям в объекте house, house.Occupants = 4; house.Area = 2500; house.Floors = 2;
// Присвоить значения полям в объекте office, office.Occupants = 25; office.Area = 4200; office.Floors = 3;
// Вычислить площадь на одного человека в жилом доме. areaPP = house.Area / house.Occupants;
Console.WriteLine("Дом имеет:\n " +
house.Floors + " этажа\п " + house.Occupants + " жильца\п " + house.Area +
" кв. футов общей площади, из них\п " + areaPP + " приходится на одного человека");
// Вычислить площадь на одного человека в учреждении. areaPP = office.Area / office.Occupants;
Console.WriteLine("Учреждение имеет:\n " +
office.Floors + " этажа\п " +
office.Occupants + " работников\п " +
office.Area +
" кв. футов общей площади, из них\п " + areaPP + " приходится на одного человека");
}
}
Ниже приведен результат выполнения этой программы.
Дом имеет:
2 этажа
4 жильца
2500 кв. футов общей площади, из них 625 приходится на одного человека
Учреждение имеет: