Файл: История и развитие методологии объектно-ориентированного программирования. Сферы применения. (Методология объектно-ориентированного программирования).pdf
Добавлен: 28.03.2023
Просмотров: 100
Скачиваний: 3
Введение
Объектно-ориентированное программирование является относительно новым подходом к созданию компьютерных приложений, который призван устранить многие из проблем, существующих в традиционных методиках программирования. В ООП обычно используется гораздо больше модулей, каждый из которых обеспечивает конкретные функции и может быть изолирован или даже полностью отделен от всех остальных. Такое модульное программирование обеспечивает гораздо большую гибкость и возможности для многократного использования кода.
Двадцать и более лет назад программисты реализовывали свои проекты путем непосредственного написания кода. С возрастанием размера и сложности проектов становилось все яснее, что такой подход неудачен. Проблема заключалась в непропорциональном возрастании сложности процесса создания самих программ.
Пожалуй, большие программы можно без преувеличения назвать самым сложным творением человека. Из-за своей сложности такие программы нередко содержат ошибки. Ошибки в программном обеспечении потенциально могут стать причиной материального ущерба, а иногда и угрожать жизни людей (например, при управлении авиаполетами). В результате борьбы с проблемой сложности программного кода были выработаны три новые концепции программирования:
- объектно-ориентированное программирование (ООП);
- унифицированный язык моделирования (UML);
- специализированные средства разработки программного обеспечения.
В данном курсовом проекте рассмотрим сферы применения ООП, которые возможно применить при проектировании и разработке ИС в любой организации.
Глава1 История развития ООП
Фундаментальными понятиями в программировании являются: технология программирования, методология, метод. Технология программирования (programming technology, sofware engineering) - это совокупность методов, способов и приемов разработки, сопровождения и применения программ, а также описание методов программирования. Метод - это совокупность приемов и операций практического и теоретического освоения действительности, в том числе программирования. Любая технология программирования базируется на некоторой методологии разработки программ. Методология - это система принципов и способов организации и построения теоретической и практической деятельности, а также учение об этой системе. Целью методологии программирования является изучение и внедрение таких методов проектирования и реализации программ, которые облегчают задачу сопровождения программы. Легкость сопровождения - это одно из тех качеств программы, которые нельзя добавить к программе после ее разработки. В настоящее время широкую известность приобрели методы: структурного программирования, модульного программирования, объектно-ориентированного программирования (ООП), формализованных технических заданий и др.
1974 г. Марвин Мински, основоположник теории искусственного интеллекта, предложил идею фрейма, отделившего описание класса (структуры) объекта от его конкретного представления (экземпляра) и быстро завоевавшего популярность в языках искусственного интеллекта. Фрейм стал прямым предшественником современного понятия объектов в Си++.
1976 г. Кринстен Нюгорн создал новый язык BETA, в котором ввел концепцию шаблонов - более высокого уровня абстракций, нежели объекты. Его коллега Оле Джохан Дал еще долгое время работал профессором информатики в Университете Осло. А Нюгорн на некоторое время занялся политикой и активно выступал против вступления Норвегии в Евросоюз.
1980 г. Бьерн Страуструп, продолживший дело своих коллег из лаборатории Bell, дополнил язык Си концепцией классов, основанной на фреймах и объектных механизмах Симулы.
1982 г. В Мехико прошла 8-я Международная конференция по сверхбольшим БД (VLDB), где была предложена концепция объектно-ориентированных БД и рассматривались вопросы расширения существовавших языков запросов к БД новыми, объектными типами данных.
1983 г. Страуструп дал своему творению окончательное название Си++. 4
Объектно-ориентированный подход основан на представлении предметной области задачи в виде множества моделей для независимой от языка разработки программной системы на основе ее прагматики.
Прагматика определяется целью разработки программной системы, например, обслуживание клиентов банка, управление работой аэропорта, обслуживание чемпионата мира по футболу и т.п.
Объектно-ориентированный подход обладает такими преимуществами, как:
- уменьшение сложности программного обеспечения;
- повышение надежности программного обеспечения;
- обеспечение возможности модификации отдельных компонентов программного обеспечения без изменения остальных его компонентов;
- обеспечение возможности повторного использования отдельных компонентов программного обеспечения.
Систематическое применение объектно-ориентированного подхода позволяет разрабатывать хорошо структурированные, надежные в эксплуатации, достаточно просто модифицируемые программные системы. Этим объясняется интерес программистов к объектно-ориентированному подходу и объектно-ориентированным языкам программирования. ООП является одним из наиболее интенсивно развивающихся направлений теоретического и прикладного программирования.
1.1 Объектно-ориентированный подход в программировании. Понятие наследования, полиморфизма, инкапсуляция
Одним из наиболее важных понятий объектно-ориентированного программирования (ООП) является класс. В Object Pascal классами называются специальные типы, которые содержат поля, методы и свойства. Класс служит образцом для создания конкретных экземпляров реализации, которые называются объектами. По сути класс – специальный термин для обозначения объектов. В основе классов, как и в основе ООП, лежат три фундаментальных принципа, которые называются инкапсуляция, наследование и полиморфизм.
Инкапсуляция – объединение данных и правил их обработки в один объект. Другими словами, класс представляет единство трех сущностей – полей, методов и свойств. Объединение этих сущностей в единое целое и называется инкапсуляцией. При этом класс получает определенную функциональность. Например, класс TForm содержит (инкапсулирует в себе) всё необходимое для создания Windows-окна. Инкапсуляция представляет собой мощное средство обмена готовыми к работе программными заготовками.
Наследование – определение класса и затем его использование для создания иерархии производных объектов. Порожденный класс автоматически наследует поля, методы и свойства своего родителя и может добавлять их новыми. Принцип наследования обеспечивает поэтапное создание сложных классов и разработку собственных библиотек классов. Все классы Object Pascal порождены от единственного родителя – класса TОbject. Этот класс не имеет полей и свойств, но включает в себя методы самого общего назначения, обеспечивающие весь жизненный цикл любых объектов от их создания до уничтожения.
Полиморфизм – это свойство классов решать схожие по смыслу задачи разными способами. В рамках Object Pascal поведенческие свойства класса определяются набором входящих в него методов. Изменяя алгоритм того или иного метода в потомках класса можно придавать этим потомках специфические свойства, отсутствующие у родителя. В результате в объекте-родителе и в объекте-потомке будут действовать два одноименных метода, имеющие разную алгоритмическую основу, и, следовательно, придающие объектам разные свойства. Это и называется полиморфизмом объектов.
Объектный тип данных в языке Object Pascal.
В Object Pascal объектный тип данных определяется с помощью зарезервированного слова class. По сути, класс – специальный термин для обозначения объектов. Составляющие элементы объектного типа данных (объектов /классов):
1)Поля – инкапсулированные в классе данные. Поля м.б. любого типа, в т.ч. классами. Каждый объект получает уникальный набор полей, но общий для всех объектов данного класса набор методов и свойств.
2)Методы – инкапсулированные в классе процедуры и функции, которые работают с полями.
Доступ к методам класса, как и к его полям возможен с помощью составных имен (через точку).
3)Свойства – специальный механизм, регулирующий доступ к полям. Свойства работают как поля, но реализованы как методы. Обычно свойство связано с некоторым полем и указывает те методы класса, которые должны использоваться при записи в это поле или при чтении из него.
В основе классов (объектов) лежат три фундаментальных принципа, которые называются инкапсуляция, наследование и полиморфизм.
Инкапсуляция – объединение данных и правил их обработки в один объект. Другими словами, класс представляет единство трех сущностей – полей, методов и свойств. Объединение этих сущностей в единое целое и называется инкапсуляцией. При этом класс получает определенную функциональность.
Наследование – определение класса и затем его использование для создания иерархии производных объектов. Порожденный класс автоматически наследует поля, методы и свойства своего родителя и может добавлять их новыми.
Полиморфизм – это свойство классов решать схожие по смыслу задачи разными способами.
Объектный тип данных в Object Pascal должен определяться только глобально. Любой вновь создаваемый класс может содержать секции (разделы), определяемые зарезервированными словами: published (декларированные), private (личные), protected (защищенные) и public (доступные). Внутри каждой секции вначале определяются поля, а затем – методы и свойства.
1.2 Методология объектно-ориентированного программирования
Увеличение размеров программ приводило к необходимости привлечения большего числа программистов, что, в свою очередь, потребовало дополнительных ресурсов для организации их согласованной работы. В процессе разработки приложений заказчик зачастую изменял функциональные требования, что еще более усложняло процесс создания программного обеспечения.
Но не менее важными оказались качественные изменения, связанные со смещением акцента использования компьютеров. В эпоху "больших машин" основными потребителями программного обеспечения были такие крупные заказчики, как большие производственные предприятия, финансовые компании, государственные учреждения. Стоимость таких вычислительных устройств для небольших предприятий и организаций была слишком высока.
Позже появились персональные компьютеры, которые имели гораздо меньшую стоимость и были значительно компактнее. Это позволило широко использовать их в малом и среднем бизнесе. Основными задачами в этой области являются обработка данных и манипулирование ими, поэтому вычислительные и расчетно-алгоритмические задачи с появлением персональных компьютеров отошли на второй план. Как показала практика, традиционные методы процедурного программирования не способны справиться ни с нарастающей сложностью программ и их разработки, ни с необходимостью повышения их надежности. Во второй половине 80-х годов возникла настоятельная потребность в новой методологии программирования, которая была бы способна решить весь этот комплекс проблем. Ею стало объектно-ориентированное программирование (ООП).
Глава 2 Сфера применения ООП
2.1 Постановка задачи
Создать не визуальный компонент, позволяющий находить корни уравнения методом хорд. В этом компоненте должны быть свойства, с помощью которых пользователь может задавать границы отрезка, на котором функция имеет корень, а также точность вычисления.
Также необходимо создать редакторы свойств и редактор компонента.
Математическое описание метода
Рисунок 1 – График вычисляемой функции
Пусть для определенности функция f(x) на отрезке [a;b] имеет корень и f(a)<0,а f(b)>0. Метод хорд состоит в следующем.
Построим хорду графика, соединив точки M и N, имеющие соответствующие координаты: [a;f(a)] и [b;f(b)]. Из точки пересечения хорды и оси абсцисс – С1 опустим перпендикуляр к графику функции, получим точку M1. Затем построим новую хорду, соединив точку N с уже другой, полученной точкой M1. И т. д. необходимо строить хорды до тех пор, пока тока Сn не совпадет с точкой пересечения графика функции и оси абсцисс, т. е. с корнем – x.
Для нахождения точки С напишем уравнение хорды MN:
А затем, положив, что Y=0, найдем соответствующее значение X=C:
Описание компонента
Данный не визуальный компонент является потомком класса TComponent. Чтобы показать результат выполнения программы, создана Form1, на которую помещена кнопка «искать корни» для нахождения результата и компонент «HordComponent1 » для вызова редактора компонента.