Файл: Анализ методов современного программирования (Методология программирования).pdf
Добавлен: 25.05.2023
Просмотров: 698
Скачиваний: 7
СОДЕРЖАНИЕ
Глава 1. Основные понятия и определения
1.2. Методология программирования
Глава 2. Методы современного программирования
2.1 Модульное программирование
2.2 Структурное программирование
Глава 3 Объектно-ориентированный подход в разработке программ
3.1 Объектно-ориентированное программирование
3.2 Основные понятия объектно-ориентированного программирования
Объектно-ориентированное программирование развивается уже год два, а несколько десятков. На данный момент имеется несколько школ. Каждая из школы предлагает свой набор принципов работы с объектами и по-своему излагает эти принципы. Бурные обсуждения и дискуссии, проходившие между представителями этих школ, позволили создать несколько общепринятых принципов, признанных всеми школами и внедренных во вес объектно-ориентированные языки программирования[22].
В объектно-ориентированном программировании выделяют 4 основных принципа: абстракция, инкапсуляция, наследование и полиморфизм.
Понятие абстракции в объектно-ориентированном программировании
По мнению, Г.Г. Рапакова и С.Ю. Ржеуцкого принцип абстракции является основой идеологии объектно-ориентированного программирования (ООП)[23].
Абстракция - способ выделения самых значимых характеристик объекта, при этом менее значимые отбрасываются. В ООП абстракция - работа только со значимыми характеристиками. Суть этого принципа в том, чтобы отделить составные объекты, состоящие из «меньших» объектов, от этих самых объектов, то есть от их составляющих. Такой подход позволяет работать непосредственно с объектом, не вдаваясь в подробности, из чего же он состоит и как работает. Возвращаясь к примеру про слесарную мастерскую, принцип абстракции заключается в том, что старший слесарь не тратит своё время и ресурсы на определение, из чего ученик сделал деталь, а просто использует её по назначению.
Преимущества абстракции следующие:
- Применяя абстракцию, можно отделить то, что может быть сгруппировано по какому-либо типу.
- Часто изменяемые свойства и методы могут быть сгруппированы в отдельный тип, таким образом основной тип не будет подвергаться изменениям. Это усиливает принцип ООП: «Код должен быть открытым для Расширения, но закрытым для Изменений».
Таким образом, можно сказать, что абстракция упрощает рассмотрение сущности, выделяя существенные свойства на первый план, параллельно и игнорируя второстепенные свойства[24].
Принцип инкапсуляции в ООП
Инкапсуляция - принцип объектно-ориентированного программирования, позволяющий собрать объект в пределах одной структуры или массива, убрав способ обработки данных и сами данные от «чужих глаз». Это одновременно и облегчает конечному пользователю работу с программой, и защищает данные и само приложение от постороннего вмешательства. Пользователь может работать со всем функционалом через интерфейс, не задумываясь над тем, как программа работает. Инкапсуляцию применяют:
- когда нужно сохранить некоторый участок кода без изменений со стороны пользователя;
- когда нужно ограничить доступ к коду - в связи с уникальностью используемых техник, которые автор хочет оставить «при себе»;
- когда изменение кода повлечёт за собой неработоспособность программы или её взлом.
Она неразрывна с абстракцией, и по сути благодаря ей она и работает. Инкапсуляция - это своеборазный клей (или синяя изолента), которым склеивают разные чертежи в один. То есть совмещение деталей для создания своей - это и есть инкапсуляция. Причём при совмещении можно не описывать детали этого совмещения (то есть члены класса могут быть приватными), таким образом помогая абстрагироваться тем, кто этот чертёж использует.
Следует отметить, что инкапсуляция присуща не только объектно-ориентированному программированию. Например, в процедурном программировании инкапсуляция осуществляется, например, при помощи подпрограмм (как вы помните, в ActionScript подпрограммы называются функциями). Однако в объектно-ориентированном программировании ее применение значительно расширяется благодаря введению понятия объекта[25].
Ниже представлены некоторые преимущества инкапсуляции:
- Можно защитить внутреннее состояние объекта с помощью сокрытия его атрибутов.
- Это улучшает модульное построение кода, так как предотвращает взаимодействие объектов неожиданными способами.
- Повышается практичность кода.
- Это поддерживает договорные отношения конкретного объекта.
- Инкапсуляция облегчает поддержку ПО.
- Изменения в коде могут производиться независимо друг от друга.
Наследование классов в ООП
Понятие класса приводит нас к понятию наследования. В повседневной жизни часто сталкиваемся с разбиением классом на подклассы: например, класс животные можно разбить на подклассы млекопитающие, земноводные, насекомые, птицы и т. д. Класс наземный транспорт делится на классы автомобили, грузовики, автобусы, мотоциклы и т. д.
То есть, наследование - это способность в объектно-ориентированном программировании построить новый класс на основе уже заданного. При этом функционал может как полностью совпадать, так и отличаться. Класс-донор называется в таком случае родительским или базовым, а его «потомок» - наследником, дочерним классом. Существует также множественное наследование, при котором у класса-наследника может быть несколько «родителей». При этом класс наследует методы всех своих отцов и матерей, что часто приводит к ошибкам. Наследование требует определения ещё одного понятия: прототип - объект-образец, на основе которого «рождаются» другие объекты, полностью копируя его или изменяясь в процессе. При изменении в прототипе в копиях также происходят соответствующие изменения[26].
Преимущества наследования следующие:
- Усовершенствованное повторное использование кода.
- Устанавливается логическое отношение «is a» (является кем-то, чем-то). Например: Dog is an animal. (Собака является животным).
- Модуляризация кода.
- Исключаются повторения.
Недостаток наследования следующий:
- Сильная связанность: подкласс зависит от реализации родительского класса, что делает код сильно связанным.
Принцип полиморфизма
Полиморфизм - способность объектов самим определять, какие методы они должны применить в зависимости от того, где именно в коде они находятся. То есть, объект может изменяться в зависимости от своего местоположения и действовать по-разному, что позволяет не заводить лишних структур. Иначе говоря: один интерфейс - множество решений. Полиморфизм позволяет повысить процент повторного использования кода и сократить этим самым размер программы и временные затраты на её написание[27].
Механизмы, посредством которых в языках программирования обеспечивается поддержка полиморфизма, очень разнообразны [28].
Полиморфизм ни в коем случае нельзя рассматривать отдельно от других фундаментальных понятий - абстракция, инкапсуляция и наследование.
Преимущества полиморфизма следующие:
- Создание повторно используемого кода. То есть, как только класс создан, реализован и протестирован, он может свободно использоваться без заботы о том, что конкретно в нем написано.
- Это обеспечивает более универсальный и слабосвязанный код.
- Понижается время компиляции, что ускоряет разработку.
- Динамическое связывание.
- Один и тот же интерфейс может быть использован для создания методов с разными реализациями.
- Вся реализация может быть заменена с помощью использования одинаковых сигнатур метода.
На сегодняшний день самые популярные языки программирования - это объектно-ориентированные, к примеру, С++ и Java. Также существуют языки, которые не предполагают написания программных операторов, а программирование происходит в виде визуального проектирования с помощью интерфейса языка. Примером таких систем являются VisualBasic, Delphiи C++ Builder.
Заключение
В результате написания курсовой работы на тему «Анализ методов современного программирования» было выполнено:
- Изучение основных понятий по данной теме;
- Раскрыть сущность методологии программирования;
- Раскрыта суть модульного программирования;
- Раскрыта сущность структурного программирования;
- Раскрыта сущность объектно-ориентированного программирования;
- Описаны основные понятия, которые связаны с объектно-ориентированным программированием.
В результате проведенного исследования литературы по данной теме можно заключить следующее:
На данный момент существует четыре широко известных в настоящее время методологии программирования – императивного, объектно-ориентированного, логического, функционального.
В результате изучения модульного программирования, можно сказать, что оно является основным способом разработки сложного программного обеспечения.
В результате изучения структурного программирования, можно сказать, оно как правило используется для разработки крупных программных комплексом. А так же следует отметить и то, что программа, которая написана с применением методов структурного программирования понятна, более надежна и облегчает сопровождение.
В результате изучения объектно-ориентированного программирования и его принципов можно сказать, что: абстракция невозможна без инкапсуляции и наследовании, как невозможен полиморфизм без, собственно, наследования. Ну а полиморфизм невозможен ещё и без инкапсуляции, которая банально бесполезна без наследования и полиморфизма.
Библиография
- Assembler. Учебник для вузов. 2-е изд. — СПб.: Питер, 2010. — 637 с: ил.
- Акимов П.А., Кайтуков Т.Б., Мозгалева М.Л., Сидоров В.Н. Строительная информатика: учебное пособие. - М.: Издательство АСВ, 2014.-432 стр.
- Алиев, В. Компьютер — это просто! - учебник. - Спб.: Питер, 2012 г.
- Васильев А. С#. Объектно-ориентированное программирование: Учебный курс. — СПб.: Питер. 2012. — 320 с.
- Гурский Д. ActionScript 2.0: программирование во Flash MX 2004. Для профессионалов. —СПб.: Питер. 2004. — 1088 с: ил.
- Кузнецов, M. B.PHP 5/6 / M. В. Кузнецов, И. В. Симдяпов. — СПб.: БХВ-Петербург, 2010. — 1024 с.
- Лафоре P. Объектно-ориентированное программирование в С++. Классика Computer Science. 4-е изд. - СПб.: Питер, 2011. - 928 с: ил.
- Орлов С. А.Теория и практика языков программирования: Учебник для вузов. Стандарт 3-го поколения. — СПб.: Питер, 2014. — 688 с: ил.
- Орлов С. А.Теория и практика языков программирования: Учебник для вузов. Стандарт 3-го поколения. — СПб.: Питер, 2014. — 688 с: ил.
- Орлов С. А.Теория и практика языков программирования: Учебник для вузов. Стандарт 3-го
- поколения. — СПб.: Питер, 2014. — 688 с: ил.
- Рапаков Г. Г., Ржеуцкая С. Ю. Программирование на языке Pascal. — СПб.: БХВ-Петербург, 2004. - 480 с.
- Хабнбуллин И. Ш. Java 7. — СПб.: БХВ-Петербург, 2012. – 738с.
- Аппаратное обеспечение [онлайн] -URL: http://linchakin.com/%D1%81%D0%BB%D0%BE%D0%B2%D0%B0%D1%80%D1%8C/%D0%B0/%D0%B0%D0%BF%D0%BF%D0%B0%D1%80%D0%B0%D1%82%D0%BD%D0%BE%D0%B5_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D0%B5 (дата обращения 07.11.2016).
- КОНСПЕКТ ОБЗОРНОЙ ЛЕКЦИИ по курсу «ЭВМ и программирование» доцента кафедры ИВТ, к.т. н. Ливак Е.Н. на тему Основные технологии разработки программного обеспечения [онлайн] - URL: http://mf.grsu.by/Kafedry/prikl_mat/academic_process/045/Lec_31.doc (дата обращения 03.11.2016)
- Методология программирования [онлайн] - URL: https://ru.wikipedia.org/wiki/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F (дата обращения 11.11.2016).
- Модульное программирование [онлайн] - URL: http://helpiks.org/5-51370.html (дата обращения 01.11.2016)
- Модульное программирование [онлайн] - URL: http://uchebnik-online.net/book/701-informatika-uchebnoe-posobie/11-modulnoe-programmirovanie.html (дата обращения 14.11.2016)
- Модульное программирование [онлайн] - URL:http://h-l-l.ru/publ/36-1-0-57 (дата обращения 14.11.2016)
- МОДУЛЬНОЕ ПРОГРАММИРОВАНИЕ: ОСНОВНЫЕ ПОНЯТИЯ И НАЗНАЧЕНИЕ // А.Ю. Сикиржицкий [онлайн] - URL:http://media.miu.by/files/store/items/rnpsmu-pipsn/iv/mspp_2013_33.pdf (дата обращения 28.10.2016)
- Модульное программирование[онлайн] -URL: http://webkonspect.com/?room=profile&id=20978&labelid=210661(дата обращения 16.11.2016).
- Парадигма структурного программирования Информатика (Практика программирования) [онлайн] - URL: http://foxford.ru/wiki/informatika/paradigma-strukturnogo-programmirovaniya (дата обращения 19.11.2016)
- Понятие о структурном программировании. Модульный принцип программирования. Подпрограммы. Принципы проектирования программ "сверху-вниз" и "снизу-вверх". Объектно-ориентированное программирование [онлайн] - URL: http://www.altstu.ru/media/f/Tema-20-Strukturnoe-programmirovanie.pdf (дата обращения 14.11.2016))
- Программирование. Методология программирования. [онлайн] - URL: http://izi.vlsu.ru/teach/books/905/theory.html (дата обращения 11.11.2016).
- Структурное программирование [онлайн] - URL: http://www.maksakov-sa.ru/TehProgram/StrProgr/index.html (дата обращения 14.11.2016)
- Типы программирования. Часть 1. Структурное программирование. Циклы [онлайн] - URL: http://www.tryobj.com/56-oprog-17.html (дата обращения 14.11.2016))
-
Алиев, В. Компьютер — это просто! - учебник. - Спб.: Питер, 2012 г. – с.8 ↑
-
Аппаратное обеспечение [онлайн] -URL: http://linchakin.com/%D1%81%D0%BB%D0%BE%D0%B2%D0%B0%D1%80%D1%8C/%D0%B0/%D0%B0%D0%BF%D0%BF%D0%B0%D1%80%D0%B0%D1%82%D0%BD%D0%BE%D0%B5_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D0%B5 (дата обращения 07.11.2016) ↑
-
Орлов С. А.Теория и практика языков программирования: Учебник для вузов. Стандарт 3-го поколения. — СПб.: Питер, 2014. — с. 25 ↑
-
Акимов П.А., Кайтуков Т.Б., Мозгалева М.Л., Сидоров В.Н. Строительная информатика: учебное пособие. - М.: Издательство АСВ, 2014.- с. 14 ↑
-
Акимов П.А., Кайтуков Т.Б., Мозгалева М.Л., Сидоров В.Н. Строительная информатика: учебное пособие. - М.: Издательство АСВ, 2014.-с. 14 - 15 ↑
-
Кузнецов, M. B.PHP 5/6 / M. В. Кузнецов, И. В. Симдяпов. — СПб.: БХВ-Петербург, 2010. — с. 997 ↑
-
Программирование. Методология программирования. [онлайн] - URL: http://izi.vlsu.ru/teach/books/905/theory.html (дата обращения 11.11.2016). ↑
-
Методология программирования [онлайн] - URL: https://ru.wikipedia.org/wiki/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F (дата обращения 11.11.2016). ↑
-
Методология программирования [онлайн] - URL: https://ru.wikipedia.org/wiki/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F (дата обращения 11.11.2016). ↑
-
Assembler. Учебник для вузов. 2-е изд. — СПб.: Питер, 2010. — с. 325 ↑
-
Модульное программирование[онлайн] -URL: http://webkonspect.com/?room=profile&id=20978&labelid=210661(дата обращения 16.11.2016). ↑
-
Модульное программирование [онлайн] - URL: http://uchebnik-online.net/book/701-informatika-uchebnoe-posobie/11-modulnoe-programmirovanie.html (дата обращения 14.11.2016) ↑
-
Модульное программирование [онлайн] - URL:http://h-l-l.ru/publ/36-1-0-57 (дата обращения 14.11.2016)). ↑
-
МОДУЛЬНОЕ ПРОГРАММИРОВАНИЕ: ОСНОВНЫЕ ПОНЯТИЯ И НАЗНАЧЕНИЕ // А.Ю. Сикиржицкий [онлайн] - URL:http://media.miu.by/files/store/items/rnpsmu-pipsn/iv/mspp_2013_33.pdf (дата обращения 28.10.2016) ↑
-
Модульное программирование [онлайн] - URL: http://helpiks.org/5-51370.html (дата обращения 01.11.2016) ↑
-
Assembler. Учебник для вузов. 2-е изд. — СПб.: Питер, 2010. — с. 325 ↑
-
Понятие о структурном программировании. Модульный принцип программирования. Подпрограммы. Принципы проектирования программ "сверху-вниз" и "снизу-вверх". Объектно-ориентированное программирование [онлайн] - URL: http://www.altstu.ru/media/f/Tema-20-Strukturnoe-programmirovanie.pdf (дата обращения 14.11.2016)) ↑
-
Типы программирования. Часть 1. Структурное программирование. Циклы [онлайн] - URL: http://www.tryobj.com/56-oprog-17.html (дата обращения 14.11.2016)) ↑
-
Структурное программирование [онлайн] - URL: http://www.maksakov-sa.ru/TehProgram/StrProgr/index.html (дата обращения 14.11.2016) ↑
-
Парадигма структурного программирования Информатика (Практика программирования) [онлайн] - URL: http://foxford.ru/wiki/informatika/paradigma-strukturnogo-programmirovaniya (дата обращения 19.11.2016) ↑
-
Васильев А. С#. Объектно-ориентированное программирование: Учебный курс. — СПб.: Питер. 2012. —с. 35 - 36 ↑
-
Хабнбуллин И. Ш. Java 7. — СПб.: БХВ-Петербург, 2012. – с. 76 ↑
-
Рапаков Г. Г., Ржеуцкая С. Ю. Программирование на языке Pascal. — СПб.: БХВ-Петербург,2004. – с. 375 ↑
-
Орлов С. А.Теория и практика языков программирования: Учебник для вузов. Стандарт 3-го
поколения. — СПб.: Питер, 2014. — с. 400 ↑
-
Гурский Д. ActionScript 2.0: программирование во Flash MX 2004. Для профессионалов. —
СПб.: Питер. 2004. — с. 366 ↑
-
Лафоре P. Объектно-ориентированное программирование в С++. Классика Computer Science. 4-е изд. - СПб.: Питер, 2011. – с. 40-41 ↑
-
КОНСПЕКТ ОБЗОРНОЙ ЛЕКЦИИ по курсу «ЭВМ и программирование» доцента кафедры ИВТ, к.т. н. Ливак Е.Н. на тему Основные технологии разработки программного обеспечения [онлайн] - URL: http://mf.grsu.by/Kafedry/prikl_mat/academic_process/045/Lec_31.doc (дата обращения 03.11.2016) ↑
-
Орлов С. А.Теория и практика языков программирования: Учебник для вузов. Стандарт 3-го
поколения. — СПб.: Питер, 2014. — с. 357 ↑