Kievuz

РЕФЕРАТ на тему: Объектно-ориентированный подход как технология программирования

Содержание

Языки объектно-ориентированного программирования

РЕФЕРАТ на тему: Объектно-ориентированный подход как технология программирования

Министерство образования и науки Российской Федерации

Федеральное государственное бюджетное образовательное учреждение 
высшего профессионального образования

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

Имени Александра Григорьевича и Николая Григорьевича Столетовых»

(ВлГУ)

Кафедра «Физика и прикладная математика» 

Отчет по переаттестации по дисциплине “Языки программирования”

На тему “ Языки объектно-ориентированного программирования”

Выполнила:

ст. гр. ИТС-111

Морковкина А.Я.

Принял:

Старший преподаватель

Павлова О.Н.

Владимир 2012

Оглавление

Введение 3

Сущность объектно-ориентированного подхода к программированию. 5

Модульное программирование 7

Нисходящее программирование 7

Пошаговое программирование 8

Структурное программирование 9

Понятия объекта, класса объектов 9

Основные понятия объектно-ориентированного программирования: инкапсуляция, наследование и полиморфизм. 10

Примеры языков объектно-ориентированного программирования: 12

Object Pascal 12

C++. 13

Common Lisp Object System (CLOS). 15

Ada. 16

Заключение. 19

Список литературы: 20

Введение

Использование объектно-ориентированной методологии не ограничено каким-либо одним языком программирования – она применима к широкому спектру объектных и объектно-ориентированных языков.

Наряду с анализом и проектированием, несомненно, важны особенности конкретного языка программирования, поскольку, в конечном счете, наши конструкции должны быть выражены на каком-то языке.

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

  • это инструмент проектирования;
  • это средство человеческого восприятия;
  • это средство управления компьютером.

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

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

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

То есть технология программирования – это скорее способ организации процесса обдумывания программы, нежели ее записи. Из сказанного следует, что если пишущий программу – мыслит, то он уже придерживается какой-то технологии программирования, даже не подозревая об этом.

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

Рассмотрим наиболее известные из технологий:

– метод “северо-западного” угла (имеется в виду лист бумаги или экран дисплея). Программа пишется сразу от начала до конца, без использования каких-либо общих принципов;

– технология структурного программирования, в ней предполагается придерживаться принципов модульности, нисходящего и пошагового проектирования программ, одновременного проектирования программ и структур данных.

– технология объектного программирования: связана с использованием при проектировании программы понятий объектов и их классов.

Сущность объектно-ориентированного подхода к программированию

 Основные идеи объектно-ориентированного подхода опираются на следующие положения:

– Программа представляет собой модель некоторого реального процесса, части реального мира.

 Модель реального мира или его части может быть описана как совокупность взаимодействующих между собой объектов.

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

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

– Объекты, описанные одним и тем же набором параметров и способные выполнять один и тот же набор действий представляют собой класс однотипных объектов.

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

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

Классы объектов часто удобно строить так, чтобы они образовывали иерархическую структуру. Например, класс “Студент”, описывающий абстрактного студента, может служить основой для построения классов “Студент 1 курса”, “Студент 2 курса” и т.д.

, которые обладают всеми свойствами студента вообще и некоторыми дополнительными свойствами, характеризующими студента конкретного курса. При разработке интерфейса с пользователем программы могут использовать объекты общего класса “Окно” и объекты классов специальных окон, например, окон информационных сообщений, окон ввода данных и т.п.

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

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

 Некоторые параметры объекта могут быть локализованы внутри объекта и недоступны для прямого воздействия извне объекта.

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

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

 позволяющие строить описание классов объектов, образовывать данные объектных типов, выполнять операции над объектами.

 Одним из первых таких языков стал язык SmallTalk в котором все данные являются объектами некоторых классов, а общая система классов строится как иерархическая структура на основе предопределенных базовых классов.

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

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

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

В некоторых языках и системах программирования применение объектного подхода ограничивается средствами интерфейса с пользователем (например, Visual FoxPro ранних версий).

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

Модульное программирование

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

– размер модуля должен быть ограничен;

– модуль должен выполнять логически целостное и завершенное действие;

– модуль должен быть универсальным, то есть по возможности параметризованным: все изменяемые характеристики выполняемого действия должны передаваться через параметры;

– входные параметры и результат модуля желательно передавать не через глобальные переменные, а через формальные параметры и результат функции.

Еще одной, но уже физической единицей программы является текстовый файл, содержащий некоторое количество функций и определений типов данных и переменных. Модульное программирование на уровне файлов – это возможность разделить полный текст программы на несколько файлов, транслировать их независимо друг от друга.

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

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

Нисходящее программирование

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

– простой последовательности действий;

– конструкции выбора или оператора if;

– конструкции повторения или цикла.

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

– первоначально программа формулируется в виде некоторого неформального действия на естественном языке;

– первоначально определяются входные параметры и результат действия;

– очередной шаг детализации не меняет структуру программы, полученную на предыдущих шагах;

– если в процессе проектирования получаются идентичные действия в различных ветвях, то это означает необходимость оформления этого действия отдельной функцией;

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

В результате проектирования получается программа, в которой принципиально отсутствует оператор перехода goto, поэтому такая технология называется “программирование без goto”.

Пошаговое программирование

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

То, что этот принцип выделен отдельно, говорит о необходимости предотвратить соблазн детализации программы сразу от начала до конца и развивать умение выделять и сосредоточивать внимание на главных, а не второстепенных деталях алгоритма.

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

Структурное программирование

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

С самой же общей точки зрения предмет (в нашем случае – данные) всегда первичен по отношению к выполняемым с ним действиям (в нашем случае – алгоритм).

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

Структурное программирование – модульное нисходящее пошаговое проектирование алгоритма и структур данных.

Понятия объекта, класса объектов

Центральными в ООП являются понятия класса и объекта. Образно говоря, ООП заключается не столько в использовании классов и объектов в программе, сколько в замене принципа программирования “от функции к функции” принципом программирования “от класса к классу”.

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

В худшем случае программист может “равномерно размазать” данные о некотором объекте программирования по всей программе. В противоположность этому все данные об объекте программирования и его связях с другими объектами можно объединить в одну структурированную переменную. В первом приближении ее можно назвать объектом.

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

Описание множества однотипных объектов называется классом.

Источник: http://turboreferat.ru/information/yazyki-obektnoorientirovannogo-programmirovaniya/226075-1121824-page1.html

Реферат на тему: объектно-ориентированный подход как технология программирования

РЕФЕРАТ на тему: Объектно-ориентированный подход как технология программирования

Оглавление

Введение. 3

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

2. Объекты.. 5

3. Абстракция. 6

3. Инкапсуляция. 7

5. Полиморфизм.. 8

Заключение. 9

Список литературы.. 10

Введение

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

В этом состоит главное отличие ООП от процедурного программирования, где отдельно определённые структуры данных передаются в процедуры (функции) в качестве параметров.

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

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

1. Абстракции – формальное о качествах или свойствах предмета путем мысленного удаления некоторых частностей или материальных объектов;

2. Инкапсуляции – механизма, связывающего вместе код и данные, которыми он манипулирует, и защищающего их от внешних помех и некорректного использования;

3. Наследования – процесса, с помощью которого один объект приобретает свойства другого, т.е. поддерживается иерархической классификации;

4. Полиморфизма – свойства, позволяющего использовать один и тот же интерфейс для общего класса действий.

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

– определение основных объектов, необходимых для решения данной задачи;

– определение закрытых данных (данных состояния) для выбранных объектов;

– определение второстепенных объектов и их закрытых данных;

– определение иерархической системы классов, представляющих выбранные объекты;

– определение ключевых сообщений, которые должны обрабатывать объекты каждого класса;

– разработка последовательности выражений, которые позволяют решить поставленную задачу;

– разработка методов, обрабатывающих каждое сообщение;

– очистка проекта, то есть устранение всех вспомогательных промежуточных материалов, использовавшихся при проектировании;

– кодирование, отладка, компоновка и тестирование.

Объектно-ориентированное программирование позволяет программисту моделировать объекты определённой предметной области путем программирования их содержания и поведения в пределах класса.

Конструкция «класс» обеспечивает механизм инкапсуляции для реализации абстрактных типов данных.

Инкапсуляция как бы скрывает и подробности внутренней реализации типов, и внешние операции и функции, допустимые для выполнения над объектами этого типа.

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

Элементы объектно-ориентированного программирования (ООП) появились в начале 70-х годов в языке моделирования «Симула», затем получили свое развитие, и в настоящее время ООП принадлежит к числу ведущих технологий программирования.

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

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

В традиционных методах программирования изменение данных или правил и методов обработки часто приводило к необходимости значительного изменения программы.

Всякое существенное изменения программы – это большая неприятность для программиста, так как при этом увеличивается вероятность ошибок, вследствие чего возрастает время, необходимое для «доводки» программы.

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

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

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

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

2. Объекты

Базовым в объектно-ориентированном программировании является понятие объекта. Объект имеет определённые свойства. Состояние объекта задаётся значениями его признаков. Объект «знает», как решать определённые задачи, то есть располагает методами решения. Программа, написанная с использованием ООП, состоит из объектов, которые могут взаимодействовать между собой.

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

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

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

В описании объекта фактически содержаться лишь шаблоны обращения к методам, которые необходимы компилятору для проверки соответствия количества параметров и их типов при обращении к методам.

3.Абстракция

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

Например: люди не представляют себе автомобиль как набор десятков тысяч индивидуальных частей (деталей). В их воображении автомобиль – хорошо определенный объект со своим собственным уникальным поведением. Эта абстракция позволяет людям использовать автомобиль, не задумываясь над сложностью деталей, из которых он состоит.

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

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

Таким образом, каждый из этих объектов описывает свое собственное уникальное поведение.

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

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

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

Закрытые коды или данные доступны только для других частей этого объекта. Таким образом, закрытые коды и данные недоступны для тех частей программы, которые существуют вне объекта. Если коды и данные являются открытыми, то, несмотря на то, что они заданы внутри объекта, они доступны и для других частей программы.

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

Предположим, например, что имеется «не-ООП» программа, предназначенная для начисления заработной платы сотрудникам некой организации, а в программе имеются два массива. Один массив хранит величину заработной платы, а другой – телефонные номера сотрудников (для составления отчёта для налоговой инспекции).

Что произойдёт, если программист случайно перепутает эти массивы? Очевидно, для бухгалтерии начнутся тяжёлые времена. «Жёсткое» связывание данных и процедур их обработки в одном объекте позволит избежать неприятностей такого рода.

Инкапсуляция и является средством организации доступа к данным только через соответствующие методы.

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

Наследование – это ещё одно базовое понятие объектно-ориентированного программирования. Наследование позволяет определять новые объекты, используя свойства прежних, дополняя или изменяя их.

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

Если непосредственный родитель единственный, то наследование называется простым, а если таких классов несколько – то множественным.

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

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

Программист при этом может и не знать деталей реализации объекта-родителя.

5. Полиморфизм

Полиморфизм на первый взгляд кажется самой малоинтересной и малоперспективной парадигмой, но на самом деле это совсем не так.

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

Кратко смысл полиморфизма можно выразить фразой: «Один интерфейс, множество реализаций». Возможность приписывать разную функциональность одному методу (функции, операции) называется перегрузкой метода (перегрузкой функций, перегрузкой операций).

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

Общность имеет внешнее и внутреннее выражение: внешняя общность проявляется как одинаковый набор методов с одинаковыми именами и сигнатурами (именем методов и типами аргументов и их количеством); внутренняя общность — одинаковая функциональность методов.

Заключение

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

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

Список литературы

1479665 [В Интернете] // studfiles. – 3 12 2015 г.. – http://www.studfiles.ru/preview/1479665/.

1d [В Интернете] // objectorient. – 3 12 2015 г.. – http://objectorient.narod.ru/1d.htm.

ipn [В Интернете] // codenet. – 3 12 2015 г.. – http://www.codenet.ru/progr/cpp/ipn.php.

polymorphism [В Интернете] // java-course. – 3 12 2015 г.. – http://java-course.ru/begin/polymorphism/.

Основные_принципы_ООП:_инкапсуляция,_наследование,_полиморфизм [В Интернете] // wikia. – 3 12 2015 г.. – http://gos-it.wikia.com/wiki/%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D1%8B%D0%B5_%D0%BF%D1%80%D0%B8%D0%BD%D1%86%D0%B8%D0%BF%D1%8B_%D0%9E%D0%9E%D0%9F:_%D0%B8%D0%BD%D0%BA%D0%B0%D0%BF%D1%81%D1%83%D0%BB%D1%8F%D1%86%D0%B8%D1%8F,_%D0%BD%D0%B0%D1%81%D0%BB%D0%B5%D0%.

Источник: http://kursak.net/referat-na-temu-obektno-orientirovannyj-podxod-kak-texnologiya-programmirovaniya/

Объектно-ориентированные технологии программирования прикладных программных средств. Определение классов

РЕФЕРАТ на тему: Объектно-ориентированный подход как технология программирования

    УЗБЕКСКОЕ АГЕНТСТВО СВЯЗИ И ИНФОРМАТИЗАЦИИ

    ТАШКЕНТСКИЙ УНИВЕРСИТЕТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ          

Самостоятельная работа 

Тема: Объектно-ориентированные технологии программирования

прикладных программных средств. Определение классов.   

                                                           Сдала: 252 -10, Розыходжаева Д.А.

                                                    Принял:___________  Камилов М.М.

                                                                                            (подпись)               (Ф.И.О.)

                                                           Дата защиты и балл “__________”, ___________

                               (число)      (балл) 

Ташкент – 2011

Оглавление  

Основные понятия объектно-ориентированного подхода

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

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

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

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

Рис. 1. Семантика (смысл программы с точки зрения выполняющего ее компьютера) и прагматика (смысл программы с точки зрения ее пользователей)

Модель содержит не все признаки и свойства представляемого ею предмета (понятия), а только те, которые существенны для разрабатываемой программной системы. Тем самым модель “беднее”, а, следовательно, проще представляемого ею предмета (понятия).

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

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

Таким образом, объектно-ориентированный подход помогает справиться с такими сложными проблемами, как 

  • уменьшение сложности программного обеспечения;
  • повышение надежности программного обеспечения;
  • обеспечение возможности модификации отдельных компонентов программного обеспечения без изменения остальных его компонентов;
  • обеспечение возможности повторного использования отдельных компонентов программного обеспечения.

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

Этим объясняется интерес программистов к объектно-ориентированному подходу и объектно-ориентированным языкам программирования.

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

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

Рис.2. Жизненный цикл программной системы

Объектно-ориентированный подход имеет два аспекта:

  • объектно-ориентированная разработка программного обеспечения;
  • объектно-ориентированная реализация программного обеспечения.

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

Объектно-ориентированная разработка программного обеспечения связана с применением объектно-ориентированных моделей при разработке программных систем и их компонентов. Говоря об объектно-ориентированной разработке, имеется в виду:

  • объектно-ориентированные методологии (технологии) разработки программных систем;
  • инструментальные средства, поддерживающие эти технологии.

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

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

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

Наиболее известной является объектно-ориентированная методология OMT (Object Modeling Technique), которая поддерживает две первые стадии жизненного цикла программных систем. Эта методология выбрана для демонстрации объектно-ориентированного подхода, потому что является одной из наиболее продвинутых и популярных объектно-ориентированных методологий.

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

Методология OMT поддерживается системой Paradigm+, одной из наиболее известных инструментальных систем объектно-ориентированной разработки.

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

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

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

Первый объектно-ориентированный язык программирования Simula 67 был разработан в конце 60-х годов в Норвегии. Авторы этого языка очень точно угадали перспективы развития программирования: их язык намного опередил свое время.

Однако современники (программисты 60-х годов) оказались не готовы воспринять ценности языка Simula 67, и он не выдержал конкуренции с другими языками программирования (прежде всего, с языком Fortran).

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

Но достоинства языка Simula 67 были замечены некоторыми программистами, и в 70-е годы было разработано большое число экспериментальных объектно-ориентированных языков программирования: например, языки CLU, Alphard, Concurrent Pascal и др. Эти языки так и остались экспериментальными, но в результате их исследования были разработаны современные объектно-ориентированные языки программирования: C++, Smalltalk, Eiffel и др.

Наиболее распространенным объектно-ориентированным языком программирования безусловно является C++. Свободно распространяемые коммерческие системы программирования C++ существуют практически на любой платформе.

Широко известна свободно распространяемая система программирования G++, которая дает возможность всем желающим разобрать достаточно хорошо и подробно прокомментированный исходный текст одного из образцовых компиляторов языка C++.

Завершается работа по стандартизации языка C++: последний Draft стандарта C++ выпущен в июне 1995 г. (он доступен по Internet).

Разработка новых объектно-ориентированных языков программирования продолжается. С 1995 года стал широко распространяться новый объектно-ориентированный язык программирования Java, ориентированный на сети компьютеров и, прежде всего, на Internet. Синтаксис этого языка напоминает синтаксис языка C++, однако эти языки имеют мало общего.

Java интерпретируемый язык: для него определены внутреннее представление (bytecode) и интерпретатор этого представления, которые уже сейчас реализованы на большинстве платформ. Интерпретатор упрощает отладку программ, написанных на языке Java, обеспечивает их переносимость на новые платформы и адаптируемость к новым окружениям.

Он позволяет исключить влияние программ, написанных на языке Java, на другие программы и файлы, имеющиеся на новой платформе, и тем самым обеспечить безопасность при выполнении этих программ.

Эти свойства языка Java позволяют использовать его как основной язык программирования для программ, распространяемых по сетям (в частности, по сети Internet).

Первая фаза жизненного цикла – анализ требований и предварительное проектирование системы. Объектно-ориентированное моделирование.

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

При объектно-ориентированном подходе анализ требований к системе сводится к разработке моделей этой системы.

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

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

Модели помогают:

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

В настоящее время существует несколько технологий объектно-ориентированной разработки прикладных программных систем, в основе которых лежит построение и интерпретация на компьютере моделей этих систем. Мы подробно ознакомимся с одной из таких технологий – OMT (Object Modeling Techniques).

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

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

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

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

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

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

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

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

Вторая фаза жизненного цикла – конструирование системы

Источник: http://student.zoomru.ru/comp/obektnoorientirovannye-tehnologii-programmirovaniya-prikladnyh-pr/106545.853621.s1.html

ovdmitjb

Add comment