Файл: Оглавление заданий.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 07.11.2023

Просмотров: 53

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Введение в ООП для Питона

Оглавление заданий


Задание № 1 31



Новая лекция 1. Сравнительная характеристика процедурного и объектно-ориентирования парадигм программирования

https://zen.yandex.ru/lecturer_abramenkova?lang=ru&parent_rid=4078702532.95.1660636766237.74461&from_parent_id=-2606080146772121804&from_parent_type=brief&hide_interest_header=1 Практика на Питоне

https://highload.today/python-obektno-orientirovannoe-programmirovanie-oop-1/

Docs-python.ru классы в языке Python. Smartiqa.ru – о классах и экземплярах !!.

https://smartiqa.ru/courses/python/lesson-6

https://pythonchik.ru/osnovy/osnovy-oop-v-python-klassy-obekty-metody
1.1 Сравнение процедурного и объектно-ориентированного программирования

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

По мере того, как наперегонки развивались Hardware и Software, объёмы исходных кодов в программах начали стремительно расти. Теперь для его поддержки уже требовалась определенная архитектура. Стали применяться различные подходы к оформлению исходных кодов, и в конечном счёте появились парадигмы программирования.

Существуют две парадигмы программирования: императивное и декларативное, внутри императивного в настоящее время существуют 2 подхода к написанию такой программы: –процедурно-ориентированное программирование (ПОП) и объектно-ориентированное программирование (ООП).

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

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

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

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

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

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

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

Эта привычная для взгляда человека картина мира была перенесена в программирование.
Рассмотрим теперь каждую методику в отдельности подробнее.
1. 2 Процедурно-ориентированное программирование

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



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

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


Рисунок 1.1. Структура программы, написанной в процедурно-ориентированном стиле.

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

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

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

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

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

Сотрудник фирмы, продающей автомобили должен заносить новые автомобили в базу через специальную форму на сайте. Допустим, надо вносить следующие данные:


Марка авто

Модель авто

Мощность двигателя

Цвет

Год выпуска …
Для этого можно написать программу в процедурном стиле. Но как быть, если фирма продаёт и другую технику: грузовые автомобили, тракторы и т. д. Они, как и легковые автомобили, имеют марку, модель, показатель мощности, но в то же время отличаются некоторыми другими характеристиками, например, тяговым усилием. У обычного автомобиля такой пункт в техпаспорте отсутствует.

В этом случае программист, реализующий необходимый код, выберет объектно-ориентированный подход. Работа сведется к следующему: создается базовый класс “Техника”, в котором будут храниться характеристики, общие и для легковых авто, и для грузовых, и для тракторов. Затем создаются новые классы: – «Легковой автомобиль», «Грузовой автомобиль» и «Трактор». “Трактор”, которые наследуют все характеристики из класса “Техника”, а затем дополняются уникальными данными – тем самым “тяговым усилием” и другими необходимыми для соответствующей категории (класса). Затем для каждого класса надо создавать конкретный объект, соответствующий экземпляру, имеющемуся на складе, задавая конкретные значения марки, мощности, цвета и прочее.

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

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

Таблица 1.1



Недостатки

Преимущества

1

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

Любая процедура (функция) может быть вызвана неограниченное количество раз. Все как в жизни – ты один раз “написал” в голове маршрут к любимому кафе, а затем просто вызываешь эту “программу” из памяти.

2

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

Возможность оперативно решить задачу, в которой отсутствует сложная иерархия. Можно пойти дальше и сказать: если проект не подразумевает создания большого количества классов и объектов, то в ПП совсем нет минусов.

3

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






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

Таблица 1.2



Недостатки

Преимущества

1

Громоздкость при решении простых задач

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

2

Некоторое снижение производительности работы ПО и высокие начальные затраты

Потенциал для масштабирования. Можно добавлять новые компоненты, расширяя уже написанное программное обеспечение — и всё будет работать.

3

Недостаточно качественная поддержка параллельных и распределенных систем.

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

4

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

Повторяемость кода ООП привела к созданию библиотек классов. Можно тратить всё меньше времени на получение уже полученных ранее результатов — причём даже не очень важно, кем именно и на каких проектах были сделаны прежние разработки. Необходимые расширения и дополнения, уже реализованы в подключенных библиотеках, и тогда остаётся только их задействовать.

5

Освоение базовых концепций ООП не требует значительных усилий. Однако разработка библиотек классов и их использование требуют существенных трудозатрат.

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


6

Документирование классов – задача более трудная, чем это было в случае процедур и модулей.




7

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







Код для обработки сообщения иногда «размазан» по многим методам (иначе говоря, обработка сообщения требует не одного, а многих методов, которые могут быть описаны в разных классах).