|
|||
Пример объектно-ориентированной программы на PythonПример объектно-ориентированной программы на Python В конце курса закрепим пройденный материал, написав еще одну небольшую объектно-ориентированную программу на Python. В ООП очень важно предварительное проектирование. В общей сложности можно выделить следующие этапы разработки объектно-ориентированной программы:
Пусть необходимо разработать виртуальную модель процесса обучения. В программе должны быть объекты-ученики, учитель, кладезь знаний. Потребуется три класса – "учитель", "ученик", "данные". Учитель и ученик во многом похожи, оба – люди. Значит, их классы могут принадлежать одному надклассу "человек". Однако в контексте данной задачи у учителя и ученика вряд ли найдутся общие атрибуты. Определим, что должны уметь объекты для решения задачи "увеличить знания":
class Data: def __init__(self, *info): self.info = list(info)
def __getitem__(self, i): return self.info[i]
class Teacher: def __init__(self): self.work = 0
def teach(self, info, *pupil): for i in pupil: i.take(info) self.work += 1
class Pupil: def __init__(self): self.knowledge = []
def take(self, info): self.knowledge.append(info)
В класс Teacher также добавлено свойство экземпляров work, чтобы подсчитывать количество проделанной учителем работы. Теперь посмотрим, как объекты этих классов могут взаимодействовать между собой: >>> 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 метод, позволяющий ученику случайно "забывать" какую-нибудь часть своих знаний
|
|||
|