Вход

Поиск

Опрос

Наполнение сайта?
Всего ответов: 6

Чат

Партнеры

Последние престанище космос
Четверг, 25.04.2024, 08:29
Приветствую Вас Гость
Главная | Регистрация | Вход | RSS
Главная » Файлы » Другии материалы

Лабораторная работа по ООП 2 курс СГАУ (Пояснительная записка + программа)
[ Скачать с сервера (432.1 Kb) ] 12.06.2015, 21:20

Министерство образования и науки Российской Федерации
федеральное государственное автономное образовательное учреждение высшего профессионального образования
«Самарский государственный аэрокосмический университет имени академика С.П. Королёва (национальный исследовательский университет)» (СГАУ)

 

 

 

 

Факультет заочного обучения
Пояснительная записка к контрольной работе по

 «Объекто-ориентированному программированию»

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Выполнил:

 студент группы 9627
Мельник Д.В.
Проверил:

 Агафонова С.В.

 

 

 

 

 

 

 

 

 

 

 

Самара 2015 г.

Содержание:

  • Задание
  • Содержание работы
  • Введение
    1. Структура среды программирования
    2. Главные составные части среды программирования
    3. Дополнительные элементы
    4. Инструментальные средства
    5. Стандартные компоненты
    6. Подробнее об Инспекторе Объектов
    7. Сохранение программы
  • Основные принципы объекто-ориентированного программирования
  • Разработка программы
    1. Постановка задачи
    2. Постановка основных класнов программы
    3. Разработка основных методов и процедур программы
    4. Разработка интерфейса программы
  • Заключение
  • Используемая литература
  • Приложение

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Задание:

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

   Программу разработать на любом объектно оринтированном языке программиронания Delphi,C#, Visial Basic, C++, и др.

 

Основные требования:

  • Программа должна быть спроектирована на основе методологии объектно-ориентированного программирования, т.е. должна быть представлена в виде совокупности взаимодействующих друг с другом объектов, причем каждый объект является экземпляром определенного класса, а классы образуют иерархию. В ходе объектно-ориентированного проектирования необходимо определить и зафиксировать логическую структуру (классы и объекты) и файловую (модульную) структуру системы.
  • Система должна предоставлять удобный и понятный пользовательский интерфейс, предусматривающий проведение экспериментов по моделированию и выдачу в ходе экспериментов необходимой информации (определяемой вариантом задания).
  • Для проведения экспериментов по моделированию перед началом каждого эксперимента пользователь должен иметь возможность устанавливать нужные значения параметров, от которых зависит этот процесс или явление. Такие параметры называются параметрами моделирования, обычно в их числе – шаг моделирования, т.е. отрезок времени, измеряемый в тех или иных единицах времени (секундах, минутах, часах, днях, неделях и пр.) и/или число шагов моделирования.
  • Поскольку в большинстве вариантов задания моделируемый процесс или явление зависит от нескольких неопределенных факторов, следует моделировать такие факторы статистически – на основе одного из законов вероятностного распределения (равномерного, нормального и др.).

 

 

 

 

 

 

 

 

 

 

 

 

Содержание работы:

  • Выбор и изучение инструментальных средств: языка программирования, соответствующей интегрированной среды разработки приложений (Visual Studio, Eclips, Delphi, С++ Builder и т.п.), графических библиотек.
  • Общее проектирование системы: уточнение постановки задачи выбранного варианта задания, определение изменяемых параметров моделируемого процесса/явления, метода моделирования, средств и объектов визуализации; составление эскиза пользовательского интерфейса.
  • Объектно-ориентированное проектирование: объектный анализ решаемой задачи и разработка диаграмм, характеризующих соответственно классы и объекты системы, выделенные в ходе анализа; составление текстовых спецификаций интерфейса классов.
  • Программирование системы на основе всех проектных решений, определение файловой (модульной) структуры программы.
  • Проведение исследования (экспериментов) по моделированию на базе реализованной программной системы.
  • Составление отчета, в который включаются:
  • Уточненная постановка задачи для выбранного варианта задания.
  • Текстовые спецификации основных классов системы.
  • Указание использованных при выполнении задания инструментальных средств (языка программирования, интегрированной среды, библиотек).
  • Краткая характеристика пользовательского интерфейса.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Введение:

 

1.1 Структура среды программирования:

   Внешний вид среды программирования Delphi отличается от многих других из тех, что можно увидеть в Windows. К примеру, Borland Pascal for Windows 7.0, Borland C++ 4.0, Word for Windows, Program Manager - это все MDI приложения и выглядят по-другому, чем Delphi. MDI (Multiple Document Interface) - определяет особый способ управления нескольких дочерних окон внутри одного большого окна.

Среда Delphi же следует другой спецификации, называемой Single Document Interface (SDI), и состоит из нескольких отдельно расположенных окон. Это было сделано из-за того, что SDI близок к той модели приложений, что используется в Windows 95.

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

 

1.2 Главные составные части среды программирования:

Ниже перечислены основные составные части Delphi:

  1. Дизайнер Форм (Form Designer)
  2. Окно Редактора Исходного Текста (Editor Window)
  3. Палитра Компонент (Component Palette)
  4. Инспектор Объектов (Object Inspector)
  5. Справочник (On-line help)

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

Программисты на Delphi проводят большинство времени переключаясь между Дизайнером Форм и Окном Редактора Исходного Текста (которое для краткости называют Редактор). Прежде чем Вы начнете, убедитесь, что можете распознать эти два важных элемента. Дизайнер Форм показан на рис.1, окно Редактора - на рис.2.

Описание: http://citforum.ru/programming/32less/les11_01.gif

Рис.1: Дизайнер Форм - то место, где Вы создаете визуальный интерфейс программы.

Описание: http://citforum.ru/programming/32less/les11_02.gif

Рис.2: В окне Редактора Вы создаете логику управления программой.

Дизайнер Форм в Delphi столь интуитивно понятен и прост в использовании, что создание визуального интерфейса превращается в детскую игру. Дизайнер Форм первоначально состоит из одного пустого окна, которое Вы заполняете всевозможными объектами, выбранными на Палитре Компонент.

Несмотря на всю важность Дизайнера Форм, местом, где программисты проводят основное время является Редактор. Логика является движущей силой программы и Редактор - то место, где Вы ее "кодируете".

Палитра Компонент (см. рис.3) позволяет Вам выбрать нужные объекты для размещения их на Дизайнере Форм. Для использования Палитры Компонент просто первый раз щелкните мышкой на один из объектов и потом второй раз - на Дизайнере Форм. Выбранный Вами объект появится на проектируемом окне и им можно манипулировать с помощью мыши.

Палитра Компонент использует постраничную группировку объектов. Внизу Палитры находится набор закладок - Standard, Additional, Dialogs и т.д. Если Вы щелкнете мышью на одну из закладок, то Вы можете перейти на следующую страницу Палитры Компонент. Принцип разбиения на страницы широко используется в среде программирования Delphi и его легко можно использовать в своей программе. (На странице Additional есть компоненты для организации страниц с закладками сверху и снизу).

Описание: http://citforum.ru/programming/32less/les11_03.gif

Рис.3: Палитра Компонент - место, где Вы выбираете объекты, которые будут помещены на вашу форму.

Предположим, Вы помещаете компонент TEdit на форму; Вы можете двигать его с места на место. Вы также можете использовать границу, прорисованную вокруг объекта для изменения его размеров. Большинством других компонент можно манипулировать тем же образом. Однако, невидимые во время выполнения программы компоненты (типа TMenu или TDataBase) не меняют своей формы.

Слева от Дизайнера Форм Вы можете видеть Инспектор Объектов (рис.4). Заметьте, что информация в Инспекторе Объектов меняется в зависимости от объекта, выбранного на форме. Важно понять, что каждый компонент является настоящим объектом и Вы можете менять его вид и поведение с помощью Инспектора Объектов.

Инспектор Объектов состоит из двух страниц, каждую из которых можно использовать для определения поведения данного компонента. Первая страница - это список свойств, вторая - список событий. Если нужно изменить что-нибудь, связанное с определенным компонентом, то Вы обычно делаете это в Инспекторе Объектов. К примеру, Вы можете изменить имя и размер компонента TLabel изменяя свойства Caption, Left, Top, Height, и Width.

Вы можете использовать закладки внизу Инспектора Объектов для переключения между страницами свойств и событий.

Описание: http://citforum.ru/programming/32less/les11_04.gif

Рис.4: Инспектор Объектов позволяет определять свойства и поведение объектов, помещенных на форму.

Страница событий связана с Редактором; если Вы дважды щелкнете мышкой на правую сторону какого-нибудь пункта, то соответствующий данному событию код автоматически запишется в Редактор, сам Редактор немедленно получит фокус, и Вы сразу же имеете возможность добавить код обработчика данного события. Данный аспект среды программирования Delphi будет еще обсуждаться позднее.

Последняя важная часть среды Delphi - Справочник (on-line help). Для доступа к этому инструменту нужно просто выбрать в системном меню пункт Help и затем Contents. На экране появится Справочник, показанный на рис.5

Описание: http://citforum.ru/programming/32less/les11_05.gif

Рис.5: Справочник - быстрый поиск любой информации.

Справочник является контекстно-зависимым; при нажатии клавиши F1, Вы получите подсказку, соответствующую текущей ситуации. Например, находясь в Инспекторе Объектов, выберите какое-нибудь свойство и нажмите F1 - Вы получите справку о назначении данного свойства. Если в любой момент работы в среде Delphi возникает неясность или затруднение - жмите F1 и необходимая информация появится на экране.

 

1.3 Дополнительные элементы:

В данном разделе внимание фокусируется на трех инструментах, которые можно воспринимать как вспомогательные для среды программирования:

  • Меню (Menu System)
  • Панель с кнопками для быстрого доступа (SpeedBar)
  • Редактор картинок (Image Editor)

Меню предоставляет быстрый и гибкий интерфейс к среде Delphi, потому что может управляться по набору "горячих клавиш". Это удобно еще и потому, что здесь используются слова или короткие фразы, более точные и понятные, нежели иконки или пиктограммы. Вы можете использовать меню для выполнения широкого круга задач; скорее всего, для наиболее общих задач вроде открытия и закрытия файлов, управления отладчиком или настройкой среды программирования.

SpeedBar находится непосредственно под меню, слева от Палитры Компонент (рис.6). SpeedBar выполняет много из того, что можно сделать через меню. Если задержать мышь над любой из иконок на SpeedBar, то Вы увидите что появится подсказка, объясняющая назначение данной иконки.

Описание: http://citforum.ru/programming/32less/les11_06.gif

Рис.6: SpeedBar находится слева от Палитры Компонент.

Редактор Картинок, показанный на рис.7, работает аналогично программе Paintbrush из Windows. Вы можете получить доступ к этому модулю выбрав пункт меню Tools | Image Editor.

Описание: http://citforum.ru/programming/32less/les11_07.gif

Рис.7: Редактор Картинок можно использовать для создания картинок для кнопок, иконок и др. визуальных частей для программы.

А теперь нужно рассмотреть те элементы, которые программист на Delphi использует в повседневной жизни.

 

1.4 Инструментальные средства:

В дополнение к инструментам, обсуждавшимся выше, существуют пять средств, поставляемых вместе с Delphi. Эти инструментальные средства:

  • Встроенный отладчик
  • Внешний отладчик (поставляется отдельно)
  • Компилятор командной строки
  • WinSight
  • WinSpector

Данные инструменты собраны в отдельную категорию не потому, что они менее важны, чем другие, но потому, что они играют достаточно абстрактную техническую роль в программировании.

Чтобы стать сильным программистом на Delphi, Вам понадобится понять, как использовать отладчик Delphi. Отладчик позволяет Вам пройти пошагово по исходному тексту программы, выполняя по одной строке за раз, и открыть просмотровое окно (Watch), в котором будут отражаться текущие значения переменных программы.

Встроенный отладчик, который наиболее важен из пяти вышеперечисленных инструментов, работает в том же окне, что и Редактор. Внешний отладчик делает все, что делает встроенный и кое-что еще. Он более быстр и мощен, чем встроенный. Однако он не так удобен в использовании, главным образом из-за необходимости покидать среду Delphi.

Теперь давайте поговорим о компиляторах. Внешний компилятор, называется DCC.EXE, полезен, в основном, если Вы хотите скомпилировать приложение перед отладкой его во внешнем отладчике. Большинство программистов, наверняка, посчитают, то гораздо проще компилировать в среде Delphi, нежели пытаться создать программу из командной строки. Однако, всегда найдется несколько оригиналов, которые будут чувствовать себя счастливее, используя компилятор командной строки. Но это факт - возможно создать и откомпилировать программу на Delphi используя только DCC.EXE и еще одну программу CONVERT.EXE, которая поможет создать формы. Однако, данный подход неудобен для большинства программистов.

WinSight и WinSpector интересны преимущественно для опытных программистов в Windows. Это не значит, что начинающий не должен их запускать и экспериментировать с ними по своему усмотрению. Но эти инструменты вторичны и используются для узких технических целей.

Из этих двух инструментов WinSight определенно более полезен. Основная его функция - позволить Вам наблюдать за системой сообщений Windows. Хотя Delphi делает много для того, чтобы спрятать сложные детали данной системы сообщений от неопытных пользователей, тем не менее Windows является операционной системой, управляемой событиями. Почти все главные и второстепенные события в среде Windows принимают форму сообщений, которые рассылаются с большой интенсивностью среди различными окнами на экране. Delphi дает Вам полный доступ к сообщениям Windows и позволяет отвечать на них, как только будет нужно. В результате, опытным пользователям WinSight становится просто необходим.

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

 

1.5 Стандартные компоненты:

Для дальнейшего знакомства со средой программирования Delphi потребуется рассказать о составе первой страницы Палитры Компонент.

На первой странице Палитры Компонент размещены 14 объектов (рис.8) определенно важных для использования. Мало кто обойдется длительное время без кнопок, списков, окон ввода и т.д. Все эти объекты такая же часть Windows, как мышь или окно.

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

Описание: http://citforum.ru/programming/32less/les11_08.gif

Рис.8: Компоненты, расположенные на первой странице Палитры.

Стандартные компоненты Delphi перечислены ниже с некоторыми комментариями по их применению. При изучении данных компонент было бы полезно иметь под рукой компьютер с тем, чтобы посмотреть, как они работают и как ими манипулировать.

  • TMainMenu позволяет Вам поместить главное меню в программу. При помещении TMainMenu на форму это выглядит, как просто иконка. Иконки данного типа называют "невидимыми компонентом", поскольку они невидимы во время выполнения программы. Создание меню включает три шага: (1) помещение TMainMenu на форму, (2) вызов Дизайнера Меню через свойство Items в Инспекторе Объектов, (3) определение пунктов меню в Дизайнере Меню.
  • TPopupMenu позволяет создавать всплывающие меню. Этот тип меню появляется по щелчку правой кнопки мыши.
  • TLabel служит для отображения текста на экране. Вы можете изменить шрифт и цвет метки, если дважды щелкнете на свойство Font в Инспекторе Объектов. Вы увидите, что это легко сделать и во время выполнения программы, написав всего одну строчку кода.
  • TEdit - стандартный управляющий элемент Windows для ввода. Он может быть использован для отображения короткого фрагмента текста и позволяет пользователю вводить текст во время выполнения программы.
  • TMemo - иная форма TEdit. Подразумевает работу с большими текстами. TMemo может переносить слова, сохранять в Clipboard фрагменты текста и восстанавливать их, и другие основные функции редактора. TMemo имеет ограничения на объем текста в 32Кб, это

составляет 10-20 страниц. (Есть VBX и "родные" компоненты Delphi, где этот предел снят).

  • TButton позволяет выполнить какие-либо действия при нажатии кнопки во время выполнения программы. В Delphi все делается очень просто. Поместив TButton на форму, Вы по двойному щелчку можете создать заготовку обработчика события нажатия кнопки. Далее нужно заполнить заготовку кодом (подчеркнуто то, что нужно написать вручную):

procedure TForm1.Button1Click(Sender: TObject);

begin

MessageDlg('Are you there?',mtConfirmation,mbYesNoCancel,0);

end;

  • TCheckBox отображает строку текста с маленьким окошком рядом. В окошке можно поставить отметку, которая означает, что что-то выбрано. Например, если посмотреть окно диалога настроек компилятора (пункт меню Options | Project, страница Compiler), то можно увидеть, что оно состоит преимущественно из CheckBox'ов.
  • TRadioButton позволяет выбрать только одну опцию из нескольких. Если Вы опять откроете диалог Options | Project и выберете страницу Linker Options, то Вы можете видеть, что секции Map file и Link buffer file состоят из наборов RadioButton.
  • TListBox нужен для показа прокручиваемого списка. Классический пример ListBox'а в среде Windows - выбор файла из списка в пункте меню File | Open многих приложений. Названия файлов или директорий и находятся в ListBox'е.
  • TComboBox во многом напоминает ListBox, за исключением того, что позволяет водить информацию в маленьком поле ввода сверху ListBox. Есть несколько типов ComboBox, но наиболее популярен выпадающий вниз (drop-down combo box), который можно видеть внизу окна диалога выбора файла.
  • TScrollbar - полоса прокрутки, появляется автоматически в объектах редактирования, ListBox'ах при необходимости прокрутки текста для просмотра.
  • TGroupBox используется для визуальных целей и для указания Windows, каков порядок перемещения по компонентам на форме (при нажатии клавиши TAB).
  • TPanel - управляющий элемент, похожий на TGroupBox, используется в декоративных целях. Чтобы использовать TPanel, просто поместите его на форму и затем положите другие компоненты на него. Теперь при перемещении TPanel будут передвигаться и эти компоненты. TPanel используется также для создания линейки инструментов и окна статуса.
  • TScrollBox представляет место на форме, которое можно скроллировать в вертикальном и горизонтальном направлениях. Пока Вы в явном виде не отключите эту возможность, форма сама по себе действует так же. Однако, могут быть случаи, когда понадобится прокручивать только часть формы. В таких случаях используется TScrollBox.

Это полный список объектов на первой странице Палитры Компонент. Если Вам нужна дополнительная информация, то выберите на Палитре объект и нажмите клавишу F1 - появится Справочник с полным описанием данного объекта.

 

1.6 Подробнее об Инспекторе Объектов:

Ранее мы вкратце рассмотрели Инспектор Объектов (Object Inspector). Теперь нужно исследовать этот важный инструмент глубже. Основное для понимания Инспектора Объектов состоит в том, что он используется для изменения характеристик любого объекта, брошенного на форму. Кроме того, и для изменения свойств самой формы.

Лучший путь для изучения Инспектора объектов - поработать с ним. Для начала откройте новый проект, выбрав пункт меню File | New Project. Затем положите на форму объекты TMemo, TButton, и TListBox, как показано на рис.9.

Описание: http://citforum.ru/programming/32less/les11_09.gif

Рис.9: Простой объект TForm с компонентами TMemo, TButton, и TListBox.

Сперва рассмотрим работу со свойствами на примере свойства Ctl3D (по умолчанию включено). Выберите форму, щелкнув на ней мышкой, перейдите в Инспектор Объектов и несколько раз с помощью двойных щелчков мышью переключите значение свойства Ctl3D. Заметьте, что это действие радикально меняет внешний вид формы. Изменение свойства Ctl3D формы автоматически изменяет свойство Ctl3D каждого дочернего окна, помещенного на форму.

Вернитесь на форму и поставьте значение Ctl3D в True. Теперь нажмите клавишу и щелкните на TMemo и затем на TListBox. Теперь оба объекта имеют по краям маленькие квадратики, показывающие, что объекты выбраны.

Описание: http://citforum.ru/programming/32less/les11_10.gif

Рис.10: Пункт меню Edit дает Вам доступ к двум диалогам для выравнивания выбранного набора компонент. Первый диалог - управление размерами объектов в наборе.

Выбрав два или более объектов одновременно, Вы можете выполнить большое число операций над ними. Например, передвигать по форме. Затем попробуйте выбрать пункт меню Edit | Size и установить оба поля Ширину(Width) и Высоту(Height) в Grow to Largest, как показано на рис.10. Теперь оба объекта стали одинакового размера. Затем выберите пункт меню Edit | Align и поставьте в выравнивании по горизонтали значение Center (см. рис.11).

Описание: http://citforum.ru/programming/32less/les11_11.gif

Рис.11: Диалог Alignment помогает выровнять компоненты на форме.

Поскольку Вы выбрали сразу два компонента, то содержимое Инспектора Объектов изменится - он будет показывать только те поля, которые являются общими для объектов. Это означает то, что изменения в свойствах, произведенные Вами повлияют не на один, а на все выбранные объекты.

Рассмотрим изменение свойств объектов на примере свойства Color. Есть три способа изменить его значение в Инспекторе Объектов. Первый - просто напечатать имя цвета (clRed) или номер цвета. Второй путь - нажать на маленькую стрелку справа и выбрать цвет из списка. Третий путь - дважды щелкнуть на поле ввода свойства Color. При этом появится диалог выбора цвета.

Свойство Font работает на манер свойства Color. Чтобы это посмотреть, сначала выберите свойство Font для объекта TMemo и дважды щелкните мышкой на поле ввода. Появится диалог настройки шрифта, как показано на рис.12. Выберите, например, шрифт New Times Roman и установите какой-нибудь очень большой размер, например 72. Затем измените цвет фонта с помощью ComboBox'а в нижнем правом углу окна диалога. Когда Вы нажмете кнопку OK, Вы увидите, что вид текста в объекте TMemo радикально изменился.

Описание: http://citforum.ru/programming/32less/les11_12.gif

Рис.12: Диалог выбора шрифта позволяет Вам задать тип шрифта, размер, и цвет.

В завершение краткого экскурса по Инспектору Объектов дважды щелкните на свойство Items объекта ListBox. Появится диалог, в котором Вы можете ввести строки для отображения в ListBox. Напечатайте несколько слов, по одному на каждой строке, и нажмите кнопку OK. Текст отобразится в ListBox'е.

 

 

 

 

1.7 Сохранение программы:

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

Первый шаг - создать поддиректорию для программы. Лучше всего создать директорию, где будут храниться все Ваши программы и в ней - создать поддиректорию для данной конкретной программы. Например, Вы можете создать директорию MYCODE и внутри нее - вторую директорию TIPS1, которая содержала бы программу, над которой Вы только что работали.

После создания поддиректории для хранения Вашей программы нужно выбрать пункт меню File | Save Project. Сохранить нужно будет два файла. Первый - модуль (unit), над которым Вы работали, второй - главный файл проекта, который "владеет" Вашей программой. Сохраните модуль под именем MAIN.PAS и проект под именем TIPS1.DPR. (Любой файл с расширением PAS и словом "unit" в начале является модулем.)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Основные принципы объектно-оринтированного программирования:

   Объектно-ориентированное программирование основано на «трех китах» - трех важнейших принципах, придающих объектам новые свойства. Этими принципами являются инкапсуляция, наследование и полиморфизм.

   Инкапсуляция

Инкапсуляция есть объединение в единое целое данных и алгоритмов обработки этих данных. В рамках ООП данные называются полями объекта, а алгоритмы - объектными методами.

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

Другим немаловажным следствием инкапсуляции является легкость обмена объектами, переноса их из одной программы в другую. Можно сказать, что ООП «провоцирует» разработку библиотек объектов, таких как Turbo Vision.

   Наследование

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

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

Последовательное проведение в жизнь принципа «наследуй и изменяй» хорошо согласуется с поэтапным подходом к разработке крупных программных проектов и во многом стимулирует такой подход.

   Полиморфизм

Полиморфизм - это свойство родственных объектов (т.е. объектов, имеющих одного общего родителя) решать схожие по смыслу проблемы разными способами. В рамках ООП поведенческие свойства объекта определяются набором входящих в него методов. Изменяя алгоритм того или иного метода в потомках объекта, программист может придавать этим потомкам отсутствующие у родителя специфические свойства. Для изменения метода необходимо перекрыть его в потомке, т.е. объявить в потомке одноименный метод и реализовать в нем нужные действия. В результате в объекте-родителе и объекте-потомке будут действовать два одноименных метода, имеющие разную алгоритмическую основу и, следовательно, придающие объектам разные свойства. Это и называется полиморфизмом объектов.

В Турбо Паскале полиморфизм достигается не только описанным выше механизмом наследования и перекрытия методов родителя, но и их виртуализацией (см. ниже), позволяющей родительским методам обращаться к методам потомков.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Разработка программы:

  1. Постановка задачи

Для показа основных приемуществ применения объекто-оринтированного программирования был выбран пройстейший пример, который реализуется на применении класов.

Мою в программе (листинги приложен в приложении) реализован класс создаюший змейку , которая в хоатическом варианте движется по рабочей области программы. В программе предусмотрено создание нескольких видов змек.

Для создания змейки применить автоматическую подборку параметров.

  1. Постановка основных класнов программы

Описание класса змейка

  1.   = class
  2.   //описание переменных класса
  3.  
  4.  
  5.  
  6.  

procedure movline( cv:Tcolor);

procedure gogo(stp,fnp:integer);

procedure moving (Sender: Tobject);

    1. Разработка основных методов и процедур программы

Описание процедур класса змейка

Процедура рисования линии за змейкой

procedure zmey.movline( cv:Tcolor);

  •  
  •  
  •  
  •  
  • создания змейки

procedure zmey.gogo(stp,fnp:integer);

  •  

tm[i]:= Ttimer.Create(form1);

  •  
  •  
  •  
  •  
  •  

case stp of

1 : begin

  1.  
  2.  
  3.  

2 : begin

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  • ;

 

  •    ;
  • ;

Процедура движения змейки

procedure zmey.moving(Sender: Tobject);

  •  

case ids of

1: begin

  •  
  •  
  •  
  •  
  •  

2: begin

  •  
  •  
  •  
  •  
  •  

3: begin

  •  
  •  
  •  
  •  
  •  

4: begin

  •  
  •  
  •  
  •  
  •  
  •  
  •  

 

 

  1. Разработка интерфейса программы

Интерфейс сделан максимально легким, все параметры генерируются автоматически.

Интерфейс и пример работы программы представлен ниже

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Заключение:

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

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

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Список использованной литературы:

1.Программирование на языке высокого уровня Delphi, 2009, Марухин Н.А.

2.Методическое пособие для студентов СГАУ, Баяндина Т.А.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Приложение:

Листинг программы:

unit Unit1;

interface

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, ExtCtrls, StdCtrls, Menus;

type

  TForm1 = class(TForm)

    PaintBox1: TPaintBox;

    Button2: TButton;

    Button5: TButton;

    mm1: TMainMenu;

    N1: TMenuItem;

    procedure FormCreate(Sender: TObject);

    procedure Button2Click(Sender: TObject);

    procedure Button5Click(Sender: TObject);

    procedure N1Click(Sender: TObject);

    procedure PaintBox1Click(Sender: TObject);

    procedure FormResize(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

type

  zmey = class  

  private

  ids,stp:integer;

  idf,fnp:integer;

  x,y:integer;

  public

  procedure movline( cv:Tcolor);

  procedure gogo(stp,fnp:integer);

  procedure moving (Sender: Tobject);

  end;

const

 r=7;

var

  Form1: TForm1;

  i,s,f,n :integer;

  stop:boolean;

  zm: array[1..100] of zmey;

  tm: array[0..100] of Ttimer;

implementation

{$R *.dfm}

procedure zmey.movline( cv:Tcolor);

begin

      Form1.PaintBox1.Canvas.Brush.Color:=cv;

      Form1.PaintBox1.canvas.Ellipse(x-r,y-r,x+r,y+r);

end;

procedure zmey.gogo(stp,fnp:integer);

begin

   tm[i]:= Ttimer.Create(form1);  //ñîçäàíèå òàéìåðà

   tm[i].Interval:=10;

   tm[i].Enabled:=true;

   tm[i].OnTimer:=Moving;

   ids:=stp;

   idf:=fnp;

   case stp of

    1 : begin

         x:=0;

         y:=Random(Form1.ClientHeight);

        end;

    2 : begin

         x:=Random(Form1.ClientWidth);y:=0;

        end;

    3:  begin

         x:=Random(Form1.ClientWidth);y:=Form1.ClientHeight;

         end;

    4:  begin

         x:=Form1.ClientWidth;y:=Random(Form1.ClientHeight);

         end;

   end;

end;

procedure zmey.moving(Sender: Tobject);

begin

 case ids of

 1: begin 

      movline(clGray);

      x:=x+random(12)-5;

      y:=y+random(12)-5;

      movline(clRed);

     end;

  2: begin 

      movline(clGray);

      x:=x+random(12)-5;

      y:=y+random(12)-5;

      movline(clGreen);

     end;

  3: begin

      movline(clGray);

      x:=x+random(12)-7;

      y:=y+random(12)-7;

      movline(clYellow);

     end;

  4: begin

      movline(clGray);

      x:=x+random(12)-7;

      y:=y+random(12)-7;

      movline(clPurple);

     end;

 end;

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

stop:=true;

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

stop:=false;

i:=i+1;

s:=Random(4)+1;

f:=Random(4)+1;

zm[i]:=zmey.Create;

zm[i].gogo(s,f);

end;

procedure TForm1.Button5Click(Sender: TObject);

begin

for n:=1 to i do

 begin

  zm[n].movline(clGray);

  tm[n].Destroy;

  zm[n].Destroy;

 end;

 i:=0;

 stop:=true;

end;

procedure TForm1.N1Click(Sender: TObject);

begin

Form1.Close();

end;

 

procedure TForm1.PaintBox1Click(Sender: TObject);

begin

PaintBox1.Height:=Form1.ClientHeight;

PaintBox1.Width:=Form1.ClientWidth;

end;

procedure TForm1.FormResize(Sender: TObject);

begin

PaintBox1.Height:=Form1.ClientHeight;

PaintBox1.Width:=Form1.ClientWidth;

end;

end.

Категория: Другии материалы | Добавил: Администратор
Просмотров: 443 | Загрузок: 148
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]