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

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

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

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

Добавлен: 11.12.2023

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

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

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

СОДЕРЖАНИЕ

Урок - лекция

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

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

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

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

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

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

Self:

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

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

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

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

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

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

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

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

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

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

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

Полиморфизм

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

Вывод

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Функция help

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Обратитевнимание,когдамывызывалиметодdocдляобъектов,тоиспользоваливстроеннуюфункциюprint.Зачем?Ведьвинтерактивном режиме вывод работает и без print. Однако если при вызове методаdoc__ не использовать функцию print, то вывод неотформатируется,абудет выглядеть как висходномкоде:

  1. >>> str.doc

  2. "str(string[, encoding[, errors]]) -> str\n\nCreate a new string object from the given encoded string.\nencoding defaults to the current default string encoding.\nerrors can be 'strict', 'replace' or 'ignore' and defaults to 'strict'."
Обратите внимание на сочетание символов \n. Оно обозначает переход на новую строку. Вообще оформление строк документации должносоответствоватьопределенномустандарту.

Функция help

Еще более интересный способ получить информацию о модуле или его частях — это использование встроенной функции help. Она выводиттекстовый отчет о переданном ей в качестве аргумента объекте. Этот отчет включает не только строки документации, но и структурузапрошенной части кода. т.е. применив функцию help по отношению к объектам мы получим еще и информацию о внутренних функциях иклассах.

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


  1. Напишите строки документации к программе, созданной на 7 уроке (вычисление площади оклеивания) . Поместите следующую информацию:

  • Модуль. Для чего предназначена данная программа.

  • Классы. Для чего предназначены, какие аргументы передаются методу init.

  • Методы (кроме init). Назначение, описание входных и выходных данных.


  • Используя метод doc, вызовите в интерактивном режиме строки документации для различных объектов модуля. Предварительно необходимо импортировать модуль (чтобы импортировать его без проблем, поместите файл в каталог установки python).

  • Примените функцию help для данного модуля. Например, если имя модуля rooms, то вызов справки по нему будет выглядеть так: help (rooms).



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


    1. "It is the program for definition of quantity of wall-paper" 2.

    3. class Win_Door:

    4. """

    1. Class Win_Door calculates the area of a rectangular.

    2. Methodinitaccepts two parameters: length and width. 7. """

    1. definit(self,x,y):

    2. self.square = x * y 10.

    11. class Room:

    12. """

    1. Class Room is intended for definition of the pasted over area of a room.

    2. Methodinitaccepts three arguments (length, width and height). 15. """

    1. definit(self,x,y,z):

    2. self.square = 2 * z * (x + y)

    3. def win_door(self, d,e, f,g, m=1,n=1):

    19. """

    1. The first pair parameters - the sizes of a window,

    2. the second pair - the sizes of a door,

    3. the fifth and sixth parameters - quantity of windows and doors accordingly 23. """

    1. self.window = Win_Door(d,e)

    2. self.door = Win_Door(f,g)

    3. self.numb_w = m

    4. self.numb_d = n

    5. def wallpapers(self):

    29. """

    30. This method calculates the pasted over area 31. """

    1. self.wallpapers = self.square - \

    2. self.window.square * self.numb_w \

    3. - self.door.square * self.numb_d

    4. def printer(self):

    36. """

    37. Displays the information 38. """

    1. print ("Площадь стен комнаты равна "\

    2. ,str(self.square)," кв.м")

    3. print ("Оклеиваемая площадь равна: ", \

    4. str(self.wallpapers), " кв.м")

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

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

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

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

    До этого мы говорили только о классах и объектах, которые создает программист (пользовательские классы). Однако Python настолькообъектно-ориентированный язык, что в нем любые строка, число, список и др. являются по сути объектами, принадлежащими встроеннымклассам (типамданных): строкам,числами др.Т. е.типыданных—этовстроенныеклассы, алюбыеданные — этообъекты.Объектно-ориентированное программирование подразумевает не только наличие объектов, но и их взаимодействие между собой. Поэтомуважно,чтобы кобъектамразныхклассов можно былоприменить однуи тужеоперацию(например, сложение).Для пользовательских классов предусмотрены специальные методы, позволяющие объектам данных классов участвовать в таких привычныхоперациях как сложение, вычитание, умножение, деление (+ - * /), а также во многих других. Другими словами, смысл (то, что он делает)знака + (или любого другого оператора) зависит от того, к каким объектам он применяется. Это называется перегрузкой операторов. Вклассах перегруженные операторы описываются с помощью специальных зарезервированных методов, которые в начале и в конце имеют подва знака подчеркивания. В уроке рассматриваются лишь некоторые из них. Кроме того, ранее был уже рассмотрен один такой метод —конструкторinit,который автоматически вызываетсяпри создании объектовкласса.Рассмотримпримерперегрузкиоператоров.

    1. class Newclass:

    2. definit(self, base):

    3. self.base = base

    4. defadd(self, a):

    5. self.base = self.base + a

    6. defstr(self):

    7. return "%s !!! " % self.base 8.

    9. a = Newclass(10)10.a + 2011.print(a)12.

    1. b = Newclass("yes")

    2. b + "terday"

    3. print (b)


    17.c=Newclass([2,6,3])18.c +[7, 1]19.print(c)В данном примере используется два метода (исключаяinit) перегрузки операторов:addиstr. Методaddвызывается в томслучае, когда объект данного класса участвует в операции сложения (для чисел), конкатенации (для строк) и объединения (для списков).Методstrвызывается, когда объект передается в качестве аргументавстроеннойфункцииprint (на самомделе не только ей) ипредставляетданныеввидестроки.Результатработыскриптапредставленноговышебудеттаким:1. 30!!!2. yesterday!!!3. [2,6,3,7,1]!!!Задание. Спешите пример, посмотрите как он работает. Дополните класс методамиmul(вызывается при использовании объекта воперациях умножения) иsub(вычитание). Вызовите данные методы с помощью соответствующих операций с объектами. Для какихобъектовневозможно использовать методsub?call-перегрузкавызовафункцииМетодcallавтоматически вызывается, когда к объекту обращаются как к функции. Например, здесь во второй строке произойдет вызовметодаcallнекогоКласса:объект = некийКласс()объект(*возможныеаргументы+)Другимисловами,метод callпозволяет объектам вести себя как функции.Пример:

    1. class Changeable:

    2. definit(self, color):

    3. self.color = color

    4. defcall(self, newcolor):

    5. self.color = newcolor

    6. defstr(self):

    7. return "%s" % self.color 8.

    1. canvas = Changeable("green")

    2. frame = Changeable("blue") 11.

    1. canvas("red")

    2. frame("yellow") 14.
    15.print(canvas,frame)Вэтомпримереспомощьюконструктора