Информатика

Классы и объекты в языке C#

Подход с использованием «классов, объектов, свойств, событий и методов» (о нем и было рассказано в истории) не является единственно возможным. Это только один из способов, который поможет объяснить пришельцу, как устроен окружающий нас мир. Крайне важно договориться о том, что вы будете описывать его при помощи одинаковых образов. Такой взгляд на мир (кстати, он называется «объектно-ориентированным» подходом) стал очень популярным способом описания вещей, и фактически язык C# требует придерживаться именно его.

Итак, изучение языка C# — это изучение способов описания вещей при помощи классов, объектов, событий, методов и т. д.

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

Вот и все: общее представление о мире и общий язык. Вскоре будете общаться с компьтером, как старые приятели.

Теперь необходимо понять, что собой представляет ориентация на объекты с точки зрения программиста.

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

Каждый класс вещей включает нужные нам объекты. Например, к классу «кот» относится мой кот Пушок – он является объектом класса котов. Дом на углу моей улицы не что иное, как объект класса «дом», а дуб, видимый из окна спальни, – объект класса «дерево». Если есть определенный объект, с которым должен работать компьютер, то необходимо создать некоторое описание, представляющее такой объект.

Для объектов характерны различные свойства, которые помогают четко описать объекты. Их можно сравнить с прилагательными в русском языке. Например, моего большого упитанного Пушка можно описать такими свойствами, как рост, вес и т. д.

События — это некоторые особые состояния, в которые может попадать объект. В реальном мире события происходят вокруг нас непрерывно. Например, когда я глажу Пушка, для него наступает приятное событие, которое можно назвать «Нирвана». Если налетает сильный ветер, ломающий ветви уже упоминавшегося здесь дуба, то с деревом происходит событие под названием «Ураган». При возникновении события, как правило, выполняются определенные действия, влияющие на состояние объекта. Действия по обработке события выполняются не самим объектом, а другими объектами, которые могут получать сообщение о возникающих событиях. При работе с компьютерным приложением, где есть видимые объекты, например, компьютерные игры, событиями могут быть «нажатие на кнопку», «нажатие на определенную клавишу» или «щелчок кнопки мыши».

Объект может выполнять действия. Например, кот Пушок лижет свою шерсть — это действие. В компьютерном мире определенные действия выполняются, когда происходят интересные события, например, при нажатии на кнопку выполняется действие «рисуем кота».

Хотите верьте, хотите нет, но компьютер может не иметь представления о том, как надо рисовать кота. В этом случае необходимо дать описание, которое будет ему понятно, — метод рисования кота, это набор пошаговых инструкций, определяющих порядок выполнения конкретных действий.

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

В окружающем нас мире можно выделить различные группы вещей. Назовем их классами.

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

Но это не означает, что все ученики класса одинаковы, у них всего лишь имеются некоторые общие особенности.

Рассмотрим другой пример: в группе живых организмов можно выделить два класса — «растения» и «животные».

Теперь попробуем научиться выражать свои мысли так, чтобы компьютер смог понять то, что мы пытаемся сказать.

В C# описание класса для компьютера может иметь следующий вид:

class Animal

{

}

Из этого небольшого отрывка кода компьютер понимает следующее:

мы собираемся изучать класс объектов; мы назвали этот класс Animal; описание этого класса будет расположено между фигурными скобками { … }.

Класс «Animal» имеет смысл определить в программе, выводящей на экран изображения животных или сохраняющей интересные факты о них. При решении других задач надо будет описывать другие классы, например, классы MyPhotoProgram или MyGradeCalculator. Нужно понимать, что классы объединяют не только те объекты, которые существуют в реальном мире. Они полезны и при работе с абстрактными объектами.

Строительный блок: Классы

Все программы на языке C# представляют собой

class Animal

описание множества классов.

{

Компьютеру известно слово «class», которое должно быть написано строчными буквами, но имя класса может быть любым и содержать как прописные, так и строчные буквы, причем использование пробелов не допускается.

}

Немного позже мы расскажем о том, что происходит внутри описания класса (между фигурными скобками). Но сначала рассмотрим объекты.

Каждый класс описывает, как устроены объекты класса. В процессе работы с классом «Animal» могут появиться объекты этого класса: кот Барсик, принадлежащий вашей тете; безымянная корова, виденная вами всего один раз; горилла по кличке Джереми; другие объекты.

Создание объектов

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

Это можно выразить следующим образом:

Animal Barsik;

Мы написали небольшой отрывок кода, и здесь нужно остановиться и подумать, иначе можно упустить главное. Компьютер понимает следующее: «Этот человек хочет поговорить об объекте в классе Animal и назвать его Barsik. Я не знаю, что такое Barsik, и мне все равно – пусть называет, как хочет».

Теперь дополним приведенный выше код еще одним выражением:

Barsik = new Animal();

Может показаться странным, но нужно сделать именно так, потому что с точки зрения компьютера в этом есть смысл. Подумайте «как машина» и представьте себе следующее:

Первое выражение (Animal Barsik) предупреждает компьютер, что вскоре мы попросим его работать с объектом из класса Animal. Теперь у компьютера появляется возможность проверить свои знания об этом классе. Он просматривает всю программу и ищет нужное описание. Не найдя такого класса, он сообщит вам, что сделать ничего не сможет. Если же отыскать нужное описание удастся, компьютер продолжит выполнение программы, ожидая вашей дальнейшей просьбы совершить некоторое действие с объектом класса Animal по имени Barsik.

Второе выражение (Barsik = new Animal();) напоминает компьютеру: «Помнишь объект Barsik? Теперь мне нужно выполнить с ним действие. Выдели немножко памяти в своей голове, где ты хранил бы данные об этом животном». Компьютер запоминает новый объект класса Animal и понимает, что это объект Barsik, упомянутый ранее. Изучив класс Animal, компьютер кое-что знает о Барсике и держит эту информацию наготове, понимая, что может получить от вас дополнительные сведения об этом объекте.

Теперь рассмотрим все три момента и представим себе, как компьютер «думает» о них.

Заметьте, в первом блоке мы описываем класс объектов в общем, а в блоках 2 и 3 выделяем определенный объект в классе Animal.

//Примечание редактора. По-английски fiddlestick означает «смычок», а fiddlesticks — «вздор, чепуха». Но, как уже говорилось, имя может быть любым, в том числе и «чепушинка».

Строительный блок: Объекты

Объекты — это отдельные, четко обозначенные

class Animal

экземпляры некоторого класса.

{

Класс дает общее описание объектов, указывает

}

«на что они похожи».

Рассмотрим процесс объявления и создания объектов класса.

Если планируется работать с определенным объектом,

Animal percyThePorcupine;

необходимо заранее сообщить компьютеру, к какому

//ПерсиДикообраз

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

Этот процесс называется «объявлением объекта». Затем необходимо попросить компьютер «создать экземпляр» класса.

На основе своих знаний о классе компьютер создаст

percyThePorcupine =

реальный объект, с которым он сможет выполнять действия.

В нашем примере объект percyThePorcupine становится экземпляром Animal, или можно сказать, что

new Animal();

percyThePorcupine — это «объект» типа Animal. Но в любом случае нам уже точно известно, что мы говорим об определенном объекте класса

Animal. Это называется «созданием объекта».

Теперь мы знаем, как рассказать об определенном объекте в классе, но поскольку класс, который мы рассматриваем, достаточно прост (можно сказать, он совсем пустой), то работать с ним неинтересно. Итак, в следующем уроке мы добавим к нему некоторые элементы.

Свойства объектов

Если бы я попросил вас перечислить несколько свойств животных, то список мог быть следующим:

Вид животного (Kind of animal).

Рост (Height).

Длина (Length).

Количество лап (Number of legs).

Окрас (Color).

Наличие хвоста (Has a tail).

Является ли млекопитающим (Is a mammal).

При рассмотрении свойств этих животных вы можете присвоить значения каждому из них:

Kind of animal = «Cat» («Кот»).

Height = 50 cm (большой котяра!).

Length = 110 cm (это рысь скорее, а не домашняя кошка!).

Number of legs = 4.

Color = «Black» (черный).

Has tail = true (истина).

Is mammal = true (истина).

В C# эти свойства называются полями. (Слово «свойства» используется для несколько иной цели, но здесь мы не станем вдаваться в подробности.)

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

Значения полей height, length и number of legs являются числами. Как правило, компьютер использует эти значения для выполнения математических операций.

В задаче с бананами поля можно было бы назвать так: numberOfBananas («количествоБананов»), numberOfPeople («количествоЛюдей») и numberEachOneGets («количествоПолучаемоеКаждым»). Они должны иметь числовой тип, поскольку с их помощью мы выполняем некие математические вычисления.

Примечание. В языке C# имена полей не могут содержать пробелы. Используйте в именах только буквы и числа, причем первой всегда ставится буква.

Поля kindOfAnimal и color относятся к строковому типу. Значением таких полей может быть любой текст. В нашем примере значения задаются словами «cat» и «black», заключенными в кавычки.

Надо отметить, что в строковом поле (в строке) текст может содержать числа. Например, в тексте «Сегодня это уже 17-й крокодил, которого я вижу!» присутствуют буквы, пробелы, числа и знаки препинания, но с числами, находящимися в строке, нельзя выполнять математические операции.

Поле типа hasTail всегда будет принимать значение ИСТИНА или ЛОЖЬ

(true/false), точно так же, как любые поля типа ДА или НЕТ («yes/no»). Такие поля относятся к логическому типу.

Каждый «тип» обрабатывается компьютером особым образом, поэтому при определении полей мы должны указывать их тип. В одной программе мы определим поле numberOfLegs как строку, поскольку мы не планируем выполнять математические операции над этим полем, а в другом случае, когда надо будет узнать, сколько конечностей у 500 одинаковых объектов, может потребоваться использование такого поля в качестве числового.

Тип «String» (строка)

Для того чтобы попросить компьютер рассматривать некое свойство как строку, состоящую из букв, достаточно просто объявить объект следующим образом:

string kindOfAnimal;

Пока мы не задаем значение в этом поле, а всего лишь сообщаем, с каким типом данных будем работать, и присваиваем полю имя. Поставьте себя на место компьютера и представьте, как бы вы отреагировали, если бы человек написал для вас следующее:

Числовые типы

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

То, что значение поля должно быть целым числом, проще всего сообщается так:

int numberOfLegs;

А вот что подумает в этом случае наш цифровой друг:

Тип «Boolean» (логическое значение)

Если вам известно, что некоторое поле будет всегда принимать значения «true» («истина») или «false» («ложь») и ничего другого, то использование в C# поля типа «true/false» может оказаться полезным. Это самый простой из всех типов, хотя такие поля носят довольно странное название — булевые (Boolean), по имени математика Джорджа Буля.

Извещая компьютер о том, что поле «hasTail» должно принимать значения «true/false», используйте следующий код:

bool hasTail;

Машина будет думать следующим образом:

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

Main Aditor

Здравствуйте! Если у Вас возникнут вопросы, напишите нам на почту help@allinweb.info

Похожие статьи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *