Урок 2. Создание простого класса на C#


На втором уроке учебника по объектно-ориентированному программированию на языке C# я расскажу, как создаются классы на языке C# и как можно добавить поведение в виде общедоступных и частных скрытых методов. Это также демонстрирует одно из применений инкапсуляции.

Что такое класс?

Класс является основным строительным блоком кода при создании объектно-ориентированного программного обеспечения. Класс абстрактно описывает все характеристики и поведение типа объекта. После создания экземпляра создается объект, который имеет все методы, свойства и другое поведение, определенные в классе.

Класс не следует путать с объектом. Класс - это абстрактное понятие для объекта, который создается во время разработки программиста. Объекты, основанные на классе, являются конкретными экземплярами класса, которые возникают во время выполнения. Например, класс автомобиля будет определять, что все автомобили имеют марку, модель и цвет. Только во время выполнения объект будет создан как красный Ferrari Dino.

Создание класса

Основной синтаксис для создания нового класса очень прост. Ключевое слово "class", за которым следует имя нового класса, просто добавляется в программу. Затем следует блок кода, окруженный фигурными скобками {}, к которому будет добавлен код класса.

Class имя класса  {}
Чтобы продемонстрировать это, мы создадим новый класс в новом консольном приложении.

Создание консольного приложения

Запустите Microsoft Visual Studio или любую другую IDE b выполните действия, необходимые для создания нового консольного приложения.

После того, как новое приложение было создано, вы должны иметь один файл кода с именем 'Program.cs' или аналогичный в рамках нового проекта. Он должен содержать определение класса и один метод с именем "Main". Этот метод является первым фрагментом кода, выполняемого при запуске программного обеспечения. Определение класса будет находиться в блоке кода пространства имен под названием "Classstest". Мы вернемся к этому занятию позже.

Добавление нового класса в приложение

Любое количество классов может быть добавлено в пространство имен в пределах одного файла кода. Однако, поскольку это быстро приведет к очень большим файлам, более удобочитаемым является разделение классов на их собственные файлы. Теперь мы добавим новый файл класса в проект для класса, который будет описывать транспортные средства.

Выберите "Добавить Класс"...'из меню проект Visual Studio. Вам будет предложено ввести имя для нового класса. Введите " Vehicle " и нажмите кнопку Добавить. Создается новый файл класса с уже добавленным определением класса. Обратите внимание, что пространство имен совпадает с пространством имен в исходном файле. Вы можете переключаться между файлами с помощью обозревателя решений для сравнения пространств имен.

Ваше новое определение класса должно быть похоже на приведенное ниже:

namespace ClassTest{
class Vehicle
{
}
}
Примечание: Если вы не используете Visual Studio, процесс добавления файла класса может немного отличаться.

Создание экземпляра класса

Хотя мы явно не добавили в класс никаких функциональных возможностей, теперь он может быть использован для создания объектов. Эти объекты будут иметь стандартное поведение, присущее классу. Чтобы продемонстрировать это, вернитесь к файлу кода программы, содержащему основной метод. В этом методе мы создадим новый объект vehicle и запустим его метод ToString, чтобы увидеть результаты. Поскольку мы еще не определили, как ToString должен работать, он просто покажет полное имя.

static void Main(string[] args){
Vehicle car = new Vehicle();
Console.WriteLine(car.ToString());
// Выведет "ClassTest.Vehicle"
}
Примечание: префикс Classstest - это просто название пространства имен класса Vehicle.

Добавление методов

Публичные (открытые) методы

Открытые методы являются частью открытого интерфейса класса, т. е. это методы, которые могут быть вызваны другими объектами.

Чтобы сделать методы видимыми для внешних объектов в качестве префикса используется ключевое слово public. Следующий код, добавленный в класс транспортного средства, предоставляет новый метод нажатия на звуковой сигнал транспортного средства. Убедитесь, что вы добавляете код в блок кода класса.

public void PressHorn(){
Console.WriteLine("Toot toot!");}
Чтобы использовать новый метод, измените код в основном методе следующим образом:

static void Main(string[] args){
Vehicle car = new Vehicle();    car.PressHorn();
        // Вывод "Toot toot!"
}
Закрытый (приватный) метод

Чтобы обеспечить инкапсуляцию, где внутренняя функциональность класса скрыта, некоторые методы будут определены как частные (приватные, закрытые). Методы с частным уровнем защиты полностью невидимы для внешних классов. Это делает безопасным изменение кода для изменения функциональности, повышения производительности и т. д. без необходимости обновлять классы, использующие открытый интерфейс. Чтобы определить метод как частный, ключевое слово private можно использовать в качестве префикса к методу. Кроме того, использование префикса вообще не подразумевает, что метод является закрытым по умолчанию.

Следующий метод класса car является частью внутренней реализации, а не публичного интерфейса, поэтому определяется как частный.

private void MonitorOilTemperature() {
// Внутренний код контроля температуры масла...;}
Чтобы продемонстрировать, что этот метод недоступен для внешних классов, попробуйте следующий код в основном методе программы. При попытке компиляции или выполнения программы возникает ошибка, указывающая на то, что метод MonitorOilTemperature не может быть вызван из-за его уровня защиты.

static void Main(string[] args){
Vehicle car = new Vehicle();
car.MonitorOilTemperature();
}
Ограничения

В этой статье описывается создание базового класса с открытыми и закрытыми методами. Однако каждый объект, созданный из этого класса, идентичен, так как в настоящее время он не имеет конструктора и своих свойств. В следующей статье серии мы добавим свойства к классу, чтобы решить эту проблему.
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.

тегистатьи IT, си шарп, ООП




Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.




Selenium, Ubuntu, Хром и все-все-все
Введение в 3D графику для новичков
Что такое Truffle