Урок 6: Классы и объекты
На данный момент все современные языки являются объектно-ориентированными. Вы не раз будете слышать это словосочетание в умных книжках и статьях. Не пугайтесь этого слова - все очень просто. Если мы посмотрим на окружающий мир, то заметим, что воспринимаем его тоже как набор объектов. И этот подход перенесли в программирование, что облегчило работу программистов. В чем же его суть?
Окружающий нас мир можно разделить на различные классы вещей: например, коты, дома или деревья. Когда вам говорят, что кот ушел из дома и залез на дерево, вы представляете, как это происходит, так как знаете, как выглядит кот, дом и дерево. То есть классы можно считать именованными категориями, которые позволяют группировать сходные объекты. Компьютеру тоже будет проще понимать, что вы от него хотите, если вы будете создавать программу с помощью классов.
Каждый класс предметов включает нужные нам объекты. Например, к классу «кот» относится мой кот Рыжик – он является объектом класса котов. Дом на углу моей улицы не что иное, как объект класса «дом», а береза около дома – объект класса «дерево». Если есть определенный объект, то необходимо описать объект. Если я хочу рассказать о своем коте, то, наверное, расскажу о том, какого цвета его шерсть, какой длины у него хвост, какой вес и т.д. Для объектов характерны различные свойства, которые помогают четко описать объекты. Кроме того, у объекта могут быть различные состояния. Например. если я буду гладить кота, то для него наступает приятное событие, которое можно назвать «Нирвана». Если налетает сильный ветер, ломающий ветви уже упоминавшегося здесь дерева, то с деревом происходит событие под названием «Ураган». При возникновении события, как правило, выполняются определенные действия, влияющие на состояние объекта. Действия по обработке события выполняются не самим объектом, а другими объектами, которые могут получать сообщение о возникающих событиях. При работе с компьютерным приложением, событиями могут быть «нажатие на кнопку», «нажатие на определенную клавишу» или «щелчок кнопки мыши».
Объект может выполнять действия. Например, кот Рыжик лижет свою шерсть — это действие. В компьютерном мире определенные действия выполняются, когда происходят интересные события, например, при нажатии на кнопку выполняется действие «рисуем кота» или из динамиков раздается мяуканье. Но компьютер может не иметь представления о том, как надо рисовать кота. В этом случае необходимо дать набор инструкций, который будет ему понятен.
Вспомним, как создаются классы в школе. Детей определенного возраста объединяют в группу и называют ее классом. Такой подход позволяет уравнять их в правах: все будут изучать одни и те же предметы и сдавать одни и те же экзамены. Но это не означает, что все ученики класса одинаковы, у них всего лишь имеются некоторые общие особенности.
Рассмотрим другой пример: в группе живых организмов можно выделить два класса — «растения» и «животные». Попробуем научиться выражать свои мысли так, чтобы компьютер смог понять то, что мы пытаемся сказать. В C# описание класса выглядит следующим образом:
class Animal { }
Из этого небольшого отрывка кода компьютер понимает следующее:
- мы собираемся изучать класс объектов;
- мы назвали этот класс Animal;
- описание этого класса будет расположено между фигурными скобками { … }
Класс «Animal» имеет смысл определить в программе, выводящей на экран изображения животных или сохраняющей интересные факты о них. При решении других задач надо будет описывать другие классы, например, классы MyPhotoProgram. Нужно понимать, что классы объединяют не только те объекты, которые существуют в реальном мире. Они полезны и при работе с абстрактными объектами.
Строительный блок: Классы
Все программы на языке C# представляют собой описание множества классов. Как создать класс? Сначала пишем слово class, которое должно быть написано строчными буквами, далее идет имя класса. Имя класса может быть любым и содержать как прописные, так и строчные буквы, причем использование пробелов не допускается. Каждый класс описывает, как устроены объекты класса. В процессе работы с классом «Animal» могут появиться объекты этого класса:
- Мой кот Рыжик
- Ваша корова в деревне
- Дворовая собака
Создание объектов
Если у нас есть класс Animal, то мы можем спокойно создать объект данного класса. Например, для создания объекта Рыжик можно применить такую конструкцию:
Animal Ryzhik;
Мы написали небольшой отрывок кода, и здесь нужно остановиться и подумать, иначе можно упустить главное. Компьютер понимает следующее: «Программист хочет поговорить об объекте в классе Animal и назвать его Ryzhik. Я не знаю, что такое Ryzhik, и мне все равно – пусть называет, как хочет». Теперь дополним приведенный выше код еще одним выражением:
Ryzhik = new Animal();
Может показаться странным, но нужно сделать именно так. Сначал это будет казаться необычным, но потом привыкнете. Первое выражение (Animal Ryzhik) предупреждает компьютер, что вскоре мы попросим его работать с объектом из класса Animal. Он просматривает всю программу и ищет нужное описание. Не найдя такого класса, он сообщит вам, что сделать ничего не сможет. Если же отыскать нужное описание удастся, компьютер продолжит выполнение программы, ожидая вашей дальнейшей просьбы совершить некоторое действие с объектом класса Animal по имени Ryzhik.
Второе выражение (Ryzhik = new Animal();) напоминает компьютеру: «Помнишь объект Ryzhik? Теперь мне нужно выполнить с ним действие. Выдели немножко памяти, где ты хранил бы данные об этом животном». Компьютер запоминает новый объект класса Animal и понимает, что это объект Ryzhik, упомянутый ранее. Изучив класс Animal, компьютер кое-что знает о Рыжике и держит эту информацию наготове, понимая, что может получить от вас дополнительные сведения об этом объекте. Теперь рассмотрим все три момента и представим себе, как компьютер «думает» о них.
Строительный блок: Объекты
Объекты — это отдельные, четко обозначенные экземпляры некоторого класса. Класс дает общее описание объектов, указывает «на что они похожи». Рассмотрим процесс объявления и создания объектов класса.
Если планируется работать с определенным объектом, необходимо заранее сообщить компьютеру, к какому классу он принадлежит, для того чтобы компьютер проверил свои знания о нужном нам классе. Поэтому сначала указываем имя класса, а затем даем имя объекту. Этот процесс называется «объявлением объекта». Затем необходимо попросить компьютер «создать экземпляр» класса.
На основе своих знаний о классе компьютер создаст объект, с которым он сможет выполнять действия. Это называется «созданием объекта». Теперь мы знаем, как рассказать об определенном объекте в классе, но поскольку класс, ко- торый мы рассматриваем, достаточно прост (можно сказать, он совсем пустой), то работать с ним неинтересно. Итак, в следующем уроке мы добавим к нему некоторые элементы.
Реклама