Презентация на тему: Объектно-ориентированное программирование на python

Реклама. Продолжение ниже
Объектно-ориентированное программирование на python
Литература: 1. Изучаем Python. Марк Лутц 2. Язык программирования Python. Сузи Р.А.
Объектно-ориентированное программирование
Основные понятия
Создание классов, методов и объектов
Создание классов, методов и объектов
Создание классов, методов и объектов
Создание классов, методов и объектов
Создание классов, методов и объектов
Применение конструкторов
Применение атрибутов
Применение атрибутов
Применение атрибутов класса и статических методов
Применение атрибутов класса и статических методов
Инкапсуляция объектов. Применение закрытых атрибутов и методов
Инкапсуляция объектов. Применение закрытых атрибутов и методов
Инкапсуляция объектов. Применение закрытых атрибутов и методов
Инкапсуляция объектов. Применение закрытых атрибутов и методов
Инкапсуляция объектов. Применение закрытых атрибутов и методов
Управление доступом к атрибутам
Управление доступом к атрибутам
Управление доступом к атрибутам
Пример программы «Мое животное»
Пример программы «Мое животное»
Пример программы «Мое животное»
Пример программы «Мое животное»
Пример программы «Мое животное»
Пример программы «Мое животное»
Пример программы «Мое животное»
Наследование
Полиморфизм
Пример программы «Банк»
Пример программы «Банк»
Пример программы «Банк»
Пример программы «Банк»
Пример программы «Банк»
Пример программы «Банк»
1/37
Средняя оценка: 4.7/5 (всего оценок: 67)
Код скопирован в буфер обмена
Скачать (194 Кб)
Реклама. Продолжение ниже
1

Первый слайд презентации: Объектно-ориентированное программирование на python

Изображение слайда
1/1
2

Слайд 2: Литература: 1. Изучаем Python. Марк Лутц 2. Язык программирования Python. Сузи Р.А

Изображение слайда
1/1
3

Слайд 3: Объектно-ориентированное программирование

Python проектировался как объектно-ориентированный язык программирования. Построен с учетом следующих принципов (по Алану Кэю, автору объектно-ориентированного языка Smalltalk ): 1. Все данные в нем представляются объектами. 2. Программу можно составить как набор взаимодействующих объектов, посылающих друг другу сообщения. 3. Каждый объект имеет собственную часть памяти и может состоять из других объектов. 4. Каждый объект имеет тип. 5. Все объекты одного типа могут принимать одни и те же сообщения (и выполнять одни и те же действия).

Изображение слайда
1/1
4

Слайд 4: Основные понятия

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

Изображение слайда
1/1
5

Слайд 5: Создание классов, методов и объектов

class ИМЯ КЛАССА (): ПЕРЕМЕННАЯ = ЗНАЧЕНИЕ ... def ИМЯ МЕТОДА ( self,... ) : self. ПЕРЕМЕННАЯ = ЗНАЧЕНИЕ ... ... # Основная часть ПЕРЕМЕННАЯ = ИМЯ КЛАССА () ... ОБЪЕКТ. ИМЯ МЕТОДА () ... Объявление класса Объявление метода Создание объекта Вызов метода Атрибуты класса — это имена переменных вне функций и имена функций. Наследуются всеми объектами, созданными на основе данного класса.

Изображение слайда
1/1
6

Слайд 6: Создание классов, методов и объектов

Пример_ 1. class Person (): # Создание пустого класса pass Person.money = 150 # Создание атрибута объекта класса obj1 = Person () # Создание экземпляра класса obj2 = Person() # Создание экземпляра класса obj1.name = 'Bob‘ # Создание атрибута экземпляра класса obj2.name = 'Masha‘ # Создание атрибута экземпляра класса print (obj1.name, 'has',obj1.money, 'dollars.' ) # Вывод print ( obj 2.name, 'has', obj 2. money, 'dollars.' ) # Вывод Вывод: >>> Bob has 150 dollars. Masha has 0 dollars.

Изображение слайда
1/1
7

Слайд 7: Создание классов, методов и объектов

Пример_ 2. # Создание класса class Person(): name = "" money = 0 # Создание объектов obj1 = Person() obj2 = Person() obj1.name = 'Bob' obj1.money = 150 obj2.name = 'Masha ' print (obj1.name, 'has',obj1.money, 'dollars.' ) print ( obj 2.name, 'has', obj 2. money, 'dollars.' ) Вывод: >>> Bob has 150 dollars. Masha has 0 dollars.

Изображение слайда
1/1
Реклама. Продолжение ниже
8

Слайд 8: Создание классов, методов и объектов

Пример_ 3. # Создание класса, объекта и вызов метода class Person (): name = "" money = 0 def out ( self ): # self - ссылка на экземпляр класса print ( self.name, 'has',self.money, 'dollars.' ) def changemoney ( self,newmoney ): self.money = newmoney obj1 = Person() obj2 = Person () obj1.name = 'Bob' obj2.name = 'Masha ' obj1.out() obj2.out () obj1.changemoney(150) obj1.out () Вывод: >>> Bob has 0 dollars. Masha has 0 dollars. Bob has 150 dollars.

Изображение слайда
1/1
9

Слайд 9: Создание классов, методов и объектов

Пример_4. class Critter (): # создание класса "" " Виртуальный питомец "" " # строка документирования # создание метода def talk (self ): print ( " Привет. Я животное – экземпляр класса Critter." ) # основная часть # создание объекта и вызов метода crit = Critter() crit.talk () input ( "\n Нажмите Enter, чтобы выйти." ) Вывод: Привет. Я животное – экземпляр класса Critter. Нажмите Enter, чтобы выйти.

Изображение слайда
1/1
10

Слайд 10: Применение конструкторов

Конструктор класса __ init __ автоматически создает атрибуты объекта при вызове класса. Вывод: Появилось на свет новое животное ! Появилось на свет новое животное ! Привет. Я животное – экземпляр класса Critter. Привет. Я животное – экземпляр класса Critter. # Демонстрирует метод-конструктор class Critter() : "" " Виртуальный питомец """ def __ init __ (self ): # метод-конструктор print ( " Появилось на свет новое животное !" ) def talk (self): print ( "\ n Привет. Я животное – экземпляр класса Critter." ) crit1 = Critter() crit2 = Critter() crit1.talk() crit2.talk ()

Изображение слайда
1/1
11

Слайд 11: Применение атрибутов

Усложняем программу : # Демонстрирует создание атрибутов объекта class Critter() : "" " Виртуальный питомец """ def __ init __ ( self, name): print ( " Появилось на свет новое животное !" ) self.name = name def __ str __ (self ): # возвращает строку, которая rep = " Объект класса Critter\n" # содержит значение rep += " имя : " + self.name + "\ n" # атрибута name return rep def talk (self): print ( " Привет. Меня зовут ", self.name, "\n " ) # Продолжение следует

Изображение слайда
1/1
12

Слайд 12: Применение атрибутов

# Демонстрирует создание атрибутов объекта (продолжение) # Основная часть crit1 = Critter( " Бобик " ) crit1.talk() crit2 = Critter ( " Мурзик " ) crit2.talk() print ( " Вывод объекта crit1 на экран :" ) print(crit1) print ( " Доступ к атрибуту crit1.name :" ) print(crit1.name) input ( "\n Нажмите Enter, чтобы выйти." ) Применение атрибутов Вывод: Появилось на свет новое животное ! Привет. Меня зовут Бобик. Появилось на свет новое животное ! Привет. Меня зовут Мурзик. Вывод объекта crit1 на экран : Объект класса Critter имя : Бобик Д оступ к атрибуту crit1.name : Бобик Нажмите Enter, чтобы выйти.

Изображение слайда
1/1
13

Слайд 13: Применение атрибутов класса и статических методов

# Демонстрирует атрибуты класса и статические методы class Critter (): """ Виртуальный питомец "" " total = 0 # атрибут класса @ staticmethod # декоратор меняет смысл метода def status (): # статический метод, отсутствует self print ( "\ n Всего животных сейчас ", Critter.total ) def __ init __ (self, name): print ( " Появилось на свет новое животное !" ) self.name = name Critter.total += 1 # Продолжение следует Значение, связанное с целым классом, - атрибут класса. Методы, связанные с целым классом, - статические.

Изображение слайда
1/1
14

Слайд 14: Применение атрибутов класса и статических методов

# Демонстрирует атрибуты класса и статические методы (продолжение) # Основная часть print ( " Значение атрибута класса Critter.total :", end= " " ) print ( Critter.total ) print ( "\ nC оздаю животных." ) crit1 = Critter ( " животное 1" ) crit2 = Critter ( " животное 2 " ) crit3 = Critter ( " животное 3 " ) Critter.status () # вызов статического метода print ( "\ n Нахожу значение атрибута класса через объект :", end = " " ) print (crit1.total)) input ( "\n Нажмите Enter, чтобы выйти." ) Применение атрибутов класса и статических методов Вывод: З начение атрибута класса Critter.total : 0 C оздаю животных. Появилось на свет новое животное ! Появилось на свет новое животное ! Появилось на свет новое животное ! Всего животных сейчас 3 Нахожу значение атрибута класса через объект : 3 Нажмите Enter, чтобы выйти.

Изображение слайда
1/1
Реклама. Продолжение ниже
15

Слайд 15: Инкапсуляция объектов. Применение закрытых атрибутов и методов

Инкапсуляция — ограничение доступа к составляющим объект компонентам (методам и переменным ). Атрибуты и методы класса делятся на открытые из вне ( public ) и закрытые ( private ). Открытые атрибуты также называют интерфейсом объекта, т. к. с их помощью с объектом можно взаимодействовать. Закрытые атрибуты нельзя изменить, находясь вне класса. Инкапсуляция призвана обеспечить надежность программы.

Изображение слайда
1/1
16

Слайд 16: Инкапсуляция объектов. Применение закрытых атрибутов и методов

class A: def _ private ( self ): print ( "Это закрытый метод!" ) >>> a = A() >>> a._ private () Это закрытый метод ! Одиночное подчеркивание в начале имени атрибута указывает, что переменная или метод не предназначен для использования вне методов класса, однако атрибут доступен по этому имени.

Изображение слайда
1/1
17

Слайд 17: Инкапсуляция объектов. Применение закрытых атрибутов и методов

class B: def __private (self): print ( "Это закрытый метод!" ) >>> b = B() >>> b.__private () Traceback (most recent call last): File "", line 1, in b.__private () AttributeError : 'B' object has no attribute '__private' Двойное подчеркивание в начале имени атрибута даёт большую защиту: атрибут становится недоступным по этому имени. Атрибут будет доступным под именем _ ИмяКласса __ ИмяАтрибута : >>> b._B__ private () Это закрытый метод!

Изображение слайда
1/1
18

Слайд 18: Инкапсуляция объектов. Применение закрытых атрибутов и методов

# Демонстрирует закрытые переменные и методы class Critter (): """ Виртуальный питомец """ def __ init __ (self, name, mood): print ( " Появилось на свет новое животное !" ) self.name = name # открытый атрибут self.__mood = mood # закрытый атрибут def talk (self): print ( "\n Меня зовут ", self.name) print ( " Сейчас я чувствую себя ", self.__mood, "\n" ) def __ private_method (self): print ( "Это закрытый метод!" ) def public_method (self): print ( "Это открытый метод!" ) self.__ private_method () # Продолжение следует

Изображение слайда
1/1
19

Слайд 19: Инкапсуляция объектов. Применение закрытых атрибутов и методов

# Демонстрирует закрытые переменные и методы (продолжение) # основная часть crit = Critter(name = " Бобик ", mood = " прекрасно " ) crit.talk () crit.public_method () input ( "\n Нажмите Enter, чтобы выйти." ) Вывод: Появилось на свет новое животное ! Меня зовут Бобик Сейчас я чувствую себя прекрасно Это открытый метод ! Это закрытый метод! Нажмите Enter, чтобы выйти.

Изображение слайда
1/1
20

Слайд 20: Управление доступом к атрибутам

# Демонстрирует свойства class Critter (): """ Виртуальный питомец """ def __ init __ (self, name): print ( " Появилось на свет новое животное !" ) self.__name = name # закрытый атрибут @ property # декоратор def name (self ): # свойство (позволяет узнать return self.__ name # значение закрытого атрибута # __ name этого объекта внутри # или вне объявления класса ) # Продолжение следует Свойство – объект с методами, которые позволяют косвенно обращаться к закрытым атрибутам.

Изображение слайда
1/1
21

Слайд 21: Управление доступом к атрибутам

# Демонстрирует свойства (продолжение) @ name.setter # метод устанавливает новое def name (self, new_name ): # значение свойства name if new_name == "" : print ( " Имя животного не может быть пустой строкой." ) else : self.__name = new_name print ( " Имя успешно изменено." ) def talk (self): print ( "\n Привет, меня зовут ", self.name ) # Продолжение следует

Изображение слайда
1/1
22

Слайд 22: Управление доступом к атрибутам

# Демонстрирует свойства # основная часть crit = Critter( " Бобик " ) crit.talk () print ( "\ n Мое животное зовут :", end= " " ) print (crit.name) print ( "\ n Попробую изменить имя животного на Шарик..." ) crit.name = " Шарик " print ( " Мое животное зовут :", end= " " ) print (crit.name) print ( "\n Попробую изменить имя животного на пустую строку..." ) crit.name = "" print ( " Мое животное зовут :", end= " " ) print (crit.name ) input ( "\n Нажмите Enter, чтобы выйти." ) Управление доступом к атрибутам Вывод: Появилось на свет новое животное ! Привет, меня зовут Бобик Мое животное зовут : Бобик Попробую изменить имя животного на Шарик... Имя успешно изменено. Мое животное зовут : Шарик Попробую изменить имя животного на пустую строку... Имя животного не может быть пустой строкой. Мое животное зовут : Шарик Нажмите Enter, чтобы выйти.

Изображение слайда
1/1
23

Слайд 23: Пример программы «Мое животное»

# Мое животное # Виртуальный питомец, от котором пользователь может заботиться class Critter (): # класс Critter """ Виртуальный питомец "" " # метод-конструктор класса инициализирует три открытых # атрибута def __ init __ (self, name, hunger = 0, boredom = 0): self.name = name self.hunger = hunger self.boredom = boredom # закрытый метод, увеличивающий уровень голода и уныния def __ pass_time (self): self.hunger += 1 self.boredom += 1 # Продолжение следует Пример программы «Мое животное»

Изображение слайда
1/1
24

Слайд 24: Пример программы «Мое животное»

# Мое животное (продолжение) # свойство, отражающее самочувствие животного @ property def mood (self): unhappiness = self.hunger + self.boredom if unhappiness < 5: m = " прекрасно " elif 5 <= unhappiness <= 10: m = " неплохо " elif 11 <= unhappiness <= 15: m = " так себе " else: m = " ужасно " return m # Продолжение следует Пример программы «Мое животное»

Изображение слайда
1/1
25

Слайд 25: Пример программы «Мое животное»

# Мое животное (продолжение) # метод сообщает о самочувствии животного def talk (self): print ( " Меня зовут ", self.name, end= " " ) print ( " и сейчас я чувствую себя ", self.mood, "\n " ) self.__ pass_time () # метод уменьшает уровень голода животного def eat (self, food = 4): print ( " М ppp. Спасибо." ) self.hunger -= food if self.hunger < 0: self.hunger = 0 self.__ pass_time () # Продолжение следует Пример программы «Мое животное»

Изображение слайда
1/1
26

Слайд 26: Пример программы «Мое животное»

# Мое животное (продолжение) # метод снижает уровень уныния животного def play (self, fun = 4): print (" Уиии !") self.boredom -= fun if self.boredom < 0: self.boredom = 0 self.__ pass_time () # основная часть программы def main (): crit_name = input ( " Как вы назовете свое животное ?: " ) crit = Critter( crit_name ) # Продолжение следует Пример программы «Мое животное»

Изображение слайда
1/1
27

Слайд 27: Пример программы «Мое животное»

# Мое животное (продолжение) # основная часть программы (продолжение) # создание меню choice = None while choice != "0" : print \ ( """ Мое животное 0 – Выйти 1 – Узнать о самочувствии животного 2 – Покормить животное 3 – Поиграть с животным """ ) choice = input ( " Ваш выбор : " ) print () # Продолжение следует Пример программы «Мое животное»

Изображение слайда
1/1
28

Слайд 28: Пример программы «Мое животное»

# Мое животное (продолжение) # создание меню (продолжение) # выход if choice == "0" : print (" До свидания.") # беседа с животным elif choice == "1" : crit.talk () # кормление животного elif choice == "2" : crit.eat () # игра с животным elif choice == "3" : crit.play () # Продолжение следует Пример программы «Мое животное»

Изображение слайда
1/1
29

Слайд 29: Пример программы «Мое животное»

# Мое животное (продолжение) # создание меню (продолжение) # непонятный ввод else : print ( "\ n Извините, в меню нет пункта ", choice) # запуск программы main() ( "\n Нажмите Enter, чтобы выйти." ) Пример программы «Мое животное»

Изображение слайда
1/1
30

Слайд 30: Наследование

# Расширение класса через наследование class Person : def __ init __( self,n ): self.name=n def write (self): print (self.name) class Student (Person): def __ init __ ( self,gr,n,): Person.__ init __( self,n ) self.group =gr def write (self): print ( self.name,self.group ) Ввод и вывод: >>> p=Person ( " Petya " ) >>> p.write () Petya >>> s=Student(23, "Vasya" ) >>> s.write () Vasya 23 >>> Наследование – одна из ключевых идей ООП. Можно создать класс и унаследовать все атрибуты и методы родительского класса. Родительский класс должен быть более обобщённой, абстрактной версией дочернего класса.

Изображение слайда
1/1
31

Слайд 31: Полиморфизм

class T1 : n=10 def total ( self,N ): self.total = int ( self.n ) + int (N) class T2 : def total ( self,s ): self.total = len ( str (s )) t1 = T1 () t2 = T2 () t1.total(45) t2.total(45) print (t1.total) # Вывод : 55 print (t2.total) # Вывод: 2 Полиморфизм – разное поведение одного и того же метода в разных классах, при этом действия, совершаемые с объектами, могут существенно различаться.

Изображение слайда
1/1
32

Слайд 32: Пример программы «Банк»

# Банк # Расширение класса через наследование # Использование методов class Person (): # родительский класс def __ init __ ( self,fio ): # метод-конструктор self.fio = fio #print("Person", self.fio, "created") def __ str __ (self ): # возвращает строку, которая return self.fio # содержит значение атрибута fio # Продолжение следует Реализовать работу банка (сотрудник, клиент, вклад, кредит). В программе должны быть классы и объекты, принадлежащие разным классам; один объект с помощью метода своего класса должен так или иначе изменять данные другого объекта.

Изображение слайда
1/1
33

Слайд 33: Пример программы «Банк»

# Банк (продолжение) class Sotrudnik (Person ): # дочерний класс def __ init __ ( self,fio,job_title,): # унаследовал атрибут Person.__ init __( self,fio ) # родительского класса fio self.job_title = job_title print (self.job_title,"-", self.fio, "\n" ) def kredit ( self,client ): client.dolg () print ( self.fio, " оформил кредит \ n" ) def vklad ( self,client ): client.dohod () print ( self.fio, " оформил вклад \ n " ) # Продолжение следует

Изображение слайда
1/1
34

Слайд 34: Пример программы «Банк»

# Банк (продолжение) class Client (Person): def __ init __ ( self,fio,sum_vklada,sum_kr ): Person.__ init __( self,fio ) self.sum_vklada = sum_vklada self.sum_kr = sum_kr print ( " Клиент:", self.fio, " Сумма кредита:", self.sum_kr, « Сумма вклада:", self.sum_vklada, "\n" ) # Продолжение следует

Изображение слайда
1/1
35

Слайд 35: Пример программы «Банк»

# Банк (продолжение) def dohod ( self,persent =0.03): self.sum_vklada = float ( self.sum_vklada *(1+persent )) def dolg ( self,persent =0.18,amount=0): self.sum_kr = float ( self.sum_kr *(1+persent)) self.sum_kr -= amount def out (self): print ( " Клиент:", self.fio, " Сумма долга:", self.sum_kr ) print ( " Клиент:", self.fio, " Доход:", self.sum_vklada ) # Продолжение следует

Изображение слайда
1/1
36

Слайд 36: Пример программы «Банк»

# Банк (продолжение) name_s = input ( " Введите ФИО сотрудника:" ) job_s = input ( " Введите должность:" ) name_c = input ( " Введите ФИО клиента:" ) svk = int ( input ( " Введите сумму вклада:" )) skr = int ( input ( " Введите c умму кредита:" )) obj1 = Sotrudnik ( name_s,job_s ) obj2 = Client( name_c,svk,skr ) obj1.vklad(obj2) obj1.kredit(obj2) obj2.out() input ( "\n\n Нажмите Enter чтобы выйти." )

Изображение слайда
1/1
37

Последний слайд презентации: Объектно-ориентированное программирование на python: Пример программы «Банк»

Вывод: Введите ФИО сотрудника: Иванов Введите должность: операционист Введите ФИО клиента: Петров Введите сумму вклада: 100 Введите cумму кредита: 1000 операционист - Иванов Клиент: Петров Сумма кредита: 1000 Сумма вклада: 100 Иванов оформил вклад Иванов оформил кредит Клиент: Петров Сумма долга: 1180.0 Клиент: Петров Доход: 103.0

Изображение слайда
1/1
Реклама. Продолжение ниже