Файл: Введение в объектноориентированное программирование.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 11.12.2023
Просмотров: 840
Скачиваний: 2
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
СОДЕРЖАНИЕ
Уровень: Программирование для начинающих
Созданиеклассовиобъектов.Урок2
Уровень: Программирование для начинающих
Конструкторкласса—метод init .Урок3
Уровень: Программирование для начинающих
Уровень: Программирование для начинающих
Уровень: Программирование для начинающих
Уровень: Программирование для начинающих
Форматирование строк документирования
Пример документированного исходного кода
ПерегрузкаоператороввООП.Урок10
Уровень: Программирование для начинающих
Особенностиобъектно-ориентированногопрограммирования.Урок11
Уровень: Программирование для начинающих
Идеи (принципы) объектно-ориентированного программирования
заподозрить, что обрабатывают они объекты немного по разному. В данном случае объект-прямоугольник и объект-треугольник можнопредставить исключительно как данные. Кстати, в Python даже число — это объект, принадлежащий классу (типу) integer или float (илидругомучисловомутипу).Приведем более реальный программный пример (а не «из жизни про занятие»). Допустим нужно создать программу по обработке текстовойинформации. Эта программа должна получать от пользователя данные, обрабатывать определенным способом, а затем выдавать на экран.Причемнамсказалинаписатьэтупрограмму,используяпарадигмуООП.Выделимобъектысистемы:пустьэтобудут«приемщик»,«обработчик№1»,«обработчик№2»и«отображатель».Итак,пользовательпередает«приемщику»текстиинформациюкаким«обработчиком» обрабатывать.«Приемщик» может взять все это (у него предусмотрены такие функции) и, предварительно оценив, чтодают,можетпередатьтому«обработчику»,которыйвыбралпользователь.Выбранный«обработчик»видоизменяеттекстипередаетего«отображателю». Тот, в свою очередь, специфически форматирует текст и выводит на экран. Также в данной программе может бытьпредусмотренавозможностьнапрямуюпередавать текстот«приемщика»к«отображателю»минуя«обработчики».Придумайтесвоюсистемувзаимодействующихобъектов.Многие современные языки поддерживают несколько парадигм программирования (например, директивное, функциональное, объектно-ориентированное).Такиеязыкиявляются смешанными. Книмотносится и Python.
сложными.Следует помнить, что методы в классах — это те же функции, за одним небольшим исключением. Они принимают один обязательныйпараметр—self(сангл.можноперевести как"собственнаяличность"). Оннужендлясвязи сконкретнымобъектом.Атрибуты класса — это имена переменных вне функций и имена функций. Эти атрибуты наследуются всеми объектами, созданными наоснове данного класса. Атрибуты обеспечивают свойства и поведение объекта. Объекты могут иметь атрибуты, которые создаются в телеметода,еслиданный метод будет вызван дляконкретного объекта.
Обаэтихобъекта(obj1иobj2)имеюдваодинаковых атрибута:color(ввидесвойства)иprinter(ввидеметода).Это легкопроверить:
Созданиеклассовиобъектов.Урок2
Методическая разработка урока
Элективный курс: Введение в объектно-ориентированноепрограммированиенаPythonУровень: Программирование для начинающих
Итак,программа,написаннаясиспользованиемпарадигмыобъектно-ориентированногопрограммирования,должнасостоятьиз-
объектов, -
классов (описания объектов), -
взаимодействий объектов между собой, в результате которых меняются их свойства.
Создание классов:
Для создания классов предусмотрена инструкция class. Это составная инструкция, которая состоит из строки заголовка и тела. Заголовоксостоит из ключевого слова class, имени класса и, возможно, названий суперклассов в скобках. Суперклассов может и не быть, в такомслучае скобки не требуются. Тело класса состоит из блока различных инструкций. Тело должно иметь отступ (как и любые вложенныеконструкциивязыкеPython).Схематичноклассможнопредставитьследующимобразом:-
class ИМЯКЛАССА: -
ПЕРЕМЕННАЯ = ЗНАЧЕНИЕ
-
def ИМЯМЕТОДА(self, ...): -
self.ПЕРЕМЕННАЯ = ЗНАЧЕНИЕ
сложными.Следует помнить, что методы в классах — это те же функции, за одним небольшим исключением. Они принимают один обязательныйпараметр—self(сангл.можноперевести как"собственнаяличность"). Оннужендлясвязи сконкретнымобъектом.Атрибуты класса — это имена переменных вне функций и имена функций. Эти атрибуты наследуются всеми объектами, созданными наоснове данного класса. Атрибуты обеспечивают свойства и поведение объекта. Объекты могут иметь атрибуты, которые создаются в телеметода,еслиданный метод будет вызван дляконкретного объекта.
Создание объектов:
Объектысоздаютсятак:ПЕРЕМЕННАЯ=ИМЯКЛАССА()Здесьскобкиобязательны!Послетакойинструкциивпрограммепоявляетсяобъект,доступккоторомуможнополучитьпоименипеременной,связаннойсним.Присозданииобъектполучаетатрибутыегокласса,т.е.объектыобладаютхарактеристиками,определеннымивихклассах.Количествообъектов,которыеможносоздатьнаосноветогоилииногокласса,неограничено.Объекты одного класса имеют схожий набор атрибутов, а вот значения атрибутов могут быть разными. Другими словами, объекты одногоклассапохожи,ноиндивидуальноразличимы.Чтобыпонятьэто,можносравнитьотношенияобъектоводногоклассавпрограммированиисо следующем высказыванием: "Все млекопитающие принадлежат одному классу и обычно имеют по два глаза, однако у каждого животного(объекта)глазаимеют свои особенности".Self:
Можно сказать, что методы класса — это небольшие программки, предназначенные для работы с объектами. Методы могут создавать новыесвойства(данные) объекта,изменять существующие,выполнять другиедействиянад объектами.Методунеобходимо"знать",данныекакогообъектаемупредстоитобрабатывать.Дляэтогоемувкачествепервого(аиногдаиединственного) аргумента передается имя переменной, связанной с объектом (можно сказать, передается сам объект). Чтобы в описанииклассауказатьпередаваемый вдальнейшемобъект, используетсяпараметрself. (Посмотритенасхемуклассавверху.)Сдругойстороны,вызовметодадляконкретногообъектавосновномблокепрограммывыглядитследующимобразом:ОБЪЕКТ.ИМЯМЕТОДА(…)Здесь под словом ОБЪЕКТ имеется в виду переменная, связанная с ним. Это выражение преобразуется в классе, к которому относитсяобъект, вИМЯМЕТОДА(ОБЪЕКТ,…)Т.е.конкретныйобъектподставляетсявместопараметраself.Первая ОО-программа:
Попробуемна основеимеющихсяуже знанийнаписать небольшуюОО-программу.Допустим,этобудетклассс одниматрибутомвнеметодаи однимметодом, который выводитснебольшимизменениемзначениеэтого атрибутанаэкран:-
class First: -
color = "red" -
def out(self): -
print (self.color + "!")
-
obj1 = First() -
obj2 = First()
Обаэтихобъекта(obj1иobj2)имеюдваодинаковых атрибута:color(ввидесвойства)иprinter(ввидеметода).Это легкопроверить:
-
print (obj1.color) -
print (obj2.color) -
obj1.out() -
obj2.out()
Усложняем программу:
В предыдущей программе оба созданных объекта абсолютно одинаковы. Класс, на основе которого они созданы слишком прост и непредполагаеттого,что объектымогут иметь различныезначения свойств.Исправимэто.Пусть теперь в классе с помощью атрибутов вне функции устанавливаются два свойства объектов: красный цвет и круглая форма. А методымогутменять эти свойствавзависимости от пожеланийтех, кто создаетобъекты.-
class Second: -
color = "red" -
form = "circle" -
def changecolor(self,newcolor): -
self.color = newcolor -
def changeform(self,newform): -
self.form = newform 8.
-
obj1 = Second() -
obj2 = Second() 11.
-
print (obj1.color, obj1.form) #выводнаэкран"redcircle" -
print (obj2.color, obj2.form) #выводнаэкран"redcircle" -
-
obj1.changecolor("green") #изменениецветапервогообъекта -
obj2.changecolor("blue") #изменениецветвторогообъекта -
obj2.changeform("oval") #изменениеформывторогообъекта -
-
print (obj1.color, obj1.form) #выводнаэкран"greencircle" -
print (obj2.color, obj2.form) #выводнаэкран"blueoval"