|
Пример объектно-ориентированной программы на PythonОпубликовано: 29.09.2018 В конце курса закрепим пройденный материал, написав еще одну небольшую объектно-ориентированную программу на Python. В ООП очень важно предварительное проектирование. В общей сложности можно выделить следующие этапы разработки объектно-ориентированной программы: Формулирование задачи. Определение объектов, участвующих в ее решении. Проектирование классов, на основе которых будут создаваться объекты. В случае необходимости установление между классами наследственных связей. Python Essential. Урок 1. Введение в ООП Python Определение ключевых для данной задачи свойств и методов объектов. Создание классов, определение их полей и методов. Создание объектов. Решение задачи путем организации взаимодействия объектов. Пусть необходимо разработать виртуальную модель процесса обучения. В программе должны быть объекты-ученики, учитель, кладезь знаний. Уроки Python для начинающих | #18 - Наследование, инкапсуляция, полиморфизм Потребуется три класса – "учитель", "ученик", "данные". Учитель и ученик во многом похожи, оба – люди. Значит, их классы могут принадлежать одному надклассу "человек". Однако в контексте данной задачи у учителя и ученика вряд ли найдутся общие атрибуты. Определим, что должны уметь объекты для решения задачи "увеличить знания": Ученик должен уметь брать информацию и превращать ее в свои знания. Учитель должен уметь учить группу учеников. Данные могут представлять собой список знаний. Элементы будут извлекаться по индексу. class Data: def __init__ ( self , *info ): self .info = list ( info ) def __getitem__ ( self , i ): return self .info [ i] class Teacher: def teach ( self , info , *pupil ): for i in pupil: i. take ( info ) class Pupil: def __init__ ( self ) : self .knowledge = [ ] def take ( self , info ): self .knowledge .append ( info )Теперь посмотрим, как объекты этих классов могут взаимодействовать между собой: >>> from test import * >>> lesson = Data ( 'class' , 'object' , 'inheritance' , 'polymorphism' , 'encapsulation' ) >>> marIvanna = Teacher ( ) >>> vasy = Pupil ( ) >>> pety = Pupil ( ) >>> marIvanna. teach ( lesson [ 2 ] , vasy , pety ) >>> marIvanna. teach ( lesson [ 0 ] , pety ) >>> vasy. knowledge ['inheritance'] >>> pety. knowledge ['inheritance', 'class']Может ли в этой программе ученик учиться без учителя? Если да, пусть научится чему-нибудь сам. Добавьте в класс Pupil метод, позволяющий ученику случайно "забывать" какую-нибудь часть своих знаний. Курс с примерами решений практических работ: android-приложение , pdf-версия . |