Файл: История и развитие методологии объектно-ориентированного программирования. Сферы применения (Анализ предметной области).pdf
Добавлен: 31.03.2023
Просмотров: 89
Скачиваний: 1
Попытка решения проблемы наличия одинаковых имен методов в предках была предпринята в языке Эйфель, в котором при описании нового класса необходимо явно указывать импортируемые члены каждого из наследуемых классов и их именование в дочернем классе.
Большинство современных объектно-ориентированных языков программирования (C#, Java, Delphi и др.) поддерживают возможность одновременно наследоваться от класса-предка и реализовать методы нескольких интерфейсов одним и тем же классом. Этот механизм позволяет во многом заменить множественное наследование — методы интерфейсов необходимо переопределять явно, что исключает ошибки при наследовании функциональности одинаковых методов различных классов-предков.
Полиморфизм — возможность объектов с одинаковой спецификацией иметь различную реализацию.
Язык программирования поддерживает полиморфизм, если классы с одинаковой спецификацией могут иметь различную реализацию — например, реализация класса может быть изменена в процессе наследования.
Кратко смысл полиморфизма можно выразить фразой: «Один интерфейс, множество реализаций».
Полиморфизм — один из четырёх важнейших механизмов объектно-ориентированного программирования (наряду с абстракцией, инкапсуляцией и наследованием).
Полиморфизм позволяет писать более абстрактные программы и повысить коэффициент повторного использования кода. Общие свойства объектов объединяются в систему, которую могут называть по-разному — интерфейс, класс. Общность имеет внешнее и внутреннее выражение:
- внешняя общность проявляется как одинаковый набор методов с одинаковыми именами и сигнатурами (именем методов и типами аргументов, и их количеством);
- внутренняя общность — одинаковая функциональность методов. Её можно описать интуитивно или выразить в виде строгих законов, правил, которым должны подчиняться методы. Возможность приписывать разную функциональность одному методу (функции, операции) называется перегрузкой метода (перегрузкой функций, перегрузкой операций). [16]
Формы полиморфизма. Используя Параметрический полиморфизм можно создавать универсальные базовые типы. В случае параметрического полиморфизма, функция реализуется для всех типов одинаково и таким образом функция реализована для произвольного типа. В параметрическом полиморфизме рассматриваются параметрические методы и типы.
Параметрические методы. Если полиморфизм включения влияет на наше восприятие объекта, то параметрический полиморфизм влияет на используемые методы, так как можно создавать методы родственных классов, откладывая объявление типов до времени выполнения. Для избегания написания отдельного метода каждого типа применяется параметрический полиморфизм, при этом тип параметров будет являться таким же параметром, как и операнды.
Параметрические типы. Вместо того, чтобы писать класс для каждого конкретного типа следует создать типы, которые будут реализованы во время выполнения программы, то есть мы создаем параметрический тип.
Полиморфизм переопределения. Абстрактные методы часто относятся к отложенным методам. Класс, в котором определен этот метод может вызвать метод и полиморфизм обеспечивает вызов подходящей версии отложенного метода в дочерних классах. Специальный полиморфизм допускает специальную реализацию для данных каждого типа. [18]
Полиморфизм-перегрузка — это частный случай полиморфизма.
В рамках данной главы мы проанализированы ключевые особенности объектно-ориентированного программирования.
ЗАКЛЮЧЕНИЕ
Программирование занимает одну из значительных ниш в современном мире. Это не просто способ заставить работать «железяки», но и поставить себя на путь развития своих способностей. Но, прежде чем мы разберём все полезные свойства, следовало бы разобраться с терминологией. Программирование — область деятельности, направленная на разработку программного обеспечения, которое, в свою очередь, направлено на улучшение и облегчение человеческого быта, промышленной деятельности, сферы услуг и технологического прогресса.
В этой работе была изучена одна из методологий программирования, а именно объектно-ориентированное программирование. Данную парадигму сегодня используют многие языки. Изучив данную методологию можно сделать вывод, согласно которому для того, чтобы лучше понимать ООП, необходимо развивать объектное мышление.
В рамках проекта были решены следующие задачи:
- проанализировать понятие «программирование» и историю его развития;
- провести анализ различных методологий программирования;
- изучить историю появления и развития объектно-ориентированного программирования;
- выделить ключевые особенности ООП.
СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ
- Буч Гради Объектно-ориентированное проектирование с примерами применения. — Конкорд, 2014. — 519 с.
- Васильев А. Java. Объектно-ориентированное программирование. — Питер, 2013. — 397 с.
- Дейтел Пол, Дейтел Харви С для программистов с введением в С11. — ДМК Пресс, 2013. — 546 с.
- Джеймс Рамбо, М. Блаха UML 2.0. Объектно-ориентированное моделирование и разработка. — Питер, 2005. — 545 с.
- Дронов В. HTML 5, CSS 3 и Web 2.0. Разработка современных Web-сайтов. — БХВ-Петербург, 2013. — 408 с.
- Колисниченко Д. PHP и MySQL. Разработка веб-приложений. — БХВ-Петербург, 2015. — 573 с.
- Крейг Уоллс Spring в действии. — ДМК Пресс, 2013. — 754 с.
- Магда Ю. Программирование и отладка C/C++ приложений для микроконтроллеров ARM. — ДМК Пресс, 2012. — 170 с.
- Мартин Роберт Идеальный программист. Как стать профессионалом разработки ПО. — Питер, 2011. — 240 с.
- Павловская Т. А. C/C++. Процедурное и объектно-ориентированное программирование. Учебник для вузов. — Питер, 2015. — 496 с.
- Пьюривал С. Основы разработки веб-приложений. — Питер, 2015. — 272 с. Хабибуллин И. Самоучитель Java (3-е издание). — БХВ-Петербург, 2008. — 759 с.
- Ральф Джонсон, Джон Влиссидес, Ричард Хелм, Эрих Гамма Приемы объектно-ориентированного проектирования. Паттерны проектирования. — Питер, 1995. — 368 с.
- Симдянов И. Кузнецов М. Объектно-ориентированное программирование на PHP. — БХВ-Петербург, 2008. — 606 с.
- Bob Bryla, Kevin Loney. Oracle Database 12c The Complete Reference (Oracle Press) 1st Edition. — McGraw-Hill Education, 2013. — 1472 p.
- Herbert Schildt Java: A Beginner's Guide, Seventh Edition. — McGraw-Hill Education, 2017. — 752 p.
- Joshua Bloch Effective Java. — Addison-Wesley Professional, 2018. — 412 p.
- Joyce Farrell Java Programming. — Cengage Learning, 2015. — 976 p.
- Stroustrup Bjarne The Design and Evolution of C++. — Addison-Wesley, 2015. — 462 p.
- Tony Gaddis Starting Out with C++ from Control Structures to Objects. — Pearson, 2017. — 1344 p.
- Paul Barry Head First Python: A Brain-Friendly Guide. — O'Reilly Media, 2016. — 624 p.
- Jessica Miller, Victoria Kirst, Marty Stepp Web Programming Step by Step. — Step by Step Publishing, 2012. — 668 p.
- GcUp.ru [Электронный ресурс] История создания и эволюции языков программирования. Режим доступа: https://gcup.ru/publ/programming/istorija_sozdanija_i_ehvoljucii_jazykov_programmirovanija/8-1-0-539 Дата обращения (01.02.2019)
- Большая Российская энциклопедия [Электронный ресурс] Объектно-ориентированное программирование Режим доступа: https://bigenc.ru/technology_and_technique/text/3958439 Дата обращения (01.02.2019)
- Справочник Java [Электронный ресурс] Подробнее о технологии Java Режим доступа: http://www.java.com/ru/about/ Дата обращения (01.02.2019)