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

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

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

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

Добавлен: 25.10.2023

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

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

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

СОДЕРЖАНИЕ

ООП Задачи Оглавление ООП Задачи 1Задание 3Продолжаем 9Продолжаем Задание 14Задания. 21 Немного теории из интернета. Так как я люблю всё упрощать, то порой забываю про определения. Объектно-ориентированное программирование (ООП) – это методология разработки программ как совокупности объектов, относящихся к определенным классам, и взаимодействующих через свойства и методы друг друга для выполнения операций и преобразования данных, определяя поведение своих экземпляров. Свойства и методы образуют интерфейс объекта, а сущности с конкретным сочетанием свойств являются экземплярами объекта. Эта методология полагает, что объекты окружающего мира обладают тремя составляющими: они имеют свойства, описывающие конкретные сущности, позволяют изменять эти свойства разными методами, реализующие интерфейс взаимодействия, и способны реагировать на события, возникающие как вне объекта, так и внутри самого объекта, определяя его поведение. Именно в таком смысле реализуется понятие объекта – как совокупность:  свойств, т.е. набора простых и составных данных;  методов, т.е. набора функций, реализующих алгоритмы обработки данных;  событий, т.е. набора условий, на которые объект должен реагировать.Будем проходить тему в процессе выполнения Заданий.Что бы пользоваться преимуществами ООП нужно понимать, что каждый объект должен принадлежать какой-либо группе (Классу). То есть объекты, конечно, сами по себе самостоятельные, но, похожие объекты должны быть объединены классом. Как книги в книжном магазине - Фантастика на одной полке, история, на другой полке, зарубежная литература на третьей. Например, мы люди. Наш класс – Человек. Все мы разные экземпляры человека – т.е. объекты класса «Человек». У каждого из нас есть различные свойства, таланты, дефекты и прочее – это наши отличия. Но при этом каждый из нас – это человек. То есть класс – это коллекция однотипных объектов.Классы очень похожи на функции.

Задание

Продолжаем

Продолжаем Задание

Задания.

ООП Задачи

Оглавление


ООП Задачи 1

Задание 3

Продолжаем 9

Продолжаем Задание 14

Задания. 21

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

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

Эта методология полагает, что объекты окружающего мира обладают тремя составляющими: они имеют свойства, описывающие конкретные сущности, позволяют изменять эти свойства разными методами, реализующие интерфейс взаимодействия, и способны реагировать на события, возникающие как вне объекта, так и внутри самого объекта, определяя его поведение. Именно в таком смысле реализуется понятие объекта – как совокупность:

 свойств, т.е. набора простых и составных данных;

 методов, т.е. набора функций, реализующих алгоритмы обработки данных;

 событий, т.е. набора условий, на которые объект должен реагировать.

Будем проходить тему в процессе выполнения Заданий.

Что бы пользоваться преимуществами ООП нужно понимать, что каждый объект должен принадлежать какой-либо группе (Классу). То есть объекты, конечно, сами по себе самостоятельные, но, похожие объекты должны быть объединены классом. Как книги в книжном магазине - Фантастика на одной полке, история, на другой полке, зарубежная литература на третьей.

Например, мы люди. Наш класс – Человек. Все мы разные экземпляры человека – т.е. объекты класса «Человек». У каждого из нас есть различные свойства, таланты, дефекты и прочее – это наши отличия. Но при этом каждый из нас – это человек.

То есть класс – это коллекция однотипных объектов.

Классы очень похожи на функции.


Вот так выглядит самый простой класс:


Вот так создается объект класса:


Попробуем вывести содержимое наших класса и объекта:


Результат:


Выведем типы наших класса и объекта:


Результат:





Тут можно увидеть, что Сам по себе класс – это, в прямом смысле - Тип данных. Поздравляю, вы создали свой собственный тип данных наравне с int, float, str … )

А вот тип объекта – это, по сути, ссылка на наш класс. То есть объект – это простая переменная, которая хранит в себе адрес, по которому хранится вся информация об объекте. (Подробно про хранение данных в памяти Python’ом Сссссылочка )

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

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

Задание


И так...

  • Создайте класс «Человек», не важно на кириллице или латинице.

  • Так же создайте объект этого класса.

  • После чего вызовите функцию print прописав в аргументе наш класс

  • И еще одну функцию print прописав в аргумент название нашего объекта.

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


Если идти только по заданиям, то создайте класс «Сотрудник» заместо человека.

Далее вызовы print’ов можно удалить


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

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

Выглядит это примерно так (Пока что не обращайте внимания на _ _ _ _ (нижние подчеркивания) разберем их дальше):



Вывод:



Если коротко, то, когда мы пишем len(A) или len(list_1) т.е. хотим узнать длину объекта (количество значений, хранящихся в нем) то у этого объекта есть метод, который обращается к переменной, хранящейся внутри этого объекта и нам просто выводится число. Никакой цикл в этот момент не работает (Нет такого, чтоб мы хотели узнать длину и каждый раз Python гоняет циклы с счетчиком и возвращает этот счетчик) – Это сильно бы замедлило работу.



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

Что же это за свойства такие? Их еще называют атрибутами. Вернемся, к примеру с людьми. У всех у нас есть различные черты и особенности. Мы делимся на женщин и мужчин, кто-то с длинной прической, а кто-то с короткой, у кого-то карие глаза, а у кого-то зеленые, кто-то 190 см, а кто-то 150 и т.д.

Все эти свойства можно поделить на Постоянные (Общие для всех объектов) и не постоянные (Динамические, или личные для каждого объекта). Давайте отдельно рассмотрим класс «Мужчина»

P.S. Буду приводить примеры из Sublime Text 3 – так как PyCharm все мои пояснения на кириллице выделяются маркером желтым, и там сложно что-либо различить)

- не красиво.



Тут мы можем увидеть метод _ _init_ _ - это метод инициализации (или регистрации) объекта. Мы поговорим о нем позже.

Сейчас нас интересуют свойства.

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

Далее видим метод Инициализации объекта, в котором много параметров. Нас интересую эти параметры. Помним, как работают функции и параметры в них? Тут те же правила, так как Методы – это Функции. Соответственно, при создании объекта, нам теперь нужно в круглые скобочки будет передать все эти обязательные параметры.

И для объекта эти свойства будут собственными. То есть у нас есть свойства общие – это как посуда в коммунальной квартире. А есть собственные, это как телефон с блокировкой – никто чужой – не войдет, только владелец.

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


Тут можно сказать, но цвет глаз – же постоянный. Почему он в динамических свойствах?

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

Единственное, что стоит добавить, что записываются свойства динамические, немного по-другому. Вот так:



Что еще за self такой?

Self – это ссылка на конкретный объект. (ну если мы продолжаем говорить про класс «Мужчина») Чтоб программа понимала к какому из 5_000_000_000 мужчин на земле - программа обращается в данный момент.

Как это работает?

Создадим пару объектов:

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



Вывод:



Докопаемся до истины.

Мы не можем обратиться к личным свойствам конкретного объекта через Класс. Только к общим.



Пол выводится (так как свойство общее)



А вот при выводе роста – получаем ошибку.



В которой сказано, что Объект Man не имеет атрибута «рост_Объекта»

  1. При обращении к классу, мы можем работать только с общими для всего класса свойствами и с некоторыми методами.



  1. При обращении к конкретному Объекту класса, мы можем обращаться к его личным свойствам и методам.






  1. Если мы обратимся к Общему свойству класса, через Конкретный Объект, и изменим его – Это Свойство для этого Конкретного Объекта станет личным.




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


Продолжим нашу работу с кодом, и поработаем со свойствами.

У нашего объекта «Сотрудник» должны быть динамические свойства такие как:

  1. Фио

  2. Номер тел.

  3. Должность

  4. Отдел

  5. Зарплата

Для этого вам придется создать метод инициализации __init__ Который первым параметром принимает ссылку на объект (т.е. self, а после уже параметры объекта, которые вам нужны)

Продолжаем


Создайте пару объектов - Сотрудников

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

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



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

print(Вася.вес) – python заместо Васи подставляет эту ссылку (видна в выводе) , которая и указывает Именно на Васю, а не Алёшу. Соответственно нам возвращается свойство Васи – Вес, а не свойство Алеши.

Может еще картинка поможет (взял из инета)

Тут мы создаем объекты «Человек» и у него создаем 2 объекта : Мужчину и Женщину. У мужчины будет своя ссылка (self), у Женщины другая (self)



Или вот

Теперь перейдем к Методам.

Методы – Это Те же самые функции, которые мы прошли, просто… они часто доступны не всей программе, а только объектам конкретного класса.