Хелпикс

Главная

Контакты

Случайная статья





Пример объектно-ориентированной программы на Python



Пример объектно-ориентированной программы на Python

В конце курса закрепим пройденный материал, написав еще одну небольшую объектно-ориентированную программу на Python.

В ООП очень важно предварительное проектирование. В общей сложности можно выделить следующие этапы разработки объектно-ориентированной программы:

  1. Формулирование задачи.
  2. Определение объектов, участвующих в ее решении.
  3. Проектирование классов, на основе которых будут создаваться объекты. В случае необходимости установление между классами наследственных связей.
  4. Определение ключевых для данной задачи свойств и методов объектов.
  5. Создание классов, определение их полей и методов.
  6. Создание объектов.
  7. Решение задачи путем организации взаимодействия объектов.

Пусть необходимо разработать виртуальную модель процесса обучения. В программе должны быть объекты-ученики, учитель, кладезь знаний.

Потребуется три класса – "учитель", "ученик", "данные". Учитель и ученик во многом похожи, оба – люди. Значит, их классы могут принадлежать одному надклассу "человек". Однако в контексте данной задачи у учителя и ученика вряд ли найдутся общие атрибуты.

Определим, что должны уметь объекты для решения задачи "увеличить знания":

  • Ученик должен уметь брать информацию и превращать ее в свои знания.
  • Учитель должен уметь учить группу учеников.
  • Данные могут представлять собой список знаний. Элементы будут извлекаться по индексу.

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 метод, позволяющий ученику случайно "забывать" какую-нибудь часть своих знаний

 



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.