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

Заказать уникальный реферат
Тип работы: Реферат
Предмет: Программирование
  • 25 25 страниц
  • 10 + 10 источников
  • Добавлена 23.12.2022
748 руб.
  • Содержание
  • Часть работы
  • Список литературы
  • Вопросы/Ответы
Оглавление
Введение 3
Обзор языка Fortran 4
Парадигма объектно-ориентированного программирования 7
Объектно-ориентированное программирование в языке Fortran 10
Расширяемость типов 10
Статический контроль соответствия типов и соответствия аргументов 14
Инкапсуляция и абстракция данных 15
Полиморфизм 17
Наследование 20
Заключение 24
Список использованной литературы 25

Фрагмент для ознакомления

Необязательные аргументы также обеспечивают перегрузку процедур. Если формальный аргумент объявлен как необязательный, т.е. если он указан в операторе optionalили имеет атрибут optional, то соответствующий фактический аргумент при обращении к процедуре может быть опущен.Для вызова процедур с необязательными аргументами тоже необходим интерфейсный блок.Ещё один пример перегрузки процедур – использование одной и той же процедуры с разным набором аргументов.Всё выше перечисленное относится к средствам реализации статического полиморфизма,при котором конкретизация способа использования определяется на этапе компиляции. Динамический полиморфизм предполагает, что в программе используется выбор конкретной процедуры из всех процедур разработанной в программе иерархии типов для исполнения на этапе выполнения программы, а не на этапе компиляции (механизм позднего связывания). То есть на этапе выполнения производится связывание имени с конкретной процедурой.Динамический полиморфизм, как и наследование, полезен тогда, когда в программе разработаны похожие (но не идентичные) объекты, которые можно обработать обобщенными процедурами.В Fortran 90/95 динамический полиморфизм в явном виде отсутствует, но егоможно смоделировать при помощи аппарата указателей. Следует создать производный тип, содержащий в качестве компонент указатели на каждый возможный тип в иерархии расширенных типов. Затем реализовать обобщенную процедуру, проверяющую во время выполнения, с каким объектом связан указатель (стандартная функция associated) в данный момент и вызывающую в зависимости от этого нужную процедуру.НаследованиеНаследование – это концепция ООП, согласно которой одни типы, называемые родительскими, базовыми, могут лежать в основе других – дочерних, порожденных. При этомпорожденныетипы перенимают свойства и поведение своего базового типа. Кроме того, для порожденного объекта могут быть определены дополнительные свойства. Таким образом, наследование позволяет использовать общие свойства объекта базового типа и описывать специфические свойства в порожденных типах.Применение наследования позволяет избежать дублирования фрагментов кода при создании и использовании типов, похожих друг на друга, имеющих общие свойства и принадлежащих одной предметной области.В Fortran 2003 на основе производных типов можно создавать новые типы, то есть «расширять» производные типы. Так в Fortranреализуется механизм наследования. Расширенный тип может содержать как новые компоненты (данные и процедуры), так и переопределять процедуры, связанные с родительским типом, только не меняя при этом их сигнатуру.Наследование в Fortran 90/95 может быть реализовано разными способами, чаще всего наследование реализуется частично посредством производного типа; полное наследование в явном виде не поддерживается, но может быть смоделировано. В общем случае один класс используется другим. Такая форма наследования называется композицией классов.Элементы производного типа могут иметь ранее описанный производный тип, то есть, производный тип может быть получен из другого производного типа добавлением компонент так, что новый тип получает копии данных и операций, которые были определены для порождающего (базового, родительского) типа. Базовый тип обладает общими свойствами.Например, в качестве базового типа возьмем рассмотренный выше тип point2d:! Порождающий (базовый)типtype point2dreal :: x, ycontainsprocedure :: add => add_vectorprocedure :: scale => scale_by_factorend type point2d!Порожденный типtype, extends(point2d) :: point3dreal :: zcontainsprocedure :: add => add_vector3dend type point3dНовый тип наследует все компоненты и связанные процедуры расширяемого типа, но процедуры необходимо проверить и при необходимости заменить (так добавляется процедура add_vector3d), учитывая новые свойства порожденного класса и соблюдая ограничения стандарта Fortran.В расширенных типах заменяются интерфейсы, подобные add в примере, но при этом необходимо следить за тем, чтобы сигнатуры метода не менялись. Единственное требуемое изменение: в качестве аргумента должен передаваться объект расширенного типа. По сравнению с ранее рассмотренным примером сигнатура подпрограммы add_vector3d примет вид:type(point2d)function add_vector3d( point, vector)class(point3d),intent(in) :: point !Обязательное изменениеtype(point2d), intent(in) :: vector...end function add_vector3dВ этом примере каждый объект порожденного типа содержит один объект базового типа. Расширение процедур заключается в написании процедуры порожденного типа, которая вызывает процедуру базового класса, определенную на компоненте базового класса. Такую форму наследования называют подтипизацией, потому что объекты порожденного типа могут использовать процедуры базового класса, словно они имеют один тип. В Fortran 2003 такое наследование производится автоматически, а в ранних версиях 90/95 наследование подтипизацией должно конструироваться явным образом, с сохранением сигнатуры, так как это обязательное требование.Чтобы обеспечить большую гибкость механизма расширения типов, для процедур в Fortran 2003 была добавлена характеристика абстрактный интерфейс. Вместо определения конкретной подпрограммы интерфейсы объявляют лишь «внешний вид» подпрограммы со списком аргументов и типов возвращаемого значения. В дальнейшем это объявление может служить шаблоном для настоящих подпрограмм.Механизм абстрактных типов и абстрактных интерфейсов определяет, чего следует ждать от производного типа, в частности, какие подпрограммы и с каким интерфейсом доступны без необходимости их переопределения. Для этой цели служат ключевые слова deferredи abstract interface:type, abstract :: abstract_point! Координаты точки будут заданы в расширенных типахcontainsprocedure(add_vector), deferred :: addend type abstract_point!Именованный интерфейсabstract interfacesubroutineadd_vector( point, vector )importabstract_pointclass(abstract_point), intent(inout) :: pointclass(abstract_point), intent(in) :: vectorend subroutine add_vectorendinterfaceПри объявлении обычных переменных тип type(abstract_point)назначить нельзя, так как это абстрактный тип. Чтобы его использовать, определяется тип, расширяющий абстрактный:type, extends(abstract_point) :: point2dreal :: x, ycontainsprocedure :: add => add_vector2dend type point2dtype(point2d) :: pointЛюбой тип, расширяющий абстрактный тип, должен определять включенные в абстрактный тип процедуры с корректным интерфейсом (абстрактный тип определяет контракт). Чтобы воспользоваться возможностями абстрактного типа, надо определить контракт. При этом дается доступ к обобщенному интерфейсу требуемых функциональных возможностей.В Fortran 90/95 потребуется реализовать специализированные версии для всех предполагаемых типов. В Fortran 2003 налагаемые требования становятся частью определения абстрактного типа.Множественное наследование запрещено во всех стандартах языка Fortran. Запрещено даже определение интерфейсов в стиле языка Java, обеспечивающее доступность некоторых конкретных подпрограмм с предварительной определенным интерфейсом. В Fortran множественное наследование организуется поэтапным созданием из абстрактного базового типа производного типа, объединяющего свойства нескольких базовых типовЗаключениеИспользование объектно-ориентированной технологии программирования предполагает необходимость выделения объектов для решаемой прикладной задачи, выделения операции над объектами, которые требуется выполнять, и разбиения программы на соответствующие модули. Применение технологии ООП, конечно же, зависит от решаемой прикладной задачи. Нашей целью было показать, как можно использовать основные идеи ООП при программировании на языке Fortran.Fortran90/95 поддерживает многие черты ООП (производные типы, определяемые пользователем операции, модули, обеспечивающие инкапсуляцию и абстракцию объектов, перегрузка операций и процедур, динамические массивы и др.), хотя в этих стандартах отсутствуют в явном виде наследование и динамический полиморфизм. Более поздний стандарт Fortran 2003 включает в себя полноценную поддержку ООП.При этом в ранних версиях отсутствующие черты могут быть смоделированы, что позволяет реализовать основные концепции ООП, пусть и с большимиусилиями чем в объектно-ориентированных языках.Список использованной литературыObject Oriented Programing. [Электронный ресурс] – URL: https://riptutorial.com/fortran/topic/2374/object-oriented-programmingБартеньев О. В. Современный Фортран. – 3-е изд., доп. и перераб. – М.: ДИАЛОГМИФИ, 2000. – 449 с.Горелик А. М. Объектно-ориентированное программирование на современном Фортране. Препринты ИПМ им. М. В. Келдыша, 2002, 070. [Электронный ресурс] – URL:https://www.keldysh.ru/papers/2002/prep70/prep2002_70.htmlИстория языков программирования: как Fortran позволил пользователям общаться с ЭВМ на «ты». [Электронный ресурс] – URL: https://habr.com/ru/post/309914/МаркусАрьен. Современный Fortran на практике / пер. с англ. Снастин А. В. – Саратов: Профобразование, 2017. – 318 с.Немнюгин М.А., Стесик О.Л. Современный Фортран. Самоучитель. – СПб.: БХВ-Петербург, 2004. – 496 с.Объектно-ориентированные технологии проектирования прикладных программных систем. [Электронный ресурс]– URL:https://dit.isuct.ru/IVT/BOOKS/PROGRAMMING/prog10/INDEX.HTMРыжиков Ю.И. Современный Фортран. Учебник – СПб.: КОРОНА принт, 2009. – 288 с.Фортран – Краткое руководство. 09.03.2019. [Электронный ресурс] – URL: https://coderlessons.com/tutorials/kompiuternoe-programmirovanie/vyuchit-fortran/fortran-kratkoe-rukovodstvoФортран 90. Международный стандарт. Перевод с англ. Дробышевич С.Г., редактор перевода Горелик А.М. М.: Финансы и статистика, 1998

Список использованной литературы
1. Object Oriented Programing. [Электронный ресурс] – URL: https://riptutorial.com/fortran/topic/2374/object-oriented-programming
2. Бартеньев О. В. Современный Фортран. – 3-е изд., доп. и перераб. – М.: ДИАЛОГМИФИ, 2000. – 449 с.
3. Горелик А. М. Объектно-ориентированное программирование на современном Фортране. Препринты ИПМ им. М. В. Келдыша, 2002, 070. [Электронный ресурс] – URL: https://www.keldysh.ru/papers/2002/prep70/prep2002_70.html
4. История языков программирования: как Fortran позволил пользователям общаться с ЭВМ на «ты». [Электронный ресурс] – URL: https://habr.com/ru/post/309914/
5. Маркус Арьен. Современный Fortran на практике / пер. с англ. Снастин А. В. – Саратов: Профобразование, 2017. – 318 с.
6. Немнюгин М.А., Стесик О.Л. Современный Фортран. Самоучитель. – СПб.: БХВ-Петербург, 2004. – 496 с.
7. Объектно-ориентированные технологии проектирования прикладных программных систем. [Электронный ресурс] – URL: https://dit.isuct.ru/IVT/BOOKS/PROGRAMMING/prog10/INDEX.HTM
8. Рыжиков Ю.И. Современный Фортран. Учебник – СПб.: КОРОНА принт, 2009. – 288 с.
9. Фортран – Краткое руководство. 09.03.2019. [Электронный ресурс] – URL: https://coderlessons.com/tutorials/kompiuternoe-programmirovanie/vyuchit-fortran/fortran-kratkoe-rukovodstvo
10. Фортран 90. Международный стандарт. Перевод с англ. Дробышевич С.Г., редактор перевода Горелик А.М. М.: Финансы и статистика, 1998

Вопрос-ответ:

Возможно ли использовать объектно-ориентированное программирование на языке Fortran?

Да, язык Fortran поддерживает объектно-ориентированное программирование.

Какие парадигмы программирования можно использовать на языке Fortran?

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

Что такое инкапсуляция и абстракция данных в контексте объектно-ориентированного программирования?

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

Что такое полиморфизм в контексте объектно-ориентированного программирования?

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

Можно ли использовать наследование в языке Fortran?

Да, язык Fortran поддерживает наследование, что позволяет создавать иерархию классов и переиспользовать код.

Какие особенности объектно-ориентированного программирования поддерживает язык Fortran?

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

Что такое наследование в объектно-ориентированном программировании на Fortran?

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

Как в языке Fortran реализована инкапсуляция и абстракция данных?

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

Как в языке Fortran реализован полиморфизм?

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

Как в языке Fortran выполняется статический контроль соответствия типов и аргументов?

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

Какие особенности объектно-ориентированного программирования представлены в языке Fortran?

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

Каким образом осуществляется расширяемость типов в языке Fortran?

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