Классы и объекты в C#: Фундаменты надёжного ООП
Классы и объекты в C#: Фундаменты надёжного ООП
В этом уроке вы узнаете о концепции классов и объектов в C# с помощью примеров.
C# — объектно-ориентированный язык, структурирующий приложения вокруг объектов. В ООП мы решаем сложные задачи, разбивая их на переиспользуемые, самодостаточные объекты.
Для работы с объектами нужно выполнить следующие действия:
- Создать класс
- Создать экземпляры объектов из этого класса
Класс в C#
Класс — это чертеж для объекта. Представьте его как план дома: он определяет комнаты, двери, окна и структурные правила. Реальный дом, построенный по этому плану, — это объект.
Множество домов могут иметь один план, так же как много объектов можно создать из одного класса.
Создание класса в C#
class ClassName { }
Здесь определён класс с именем ClassName. Класс может содержать
- Поля — переменные, хранящие данные
- Методы — функции, выполняющие действия
Пример:
class Dog {
// Поле
string breed;
// Метод
public void Bark() {
// Реализация
}
}
В примере выше:
- Dog — имя класса
- breed — поле
- Bark() — метод
Примечание: В C# члены класса включают и поля, и методы.
Объекты в C#
Объект — экземпляр класса. Например, класс Dog может породить объекты вроде Бульдог, Немецкая овчарка или Мопс.
Создание объекта класса
ClassName obj = new ClassName();
Здесь new создаёт объект; obj — его имя. Например:
Dog bullDog = new Dog();
Объект bullDog теперь может обращаться к полям и методам, определённым в Dog.
Доступ к членам класса через объект
Доступ к членам осуществляется оператором точки (.):
using System;
namespace ClassObject {
class Dog {
string breed;
public void Bark() {
Console.WriteLine("Bark Bark !!");
}
static void Main(string[] args) {
// создание объекта Dog
Dog bullDog = new Dog();
// установка породы
bullDog.breed = "Bull Dog";
Console.WriteLine(bullDog.breed);
// вызов метода
bullDog.Bark();
Console.ReadLine();
}
}
}
Вывод
Bull Dog Bark Bark !!
Обратите внимание на использование bullDog и оператора точки для доступа к breed и Bark().
Создание нескольких объектов одного класса
Создайте несколько экземпляров из одного класса, каждый со своими данными:
using System;
namespace ClassObject {
class Employee {
string department;
static void Main(string[] args) {
// первый сотрудник
Employee sheeran = new Employee();
sheeran.department = "Development";
Console.WriteLine("Sheeran: " + sheeran.department);
// второй сотрудник
Employee taylor = new Employee();
taylor.department = "Content Writing";
Console.WriteLine("Taylor: " + taylor.department);
Console.ReadLine();
}
}
}
Вывод
Sheeran: Development Taylor: Content Writing
Каждый объект хранит своё значение department.
Создание объектов в другом классе
Объекты могут создаваться в других классах. Например:
using System;
namespace ClassObject {
class Employee {
public string name;
public void Work(string work) {
Console.WriteLine("Work: " + work);
}
}
class EmployeeDrive {
static void Main(string[] args) {
// создание объекта Employee
Employee e1 = new Employee();
Console.WriteLine("Employee 1");
// установка имени
e1.name = "Gloria";
Console.WriteLine("Name: " + e1.name);
// вызов метода
e1.Work("Coding");
Console.ReadLine();
}
}
}
Вывод
Employee 1 Name: Gloria Work: Coding
Здесь EmployeeDrive создаёт объект Employee. Публичные члены позволяют межклассовый доступ. Подробнее о модификаторах доступа в официальной документации.
Зачем нужны объекты и классы?
Классы и объекты обеспечивают модульный дизайн. Для игры со множеством врагов один класс Enemy может определять health, ammo, Shoot() и Run(). Каждый экземпляр врага тогда хранит своё состояние, разделяя поведение.
Моделируя код вокруг объектов, мы снижаем сложность, улучшаем поддерживаемость и способствуем переиспользованию.
Язык C
- Абстрактные классы и методы в C#: практическое руководство
- Частичные классы и методы в C#: понимание и применение
- Sealed-классы и sealed-методы в C#: когда использовать, примеры и повышение безопасности кода
- Классы и объекты в C++: практическое руководство по объектно-ориентированному программированию
- Дружественные функции и классы в C++: мастерство контроля доступа
- Объектно-ориентированное программирование в Python: классы, наследование, инкапсуляция и полиморфизм
- Классы и объекты в Java: практическое руководство
- Абстрактные классы и методы в Java: полное руководство
- Вложенные и внутренние классы в Java: типы, примеры и лучшие практики
- Паттерн Singleton в Java: как реализовать и безопасно использовать