Что такое объектно-ориентированное программирование
По правде говоря, почти невозможно быстро и доходчиво описать, что такое объектно-ориентированное программирование, если не имеешь дело с опытным программистом. Однако попытаемся.
Предположим, у нас есть картотека, содержащая информацию о членах некоего клуба: имя, адрес и номер телефона, статус в клубе.
___________________________
* American National Standards Institute. (Прим.перев.)
Карточка члена клуба Имя Адрес Телефон СтатусЕсли у кого-то изменяется адрес, то мы должны просмотреть картотеку в поисках карточки с его именем, чтобы занести туда новую информацию. То же самое происходит и в случае изменения номера телефона или статуса члена клуба. Если бы мы написали инструкции для выполнения этих трех отдельных действий, они могли бы выглядеть примерно так:
Взять карточки Найти карточку Смита Изменить адрес на Западная Авеню, 12 Взять карточки Найти карточку Доу Изменить телефон на 555-1234 Взять карточки Найти карточку Джонса Изменить статус на «выбыл»Обратите внимание, все эти три действия относятся к карточкам, карточки же, сами по себе, не имеют отношения к действиям, которые над ними производят. Следовательно, мы имеем дело с четырьмя объектами: карточками и функциями изменения адреса, номера телефона и статуса.
В объектно-ориентированном программировании мы используем наборы данных (карточки), которые комбинируем с производимыми над ними действиями. Отныне мы будем иметь дело с этой комбинацией как с единым объектом. Если изобразить этот объект (назовем его клубная карточка), он будет выглядеть так:
Клубная Карточка Имя Адрес Телефон Статус Изменить адрес Изменить телефон Изменить статусТак как объект включает и наборы данных, и функции, больше нет необходимости задавать компилятору каждый шаг по внесению изменений. Теперь компилятор поймет инструкцию, которая выглядит примерно так:
Клубная карточка: Изменить адрес (Смит, Западная Авеню, 12) Клубная карточка: Изменить телефон (Доу, 555-1234) Клубная карточка: Изменить статус (Джонс, выбыл)*Не беспокойтесь, если такое объяснение показалось вам немного абстрактным. Вам не обязательно изучать объектно-ориентированное программирование, чтобы программировать на Си. Однако, изучив Си, вы будете способны с большей легкостью разобраться и в объектно-ориентированном программировании.
Что Си может и чего не может
Если вы заинтересованы в том, чтобы иметь возможность писать программы любых типов и размеров, вы правильно поступаете, выбирая Си. Фактически, нет никаких ограничений на программу, которую можно создать с помощью мощного компилятора Си. Изучение Си позволяет продвинуться в то же время и в изучении Си++.
Но то, что Си — мощный язык, не означает в то же время, что он является единственным или даже просто лучшим средством для решения любой задачи. Например, если вам надо создавать базы данных, то не стоит изучать Си. Существует большое число пакетов и кодовых генераторов, которые могут фактически написать для вас базу. Вы получаете быстро сделанную базу данных и затем добавляете туда созданные вами нужные функции и средства. Си, как таковой, не поможет вам сделать базу данных за один день. Это ограничение не относится именно и только к Си, а является общим для всех универсальных языков программирования. Ни один из них не предназначен для ускоренной разработки специальных прикладных программ.
Этапы программирования
Разработка программы — это логический процесс. Если вы не пожалеете времени и проследите как осуществляется этот процесс с начала и до конца, то сможете успешно программировать на Си. Давайте рассмотрим последовательность этапов создания программы.
План программы
Сядьте перед компьютером и тщательно продумайте, что именно должна делать ваша программа. Опишите задачу как можно подробнее. Большинство программ подчиняются алгоритму, включающему Ввод, Обработку и Вывод.
Для примера, предположим, вы хотите написать программу расчета налога на продажи. Что она должна делать?
Что касается ввода, нам необходимы два параметра: объем продаж и ставка налога. Если вы хотите использовать программу неоднократно, то придется каждый раз вводить новую величину объема продаж. В то же время, вероятно, понадобится только одно значение для ставки налога на продажи — то, которое принято в вашем штате, так что это значение можно ввести прямо в текст программы.
Теперь обработка. В данном случае, для того чтобы рассчитать сумму налога, необходимо умножить сумму продаж на ставку налога.
Теперь рассмотрим вывод. Результат вычислений должен быть выведен на экран.
Итак, последовательные этапы программы таковы:
ВВОД | Указать пользователю, что он должен ввести сумму продаж. |
Показатель вводится с клавиатуры. Указать компьютеру величину налога на продажи, взимаемого в вашем штате. | |
ОБРАБОТКА | Умножить сумму продаж на ставку налога. |
ВЫВОД | Отобразить результат на экране монитора. |
Текст программы
Для того чтобы написать текст программы, используется редактор. Редактор отличается от текстового процессора отсутствием возможностей для форматирования символов и параграфов. Фактически, исходный файл с текстом программы не должен содержать никаких специальных символов форматирования текста, так как компилятор не сможет их понять и выдаст сообщение об ошибке.
________________________________
* В оригинале:
Member_cards.change_address(Smiths, 12 West Avenue)
Member_cards.change_phone(Doe, 555-1234)
Member_cards.change_status(Jones, inactive
что практически выглядит как инструкция Си++. (Прим.перев.)
Компиляция программы
После того как вы сохранили исходный текстовый файл, надо создать промежуточный объектный файл с помощью компилятора. Если компилятор не может понять какие-либо инструкции, информация об этом появится на экране в виде предупреждения или сообщения об ошибке. Предупреждение информирует о наличии потенциальной проблемы, которая не препятствует продолжению компиляции. При возникновении ошибки процесс компиляции прекращается и, чтобы продолжить его, вам необходимо загрузить исходный текстовый файл в редактор и исправить ошибку. Наиболее часто встречаются синтаксические ошибки, то есть ошибки в написании, пунктуации или в употреблении ключевых слов и функций языка Си.
Не пугайтесь, получив сообщение об ошибке. Это не повод опускать руки, так как даже наиболее опытные программисты допускают ошибки.
Компоновка программы
Если никаких сообщений об ошибках не получено и процесс компиляции благополучно завершен, остается скомпоновать объектный файл с библиотеками и создать исполняемый файл. При компоновке сообщение об ошибке появляется в том случае, если компоновщик не может найти необходимую ему информацию в библиотеках. В этом случае необходимо проверить исходный текстовый файл, а также убедиться, что вы используете правильные библиотечные файлы.
Тестирование программы
Итак, теперь можно запускать программу. Если все было сделано правильно, программа будет выполняться без проблем. Но могут иметь место ошибки двух типов: ошибки выполнения и логические ошибки.
Ошибка выполнения возникает тогда, когда программа включает инструкции, которые невозможно выполнить. На экране появится соответствующее сообщение, а выполнение программы будет остановлено. Ошибки выполнения обычно случаются при обращении к файлам или к аппаратной части.
Например, программа включает команду открыть файл ACCOUNT.DAT, которого нет на вашем диске. Компилятор и компоновщик полагают, что этот файл будет существовать к моменту запуска программы, так что на этапе создания исполняемого модуля сообщение об ошибке не появится. Однако когда вы запустите программу, она не сможет найти этот файл и выполнить инструкцию.
Логическая ошибка имеет место в том случае, когда программа выполняет заведомо неправильную инструкцию, что, естественно, приводит к получению неправильных результатов. Такая ошибка представляет наибольшую проблему для идентификации, поскольку вы можете даже не знать о ее существовании. Вы должны скрупулезно проверять результаты работы программы.
Рассмотрим снова программу расчета величины налога на продажи. Положим, вы сделали ошибку и указали, что величину объема продаж надо не умножить на ставку налога, а разделить. У компилятора и компоновщика нет возможности узнать, что вы сглупили, так что процесс компиляции и компоновки, по-видимому, пройдет благополучно. Но, к несчастью, запустив программу, вы обнаружите, что величина 6% налога для 100 долларов составила 1666.66 доллара! Ксожалению, многие логические ошибки не столь очевидны, и отыскать их крайне сложно.
Если вы наткнулись на ошибку выполнения или логическую ошибку, необходимо исправить ее и заново провести компиляцию и компоновку.