Объектно-ориентированное программирование
Описание |
Объектно-ориентированное программирование — это одна из парадигм разработки программного обеспечения. Программы состоят из объектов - сущностей со своими:
|
---|---|
Область знаний | Информатика |
Авторы | Kay, Lieberman |
Поясняющее видео | |
Близкие понятия | Класс, Наследование, полиморфизм, Инкапсуляция, Делегирование |
Среды и средства для освоения понятия | Smalltalk, etoys, Java, Alice, Squeak, Snap! |
Объекты
Технически ООП основывается на трех принципах:
- Передача сообщений: любой объект может отправить сообщение другому объекту.
- Локальное состояние: каждый объект может запоминать важную историю вычислений.
- Наследование: позволяет создавать новые объекты на основе существующих, чтобы избежать дублирования методов.
- Объект помнит свою историю у него есть свои личные переменные
- Объект (спрайт Scratch Snap!) может обмениваться сообщениями с другими объектами. Направленно передать сообщение другому объекту
- Наследование - передача своих свойств и методов от одного объекта своим потомкам. В Snap! - клоны могут быть не только временными, но и постоянными
Свойства
Каждый спрайт в Snap! является объектом, у которого есть его собственные локальные переменные и его собственные скрипты (методы). Спрайты Snap! являются данными первого класса. Их можно создавать и удалять с помощью скрипта, хранить в переменных или списках, а также отправлять сообщения индивидуально. Дети спрайта могут наследовать локальные переменные, методы (локальные процедуры спрайта) и другие атрибуты (например, позицию по оси x). Основным способом, с помощью которого программы получают доступ к спрайтам, является блок "my reporter". У него есть выпадающее меню для выбора, которое при нажатии открывает доступ ко всем спрайтам и сцене.
- my(self) возвращает один спрайт, который задает вопрос.
- my(other sprites) возвращает список всех спрайтов, кроме того, который задает вопрос.
- my(neightbors): возвращает список всех спрайтов, находящихся рядом со спрайтом, задающим вопрос — например, тех, которые могут столкнуться с ним.
Методы
Примеры и рецепты
Диалог Лопахина и Дуняши
Животные и птицы
Проект, внутри которого хранятся изображения птиц и животных - пока они ничего не делают, только думают о себе и все они связаны с одним спрайтом
- ? Могут ли они думать о чем-то другом?
Мысли бабочки
Пример из модели Flocking (model)
- у каждого агента есть знание, что есть и другие клоны и он может к ним обратиться
- агент использует для отбора фильтр: расстояние до другого агента должно быть меньше указанного visual_range
- в переменную "видимые соседи" помещаются все клоны, находящиеся поблизости
Литература
- Lieberman, Henry
- Using Prototypical Objects to Implement Shared Behavior in Object Ori-ented Systems, 1986,