Объектно-ориентированное программирование

Материал из Поле цифровой дидактики


Описание Paret_alonzo.jpg

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

  1. данными в виде полей (атрибуты или свойства)
  2. и набором действий - процедур (методы ).
Область знаний Информатика
Авторы Kay, Lieberman
Поясняющее видео
Близкие понятия Класс, Наследование, полиморфизм, Инкапсуляция, Делегирование
Среды и средства для освоения понятия Smalltalk, etoys, Java, Alice, Squeak, Snap!

Объекты

Технически ООП основывается на трех принципах:

  1. Передача сообщений: любой объект может отправить сообщение другому объекту.
  2. Локальное состояние: каждый объект может запоминать важную историю вычислений.
  3. Наследование: позволяет создавать новые объекты на основе существующих, чтобы избежать дублирования методов.


  1. Объект помнит свою историю у него есть свои личные переменные
    • This sprite only.png
  2. Объект (спрайт Scratch Snap!) может обмениваться сообщениями с другими объектами. Направленно передать сообщение другому объекту
    • Butterfly broadcast.png
  3. Наследование - передача своих свойств и методов от одного объекта своим потомкам. В Snap! - клоны могут быть не только временными, но и постоянными
    • Permanent clone.png

Свойства

Каждый спрайт в Snap! является объектом, у которого есть его собственные локальные переменные и его собственные скрипты (методы). Спрайты Snap! являются данными первого класса. Их можно создавать и удалять с помощью скрипта, хранить в переменных или списках, а также отправлять сообщения индивидуально. Дети спрайта могут наследовать локальные переменные, методы (локальные процедуры спрайта) и другие атрибуты (например, позицию по оси x). Основным способом, с помощью которого программы получают доступ к спрайтам, является блок "my reporter". У него есть выпадающее меню для выбора, которое при нажатии открывает доступ ко всем спрайтам и сцене.

  1. my(self) возвращает один спрайт, который задает вопрос.
  2. my(other sprites) возвращает список всех спрайтов, кроме того, который задает вопрос.
  3. my(neightbors): возвращает список всех спрайтов, находящихся рядом со спрайтом, задающим вопрос — например, тех, которые могут столкнуться с ним.

Методы

Примеры и рецепты

Диалог Лопахина и Дуняши


Животные и птицы

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

? Могут ли они думать о чем-то другом?


Мысли бабочки


Пример из модели Flocking (model)

  • у каждого агента есть знание, что есть и другие клоны и он может к ним обратиться
  • агент использует для отбора фильтр: расстояние до другого агента должно быть меньше указанного visual_range
  • в переменную "видимые соседи" помещаются все клоны, находящиеся поблизости



Paret alonzo.jpg


Литература

Lieberman, Henry
Using Prototypical Objects to Implement Shared Behavior in Object Ori-ented Systems, 1986,