Вторник, 26 Ноября 2024, 03:15

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Наследование "на пальцах" часть 2я.
RangerДата: Четверг, 21 Ноября 2013, 14:53 | Сообщение # 1
почти ветеран
Сейчас нет на сайте
Добрый день.
Продолжая тему уважаемого seamen по поводу принципов ООП тут не могу не затронуть тему морфинга кода логики в объектах.
В C# данный принцип реализуется посредством делегатов.
Статей написано немало, а из меня плохой писатель поэтому вкратце и на пальцах:
Делегат, это назначаемый метод класса, который можно изменять по ходу выполнения программы пример псевдокода:
class груз{
public delegate void move();

public void Квадратное(){ таскаем...}
public void Круглое (){ катаем...}
move _груз;
public Go(){
_груз = new move(Квадратное);
}
}

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

Это как говорится 1я ступень.

Вторая ступень.
тут все просто. теперь едем дальше например поведение объекта нужно описать вне рамок данного класса. (классов может быть много, но не все они могут быть наследованы друг от друга. (и человек падает - разбивается, и ваза стеклянная - падает разбивается, а делать и человека и вазу родственным какому-то классу предку - абсурд) )
В этом случае достаточно вынести методы в отдельный класс и рожать делегата уже от другого класса. все очень просто. Достаточно полностью вписать имя класса, где метод описан. Главное чтобы совпадали параметры и возвращаемое значение:



Это как говорится 2я ступень.

Третья ступень.
Ну ок... собрали значит проект, напихали в него логику поведения, а что если вы делали towerDef. но все монстры ходили по прямой, а вам ввести в проект нового монстра, чтобы он не по прямой ходил, а больше кругами. А проект большой.. 50 человек делают пересобирать его не хочется. Текстуры там модели и тд. все из бандлов получается. тут все ок. А скрипты?
И тут очень пригождается возможность логику кода засунуть в DLL.

в монодевелопе создаем отдельный проект.


Пихаем следующий код туда.


устанавливаем опции


Готовый DLL складываем в assets, и все, можно пользоваться классами из DLL

Четвертая ступень.
До четвертой ступени не доковырял, но по идее dll должна подгружаться и методы экземпляров классов должны изменяться согласно загруженной DLL.

Теперь вопрос, как говорится, на рожна?
Опять таки создание и совершенствование ИИ для противников и окружения.
Можно писать интересные классы контейнеры позволяющие делать собств систему плагинов, но это уже больше для прикладного программирования

Чем могу как грится..

seamenу спасибо, что своим постом спровоцировал сначала дискуссию а потом написание моего поста.
Материалы по делегатам:
http://professorweb.ru/my/csharp/charp_theory/level10/10_1.php
http://habrahabr.ru/post/143925/
http://msdn.microsoft.com/ru-ru/library/ms173171.aspx




Сообщение отредактировал Ranger - Четверг, 21 Ноября 2013, 19:09
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг