Главная
страница 1страница 2страница 3страница 4
МИНОБРНАУКИ РФ

ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ

ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ ИНСТИТУТ РАДИОТЕХНИКИ,

ЭЛЕКТРОНИКИ И АВТОМАТИКИ (ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ)

Факультет ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ

КАФЕДРА ТИССУ

Курсовая работа

по теме:

Объектно-ориентированное программирование.

ДИСЦИПЛИНА

Технология программирования”.

Группа: ВАИ-2-10

Студент: Мошкалев Д.В.

Руководитель: Колесникова М.Д.

МОСКВА, 2012 г.

Руководитель: Колесникова М.Д.

Рецензент: Колесникова М.Д.

Мошкалев Д.В.



Курсовая работа по специальности 230201 «Информационные системы и технологии»: М. 2012 г., МИРЭА, факультет Информационных технологий, кафедра ТИССУ. – стр.?? рис ??, табл. ??.

Объект «Рациональная дробь». В курсовой работе.

©Мошкалев Д.В.

Файл: «Курсовая_Работа_Мошкалев_(ВАИ-2-10)__.doc», исполнитель Мошкалев Д.В., 2012г.

Оглавление


Техническое задание 4

1.Введение 6

2.Технический и рабочий проект программной системы 9

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

2.2.Разработка функциональной структуры программной системы 10

2.3.Реализация диалогового интерфейса 11

2.4.Разработка и реализация алгоритмов решения 12

3.Эксплуатационная документация 15

3.1.Описание применения 15

3.2.Руководство оператора 16

3.1.1.Режим бинарных операций. 16

3.1.2.Режим вычисления формул. 19

3.1.3.Выполнение пакетного тестирования. 20

3.1.4.Получение информации о программе. 22

4.Заключение 22

5.Приложение 1: Распечатка текстов программы 23

5.1.Файл программы 23

5.2.Модуль RatFracClass 23

5.3.Модуль RatFracForm 27

5.4.Модуль LogForm 35

5.5.Модуль AboutForm 36

5.6.Файл тестовых данных 36




Техническое задание


Задание на курсовую работу по дисциплине

«Технология программирования»

Вариант №16
Тема: Объектно-ориентированное программирование. Объект - «Рациональная дробь».
  1. Содержательная задача:


    1. Составить описание класса «Рациональная дробь» для представления дроби числителем и знаменателем целого типа. Обеспечить выполнение операций сложения, вычитания, умножения, деления, сравнения двух дробей. Результаты операции получать в виде несократимых дробей.

    2. Разработать приложение для Windows в среде Delphi, реализующее вычисление следующих дробей:











В приложение включить средства, позволяющие выбрать вычисление «нужной» функции.
  1. Специальные требования:


    1. Исходные данные для тестирования приложения подготовить в текстовых файлах.

    2. Результаты тестирования представить в элементах диалоговых форм.


  1. Введение


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

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

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

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

Первым языком программирования, в котором были предложены принципы объектной ориентированности, была Симула. В момент своего появления (в 1967 году), этот язык программирования предложил поистине революционные идеи: объекты, классы, виртуальные методы и др., однако это всё не было воспринято современниками как нечто грандиозное. Тем не менее, большинство концепций были развиты Аланом Кэйем и Дэном Ингаллсом в языке Smalltalk. Именно он стал первым широко распространённым объектно-ориентированным языком программирования.

В настоящее время количество прикладных языков программирования, реализующих объектно-ориентированную парадигму, является наибольшим по отношению к другим парадигмам. В области системного программирования до сих пор применяется парадигма процедурного программирования, и общепринятым языком программирования является язык C. Хотя при взаимодействии системного и прикладного уровней операционных систем заметное влияние стали оказывать языки объектно-ориентированного программирования. Например, одной из наиболее распространенных библиотек мультиплатформенного программирования является объектно-ориентированная библиотека Qt, написанная на языке C++. В области прикладного программирования для Windows часто используются язык Delphi. Его главным достоинством является большая скорость разработки приложений для Windows за счет большой библиотеки готовых модулей.

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

Объектно-ориентированное проектирование состоит в описании структуры и поведения проектируемой системы, то есть, фактически, в ответе на два основных вопроса:



  • Из каких частей состоит система.

  • В чём состоит ответственность каждой из частей.

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

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

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

Основные понятия ООП:



  • Абстрагирование — это способ выделить набор значимых характеристик объекта, исключая из рассмотрения незначимые. Соответственно, абстракция — это набор всех таких характеристик.

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

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

  • Полиморфизм — это свойство системы использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта.

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

  • Сущность в адресном пространстве вычислительной системы, появляющаяся при создании экземпляра класса или копирования прототипа (например, после запуска результатов компиляции и связывания исходного кода на выполнение).

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

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

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



  • Объявление классов с полями (данными — членами класса) и методами (функциями — членами класса).

  • Механизм расширения класса (наследования) — порождение нового класса от существующего с автоматическим включением всех особенностей реализации класса-предка в состав класса-потомка. Большинство ООП-языков поддерживают только единичное наследование.

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

  • Полиморфное поведение экземпляров классов за счёт использования виртуальных методов. В некоторых ООП-языках все методы классов являются виртуальными.

  • Конструкторы, деструкторы, финализаторы.

  • Свойства (аксессоры).

  • Индексаторы.

  • Интерфейсы (например, в Java используются также как альтернатива множественному наследованию — любой класс может реализовать сколько угодно интерфейсов).

  • Переопределение операторов для классов.

  • Средства защиты внутренней структуры классов от несанкционированного использования извне. Обычно это модификаторы доступа к полям и методам, типа public, private, обычно также protected, иногда некоторые другие.

Часть языков целиком построена вокруг объектных средств — в них любые данные являются объектами, любой код — методом какого-либо класса, и невозможно написать программу, в которой не использовались бы объекты. Примеры подобных языков — Smalltalk, Python, Java, C#, Ruby, AS3. Другие языки (иногда используется термин «гибридные») включают ООП-подсистему в исходно процедурный язык. В них существует возможность программировать, не обращаясь к объектным средствам. Классические примеры — C++, Delphi и Perl.

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



следующая страница >>
Смотрите также:
Методические указания к выполнению курсовой работы по дисциплине «Объектно-ориентированное программирования» для студентов направления подготовки 050101 «Компьютерные науки»
75.4kb.
1 стр.
В объектно -ориентированное программирование
43.45kb.
1 стр.
Объектно-ориентированное программирование
548.52kb.
4 стр.
Программирование, объектно-ориентированное программирование. Оценка сложности алгоритмов. Классы P, np. Np – полные задачи
3210.51kb.
16 стр.
Программа дисциплины "Объектно-ориентированное программирование" для подготовки инженеров
93.32kb.
1 стр.
Рабочая программа по курсу «Объектно-ориентированное программирование» для специализации «Компьютерные технологии в образовании и научной деятельности»
55.49kb.
1 стр.
Книга 2 Г. С иванова, Т. Н. Ничушкина, Е. К. Пугачев Объектно-ориентированное программирование
3396.37kb.
37 стр.
Рабочая программа дисциплины объектно-ориентированное программирование
292.06kb.
1 стр.
Объектно-ориентированное программирование: Разработка пользовательского интерфейса
94.69kb.
1 стр.
Контрольная работа является завершающей стадией процесса подготовки студента по дисциплине «Объектно-ориентированное программирование»
28.4kb.
1 стр.
Рабочий план практических занятий по курсу «Объектно-ориентированное программирование»
40.5kb.
1 стр.
Программирование потоком данных Сжатие данных
223.56kb.
1 стр.