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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 03.02.2004, 16:30   #1  
Dubinski Serguei is offline
Dubinski Serguei
Участник
 
18 / 10 (1) +
Регистрация: 05.12.2003
Адрес: Москва
Абстрактные методы
Имеем некую иерархию классов

class1->class2

У каждого класса определен метод

void calculate()
{
... /* любой код*/
}

У class1 есть метод

void init()
{
this.calculate();
}

Вопрос: каким образом будет выглядеть последовательность вызова методов?
(я пропускаю вызов конструкторов и деструкторов)

static void job1(Args _args)
{
class2 cl2;
cl2 = new class2();
cl2.init();
}

class2\init();
class1\init();
class1\calculate();

или

class2\init();
class1\init();
class2\calculate();

Нужно ли для второго случая объявлять метод calculate() как abstract у первого класса?
Старый 03.02.2004, 17:02   #2  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Цитата:
class2\init();
class1\init();
class1\calculate();

или

class2\init();
class1\init();
class2\calculate();
Если не ошибаюсь, то второе.
Старый 03.02.2004, 17:09   #3  
france is offline
france
Участник
 
159 / 11 (1) +
Регистрация: 24.11.2003
Адрес: Москва
кажись
class2\init();
class1\init();
class1\calculate();
при условии, что class2 не переопределяет метод calculate()
Старый 03.02.2004, 17:13   #4  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Цитата:
при условии, что class2 не переопределяет метод calculate()
Цитата:
У каждого класса определен метод

void calculate()
{
... /* любой код*/
}
Старый 03.02.2004, 17:14   #5  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Кстати такие вопросы быстрее проверить, чем ждать ответа на форуме...
Старый 03.02.2004, 17:29   #6  
Dubinski Serguei is offline
Dubinski Serguei
Участник
 
18 / 10 (1) +
Регистрация: 05.12.2003
Адрес: Москва
Цитата:
Изначально опубликовано Андре
Кстати такие вопросы быстрее проверить, чем ждать ответа на форуме...
это как раз и понятно. но у начинающего программиста, тем более если его насильно пересадили с одноэса на Х++, такие вещи вызывают непонимание. И где же ему набраться опыта, как не на форумах. Я потратил время на осознание того, что классы-родители могут вызвать методы класса-потомка через механизм абстрактных методов и хотел поделиться этим на форуме. Может я ошибся форумом - поправьте меня пожалуйста. Я, например, нашел здесь много интересного для себя. И, надеюсь, эта информация тоже будет кому-нибудь полезной.

ЗЫ: лично у себя я заметил интересную особенность. как только я задаю вопрос на форуме, практически сразу ко мне приходит "озарение" в виде ответа, и становится ужасно стыдно за себя, что не "дожал" сам и обратился запомощью.
Старый 03.02.2004, 17:32   #7  
france is offline
france
Участник
 
159 / 11 (1) +
Регистрация: 24.11.2003
Адрес: Москва
Цитата:
Изначально опубликовано Андре

У каждого класса определен метод
void calculate()
:-) упс... сорри, упустил.
тада согласен с тобой..
и с тем, что быстрее проверить))..
Старый 03.02.2004, 17:44   #8  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Цитата:
но у начинающего программиста, тем более если его насильно пересадили с одноэса на Х++, такие вещи вызывают непонимание. И где же ему набраться опыта, как не на форумах.
Сергей, как я понимаю в одном офисе сидим - решить такие вопросы одним звонком гораздо быстрее
Старый 03.02.2004, 17:50   #9  
Dubinski Serguei is offline
Dubinski Serguei
Участник
 
18 / 10 (1) +
Регистрация: 05.12.2003
Адрес: Москва
Цитата:
Изначально опубликовано Андре


Сергей, как я понимаю в одном офисе сидим - решить такие вопросы одним звонком гораздо быстрее
знаешь, я себя не очень уверенно чуствую, когда вам надоедаю со своими вопросами. У вас там дел невпроворот, а я тут с такими пустяками лезу )))

А вообще я понял. Абстрактными методами мы пользуемся, если класс-потомок должен ОБЯЗАТЕЛЬНО переопределить какой-нибудь метод. Например, в RunBaseReport есть абстрактный метод lastValueElementName, в котором нужно вернуть имя отчета.
Старый 03.02.2004, 17:53   #10  
france is offline
france
Участник
 
159 / 11 (1) +
Регистрация: 24.11.2003
Адрес: Москва
Цитата:
Изначально опубликовано Dubinski Serguei

если его насильно пересадили с одноэса на Х++,
кто б меня насильно пересадил за X++)))
Если бы насильно после Х++ пересадили за 1С - эт было бы хуже))..

Цитата:
Изначально опубликовано Dubinski Serguei

Я, например, нашел здесь много интересного для себя. И, надеюсь, эта информация тоже будет кому-нибудь полезной.
хороший вопрос)).. не для асов ООП, конечно. Но, когда только лишь теоретические знания про ООП, или же полученные от Delphi - то вопрос заставляет призадуматься)).
Старый 03.02.2004, 17:56   #11  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Цитата:
Абстрактными методами мы пользуемся, если класс-потомок должен ОБЯЗАТЕЛЬНО переопределить какой-нибудь метод.
Я бы даже сказал не переопределить (так как абстрактный метод в Аксапте кажется не может иметь кода), а реализовать.
Можно сказать, что это аналог java-ого интерфейса - то есть мы задаем тот минимальный набор методов, которые все потомки ОБЯЗАНЫ реализовать.
Старый 03.02.2004, 17:59   #12  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Цитата:
не для асов ООП, конечно. Но, когда только лишь теоретические знания про ООП, или же полученные от Delphi - то вопрос заставляет призадуматься)).
А кстати базовые знания ООП здесь не очень то и помогают. Насколько я помню, Аксапта, Дельфи и Java - каждый чуть-чуть по своему реализуют механизм вызовов виртуальных методов - и если попробовать воспользоваться имеющимся опытом можно здорово ошибиться.
Старый 03.02.2004, 18:22   #13  
france is offline
france
Участник
 
159 / 11 (1) +
Регистрация: 24.11.2003
Адрес: Москва
Цитата:
Изначально опубликовано Андре


Можно сказать, что это аналог java-ого интерфейса - то есть мы задаем тот минимальный набор методов, которые все потомки ОБЯЗАНЫ реализовать.
так ведь и Axapta поддерживает interface&implementation...и что, все методы, описанные в интерфейсе обязательно должны быть реализованы в классе или классах?
Старый 03.02.2004, 18:30   #14  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Цитата:
и что, все методы, описанные в интерфейсе обязательно должны быть реализованы в классе или классах?
Вообще то речь шла об абстрактных методах. В этом случае - да - для того, чтобы создать экземпляр не абстрактного класса необходимо реализовать в нем все абстрактные методы его предков.

p.s. Я всего лишь провел аналогию с интерфейсом.
Старый 03.02.2004, 19:19   #15  
france is offline
france
Участник
 
159 / 11 (1) +
Регистрация: 24.11.2003
Адрес: Москва
все, спс, с абстрактными метода все понятно..
посмотрим, что будет, когда дойдет до использования на практике :-)
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Методы таблицы в DataSources (DAX4) Qaz Qwerty DAX: Программирование 2 16.06.2008 10:11
Найти display методы MrVisual DAX: Программирование 12 15.05.2007 09:53
Слетают методы на полях в датасорсе... как бороться? soin DAX: Программирование 6 17.01.2005 15:53
display-методы в группах Damn DAX: Программирование 2 15.02.2004 23:27
edit и display методы Maxim Gorbunov DAX: База знаний и проекты 4 15.01.2002 12:58
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

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