Лекция 1. Классы и объекты

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

Описанием объекта является класс, а объект представляет экземпляр этого класса. Можно еще провести следующую аналогию. У нас у всех есть некоторое представление о человеке - наличие двух рук, двух ног, головы, пищеварительной, нервной системы, головного мозга и т.д. Есть некоторый шаблон - этот шаблон можно назвать классом. Реально же существующий человек (фактически экземпляр данного класса) является объектом этого класса.

Класс определяется с помощью ключевого слова сlass:

1 2 3 4 class Book {   }

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

1 2 3 4 5 6 7 8 9 10 11 class Book { public string name; public string author; public int year;   public void Info() { Console.WriteLine("Книга '{0}' (автор {1}) была издана в {2} году", name, author, year); } }

Кроме обычных методов в классах используются также и специальные методы, которые называются конструкторами. Конструкторы вызываются при создании нового объекта данного класса. Отличительной чертой конструктора является то, что его название должно совпадать с названием класса:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 class Book { public string name; public string author; public int year;   public Book() { }   public Book(string name, string author, int year) { this.name = name; this.author = author; this.year = year; }   public void Info() { Console.WriteLine("Книга '{0}' (автор {1}) была издана в {2} году", name, author, year); } }

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

Поскольку имена параметров и имена полей (name, author, year) в данном случае совпадают, то мы используем ключевое слово this. Это ключевое слово представляет ссылку на текущий экземпляр класса. Поэтому в выражении this.name = name; первая часть this.name означает, что name - это поле текущего класса, а не название параметра name. Если бы у нас параметры и поля назывались по-разному, то использовать слово this было бы необязательно.

Теперь используем класс в программе. Создадим новый проект. Затем нажмем правой кнопкой мыши на название проекта в окне Solution Explorer (Обозреватель решений) и в появившемся меню выберем пункт Class.

В появившемся диалоговом окне дадим новому классу имя Book и нажмем кнопку Add (Добавить). В проект будет добавлен новый файл Book.cs, содержащий класс Book.

Изменим в этом файле код класса Book на следующий:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 class Book { public string name; public string author; public int year;   public Book() { name = "неизвестно"; author = "неизвестно"; year = 0; }   public Book(string name, string author, int year) { this.name = name; this.author = author; this.year = year; }   public void GetInformation() { Console.WriteLine("Книга '{0}' (автор {1}) была издана в {2} году", name, author, year); } }

Теперь перейдем к коду файла Program.cs и изменим метод Main класса Program следующим образом:

1 2 3 4 5 6 7 8 9 10 11 12 13 class Program { static void Main(string[] args) { Book b1 = new Book("Война и мир", "Л. Н. Толстой", 1869); b1.GetInformation();   Book b2 = new Book(); b2.GetInformation();   Console.ReadLine(); } }

Если мы запустим код на выполнение, то консоль выведет нам информацию о книгах b1 и b2. Обратите внимание, что чтобы создать новый объект с использованием конструктора, нам надо использовать ключевое слово new. Оператор new создает объект класса и выделяет для него область в памяти.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: