Добавлен: 28.03.2023
Просмотров: 1209
Скачиваний: 32
Полиморфизм – при полиморфизме некоторые части (методы) родительского класса заменяются новыми, реализующими специфические для данного потомка действия. Таким образом, интерфейс классов остаётся прежним, а реализация методов с одинаковым названием и набором параметров различается. В ООП обычно применяется полиморфизм подтипов (называемый при этом просто «полиморфизмом»), нередко в форме позднего связывания.
Абстракция – для выделения в моделируемом предмете важного для решения конкретной задачи по предмету, в конечном счёте — контекстное понимание предмета, формализуемое в виде класса;
Многие современные языки созданы специально для облегчения объектно-ориентированного программирования. Техники объектно-ориентированного программирования можно использовать и для не-объектно-ориентированного программирования. Такие языки содержат следующий набор элементов:
- объявление классов с полями (данными — членами класса) и методами (функциями — членами класса).
- механизм расширения класса (наследования) — порождение нового класса от существующего с автоматическим включением всех особенностей реализации класса-предка в состав класса-потомка. Большинство ООЯ поддерживают только единичное наследование.
- полиморфные переменные и параметры функций (методов), позволяющие присваивать одной и той же переменной экземпляры различных классов.
- полиморфное поведение экземпляров классов за счёт использования виртуальных методов. В некоторых ООЯ все методы классов являются виртуальными.
Некоторые языки также добавляют дополнительные средства, такие как:
- конструкторы, деструкторы, финализаторы;
- свойства (аксессоры);
- индексаторы;
- средства управления видимостью компонентов классов (интерфейсы или модификаторы доступа, такие как 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 может быть использован как удобный инструмент администрирования.
Эти и многие другие преимущества делают Python прекрасным выбором языка написания приложений любой сложности, начиная от калькулятора и заканчивая сервисами типа Youtube, Facebook и Instagram.
Глава 2. Разработка приложения Калькулятор при помощи 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 для работы с графическим интерфейсом.