ООП, КЛАССЫ И ОБЪЕКТЫ. О-НТАЦИЯ
ООП.
ООП это абривиатура означающая Объектно-ориентированное программирование.
Так же это парадигма программирования, где различные компоненты компьютерной программы моделируются на основе реальных объектов.
Парадигма - это совокупность идей и понятий, определяющих стиль написания компьютерных программ (подход к программированию).
ООП по простому можно характеризовать как создание классов и объектов их методов и их использования.
1. Объектно-ориентированное программирование подразумевает повторное использование. Компьютерная программа написанная в форме объектов и классов может быть использована снова в других проектах без повторения кода.
2. Использование модулярного подхода в объектно-ориентированном программировании позволяет получить читаемый и гибкий код.
3. В объектно-ориентированном программировании каждый класс имеет определенную задачу. Если ошибка возникнет в одной части кода, вы можете исправить ее локально, без необходимости вмешиваться в другие части кода.
4. Инкапсуляция данных вносит дополнительный уровень безопасности в разрабатываемую программу с использованием объектно-ориентированного подхода.
Модулярный подход - это организация программы как совокупности небольших независимых блоков, называемых модулями, структура и поведение которых подчиняются определённым правилам.
Инкапсуляция данных - это механизм, позволяющий объединить данные и методы, работающие с этими данными, в единый объект
1. Для создания объектов необходимо иметь подробное представление о разрабатываемом программном обеспечении.
2. Не каждый аспект программного обеспечения является лучшим решением для реализации в качестве объекта. Для новичков может быть тяжело прочертить линию в золотой середине.
3. С тем, как вы вносите все новые и новые классы в код, размер и сложность программы растет в геометрической прогрессии.
Классы.
Классы - это шаблон для создания объектов одного и того же типа (все классы это объекты)
Для создания класса пишется ключевое слово class, его имя и двоеточие. Первая строчка в теле описывает его. В теле класса допускается объявление атрибутов, методов и конструктора.
class ClassName: "Краткое описание класса (необязательно")
Разберем из чего состоит класс.
Класс состоит из атрибутов, методов, конструкторов.
Атрибут - это элемент класса. Например, у прямоугольника таких 2: ширина (width) и высота (height).
Метод - это функция класса. Для использования её необходимо вызвать через объект. Первый параметр метода всегда self (ключевое слово, которое ссылается на сам класс).
Конструктор - это уникальный метод класса, который называется __init__. Первый параметр конструктора во всех случаях self (ключевое слово, которое ссылается на сам класс). Конструктор нужен для создание объекта, передает значения аргументов свойствам создаваемого объекта. В одном классе только один конструктор. Если класс определяется не конструктором, он наследует конструктор родительского класса.
class Human(object):# создали класс name = "Ivan"#Атрибуты height = 175 age = 25 default_human1 = Human() #экземпляр класса default_human2 = Human() #экземпляр класса print(default_human1.name, default_human1.height, default_human1.age) default_human2.name = "Dima" print(default_human2.name, default_human2.height, default_human2.age)
Класс также можно создать с помощью функции. Рассмотрим пример.
class Human(object):# создали класс name = "Ivan" height = 175 age = 25 def __init__(self,n,h,a): self.name = n self.height = h self.age = a h1 = Human("Anton",140,12) h2 = Human("Dima",190,25) print(h1.name,h1.age) print(h2.name,h2.age)
def метод конструктор (класса) срабатывает при создании объекта класса (экземпляра)
self - обозначает что мы работаем с данным объектом.
object - это базовый класс от которого наследуются другие классы.
Рассмотрим еще один пример класса.
class Car(object):#Родительский класс brand = "Mazda" color = "black" max_speed = 100 def __init__(self,b,ms): self.brand = b self.max_speed = ms def upgrade(self): self.max_speed +=25 class Truck(Car): #Дочерний класс max_weight = 10 def __init__(self,b,ms,mw): super().__ibit__(b,ms) #обращение к родительскому классу self.max_weight = mw gazel = Truck("Gazel",60,11) print(gazel.brand, gazel.max_speed, gazel.max_weight) gazel.upgrade() print(gazel.brand, gazel.max_speed, gazel.max_weight)
super() - обозначает обращение к род. классу.
О-нтация.
О(n) - вычисление сложности кода.
У каждой строки кода да и вообщем у всего кода есть сложность