Файл: Введение в объектноориентированное программирование.docx

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

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

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

Добавлен: 11.12.2023

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

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

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

СОДЕРЖАНИЕ

Урок - лекция

Уровень: Программирование для начинающих

Созданиеклассовиобъектов.Урок2

Методическая разработка урока

Уровень: Программирование для начинающих

Создание классов:

Создание объектов:

Self:

Первая ОО-программа:

Усложняем программу:

Практическая работа:

Конструкторкласса—метод init .Урок3

Методическая разработка урока

Уровень: Программирование для начинающих

Практическая работа:

Методическая разработка урока

Уровень: Программирование для начинающих

Практическая работа

Методическая разработка урока

Полиморфизм

Переопределение методов

Вывод

Практическая работа

Методическая разработка урока

Уровень: Программирование для начинающих

Описание задачи

Создание классов-частей

Создание класса-контейнера

Создание объектов

Практическая работа

Модулииихимпорт. Урок8

Методическая разработка урока

Уровень: Программирование для начинающих

Практическая работа:

Методическая разработка урока

doc- строки документации

Форматирование строк документирования

Функция help

Практическая работа

Пример документированного исходного кода

ПерегрузкаоператороввООП.Урок10

Методическая разработка урока

Уровень: Программирование для начинающих

Особенностиобъектно-ориентированногопрограммирования.Урок11

Методическая разработка урока

Уровень: Программирование для начинающих

Идеи (принципы) объектно-ориентированного программирования

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

Особенность ООП

Особенности ООП в Python

Методическая разработка урока

Уровень: Программирование для начинающих

Практическая работа

заподозрить, что обрабатывают они объекты немного по разному. В данном случае объект-прямоугольник и объект-треугольник можнопредставить исключительно как данные. Кстати, в Python даже число — это объект, принадлежащий классу (типу) integer или float (илидругомучисловомутипу).Приведем более реальный программный пример (а не «из жизни про занятие»). Допустим нужно создать программу по обработке текстовойинформации. Эта программа должна получать от пользователя данные, обрабатывать определенным способом, а затем выдавать на экран.Причемнамсказалинаписатьэтупрограмму,используяпарадигмуООП.Выделимобъектысистемы:пустьэтобудут«приемщик»,«обработчик№1»,«обработчик№2»и«отображатель».Итак,пользовательпередает«приемщику»текстиинформациюкаким«обработчиком» обрабатывать.«Приемщик» может взять все это (у него предусмотрены такие функции) и, предварительно оценив, чтодают,можетпередатьтому«обработчику»,которыйвыбралпользователь.Выбранный«обработчик»видоизменяеттекстипередаетего«отображателю». Тот, в свою очередь, специфически форматирует текст и выводит на экран. Также в данной программе может бытьпредусмотренавозможностьнапрямуюпередавать текстот«приемщика»к«отображателю»минуя«обработчики».Придумайтесвоюсистемувзаимодействующихобъектов.Многие современные языки поддерживают несколько парадигм программирования (например, директивное, функциональное, объектно-ориентированное).Такиеязыкиявляются смешанными. Книмотносится и Python.

Созданиеклассовиобъектов.Урок2

Методическая разработка урока

Элективный курс: Введение в объектно-ориентированноепрограммированиенаPython

Уровень: Программирование для начинающих

Итак,программа,написаннаясиспользованиемпарадигмыобъектно-ориентированногопрограммирования,должнасостоятьиз

  • объектов,

  • классов (описания объектов),

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

Создание классов:

Для создания классов предусмотрена инструкция class. Это составная инструкция, которая состоит из строки заголовка и тела. Заголовоксостоит из ключевого слова class, имени класса и, возможно, названий суперклассов в скобках. Суперклассов может и не быть, в такомслучае скобки не требуются. Тело класса состоит из блока различных инструкций. Тело должно иметь отступ (как и любые вложенныеконструкциивязыкеPython).Схематичноклассможнопредставитьследующимобразом:

  1. class ИМЯКЛАССА:

  2. ПЕРЕМЕННАЯ = ЗНАЧЕНИЕ
3. ….

  1. def ИМЯМЕТОДА(self, ...):

  2. self.ПЕРЕМЕННАЯ = ЗНАЧЕНИЕ
6. …7. ….Данная схема не является полной. Например, в заголовке после имени класса могут быть указаны суперклассы (в скобках), а методы могут быть более

сложными.Следует помнить, что методы в классах — это те же функции, за одним небольшим исключением. Они принимают один обязательныйпараметр—self(сангл.можноперевести как"собственнаяличность"). Оннужендлясвязи сконкретнымобъектом.Атрибуты класса — это имена переменных вне функций и имена функций. Эти атрибуты наследуются всеми объектами, созданными наоснове данного класса. Атрибуты обеспечивают свойства и поведение объекта. Объекты могут иметь атрибуты, которые создаются в телеметода,еслиданный метод будет вызван дляконкретного объекта.

Создание объектов:

Объектысоздаютсятак:ПЕРЕМЕННАЯ=ИМЯКЛАССА()Здесьскобкиобязательны!Послетакойинструкциивпрограммепоявляетсяобъект,доступккоторомуможнополучитьпоименипеременной,связаннойсним.Присозданииобъектполучаетатрибутыегокласса,т.е.объектыобладаютхарактеристиками,определеннымивихклассах.Количествообъектов,которыеможносоздатьнаосноветогоилииногокласса,неограничено.Объекты одного класса имеют схожий набор атрибутов, а вот значения атрибутов могут быть разными. Другими словами, объекты одногоклассапохожи,ноиндивидуальноразличимы.Чтобыпонятьэто,можносравнитьотношенияобъектоводногоклассавпрограммированиисо следующем высказыванием: "Все млекопитающие принадлежат одному классу и обычно имеют по два глаза, однако у каждого животного(объекта)глазаимеют свои особенности".

Self:

Можно сказать, что методы класса — это небольшие программки, предназначенные для работы с объектами. Методы могут создавать новыесвойства(данные) объекта,изменять существующие,выполнять другиедействиянад объектами.Методунеобходимо"знать",данныекакогообъектаемупредстоитобрабатывать.Дляэтогоемувкачествепервого(аиногдаиединственного) аргумента передается имя переменной, связанной с объектом (можно сказать, передается сам объект). Чтобы в описанииклассауказатьпередаваемый вдальнейшемобъект, используетсяпараметрself. (Посмотритенасхемуклассавверху.)Сдругойстороны,вызовметодадляконкретногообъектавосновномблокепрограммывыглядитследующимобразом:ОБЪЕКТ.ИМЯМЕТОДА(…)Здесь под словом ОБЪЕКТ имеется в виду переменная, связанная с ним. Это выражение преобразуется в классе, к которому относитсяобъект, вИМЯМЕТОДА(ОБЪЕКТ,…)Т.е.конкретныйобъектподставляетсявместопараметраself.

Первая ОО-программа:

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

  1. class First:

  2. color = "red"

  3. def out(self):

  4. print (self.color + "!")
Теперьсоздадимпаруобъектовданногокласса:

  1. obj1 = First()

  2. obj2 = First()

Обаэтихобъекта(obj1иobj2)имеюдваодинаковых атрибута:color(ввидесвойства)иprinter(ввидеметода).Это легкопроверить:

  1. print (obj1.color)

  2. print (obj2.color)

  3. obj1.out()

  4. obj2.out()
В результате выполнения данного скрипта получается вывод двух надписейred и двух red!. Первые две надписи red – это результатприменения встроенной функции print по отношению к свойствам объектов. Вторые две надписи red! - результат применения метода out кобъектам.

Усложняем программу:

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

  1. class Second:

  2. color = "red"

  3. form = "circle"

  4. def changecolor(self,newcolor):

  5. self.color = newcolor

  6. def changeform(self,newform):

  7. self.form = newform 8.

  1. obj1 = Second()

  2. obj2 = Second() 11.

  1. print (obj1.color, obj1.form) #выводнаэкран"redcircle"

  2. print (obj2.color, obj2.form) #выводнаэкран"redcircle"



  3. obj1.changecolor("green") #изменениецветапервогообъекта

  4. obj2.changecolor("blue") #изменениецветвторогообъекта

  5. obj2.changeform("oval") #изменениеформывторогообъекта



  6. print (obj1.color, obj1.form) #выводнаэкран"greencircle"

  7. print (obj2.color, obj2.form) #выводнаэкран"blueoval"
В данной программе по умолчанию любой созданный объект имеет красный цвет и круглую форму. Однако в дальнейшем с помощью