Quest3D - Русскоязычное сообщество

Quest3D => Программирование => Тема начата: DimiS от 18 Сентября 2009, 17:40:57



Название: Quest3D OO для начинающих
Отправлено: DimiS от 18 Сентября 2009, 17:40:57
В этой теме я постараюсь систематизировано описать всё, что может понадобится новичку чтоб начать использовать квестовое ОО. Посты будут добавляться постепенно, по мере появления у меня свободного времени и вдохновения :) Вы можете оставлять тут комментарии с вопросами, которые остались не понятны, не полностью раскрыты, или идеями о том что стоило бы изменить.


Что такое ООП, и зачем оно нужно

Объектно ориентированное программирование (ООП) придумано давно, и его основной целью была систематизация кода, представление его в форме, удобной для восприятия человеком. Фактически это цель всех языков программирования, даже ассемблера :) Но ООП это такой способ программирования и применяться может в любом языке. В некоторых языках есть средства для упрощения применения этого способа. С версии 4.0 такие средства появились и в квесте.

Это я всё к тому, что использование квестовой системы ОО совершенно не обязательно. ВСЁ, что можно создать используя ОО, можно создать и без его использования. Разница будет только в удобности разработки кода и внесения изменений в такой код. И естественно таких результатов можно добиться не сразу.

Один из принципов ООП заключается в рассмотрении всех данных с которыми оперирует программа как свойств определённых объектов, а всех функций с этими данными как методов тех объектов, свойствами которых являются эти данные. Это в общих чертах :)

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

Допустим у вас есть два разных шкафа, но они оба обладают такими свойствами и методами. Их можно описать именно такой совокупность свойств и методов. Это называется общим для этих объектов интерфейсом. Мы обозначаем этот интерфейс словом "шкаф", и когда употребляем это слово в разговоре -- все сразу понимают, о чём речь.

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

Створки одного из шкафов зеркальны, т.е. его можно использовать как зеркало. У него есть такие же свойства, как и у других зеркал -- высота и ширина зеркальной поверхности, качество отражения. Получается что этот объект содержит сразу два интерфейса -- "шкаф" и "зеркало". В языках высокого уровня это назвали бы множественным наследованием, но в нашем случае и наследования то как такового почти нет :) Поэтому будем называть это просто использованием нескольких интерфейсов.

Где-то там, на заводе, такие шкафы клепают на конвеере. Они все одинаковые, сделаны по одному и тому же шаблону. Тип шкафа называют ещё моделью, программисты называют это классом объекта. В таком контексте объект ещё называют экземпляром класса. Именно класс задаёт какой перечень интерфейсов будет в себя включать объект. Класс определяет каковы будут значения констант, таких как размер и цвет шкафа. Переопределение методов тоже происходит при объявлении класса.

В чём же различие между двумя экземплярами одного и того же шкафа? Кроме разного места нахождения, это ещё и разное содержимое. Ведь содержание в себе других объектов -- это и есть основное назначение шкафа, и все его методы направлены на обеспечение доступа к содержимому, возможность сортировки(полочки). Содержимое можно назвать динамическим свойством интерфейса, т.е. динамически изменяемым. Хотя сами по себе, вещи которые складываются в шкаф -- тоже объекты.

Вот такой вот пример, в нём я постарался объяснить основные понятия, с которыми мы будем работать в дальнейшем


Название: Re: Quest3D OO для начинающих
Отправлено: cashis от 18 Сентября 2009, 20:11:49
Начало мне нравится продолжай в том же духе ! Спасибо !


Название: Re: Quest3D OO для начинающих
Отправлено: Dr.Akula от 19 Сентября 2009, 07:03:22
Шкафы зделанные на OOП действительно гораздо удобнее  ;D


Название: Re: Quest3D OO для начинающих
Отправлено: DimiS от 19 Сентября 2009, 08:17:32
яхз, но шкафы заполониле :D


Название: Re: Quest3D OO для начинающих
Отправлено: barmadjar от 22 Сентября 2009, 13:11:15
Да, начало отличное!
Нутром чую, что ОО необходимо освоить, но не знаю как подступиться. Начинаю смотреть примеры с использованием ОО и запутываюсь окончательно, понимая, что не хватает теоретической базы.