Показать сообщение отдельно
Старый 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).