AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 18.02.2015, 00:25   #21  
Ruff is offline
Ruff
Дмитрий Ерин
Аватар для Ruff
1C
 
475 / 396 (14) ++++++
Регистрация: 18.09.2003
Адрес: Тула
:)
Кстати про борщ)
Много лет назад объяснял девушке на подобном примере азы С++. Ей помогло, может быть для вас тоже что-то прояснится (адаптировано под Х++):
X++:
// Класс "Борщ" - описание рецепта приготовления борща
class Borsh {
    ...
    void addItems(Real _water, Real _kartofan, Real _svekla) // добавить ингредиенты
    {...}
    void addSalt() // посолить
    {...}
    void cook(Real _cookTime) // варить
    {...}
    void doSimple() // приготовить "стандартный" вариант (не заморачиваясь)
    {
        // Через "объект" this можно вызывать "собственные" методы
        // (то есть принадлежащие тому же экземпляру, к которому относится текущий метод)
        // This является служебной конструкцией языка, его не нужно объявлять, он доступен в любом классе 

        this.addItems(1500, 300, 200);
        this.addSalt();
        this.cook(45);
    }
}

// Используем наш класс-рецепт дважды 
public static void Job_Borsh(Args _args)
{
    // Сварить два разных экземпляра борща: "обычный" и "экспериментальный"
    Borsh   simpleBorsh = new Borsh();
    Borsh   overSaltBorsh = new Borsh();

    // обычный (все этапы готовки выполнятся "по кулинарной книге"):
    simpleBorsh.doSimple();    
    
    // экспериментальный (управляем этапами самостоятельно):
    overSaltBorsh.addItems(1500, 100, 900); // ингредиенты в "своих" пропорциях

    overSaltBorsh.addSalt(); // солить
    overSaltBorsh.addSalt(); // солить

    overSaltBorsh.cook(90); // варить

    overSaltBorsh.addSalt(); // и опять солить...
}

// А еще можно сделать класс-наследник, добавив новый ингредиент
class Borsh_Morkovka extends Borsh {
    ...
    void addMorkovka(Real _morkovka) 
    {...}
    void doSimple() // перекрыть метод класса-предка
    {        
        this.addMorkovka(150); // добавить новый ингредиент
        super(); // вызов унаследованного поведения (см. Borsh/doSimple())
    }
}
За это сообщение автора поблагодарили: Logger (1), Daiver (1), gl00mie (1), Kabardian (4), pedrozzz (2), A_BAS (1), Товарищ ♂uatr (1), Морковка (1).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
setTimeOut() не работает в классе, если экземпляр класса создан через вызов MenuFunction AR® DAX: Программирование 10 22.05.2013 16:53
Вызов метода базового класса Eldar9x DAX: Программирование 15 22.03.2008 19:10
передача курсора в два класса kitty DAX: Программирование 3 09.08.2006 13:21
Запустить метод класса loka DAX: Программирование 2 13.03.2006 15:40
Некоторые вопросы внедрения приложений. Часть 2 Михаил Ковалев DAX: Прочие вопросы 0 27.05.2002 10:43

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 15:44.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.