18.02.2015, 00:25 | #21 |
Дмитрий Ерин
|
Кстати про борщ)
Много лет назад объяснял девушке на подобном примере азы С++. Ей помогло, может быть для вас тоже что-то прояснится (адаптировано под Х++): 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). |