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

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

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

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

Добавлен: 11.12.2023

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

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

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

СОДЕРЖАНИЕ

Урок - лекция

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

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

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

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

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

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

Self:

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

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

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

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

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

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

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

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

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

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

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

Полиморфизм

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

Вывод

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Функция help

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

10.t1=T1()11.t2=T2()

  1. t1.total(45)

  2. t2.total(45)

  3. print (t1.total) #Вывод:55

  4. print (t2.total) #Вывод:2
Задание. Напишите программу, запрашивающую у пользователя ввод числа. Если число принадлежит диапазону от-100 до 100, тосоздается объект одного класса, во всех остальных случаях создается объект другого класса. В обоих классах должен быть метод-конструкторinit,который впервом классевозводитчисловквадрат, а во-втором-умножаетнадва.Ответ:

  1. class One:

  2. definit(self,a):

  3. self.a = a ** 2 4.

  1. class Two:

  2. definit(self,a):

  3. self.a = a * 2 8.

  1. a = input ("введите число ")

  2. a = int(a)
11.if-100<a<100:

  1. obj = One(a)

  2. else:

  3. obj = Two(a) 15.
16.print(obj.a)

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

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

  1. class Base:

  2. definit(self,n):

  3. self.numb = n

  4. def out(self):

  5. print (self.numb) 6.

  1. class One(Base):

  2. def multi(self,m):

  3. self.numb *= m 10.

  1. class Two(Base):

  2. def inlist(self):

  3. self.inlist = list(str(self.numb))

  4. def out(self):
15. i=0

  1. while i < len(self.inlist):

  2. print (self.inlist[i])
18. i+=119.

  1. obj1 = One(45)

  2. obj2 = Two('abc') 22.

  1. obj1.multi(2)

  2. obj1.out() #Выводчисла90



  3. obj2.inlist()

  4. obj2.out() #Выводвстолбикбуквa,b,c
В данном случае объект obj1 использует метод out из cуперкласса Base, а obj2 – из своего класса Two. Атрибуты ищутся «снизу вверх»:сначала в классах, затем суперклассах. Поскольку для obj2 атрибут out уже был найден в классе Two, то из класса Base он не используется.Другимисловами, классTwoпереопределят атрибутсуперклассаBase.РасширениеметодовПри ООП может возникнуть ситуация, когда метод суперкласса в принципе подходит для реализации того или иного действия с объектамикласса, однако требует небольших изменений. В таком случае можно использовать так называемое расширение метода, когда из тела методакласса вызывается метод суперкласса и дописываются дополнительные инструкции. В примере ниже в методе класса Subclass вызываетсяметоддругогокласса (вданномслучаеего суперкласса;однакоможет вызыватьсяметод,непринадлежащий

собственномусуперклассу):

  1. class Base:

  2. definit(self,N):

  3. self.numb = N

  4. def out(self):

  5. self.numb /= 2

  6. print (self.numb) 7.

  1. class Subclass(Base):

  2. def out(self):

  3. print ("\n ")

  4. Base.out(self)

  5. print (" \n")


14.i =015.whilei<10:16. if4<i <7:

  1. obj = Subclass(i)

  2. else:

  3. obj = Base(i) 20. i += 1
21. obj.out()

Вывод

Полиморфизм в объектно-ориентированном программировании дает возможность реализовывать так называемые единые интерфейсы дляобъектов различных классов. Имеется ввиду, что если есть методы с одинаковыми названиями (или операции, обозначаемая одинаковымизнаками, как будет показано в уроке №7) для всех объектов, то это позволяет писать более очевидный исходный код. Например, разныеклассы могут предусматривать различный способ вывода той или иной информации объектов. Однако единое название для всех объектовметода«вывода»позволит незапутать программу, сделатьееболееочевидной.Переопределение методов в подклассах (а также их расширение) позволяет специализировать ранее написанный исходный код, не меняя еговсуперклассах, гдеобычнотребуется оставить код внеизменномвидедлядругихподклассов.

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

Напишитенебольшуюобъектно-ориентированнуюпрограммку,демонстрирующуютакиесвойстваООПкакнаследованиеиполиморфизм.Композиционныйподходвобъектно-ориентированномпрограммировании.Урок7

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

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

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

Ещеоднойособенностьюобъектно-ориентированногопрограммированияявляетсявозможностьреализовыватьтакназываемыйкомпозиционныйподход.Заключаетсяонвследующем:естькласс-контейнер,которыйвключаетвсебявызовыдругихклассов.Врезультатеполучается,чтосоздаваяобъекткласса-контейнера,мыодновременносоздаемиобъектывключенных внегоклассов.Чтобы понять зачем нужна композиция в программировании, можно как всегда провести аналогию с реальным миром. Так подавляющеебольшинство природных, биологических и технических объектов состоят из других более простых частей, по своей сути, также являющихсяобъектами. Например, человек состоит из различный органов (сердце, кожа и др.), компьютер — из различного "железа" (процессор, ОЗУ,диск ит.д.).Следуетпонимать,что"композиция"и"наследование"-достаточноразныесвойствареальныхивиртуальныхсистем.Наследованиепредполагаетпринадлежностьк какой-тообщности(похожесть), акомпозиция— формированиецелогоизчастей.Ещераз:присозданииобъекта,принадлежащего
классу-контейнеру,автоматическисоздаютсяобъекты-части,изкоторыхонкакбысостоит. Свойства и методы объектов частей определяются в их классах. Программисты могут создавать целые коллекции встраиваемыхклассов.РассмотримиспользованиекомпозицииприпрограммированиинаPythonспомощьюконкретногопримера.

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

Допустим, нам требуется написать программу, которая вычисляет площадь обоев для оклеивания комнаты определенных пользователемразмеров.При этомнеобходимоучитывать, что окна, двери,поли потолок оклеиватьненадо.Для начала решим данную задачу логически. Комната — это прямоугольный параллелепипед, состоящий из шести прямоугольников. Егоплощадьпредставляетсобойсумму площадейсоставляющихего прямоугольников. Площадьпрямоугольника равна произведениюегодлинынаширину.Обои клеятся только на стены, следовательно площади верхнего и нижнего прямоугольников нам не нужны. Из рисунка можно заключить,что площадь одного прямоугольника равна x * z, второго – у * z. Противоположные прямоугольники равны, значит общая площадь четырехпрямоугольников будет равна S = 2xz + 2уz = 2z(x+y). Потом из этой площади надо будет вычесть общую площадь дверей и окон. Двери иокна— это прямоугольники (каквычислить их площадьдолжно бытьпонятно).