Практикум по объектно-ориентированному программированию
Покупка
Тематика:
Программирование в среде Delphi
Издательство:
Лаборатория знаний
Год издания: 2020
Кол-во страниц: 369
Дополнительно
Вид издания:
Учебное пособие
Уровень образования:
ВО - Бакалавриат
ISBN: 978-5-00101-780-6
Артикул: 613573.03.99
Практикум содержит материал для проведения занятий по объектно-ориентированному программированию в среде Delphi. Изложены основы теории объектно-ориентированного программирования, на базе которой изучаются возможности Delphi и отрабатываются технологии разработки различных приложений. Разобрано около 50 упражнений, приведено более 140 заданий для самостоятельной работы и 60 вопросов для контроля.
Для учителей информатики, преподавателей высших учебных заведений, старшеклассников школ с углубленным изучением информатики, студентов, обучение которых связано с Computer Science.
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 09.03.01: Информатика и вычислительная техника
- 09.03.02: Информационные системы и технологии
- 09.03.03: Прикладная информатика
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
ПРАКТИКУМ ПРОГРАММИРОВАНИЮ ПО ОБЪЕКТНО-ОРИЕНТИРОВАННОМУ И. БАБУШКИНА, С. ОКУЛОВ 5-е издание, электронное Москва Лаборатория знаний 2020
УДК 519.85(023) ББК 22.18 Б12 Бабушкина И. А. Б12 Практикум по объектно-ориентированному программированию / И. А. Бабушкина, С. М. Окулов. — 5-е изд., электрон. — М. : Лаборатория знаний, 2020. — 369 с. — Систем. требования: Adobe Reader XI ; экран 10".— Загл. с титул. экрана. — Текст : электронный. ISBN 978-5-00101-780-6 Практикум содержит материал для проведения занятий по объектно-ориентированному программированию в среде Delphi. Изложены основы теории объектно-ориентированного программирования, на базе которой изучаются возможности Delphi и отрабатываются технологии разработки различных приложений. Разобрано около 50 упражнений, приведено более 140 заданий для самостоятельной работы и 60 вопросов для контроля. Для учителей информатики, преподавателей высших учебных заведений, старшеклассников школ с углубленным изучением информатики, студентов, обучение которых связано с Computer Science. УДК 519.85(023) ББК 22.18 Деривативное издание на основе печатного аналога: Практикум по объектно-ориентированному программированию / И. А. Бабушкина, С. М. Окулов. — 2-е изд. — М. : БИНОМ. Лаборатория знаний, 2009. — 366 с. : ил. ISBN 9.78-5-9963-0219-2 В соответствии со ст. 1299 и 1301 ГК РФ при устранении ограничений, установленных техническими средствами защиты авторских прав, правообладатель вправе требовать от нарушителя возмещения убытков или выплаты компенсации ISBN 978-5-00101-780-6 c○ Лаборатория знаний, 2015 2
Среди современных информационных технологий программирование занимает особое место как в Computer Science, так и в образовательной информатике. Обучение программированию — сложнейший процесс. Вспомним, как быстро сошла на нет эйфория первых лет внедрения обучения информатике в школу с основным упором на программирование и содержание обучения постепенно изменилось. Может быть, одна из причин, а их, разумеется, много, заключается именно в сложности этого процесса. Еще одно обстоятельство этого угасания интереса к программированию как к образовательной дисциплине заключается, видимо, в отсутствии литературы для преподавателя. Классические книги как, например, многотомник Д. Кнута «Искусство программирования для ЭВМ», достаточно трудны и не всегда согласуются с реалиями конкретной деятельности. Появившиеся в огромном количестве в последние годы книги содержат, в основном, описания конкретных систем программирования и могут служить скорее справочным материалом, а не конкретным руководством к действию. Преподавателю приходится изучать самостоятельно материал, а затем разрабатывать систему занятий. В данной книге сделана попытка интегрировать в единое целое эти два аспекта: ее можно использовать и при самостоятельном изучении среды программирования Delphi, и при подготовке занятий; это позволяет авторам надеяться, что проделанная работа принесет коллегам пользу. Данная книга не родилась в одночасье. Еще в 1990 г. при подготовке учителей информатики в Вятском государственном педагогическом университете была осознана необходимость изучения объектно-ориентированного программирования. Вначале изучение предмета осуществлялось на базе спецкурса. Издание пособия [8] в какой-то мере подводило итог этой работы. С 1995 г. был введен обязательный курс по объектно-ориентированному программированию в среде Delphi. Материал книги достаточно полно отражает его содержание. Курс является, на наш взгляд, завершающим в базовой, фундаментальной подготовке по программированию, которая формируется в результате изучения трех курсов: практикума по решению за Введение
дач1, основ программирования2 и объектно-ориентированного программирования. Завершает подготовку (на старших курсах) изучение ряда спецкурсов по различным аспектам этой ключевой деятельности в Computer Science. Данная книга рассчитана на подготовленного читателя, тем не менее она может оказаться по силам и школьнику. В виде спецкурса материал практикума изучался в физико-математическом лицее г. Кирова. Курс информатики в лицее построен так, что к 10-му классу большинство учащихся достаточно уверенно работают в среде Pascal, а основой среды Delphi, как известно, является Object Pascal — объектно-ориентированная версия языка программирования Pascal. Таким образом, обучение по своему содержанию логично, изучаются фундаментальные основы настоящей Computer Science, этих основ не так много, и в обучении в максимальной степени задействован компьютер с его огромным дидактическим потенциалом. Можно с полной уверенностью сказать, и практика это подтверждает, что результатом «проведения» ученика по данной схеме является то, что компьютер становится для него обычным инструментом, независимо от вида его будущей деятельности. Учащийся абсолютно уверенно работает и с технологиями, которые им ранее не изучались. Это является высшей оценкой результатов деятельности учителя, ибо в учащегося заложена не сумма фактографического материала, а умение учиться и осваивать новое. Сформулируем следующую, может быть абсурдную с точки зрения ряда специалистов образовательной информатики, мысль — ядро информатики не зависит от конкретной информационной технологии, будь то текстовый процессор, программа на языке Pascal или табличный процессор. Соответственно его, это ядро, можно изучать по-разному, но главное — изучается одно и то же. Обучение программированию отличается только тем, что оно ближе всего к этим фундаментальным основам Computer Science и, кроме того, активность учащегося и задействованность компьютера более высокая. В первой главе практикума изложены основы теории объектно-ориентированного программирования, а затем изучаются возможности Delphi и отрабатываются технологии разработки различных приложений. «Жесткой» разбивки на аудиторные 4 Введение 1 Окулов С. М. и др. Задачи по программированию. 1000 задач с решениями. — М.: БИНОМ. Лаборатория знаний, 2004. 2 Окулов С. М. Основы программирования. — М.: БИНОМ. Лаборатория знаний, 2004.
занятия нет. С одной стороны, это недостаток, а с другой — преподаватель может гибко планировать занятия, используя материал данного учебника в зависимости от объема выделяемого на изучение дисциплины времени и уровня подготовленности учащихся. Каждая тема содержит дозированную порцию теоретического материала, а затем следует разбор практических задач по нему с необходимыми комментариями и упражнениями. При разборе упражнений необходимо быть особенно внимательным, следовать указаниям каждого пункта работы и следить за правильностью получаемых результатов. Изложение темы заканчивается заданиями для самостоятельной работы и вопросами для повторения. В общей сложности в практикуме разобрано порядка 50 упражнений, приведено более 140 заданий для самостоятельной работы и 60 вопросов для проверки усвоения материала. По мере прохождения практикума задания становятся все сложнее, и к моменту завершения работы с ним приобретается достаточно высокий профессиональный уровень владения объектно-ориентированной технологией. Мы надеемся, что практикум будет полезен не только преподавателям, но и всем желающим освоить современное программирование. Введение 5
1.1. Из истории развития языков программирования Любая методология программирования имеет свою концептуальную основу. Эволюция развития языков программирования направлена на ускорение процесса создания надежных программных средств. Все программы в ЭВМ на самом низком, аппаратном, уровне приводятся в действие только командами машинного языка. История развития языков программирования началась с появления ассемблера, который представляет собой символическое представление машинного языка. Программа на ассемблере работает на уровне аппаратных средств, входящих в программную модель микропроцессора. При разработке алгоритма программы и его реализации на ассемблере программист должен продумать размещение данных в памяти, обеспечить эффективное использование ограниченного количества регистров, продумать организацию связи с операционной системой и другими программами. Следующий этап развития языков программирования связан с появлением подпрограмм, а также созданием технологии структурного программирования. В основе структурного программирования лежит декомпозиция (разбиение на части) программы с целью выделения подзадач и реализацией их в виде подпрограмм. Дальнейший рост сложности программного обеспечения потребовал развития структурированных типов данных, а также развития модульного программирования. Модульное программирование предполагает выделение групп подпрограмм, использующих одни и те же глобальные данные, в отдельно компилируемые модули. Связи между модулями осуществляются через специальный интерфейс, в то время как доступ к реализации модуля ограничен рамками модуля. Программы продолжали усложняться, в связи с чем потребовалось уже не случайное объединение данных и алгоритмов их обработки в единое целое, а смысловое: необходимо было создать модульное программирование нового уровня, когда основ 1 Объектноориентированное программирование
ной акцент делается на смысловую связь структур данных и алгоритмов их обработки. Это привело к развитию языков объектно-ориентированной технологии решения задач. Объектно-ориентированное программирование (ООП) — это технология, основанная на представлении программ в виде совокупности объектов, каждый из которых является реализацией собственного класса, которые в свою очередь образуют иерархию на принципах наследования. Основное достоинство ООП — сокращение количества межмодульных вызовов и уменьшение объемов информации, передаваемой между модулями, по сравнению с модульным программированием. Это достигается посредством более полной локализации данных и интегрирования их с подпрограммами обработки, что позволяет вести практически независимую разработку отдельных частей (объектов) программы. 1.2. Объектная декомпозиция При использовании технологии ООП решение представляется в виде результата взаимодействия отдельных элементов некоторой системы, имитирующей процессы, происходящие в предметной области поставленной задачи. Каждый элемент системы, получая сообщение, выполняет заранее определенную последовательность действий (например, обрабатывает полученные данные, изменяет свое состояние, пересылает полученные данные другому элементу системы). Передавая сообщения от одного элемента системы к другому, система выполняет поставленную перед ней задачу. Элементы системы, параметры и поведение которой определяются условием задачи, обладающие самостоятельным поведением (т. е. «умеющие» выполнять некоторые действия, зависящие от полученных сообщений и состояния элемента), получили название объектов [4, с. 25]. Процесс представления предметной области в виде совокупности объектов, обменивающихся сообщениями, называется объектной декомпозицией. Упражнение 1.2.1. Выполните объектную декомпозицию программы, которая по запросу пользователя рисует точку, окружность или квадрат. Объектно-ориентированное программирование 7
Решение По правилам объектной декомпозиции разрабатывается имитационная модель программы. Для этого необходимо проанализировать все происходящие в системе процессы и выделить элементы, обладающие собственным поведением, воздействующие на другие элементы и/или являющиеся объектами такого воздействия. Основная цель системы — нарисовать фигуру, выбранную пользователем. Действия пользователя — это либо выбор фигуры, либо изменение параметров фигуры (цвет, размер, координаты), либо команда нарисовать выбранную фигуру с заданными параметрами. Для выполнения этих команд можно воспользоваться следующими объектами: Менеджер (получает, анализирует и обрабатывает команды пользователя) и три объекта — фигуры (каждая со своими параметрами). Фигуры получают следующие сообщения: нарисовать, изменить цвет контура, изменить размер, изменить координаты. Все эти сообщения инициируются Менеджером в соответствии с командой пользователя. Получив от пользователя команду Завершить, Менеджер прекращает выполнение программы. 8 Глава 1 Рис. 1.2.1
Упражнение 1.2.2. Выполните объектную декомпозицию системы «Телефонный справочник». Решение Опишем назначение системы. В системе хранятся данные о родственниках, друзьях, знакомых или коллегах по работе: фамилия, имя, отчество, дата рождения, адрес, домашний телефон, характер знакомства, место работы, должность, рабочий телефон. Система при запуске выдает информацию о тех людях, чей день рождения приходится на текущую дату, осуществляет поиск данных по произвольному формату, позволяет добавлять, редактировать, удалять записи. Для выполнения выделенных задач можно воспользоваться следующими объектами: Менеджер (получает, анализирует и обрабатывает команды пользователя), Поисковик (осуществляет поиск записей по определенным данным), ОбработатьЗапись (добавляет, редактирует, удаляет запись), Файл (для хранения записей, получает сообщения от объектов Поисковик, ОбработатьЗапись), ОткрытиеФайла (отвечает за существование файла, если файл не существует, то он создается). В объектно-ориентированном программировании разрабатываемая система состоит из объектов, которые взаимодействуют через передачу сообщений. Объектно-ориентированное программирование 9 Рис. 1.2.2
Каждый объект, получив сообщение, должен определенным образом реагировать на них, выполняя заранее определенные для каждого типа сообщения действия. Например, если объект ОбработатьЗапись будет активизирован, то он должен будет проанализировать, какое именно действие нужно выполнить. Если принято сообщение Редактировать, то объект должен сохранить запись в файл, на место, указанное курсором. Состояние объекта характеризуется набором конкретных значений некоторого перечня всех возможных свойств данного объекта; например, состояние объекта Файл характеризуется значениями «активизирован» — «не активизирован». Это состояние объекта необходимо для выполнения всех действий над записной книжкой: если Файл находится в состоянии «не активизирован», то ни одно сообщение не сможет быть обработано. Набор значений свойств задается на этапе проектирования и не изменяется в процессе функционирования, изменяются лишь конкретные значения. Поведение объектов характеризуется определенным набором реакций на получаемые сообщения и зависит от состояния объекта. Если объект может обладать некоторым состоянием, то, соответственно, может возникнуть необходимость в получении информации об этом состоянии. Для получения такой информации объекту посылается сообщение-запрос. В ответ на запрос объект должен переслать отправителю требуемую информацию. В таких случаях говорят, что над объектом выполнена операция селекции. Обращение к объекту для изменения его состояния возбуждает выполнение операции модификации. Отправитель сообщения-команды, реакцией на которую должна быть модификация объекта, может ожидать завершения операции, а может продолжить выполнение своей программы. Если объект содержит несколько однотипных компонент, например массив чисел, то операция, требующая последовательной обработки этих компонент, называется итерацией. Поэлементно могут выполняться как операции селекции, так и операции модификации. 10 Глава 1