0% found this document useful (0 votes)
3 views10 pages

Powershell

The document discusses two main programming paradigms: procedural programming and object-oriented programming (OOP). It highlights the strengths and weaknesses of each approach, emphasizing that OOP focuses on data and encapsulates functions and data within objects, leading to more manageable and scalable code. The document also explains key concepts of OOP, such as classes, objects, and attributes, and provides examples to illustrate these concepts.

Uploaded by

myrylov
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
3 views10 pages

Powershell

The document discusses two main programming paradigms: procedural programming and object-oriented programming (OOP). It highlights the strengths and weaknesses of each approach, emphasizing that OOP focuses on data and encapsulates functions and data within objects, leading to more manageable and scalable code. The document also explains key concepts of OOP, such as classes, objects, and attributes, and provides examples to illustrate these concepts.

Uploaded by

myrylov
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd

Weqfqefqeff

qwefqewfqf
Python

ПРОЦЕДУРНОЕ И
ОБЪЕКТНООРИЕНТИРОВАННОЕ
ПРОГРАММИРОВАНИЕ

Содержание

Приобретайте 

профессиональные
навыки!

Что такое ООП?


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

1. Процедурное программирование
2. Объектно-ориентированное программирование (оно же ООП)

Оба подхода объединены общей целью - сделать процесс программирования


максимально эффективным. Это значит, что благодаря им разработка
программного обеспечения становится более простой для понимания, легко
масштабируемой и содержащей минимальное количество ошибок.
По сути любая программа представляет собой
совокупность данных и операций по их обработке. Но что важнее, сами данные
или операции над ними? В языках, в основе работы которых лежит
принцип процедурного программирования (Basic, C, Pascal, Go), главным
является код для обработки данных. При этом сами данные имеют
второстепенное значение.
Процедурное программирование. Работа с данными.

В чем суть процедурного подхода? Процедурное программирование – это


написание функций и их последовательный вызов в некоторой главной(main)
функции.

Для каких проектов подходит процедурное программирование? Идеальные


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

Однако проблема в том, что когда мы выходим за пределы этих идеальных


условий, выплывают наружу многие недостатки данного подхода:

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


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

Долгое время процедурный подход был довольно популярным и считался самым


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

Объектно-ориентированное программирование (ООП) — методология


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

В основе ООП лежит простая и элегантная идея, в соответствии с которой главное


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

Объектно-ориентированное программирование. Работа с данными.

Итак, чем же хорош подход ООП?

1. Программа разбивается на объекты. Каждый объект отвечает за


собственные данные и их обработку. Как результат - код становится
проще и читабельней.
2. Уменьшается дупликация кода. Нужен новый объект, содержимое
которого на 90% повторяет уже существующий? Давайте создадим новый
класс и унаследуем эти 90% функционала от родительского класса!
3. Упрощается и ускоряется процесс написания программ. Можно сначала
создать высокоуровневую структуру классов и базовый функционал, а
уже потом перейти к их подробной реализации.

Подытожим

1. В процедурном подходе основой программы является функция. Функции


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

ООП. КЛАССЫ=СВОЙСТВА+МЕТОДЫ

Содержание

Приобретайте 
профессиональные
навыки!

Объекты и классы в ООП


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

Класс — в объектно-ориентированном программировании, представляет


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

Объект — некоторая сущность в цифровом пространстве, обладающая


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

На что необходимо обратить внимание?

1. Класс описывает множество объектов, имеющих общую структуру и


обладающих одинаковым поведением. Класс - это шаблон кода, по
которому создаются объекты. Т. е. сам по себе класс ничего не делает, но
с его помощью можно создать объект и уже его использовать в работе.
2. Данные внутри класса делятся на свойства и методы. Свойства
класса (они же поля) - это характеристики объекта класса.
3. Методы класса - это функции, с помощью которых можно оперировать
данными класса.
4. Объект - это конкретный представитель класса.
5. Объект класса и экземпляр класса - это одно и то же.
Грубо говоря

Класс = Свойства + Методы


Рассмотрим простой пример. Перед нами класс "Автомобиль". Если мыслить
абстрактно, то он представляет собой набор чертежей и инструкций, с помощью
которых можно собрать машину. При этом каждая машина, которую мы будем
собирать, должна обладать рядом характеристик, которые соответствуют нашему
классу. Как мы уже выяснили, данные характеристики - называются свойствами
класса и в нашем примере могут быть следующими:

1. Цвет
2. Объем двигателя
3. Мощность
4. Тип коробки передач

Так же наш автомобиль может выполнять какие-то действия, характерные для


всего класса. Эти действия, как мы теперь знаем, есть методы класса, и
выглядеть они могут вот так:

1. Ехать
2. Остановиться
3. Заправиться
4. Поставить на сигнализацию
5. Включить дворники

Начинка класса готова, теперь можно переходить к созданию объектов.

Что общего будет в объектах? Все объекты создаются по одному шаблону, то


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

Но в чем разница? Значения свойств будут различаться. Одна машина красная,


другая - зеленая. У одной объем двигателя 1968 см3 и коробка-робот, а у другой -
1395 см3 и ездить владельцу придется на механике.
Вывод: Объекты класса на выходе похожие и одновременно разные.
Различаются, как правило, свойства. Методы остаются одинаковыми.
Пример созданного объекта "Автомобиль Volkswagen Tiguan":

1. Свойства: Цвет="Белый", Объем двигателя="1984 см3", Мощность="180


л.с.", Тип коробки передач="Робот"
2. Методы: Ехать, Остановиться, Заправиться, Поставить на сигнализацию,
Включить дворники
Теория

АТРИБУТЫ КЛАССА

Содержание

Приобретайте 
профессиональные
навыки!

Что такое атрибуты класса в Python


Давайте договоримся, что атрибутом класса/объекта мы будем называть любой
элемент класса/объекта (переменную, метод, подкласс), на который мы можем
сослаться через символ точки. Т. е. вот
так: MyClass.<атрибут> или my_object.<атрибут>.

Все атрибуты можно разделить на 2 группы:

1. Встроенные(служебные) атрибуты
2. Пользовательские атрибуты

Предлагаем отдельно поговорить о каждой из этих групп:


1. Встроенные атрибуты
Называть данную группу атрибутов встроенными - это своего рода условность, и
сейчас мы объясним почему. Суть в том, что на самом деле все классы в Python
(начиная с 3-й версии) имеют один общий родительский класс - object. Это значит,
что когда вы создаете новый класс, вы неявно наследуете его от класса object, и
потому свежесозданный класс наследует его атрибуты. Именно их мы и называем
встроенными(служебными). Вот некоторые из них (заметьте, что в списке есть как
поля, так и методы):

Атрибут Назначение Тип

__new__(cls[, ...]) Конструктор. Создает Функция


экземпляр(объект) класса. Сам
класс передается в качестве
аргумента.

__init__(self[, ...]) Инициализатор. Принимает Функция


свежесозданный объект класса из
конструктора.
Атрибут Назначение Тип

__del__(self) Деструктор. Вызывается при Функция


удалении объекта сборщиком
мусора

__str__(self) Возвращает строковое Функция


представление объекта.

__hash__(self) Возвращает хэш-сумму объекта. Функция

__setattr__(self, attr, Создает новый атрибут для объекта Функция


val) класса с именем attr и значением
val

__doc__ Документация класса. Строка


(тип str)

__dict__ Словарь, в котором хранится Словарь


пространство имен класса (тип dict)

Это важно
В теории ООП конструктор класса - это специальный блок инструкций, который
вызывается при создании объекта. При работе с питоном может возникнуть
мнение, что метод __init__(self) - это и есть конструктор, но это не совсем так. На
самом деле, при создании

You might also like