Пример заключения в курсовой работе по программированию

Пример заключения в курсовой работе по программированию Реферат

ВВЕДЕНИЕ

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

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

Для выполнения поставленной цели необходимо решить следующие задачи:

– провести анализ предметной области;

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

– изучить существующие аналоги приложения;

– разработать компоненты приложения.

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

Для выполнения работы был использован аналитический метод исследования и также метод моделирования.

Сущность языка программирования

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

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

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

Языки программирования обладают следующими характерными чертами:

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

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

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

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

Конрад Цузе создал свой высокоуровневый язык Планкалкюль (Plankalkül) в 1943-1945 для своего Z1 компьютера, но язык не был имплементирован.

Первые функционирующие языки программирования появились в 1950-х годах. Short Code Джона Уильям Мокли, предложенный в 1949 году, был одним из первых высокоуровневых языков для электронного компьютера. В отличие от машинного кода, выражения в Short Code представляли из себя понятные математические выражения. Однако при каждом запуске программы она переводилась в машинный код что существенно замедляло скорость работы и по сравнению с эквивалентным машинным кодом Short Code был медленнее.

В ранних 1950-х, Алик Глени разработал Autocode, возможно первый компилируемый язык программирования. В 1954 году вторая итерация данного языка известная как Mark 1 Autocode была разработана для Mark 1 Брукером Р.А. Затем в 1950-х вместе с Университетом Манчестера Брукер разработал Autocode для Ферранти Меркури. Версия для EDSAC 2 была разработана Дугласом Харти из Кембриджского Университета.

В 1954 году командой под лидерством Джона Бакус из IBM был изобретен FORTRAN. Это был первый повсеместно используемый высокоуровневый язык программирования с имплементацией функций. Данный язык все еще используется для написания программ оценки производительности суперкомпьютеров.

Период с 1960 по 1970 годов принес расцвет языков программирования. Большинство современных парадигм программирования появились именно в этот период.

Speakeasy – разработан в 1964 году в ANL Стэнли Кохен, является объектно-ориентированным языком программирования. Использует синтаксис Fortran как свою основу. Данный язык всё еще используется.

Simula – разработан в поздних 1960-х Нигардом и Далем как надстройка Algol 60, был первым языком с поддержкой объектно-ориентированного программирования.

C – компилируемый статически типизированный язык программирования общего назначения, разработанный в 1969—1973 годах сотрудником Bell Labs Деннисом Ритчи как развитие языка B.

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

Prolog – разработан в 1972 году Колмерауером, Рузелом и Ковальски, является первым логическим языком программирования.

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

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

В 1960-1970-х также проводились дебаты о преимуществах «структурированного программирования», что означает программирование без использования «goto». Большая часть программистов верила в то, что использование «goto» является плохим стилем программирования за исключением некоторых случаев. Причина возникновения подобных дебатов являлось то, что некоторые языки программирования не использовали «goto», что заставляло программистов использовать структурированный подход к программированию.

В 1980-ые вместо создания новых парадигм, все начали более тщательно прорабатывать идеи разработанные в прошлом десятилетие. C++ совместило объектно-ориентированное программирование и системное программирование. США стандартизировали Ada. Многие страны начали инвестировать в пятое поколение языков программирования.

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

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

В 1990-х благодаря росту популярности сети интернет, открылись новые платформы для компьютерных систем. Интернет дал возможность новым языкам таким как JavaScript получить популярность благодаря ранней интеграции с Netscape Navigation браузером. Различные другие языки получили распространение в разработки специальных приложений для веб-серверов, например, PHP.

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

В настоящее время присутствуют определенные тренды развития языков программирования, такие как:

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

Каждый из языков программирования следует хотя бы одной из парадигм программирования. Парадигма программирования – это совокупность идей и понятий, определяющих стиль написания компьютерных программ. Выделяют следующие основные парадигмы:

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

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

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

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

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

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

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

Специфика объектно-ориентированной парадигмы программирования

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

Достаточно сложно конкретно определить, что такое объектно-ориентированный язык программирования, одним из основных подходов являются 6 принципов Алана Кэя, отца основателя ООП.

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

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

Рефераты:  Рецензия к курсовой работе пример

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

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

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

Абстракция – для выделения в моделируемом предмете важного для решения конкретной задачи по предмету, в конечном счёте — контекстное понимание предмета, формализуемое в виде класса;

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

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

Некоторые языки также добавляют дополнительные средства, такие как:

  • конструкторы, деструкторы, финализаторы;
  • свойства (аксессоры);
  • индексаторы;
  • средства управления видимостью компонентов классов (интерфейсы или модификаторы доступа, такие как public, private, protected, feature и др.).

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

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

Python как актуальный язык для написания приложений

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

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

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

Python придерживается определенной философии сформулированной Тимом Петерсом, звучит она так:

Данный текст можно вывести при помощи команды import this.

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

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

Пример заключения в курсовой работе по программированию

Изображение 1 – Стандартная иерархия типов в Python.

Синтаксис языка является четким и последовательным, что упрощает чтение кода человеком. В терминологии с 2018 года в коде при передаче аргументов в функции используются parent (родитель) и child (ребенок).

Набор операторов в Python состоит из:

  • if (если) – условный оператор. Альтернативным блоком является else (иначе). При нескольких альтернативах используется elif;
  • while (пока) и for (для) – операторы цикла. Для прерывания цикла и перехода к следующей итерации возможно использовать break (разрыв) и continue (продолжить);
  • class (класс) – оператор определения класса;
  • def (определить) – оператор определения функции, метода или генератора. Для возврата из функции или метода можно использовать оператор return (возврат), или yield (давать) в случае с генератором;
  • try – except – else (пробовать – исключить – иначе) или try – finally (пробовать – заключение) – оператор обработки исключений;
  • pass (пропустить) – оператор ничего не делает, применяется для пустых блоков кода.

Блоки в Python выделяются при помощи табуляции, что приучает программистов к более чистому стилю написания кода и сокращает количество строк кода.

Выражения являются полноправными операторами в Python. Синтаксис, состав, приоритет и ассоциативность операций являются стандартными для языков программирования.

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

Механизм документирования pydoc позволяет вести документацию в начале каждого класса, функции и модуля по средству вставки строки документации – docstring.

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

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

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

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

Анализ существующих решений

Существует огромное множество калькуляторов, написанных как профессиональными разработчиками, так и начинающими программистами для изучения того или иного языка программирования. Рассмотрим более подробно калькулятор, написанный профессиональными программистами из штата Канзас США под названием Moffsoft FreeCalc (Изображение 2).

Пример заключения в курсовой работе по программированию

Изображение 2 – Окно Windows калькулятора «Moffsoft FreeCalc».

При запуске приложение имеет стандартные элементы окна Windows, экранные кнопки закрыть, развернуть и свернуть в верхнем правом углу, строка заголовка содержит название приложения и иконку. Строка меню содержит кнопки File, Edit, View, Options, Help. File позволяет сохранить или распечатать результаты вычислений. Edit позволяет копировать и вставлять готовые выражения, а также сбросить размер окна приложения. View позволяет изменить внешний вид кнопок приложения. Options позволяет изменить цветовую схему, сделать приложение всегда поверх других окон. Help выводит помощь по работе в приложение, а также позволяет перейти на сайт разработчика. В рабочей области расположено поле ввода значений, ниже данного поля расположены кнопки для ввода значений выражений и выбора операторов, таких как сложение, вычитание, умножение, деление, возведение в квадрат, нахождения процента числа, при помощи мыши. В левом нижнем углу расположена строка состояния приложения.

Размер окна калькулятора можно изменять при помощи перетягивания визуального индикатора в правом нижнем углу экрана. При вытягивании окна в ширину станет доступен лог выполненных действий (изображение 3).

Пример заключения в курсовой работе по программированию

Изображение 3 – Лог действий в «Moffsoft FreeCalc».

Также имеется возможность изменения цветовой схемы приложения (Изображение 4).

Пример заключения в курсовой работе по программированию

Изображение 4 – Измененная цветовая схема «Moffsoft FreeCalc».

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

Рассмотрим другой калькулятор, разработанный компанией MicroInvention под названием CrossGL Surface Calculator (Изображение 5).

Пример заключения в курсовой работе по программированию

Изображение 5 – Окно Windows калькулятора «CrossGL Surface Calculator».

При запуске приложение выглядит как настольный калькулятор, отсутствуют какие-либо классические элементы окна Windows, при наведении курсора в правый нижний угол окна приложения, появляется интерактивный элемент (изображение 6), позволяющий изменить размер окна. Кнопки приложения для работы с функциями и вводом значений работают аналогично Moffsoft FreeCalc.

Пример заключения в курсовой работе по программированию

Изображение 5 – Интерактивный элемент изменения размера окна приложения «CrossGL Surface Calculator».

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

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

Составление требований к приложению

Каждое приложение должно соответствовать определенным требованиям, которые обоснованы задачами, выполняемыми приложением.

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

Приложение должно запускаться на компьютере без необходимости установки каких-либо сторонних программ.

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

Должны присутствовать экранные кнопки для закрытия и сворачивания приложения.

Приложение должно иметь свое имя и уникальную иконку.

После составления требования можно приступать к написанию приложения.

Шаги написания приложения

Прежде чем приступить к написанию приложения, необходимо определить какая среда разработки, окружение и библиотеки будут использованы при написании приложения. Средой разработки является – PyCharm, окружением – Conda, также будут использоваться стандартная библиотека Python 3.7 вместе с tkinter и ttkthemes для работы с графическим интерфейсом.

Рефераты:  Природа неживая и живая. Жизнь и разум в контексте глобальной эволюции Вселенной. Понятие ноосферы - Философия и ее роль в жизни общества

Первым шагом необходимо создать проект (изображение 6) который будет являться основой для работы в PyCharm.

Пример заключения в курсовой работе по программированию

Изображение 6 – Окно создания проекта в PyCharm.

После создания проекта в папке проекта необходимо создать файл с расширение .py в котором и будет записан весь код. В данном случае это будет файл calculator.py (Изображение 7).

Пример заключения в курсовой работе по программированию

Изображение 7 – Создание файла с расширением .py.

После создания файла приступим непосредственно к разработке, в первую очередь необходимо импортировать и настроить библиотеки tkinter и ttkthemes для создания “черновика” графического интерфейса приложения. Tkinter является встроенной библиотекой, для установки ttkthemes нужно использовать команду pip install ttkthemes в терминале Python

Далее используя операторы from и import импортируем библиотеки в текущий проект (изображение 8).

Пример заключения в курсовой работе по программированию

Изображение 8 – Код импорта библиотек.

Затем задаем параметры для окна приложения используя библиотеку ThemedTk (изображение 9). Где root = окно приложения.

Пример заключения в курсовой работе по программированию

Изображение 9 – Код задания параметров для окна приложения.

После задаем параметры размера поля ввода и выведения результата вычислений, где e = поле ввода чисел (изображение 10).

Пример заключения в курсовой работе по программированию

Изображение 10 – Код размера поля ввода и выведения результата вычислений.

Далее используя оператор def и button_click делаем возможным выведение результата выражения в поле ввода (изображение 11) STR значений. Также здесь используются объекты e.delete и e.insert которые будут описаны далее.

Пример заключения в курсовой работе по программированию

Изображение 11 – Код задания условия поля ввода и выведения результата вычислений.

Далее используя def задаем кнопку очистки поля ввода (изображение 12).

Пример заключения в курсовой работе по программированию

Изображение 12 – Код кнопки очистки поля.

Далее используя оператор def и глобальные переменные f_num и math, задаем значения кнопок математических действий плюс, минус, умножить, разделить (изображение 13)

Пример заключения в курсовой работе по программированию

Изображение 13 – Код кнопок плюс, минус, умножить, разделить.

Далее используя оператор if и def задаем условия для выведения ответа на экран при нажатии кнопки равно (изображение 14).

Пример заключения в курсовой работе по программированию

Изображение 14 – Код кнопки равно.

Далее задаем для каждой кнопки текстовое значение и функцию кнопки которое в последствие будет использовано пользователя для идентификации каждой кнопки (изображение 15)

Пример заключения в курсовой работе по программированию

Изображение 15 – Код задания кнопкам текстовых значений.

Далее используя гридовую систему выводим кнопки на экран как графические элементы (изображение 16).

Пример заключения в курсовой работе по программированию

Изображение 16 – Код вывода кнопок как графических элементов.

Затем добавляем строку для создания петли выполнения кода, чтобы приложение автоматически не закрывалось (изображение 17).

Пример заключения в курсовой работе по программированию

Изображение 17 – Код создание цикла работы приложения.

После завершения написания кода необходимо сохранить файл .py, затем открыть терминал Python и ввести $ pip install auto-py-to-exe, что позволит установить конвертер из .py в формат .exe. После установки конвертера, используя терминал ввести python -m auto_py_to_exe, данная команда откроет окно Auto Py To Exe, выполнить настройку (изображение 18), по нажатию кнопки Convert to exe программа произведет конвертацию файла в формат .exe и откроет папку с данным файлом (изображение 19).

Пример заключения в курсовой работе по программированию

Изображение 18 – Настройка Auto Py to Exe.

Пример заключения в курсовой работе по программированию

Изображение 19 – Содержание папки с .exe файлом.

При открытии файла приложение имеет вид, продемонстрированный на изображение 20. Данный файл может быть распространен отдельно и не требует каких-либо предустановленных приложений или интерпретаторов. Также в приложение 1 предоставлена ссылка на Github с полным кодом приложения и .exe файлом для запуска приложения.

Пример заключения в курсовой работе по программированию

Изображение 20 – GUI приложения «Калькулятор “МОИ”»

ЗАКЛЮЧЕНИЕ

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

СПИСОК ИСТОЧНИКОВ

  • Гавриков М. М., Иванченко А. Н., Гринченков Д. В. Теоретические основы разработки и реализации языков программирования. — КноРус, 2013. — 178 с.
  • Братчиков И. Л. Синтаксис языков программирования. — Наука, 1975. — 230 с.
  • Теренс Пратт, Марвин Зелковиц. Языки программирования: разработка и реализация. — 4-е издание. — Питер, 2002.
  • Тимоти Бадд. «Объектно-ориентированное программирование в действии», Издательский дом “Питер”, 1997. — 464 с.
  • Марк Лутц. Программирование на Python / Пер. с англ. — 4-е изд. — СПб.: Символ-Плюс, 2011. — Т. I. — 992 с.
  • Иан Грэхем. Объектно-ориентированные методы. Принципы и практика — 3-е изд. — М.: «Вильямс», 2004. — 880 с.
  • Richard P. Gabriel – Objects Have Failed, 2002 – http://dreamsongs.com/ObjectsHaveFailedNarrative.html
  • Guy L. Steele Jr. – Objects Have Not Failed, 2002 – http://dreamsongs.com/ObjectsHaveNotFailedNarr.html
  • Григорий Алексеев. «Введение в Python» – https://habr.com/ru/post/450474/
  • The Zen of Python – https://www.python.org/dev/peps/pep-0020/
  • Glossary of Python – https://docs.python.org/3/glossary.html
  • The Python Standard Library – https://docs.python.org/3/library/index.html
  • Installing Python Modules – https://docs.python.org/3/installing/index.html
  • Python Module Index – https://docs.python.org/3/py-modindex.html
  • Регулярно обновляемая диаграмма истории языков программирования – https://www.levenez.com/lang/

Исходный код приложения Калькулятор “МОИ”

from tkinter import *

from tkinter import ttk

from ttkthemes import ThemedTk

root = ThemedTk(theme=’yaru’) # Выбор темы

root.resizable(width=False, height=False) # Блокировка возможности изменения размера

root.title(‘Калькулятор “МОИ”‘) # Названия приложения

e = ttk.Entry(root, width=48,) # Поле ввода чисел

e.grid(row=0, column=0, columnspan=4, padx=4, pady=4)

e.focus_set() #Фокусировка в поле ввода чисел

# Введение цифр в поле

current = e.get()

e.insert(0, str(current) + str(number)) # выводить STR значения чесел

# Комманда для очистки поля

# Кнопка плюс

first_number = e.get()

math = “плюс”

f_num = int(first_number)

# Кнопка минус

math = “минус”

# Кнопка умножить

math = “умножить”

# Кнопка разделить

math = “делить”

# кнопка равно

second_number = e.get()

if math == ‘плюс’:

e.insert(0, f_num + int(second_number))

if math == ‘умножить’:

e.insert(0, f_num * int(second_number))

if math == ‘делить’:

e.insert(0, f_num / int(second_number))

if math == ‘минус’:

e.insert(0, f_num – int(second_number))

# Кнопки с цифрами

button_1 = ttk.Button(root, text=’1′, command=lambda: button_click(1))

button_2 = ttk.Button(root, text=’2′, command=lambda: button_click(2))

button_3 = ttk.Button(root, text=’3′, command=lambda: button_click(3))

button_4 = ttk.Button(root, text=’4′, command=lambda: button_click(4))

button_5 = ttk.Button(root, text=’5′, command=lambda: button_click(5))

button_6 = ttk.Button(root, text=’6′, command=lambda: button_click(6))

button_7 = ttk.Button(root, text=’7′, command=lambda: button_click(7))

button_8 = ttk.Button(root, text=’8′, command=lambda: button_click(8))

button_9 = ttk.Button(root, text=’9′, command=lambda: button_click(9))

button_0 = ttk.Button(root, text=’0′, command=lambda: button_click(0))

# кнопки математических выражений

button_plus = ttk.Button(root, text=’+’, command=button_plus)

button_equal = ttk.Button(root, text=’=’, command=button_equal)

button_multiply = ttk.Button(root, text=’*’, command=button_multiply)

button_minus = ttk.Button(root, text=’-‘, command=button_minus)

button_divide = ttk.Button(root, text=’/’, command=button_divide)

# Системные кнопки

button_clear = ttk.Button(root, text=’C’, command=button_clear)

# выведение кнопок на экран

button_1.grid(row=3, column=0, ipady=10)

button_2.grid(row=3, column=1, ipady=10)

button_3.grid(row=3, column=2, ipady=10)

button_4.grid(row=2, column=0, ipady=10)

button_5.grid(row=2, column=1, ipady=10)

button_6.grid(row=2, column=2, ipady=10)

button_7.grid(row=1, column=0, ipady=10)

button_8.grid(row=1, column=1, ipady=10)

button_9.grid(row=1, column=2, ipady=10)

button_0.grid(row=4, column=1, ipady=10)

button_clear.grid(row=4, column=0, ipady=10)

button_equal.grid(row=4, column=3, ipady=10)

button_minus.grid(row=2, column=3, ipady=10)

button_plus.grid(row=3, column=3, ipady=10)

button_divide.grid(row=4, column=2, ipady=10)

button_multiply.grid(row=1, column=3, ipady=10)

root.mainloop() # Создание цикла приложения

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

Методики, применяемые для проектирования программ и их систем, естественно, были сформированы не за один день, а становление их проходило на протяжении достаточно продолжительного промежутка времени. Необходимость создания все новых и новых методик обнаруживалась при разработке сложных программных систем в условиях дефицита времени на разработку. Такие инциденты были свойственны крупным промышленным организациям, в частности, оборонного ведомства. По этой причине некоторые сегодняшние методики изначально были, например, внутренними стандартами Министерства Обороны Соединенных Штатов Америки.

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

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

Процессный подход ориентирован не на организационную структуру, а на бизнес-процессы, протекающие в самой организации.

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

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

Исходя из вышесказанного, определяется цель исследования: рассмотреть основные понятия объектно-ориентированного программирования.

Для достижения поставленной цели необходимо выполнить следующие задачи:

  • Рассмотреть сущность объектно-ориентированного программирования;
  • Привести основные характеристики объектно-ориентированного программирования;
  • Проанализировать понятие «классы» в контексте объектно-ориентированного программирования;
  • Охарактеризовать понятие «Наследование» в контексте объектно-ориентированного программирования;
  • Рассмотреть понятие «Инкапсуляция» в контексте объектно-ориентированного программирования;
  • Дать анализ понятию «Полиморфизм» в контексте объектно-ориентированного программирования.

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

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

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

Рефераты:  Правила техники безопасности при проведении занятий по легкой атлетике

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

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

Термины «экземпляр класса» и «объект» можно назвать эквивалентными. Состояние объекта можно охарактеризовать перечнем всех возможных свойств данного объекта и текущими значениями каждого из этих свойств. Поведение также определяет воздействие объекта на другие объекты и, наоборот, с точки зрения изменения состояния этих объектов и передачи сообщений. Другими словами, поведение объекта полностью можно определить его действиями.

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

Класс – это некоторое множество объектов, которые связаны общностью структуры и поведения. Класс инкапсулирует (объединяет) в себе данные (атрибуты) и поведение (операции). Любой объект представляет собой экземпляр класса.

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

  • унифицированный процесс;
  • унифицированный язык моделирования;

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

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

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

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

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

Таким образом, объектно-ориентированный подход обеспечивает адекватные подходы к решению следующих проблем:

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

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

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

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

  • абстрагирование (abstraction);
  • инкапсуляция (encapsulation);
  • наследование (inheritance);
  • полиморфизм (polymorphism);
  • модульность (modularity);

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

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

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

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

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

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

  • архитектуры компьютеров (Burroughs 5000, Plessey 250, IBM System/38, Intel 432);
  • объектно-ориентированных операционных систем (Plessey/System 250, Secure UNIX, StarOS, iMax);
  • объектно-ориентированных языков программирования (Simula, Smalltalk, Modula);
  • теории баз данных (модели «сущность-связь»);

При разработке программного обеспечения и автоматизированных информационных систем понятие «объект» впервые было введено Оле-Джоаном Далем, Бьорном Мюрхогом и Кристеном Ныгардом из Норвежского вычислительного центра, расположенного в городе Осло. Названные специалисты разработали язык Simula 67, который был создан на основе языка Algol-60 и предназначался для моделирования и описания сложных систем. Однако по-настоящему широкое распространение данной идеи было осуществлено при разработке языка SmallTalk в 1990 г. Аланом Кейем из Исследовательского центра фирмы Xerox (г. Пало-Альто). В SmallTalk применялись исключительно объектно-ориентированные конструкции.

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

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

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

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

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

1 Классы

Класс – это абстрактное понятие, сравнимое с понятием категория в его обычном смысле.

Это можно пояснить на примере музыкальных инструментов. Музыкальные инструменты делятся на следующие категории: духовые, ударные и струнные. Все эти категории принадлежат к категории музыкальных инструментов. В свою очередь, категория музыкальных инструментов входит в категорию инструментов.

На рисунке 1 эта структура категорий представлена графически в виде дерева.

Рисунок 1 Дерево категорий примера «Музыкальные инструменты»

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

Класс в ООП – это абстрактный тип данных, который включает в себя не только данные, но и функции и процедуры.

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

Существует 2 способа включения метода в класс:

  • Определение метода при описании класса.
  • Объявление метода при описании, а его описание – при вызове.

Методы, определенные внутри класса, являются неявно встроенными.

int x, y;

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

int sum ( )

int B::sum ( )

return (x + y) ;

Также как и структуры, классы можно задавать либо статически, либо динамически.

  • статически – Toplist foo;
  • динамически – Toplist *bar ; bar=new Toplist;
Оцените статью
Реферат Зона
Добавить комментарий