Общие методические указания. Цель задания.




Задание «Микроорганизмы»

Цель задания.

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

Задание рассчитано на выполнение в несколько этапов.

Практическое задание.

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

Для простоты модель пробирки представляет собой двумерную (плоскостную) структуру, разделённую на квадратные ячейки. Размеры микроорганизма таковы, что он может занимать одну или более ячеек.

Каждый микроорганизм может совершать три действия:

перемещаться в пределах пробирки;

размножиться;

гибнуть.

В пробирке находятся микроорганизмы трех видов: амебы, бактерии и инфузории. Количество и положение микроорганизмов задается изначально при запуске программы.

Моделирование осуществляется пошагово. Переход к следующему шагу моделирования происходит по нажатию пользователем клавиши или по истечению заданного периода времени секунд с момента предыдущего шага.

Текущее положение микроорганизмов отображаются на экране.

Исходные данные

Пробирка и ее размеры.

Микроорганизмы.

Общие методические указания

Это комплексное задание достаточно сложное и объемное. Но не пугайтесь. Помните:

Любая самая сложная задача состоит из ряда более частных, которые, в свою очередь, так же могут быть представлены как еще более частные и т.д.

 

И это должно быть путеводной нитью для решения всех задач не только учебных, а любых, в частности и возникающих в нашей повседневной жизни. Надо двигаться от более простого к более сложному шаг за шагом. И тогда вы, как говорит Евгения Наумовна: «…будете обречены на успех»!

Поэтому начинаем с анализа поставленной задачи.

Есть пробирка – это отдельная сущность. Со своими параметрами. Со своим функционалом. Значит надо создавать такой класс. Назовем его, например, MyTesttube. Любое моделирование разбивает непрерывные процессы на дискретные шаги. Поэтому разделим модель пространства пробирки на квадратные ячейки, в которых будут находится и передвигаться микроорганизмы.

Есть различные типы микроорганизмов. Они имеют различные размеры и занимают определенные ячейки пробирки. При этом любая ячейка может быть занята только одним микроорганизмом. Микроорганизмы передвигаются. Каждый по своему алгоритму.

Возможна при передвижении попытка одного из них перейти на место уже занятое другим. Это, конечно, не допустимо. Эта коллизии может разрешаться при моделировании различными способами. Можно, например, для такого микроорганизма пропустить передвижение на данном ходе (итерации). Это выглядит естественно – как в жизни: если мы с кем-то столкнулись, то замираем на время. Можно повторить попытку движения в другом направлении. Хотя здесь есть опасность… (подумайте в чем опасность).

Микроорганизмы так же могут по своим правилам размножаться и погибать со временем.

Т.к. каждый микроорганизм живет по своим правилам, естественно, надо для каждого из них создавать свой класс. Но… Обратим внимание на то, что параметры и функциональность различных микроорганизмов во многом тождественны, а именно: все они имеют некие размеры, все находятся в каких-то определенных ячейках пробирки, все они двигаются, размножаются, погибают. Т.е. у них очень много общих признаков и действий. Значит с точки зрения реализации целесообразно создать некий базовый класс, который содержит эти общие для них элементы. Этот базовый класс будет наследоваться конкретным классом микроорганизма, а в последнем будут определены параметры, добавлена спецификаи определены алгоритмы движения, деления и гибели конкретного микроорганизма.

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

Поэтому не надо начинать сразу реализовывать все. Начните с одного выбранного микроорганизма.

В свою очередь, реализацию задачи для одного микроорганизма целесообразно тоже разбить на ряд этапов.

Для выбранного микроорганизма нужно создать отдельный класс, наследующий базовый класс. В этом классе научить его помещаться в пробирку в указанное ему место. Реализовать отображение пробирки и выбранного микроорганизма. Отладить правильность кода на этой стадии. Это нам обеспечит визуальныйконтроль корректности нашей реализации.

Далее научить микроорганизм двигаться и отображать его движение. При движении необходим контроль за тем, чтобы микроорганизм не выходил за пределы пробирки. Тут возникает принципиальный вопрос: как производить этот контроль? Кто должен реализовывать эту функцию проверки: пробирка или микроорганизм? Это достаточно сложный типичный практический вопрос, постоянно появляющийся в решении практических задач. Т.е. при наличии взаимодействия двух классов какой из них должен реализовывать это взаимодействие? Подумайте над этим, примите свое решение, представьте его преподавателю, обоснуйте свое решение и послушайте его соображения и предложения.

На этом вводную часть методических указаний можно закончить.

 

Для этого создадим следующие классы:

Базовый класс MyCell с общими для всех клеток виртуальными методами: делиться, перемещаться, отобразиться на экране.

Классы-наследники: MyAmoeba, MyBacteria, MyInfusoria. Объекты этих классов по-разному отображаются на экране, по-разному перемещаются по пробирке.

MyAmoeba имеет форму большого шара, движется быстро в случайном направлении;

MyBacteria имеет форму маленького эллипса и медленно движется в случайном направлении,

MyInfusoria – имеет прямоугольную форму и движется по прямой.

Для каждого вида микроорганизма скорость передвижения постоянна, но различна для разных видов микроорганизмов. Предлагается определять скорость движения величинами смещениями по осям за шаг. Вероятность деления и завершения жизненного цикла микроорганизма также индивидуальны для отдельного вида, но различны для разных видов.

Этап 1.

Создание пробирки,одного микроорганизма и их отображения.

Необходимо:

· Разработать класс пробирка MyTesttube, содержащий:

o поля описания границ пробирки;

o массив, содержащий объекты микроорганизмы;

o конструктор;

o метода помещения начального набора микроорганизмов;

o метода реализующий очередной шаг жизни микроорганизмов.

 

· Разработать базовый класс описания микроорганизма MyCell, содержащий:

o поля X и Y координат нахождения микроорганизма в пробирке;

o поля DXи DY – приращения координат X и Y для организации перемещения микроорганизмов при каждом шаге;

o конструктор;

o виртуальный метод перемещения микроорганизма.

o виртуальный метод визуализации микроорганизма;

 

· Разработать один из классов-наследников, например, MyAmoeba. Класс должен переопределять (override) виртуальные методы базового класса.

 

· Создать приложение, создающее 10 микроорганизмов и отображающие их на экране.

 

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

Класс пробирка MyTesttube. Удачным выглядит решение организовать отображение пробирки на базе отдельной панели. При этом конструктор в качестве формального параметра определяет объект типа панель и из него получает ее размеры по вертикали и горизонтали. Такая реализация удобна тем, что при изменении размеров и положения панели на форме автоматически можно настраивать и все остальные параметры создаваемых классов. На этом этапе можно в конструкторе и определить количество изначально задаваемых амеб.

Базовый класс MyCell очень прост – содержит выше перечисленные поля и не требующие реализации виртуальные методы.

Класс амебы MyAmoeba наследует класс MyCell. Конструктор лучше создавать с параметрами, включающими координаты положения амебы в пробирке – ведь эта характеристика амебы определяется пробиркой. А вот поля определяющие скорость и направление движения – это относится к самой амебе. Поэтому их место в этом классе.

Этап 2.

Создание, визуализация, движение микроорганизмов.

Необходимо:

· Разработать один из классов-наследников: Infusoria, Bacteria. Классы должны переопределять (override) виртуальные методы базового класса Cell.

· Создать приложение, создающее (в общем массиве) 20 разных микроорганизмов и рисующее их на экране.

· Добавить в приложение перемещение микроорганизмов.

o Определить метод перемещения для каждого из микроорганизмов

o Задать алгоритм перемещения для каждого из типов микроорганизмов. Убедиться, чтобы микроорганизмы не могли вылезти за края пробирки.

o Задать основной цикл программы, который перемещает микроорганизмы, поочередно вызывая метод перемещения для каждого из них.

o Добавить в приложение таймер, на каждое срабатывание которого исполнять цикл перемещения микроорганизмов, а также отрисовку их в новом положении.

 

Этап 3.

Реализация размножения.

· Добавить виртуальный метод деления в Cell. Определить его для классов-наследников.

· Добавить в основной цикл программы деление всех микроорганизмов.

 

Методические указания.

Метод деления рекомендуется реализовать следующим образом. Метод должен возвращать новый объект – новый микроорганизм, получившийся после деления исходного. Координаты нового микроорганизма должны несколько отличаться от координат породившего его микроорганизма (чтобы они не сливались).

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2020-12-16 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: