возвращать целочисленный результат или принимать аргументы (па-
раметры командной строки).
Несколько слов об ООП
— Ученый совет должен быть в полном составе!
— Кота ученого приглашать будем?
Чтобы прочувствовать всю прелесть языка C#, необходимо иметь хотя бы
общее представление об основных принципах ООП, поскольку именно
принципы ООП реализуются в C# по полной программе. И здесь сразу
необходимо отметить, что ООП, строго говоря, появилось не от хорошей
жизни. Главная причина перехода от парадигмы процедурного программи-
рования к концепции ООП произошла, как это ни странно, для того, чтобы
программистам легче и проще было создавать и читать программные коды.
Обычно новшества появляются в ответ на некоторую проблему. Возникает
вопрос: ответом на какую проблему является появление ООП? Проблема
банальная — в какой-то момент объем программных кодов настолько уве-
личился, что держать все под контролем стало практически нереальным.
Что такое программа? Это, по сути, набор инструкций о том, какие дан-
ные и какими методами обрабатывать. Если и данных, и функций для их
обработки много, несложно во всей этой кухне запутаться. Главная идея
ООП как раз и состоит в том, чтобы объединить данные и функции для их
обработки на одном из базовых уровней — на уровне тех «строительных
блоков», из которых создается программа. Эта идея (идея объединения
в одно целое данных и программного кода для их обработки) называется
инкапсуляция;
полиморфизм;
наследование.
Несколько слов об ООП 35
Инкапсуляция проявляет себя во всей красе в виде концепции классов
и объектов. Мы уже обсуждали особенности классов и объектов. Здесь
снова напомним, как они соотносятся: класс является описанием объекта
и полностью определяет содержимое и поведение объекта. Объект созда-
ется на основе класса. Таким образом, в объекте «спрятаны» данные и про-
граммный код методов, которые имеют доступ к этим данным и могут их
обрабатывать. Объекты также взаимодействуют друг с другом. На первый
взгляд такой подход может показаться искусственно усложненным и даже
где-то неприятным, но это только первое впечатление. Впоследствии мы
убедимся, что с классами и объектами работать просто и приятно.
Чтобы понять всю эту небесную механику с классами и объектами, нам
предстоит к классам и объектам привыкнуть (это раз) и научиться ими
пользоваться (это два). Привыкать мы уже начали, а пользоваться
научимся.
Что касается
фицировать однотипные действия, сведя к минимуму количество исполь-
зуемых методов. На практике это сводится к тому, что методы, выполняю-
щие схожие действия, называются одним именем, даже если действия эти
выполняются над данными разных типов.
ПРИМЕЧАНИЕ Полиморфизм базируется на перегрузке и переопределении методов.
Эти нехитрые процедуры мы будем обсуждать позже.
Термин «
существующих. Это очень сильно экономит время и силы, а также повы-
шает устойчивость и совместимость программного кода. Каждый из упо-
мянутых трех механизмов мы будем исследовать, только, быть может, без
прямого упоминания красивых и загадочных названий этих механизмов.
Ведь инкапсуляция, полиморфизм и наследование — это лишь общие идеи.
Нас же интересуют конкретные способы их реализации. О них, собствен-
но, и будет идти речь в книге.
Конечно, в ООП не все так гладко, как об этом пишут в книгах. У ООП есть
критики, причем вплоть до полного его неприятия. Но поскольку у нас
выхода другого нет (ведь в C# реализуется парадигма ООП), мы воспри-
нимаем ООП как данность и искренне верим в то, что ООП — это новый
и исключительно прогрессивный этап в развитии программирования.
36
Глава 1. Информация к размышлению: язык C# и даже больше
Нередко применительно к среде .NET Framework (и языку C#, как
немаловажной его составляющей) употребляют такой термин, как
«компонентное программирование» или «компонентно-ориенти ро-
ван ное программирование». Некоторые специалисты даже считают
ком по нент но-ориентированное программирование парадигмой, кото-
рая приходит на смену ООП или является надстройкой к ООП. В двух
словах, ком по нент но-ори енти ро ван ное программирование принци-
пиально отличается от обычного ООП системой ограничений и правил, которые применяются к методам ООП для создания программных
компонентов. Изюминка подхода связана с тем, что компоненты
могут быть написаны на разных языках программирования. Язык
C# содержит встроенные средства для поддержки компонентного
программирования.
Еще одна простая программа
Простота есть главное условие
красоты моральной.
Здесь мы рассмотрим еще один небольшой пример, который принципи-