Текущее время: Пн, июл 28 2025, 15:27

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 14 ] 
Автор Сообщение
 Заголовок сообщения: вопрос по ООП
СообщениеДобавлено: Ср, авг 04 2010, 15:57 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Чт, дек 07 2006, 16:32
Сообщения: 131
Откуда: Украина, Мариуполь
Пол: Мужской
Здравствуйте уважаемые коллеги!
Возникла задача сделать механизм выгрузки кучи различных выборок в локальные файлы. Способ получения данных для выборок один и то же. Отличаются они только структурой и преобразованием данных которые потом будут выгружаться. Решил применить ООП. То есть имеем базовый класс который реализует выборку данных а так же сохранение данных в файл, и есть классы наследники которые отличаются только реализацией метода преобразования данных из полученной выборки и структурой выходной таблицы для выгрузки. Для наглядности я сделал пример, который размещен ниже. Здесь есть базовый класс cl_template и два наследника cl_select1 и cl_select2.
Проблема в методе выгрузки в файл. Т.к. структура таблицы out_tab неизвестна в базовом классе я написал метод save_data_to_file который сохраняет в файл любую стандартную таблицу. А наследники имеют метод save_to_file который вызывает этот метод передавая в качестве параметра их персональные таблиц out_tab. Этот метод приходиться дублировать во всех наследниках, что неудобно :(
А хорошо было бы определить out_tab сразу в базовом классе но как-то так неявно что ли? А ее структуру уточнять в наследника. Тогда не нужен был бы метод save_to_file в каждом наследнике - достаточно было бы метод базового класса save_data_to_file чтобы все выгрузилось. Или может быть есть альтернативный вариант решения?
Надеюсь я понятно изложил мысль. Заранее благодарен. Прошу прощения за длинное повествование :)

Вот код пример:
Code:
*&---------------------------------------------------------------------*
*& Report  ZCLASS_TEST                                                 *
*&                                                                     *
*&---------------------------------------------------------------------*
*&                                                                     *
*&                                                                     *
*&---------------------------------------------------------------------*

REPORT zclass_test.

*----------------------------------------------------------------------*
*       CLASS cl_template DEFINITION
*----------------------------------------------------------------------*
* базовый класс который умеет выбирать данные в общем виде
* и сохранять их в файл
*----------------------------------------------------------------------*
CLASS cl_template DEFINITION ABSTRACT.
  PUBLIC SECTION.
    METHODS:
      add_data IMPORTING connid TYPE s_conn_id,
      transfer_data ABSTRACT.
  PROTECTED SECTION.
    METHODS:
      save_data_to_file IMPORTING out_tab TYPE STANDARD TABLE.
    DATA:
          s_spfli TYPE spfli,
          file_name TYPE string.
ENDCLASS.                    "cl_template DEFINITION

*----------------------------------------------------------------------*
*       CLASS cl_template IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS cl_template IMPLEMENTATION.
  METHOD save_data_to_file.
    DATA:
          path TYPE string.

    CONCATENATE 'D:\temp\' file_name '.txt' INTO path.

    CALL FUNCTION 'GUI_DOWNLOAD'
      EXPORTING
        filename              = path
        filetype              = 'ASC'
        write_field_separator = 'X'
        trunc_trailing_blanks = 'X'
        write_lf              = 'X'
        codepage              = '1504'
      TABLES
        data_tab              = out_tab.
    IF sy-subrc <> 0.
      MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
              WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDIF.
  ENDMETHOD.                    "save_data_to_file
  METHOD add_data.
    SELECT * FROM spfli INTO CORRESPONDING FIELDS OF s_spfli WHERE connid = connid.
      CALL METHOD transfer_data.
    ENDSELECT.
  ENDMETHOD.                    "add_data
ENDCLASS.                    "cl_template IMPLEMENTATION

*----------------------------------------------------------------------*
*       CLASS cl_select1 DEFINITION
*----------------------------------------------------------------------*
* класс который преобразует данные по способу № 1
*----------------------------------------------------------------------*
CLASS cl_select1 DEFINITION INHERITING FROM cl_template.
  PUBLIC SECTION.
    METHODS:
      constructor,
      transfer_data REDEFINITION,
      save_to_file.
  PROTECTED SECTION.
    TYPES:
      BEGIN OF out_tab_t,
        airpfrom TYPE spfli-airpfrom,
        count TYPE i,
      END OF out_tab_t.
    DATA:
         out_tab TYPE TABLE OF out_tab_t INITIAL SIZE 0,
         out_tab_wa LIKE LINE OF out_tab.
ENDCLASS.                    "cl_select1 DEFINITION

*----------------------------------------------------------------------*
*       CLASS cl_select1 IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS cl_select1 IMPLEMENTATION.
  METHOD constructor.
    file_name = 'select1'.
  ENDMETHOD.                    "constactor
  METHOD transfer_data.
    MOVE-CORRESPONDING s_spfli TO out_tab_wa.
    out_tab_wa-count = 1.
    COLLECT out_tab_wa INTO out_tab.
  ENDMETHOD.                    "transfer_data
  METHOD save_to_file.
    CALL METHOD save_data_to_file
      EXPORTING
        out_tab = out_tab.
  ENDMETHOD.                    "save_to_file
ENDCLASS.                    "cl_select1 IMPLEMENTATION

*----------------------------------------------------------------------*
*       CLASS cl_select1 DEFINITION
*----------------------------------------------------------------------*
* класс который преобразует данные по способу № 2
*----------------------------------------------------------------------*
CLASS cl_select2 DEFINITION INHERITING FROM cl_template.
  PUBLIC SECTION.
    METHODS:
      constructor,
      transfer_data REDEFINITION,
      save_to_file.
  PROTECTED SECTION.
    TYPES:
    BEGIN OF out_tab_t,
      airpfrom TYPE spfli-airpfrom,
      airpto TYPE spfli-airpto,
      count TYPE i,
    END OF out_tab_t.
    DATA:
      out_tab TYPE TABLE OF out_tab_t INITIAL SIZE 0,
      out_tab_wa LIKE LINE OF out_tab.
ENDCLASS.                    "cl_select1 DEFINITION

*----------------------------------------------------------------------*
*       CLASS cl_select1 IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS cl_select2 IMPLEMENTATION.
  METHOD constructor.
    file_name = 'select2'.
  ENDMETHOD.                    "constactor
  METHOD transfer_data.
    MOVE-CORRESPONDING s_spfli TO out_tab_wa.
    out_tab_wa-count = 1.
    APPEND out_tab_wa TO out_tab.
  ENDMETHOD.                    "transfer_data
  METHOD save_to_file.
    CALL METHOD save_data_to_file
      EXPORTING
        out_tab = out_tab.
  ENDMETHOD.                    "save_to_file
ENDCLASS.                    "cl_select1 IMPLEMENTATION

DATA:
      select1 TYPE REF TO cl_select1,
      select2 TYPE REF TO cl_select2.


INITIALIZATION.
  CREATE OBJECT select1.

  CALL METHOD select1->add_data
    EXPORTING
      connid = 1984.

  CALL METHOD select1->save_to_file.

  CREATE OBJECT select2.

  CALL METHOD select2->add_data
    EXPORTING
      connid = 1984.

  CALL METHOD select2->save_to_file.

_________________
я в пути и нет у меня никаких тревог и забот. одинокая лодка моя рассекая волну плывет...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопрос по ООП
СообщениеДобавлено: Ср, авг 04 2010, 16:07 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
Если правильно понял, то что мешает вх. параметр с таблицей для выгрузки для метода save_data_to_file базового класса определить как ANY TABLE?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: вопрос по ООП
СообщениеДобавлено: Ср, авг 04 2010, 16:11 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Чт, дек 07 2006, 16:32
Сообщения: 131
Откуда: Украина, Мариуполь
Пол: Мужской
все таки я сам немного запутался и возможно неверно выразился в конце поста. я хочу чтобы метод сохранения в файл был только в базовом классе и вообще без параметров. он должен сохранять таблицу определенную как атрибут базового класса но структура этой таблицы в базовом классе известна быть не должна. ее уточнят наследники. что-то типа перекрытого метода чтоли... это можно реализовать в принципе?

_________________
я в пути и нет у меня никаких тревог и забот. одинокая лодка моя рассекая волну плывет...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопрос по ООП
СообщениеДобавлено: Ср, авг 04 2010, 16:15 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
r00xus написал:
все таки я сам немного запутался и возможно неверно выразился в конце поста. я хочу чтобы метод сохранения в файл был только в базовом классе и вообще без параметров. он должен сохранять таблицу определенную как атрибут базового класса но структура этой таблицы в базовом классе известна быть не должна. ее уточнят наследники. что-то типа перекрытого метода чтоли... это можно реализовать в принципе?

Делайте атрибут ссылкой на данные (ref to data). В наследниках создавайте с нужным типом (create data)

_________________
"После" - не значит "вследствие"


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопрос по ООП
СообщениеДобавлено: Ср, авг 04 2010, 16:18 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Чт, дек 07 2006, 16:32
Сообщения: 131
Откуда: Украина, Мариуполь
Пол: Мужской
это я пробовал, но в таком случае не заработает стандартный ФМ выгрузки GUI_DOWNLOAD. у него data_tab должна быть внутренняя таблица :(

_________________
я в пути и нет у меня никаких тревог и забот. одинокая лодка моя рассекая волну плывет...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопрос по ООП
СообщениеДобавлено: Ср, авг 04 2010, 16:27 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
r00xus написал:
это я пробовал, но в таком случае не заработает стандартный ФМ выгрузки GUI_DOWNLOAD. у него data_tab должна быть внутренняя таблица :(

Почему не заработает? Оператор Assign должен помочь.
И если вы делаете всём классово, то не используйте данный ФМ, используйте CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD

_________________
"После" - не значит "вследствие"


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопрос по ООП
СообщениеДобавлено: Ср, авг 04 2010, 16:32 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
Как вариант: сделайте атрибут ANY TABLE в базовом классе и заполняйте его в методах наследников.

sy-uname, там внутри кроме вызова ФМа ничего нет. Если писать на объектах - то и исключения нужно использовать объектные, ИМХО. Т.е. лучше свою обертку написать.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: вопрос по ООП
СообщениеДобавлено: Ср, авг 04 2010, 16:48 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Чт, дек 07 2006, 16:32
Сообщения: 131
Откуда: Украина, Мариуполь
Пол: Мужской
Пономарев Артем написал:
Как вариант: сделайте атрибут ANY TABLE в базовом классе и заполняйте его в методах наследников.

sy-uname

хм. вот это бы подошло но атрибут создать не получается! я делаю так
Code:
out_tab TYPE ANY TABLE.

компилятор матюкается 'You cannot use generic type for fields. The types ANY and INSEX are generic' т.е динамический тип использовать нельзя :(
может объявляю неправильно? :oops:

_________________
я в пути и нет у меня никаких тревог и забот. одинокая лодка моя рассекая волну плывет...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопрос по ООП
СообщениеДобавлено: Ср, авг 04 2010, 17:45 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
Тьфу, вечно забываю про это ограничение :)
Да, в атрибутах такое определение типа не пройдет. Придется делать как посоветовал sy-uname.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: вопрос по ООП
СообщениеДобавлено: Чт, авг 05 2010, 10:14 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Чт, дек 07 2006, 16:32
Сообщения: 131
Откуда: Украина, Мариуполь
Пол: Мужской
Сделал как сказал sy-uname. В итоге получилось уйти от дублирования метода save_to_file в наследниках, однако нарисовалась куча кода в конструкторах наследников и метод transfer_data теперь выглядит тоже не вполне тривиально... уж не знаю стало ли лучше... :D

Code:
*&---------------------------------------------------------------------*
*& Report  ZCLASS_TEST                                                 *
*&                                                                     *
*&---------------------------------------------------------------------*
*&                                                                     *
*&                                                                     *
*&---------------------------------------------------------------------*

REPORT zclass_test.

*----------------------------------------------------------------------*
*       CLASS cl_template DEFINITION
*----------------------------------------------------------------------*
* базовый класс который умеет выбирать данные в общем виде
* и сохранять их в файл
*----------------------------------------------------------------------*
CLASS cl_template DEFINITION ABSTRACT.
  PUBLIC SECTION.
    METHODS:
      add_data IMPORTING connid TYPE s_conn_id,
      transfer_data ABSTRACT,
      save_data_to_file.
  PROTECTED SECTION.
    DATA:
          s_spfli TYPE spfli,
          file_name TYPE string,
          out_tab TYPE REF TO data,
          out_tab_wa TYPE REF TO data.
ENDCLASS.                    "cl_template DEFINITION

*----------------------------------------------------------------------*
*       CLASS cl_template IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS cl_template IMPLEMENTATION.
  METHOD save_data_to_file.
    DATA:
          path TYPE string.
*   преобразование out_tab через assign к типу стандартной таблицы
    FIELD-SYMBOLS: <f> TYPE STANDARD TABLE.
    ASSIGN out_tab->* TO <f>.

    CONCATENATE 'D:\temp\' file_name '.txt' INTO path.

    CALL FUNCTION 'GUI_DOWNLOAD'
      EXPORTING
        filename              = path
        filetype              = 'ASC'
        write_field_separator = 'X'
        trunc_trailing_blanks = 'X'
        write_lf              = 'X'
        codepage              = '1504'
      TABLES
        data_tab              = <f>.
    IF sy-subrc <> 0.
      MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
              WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDIF.
  ENDMETHOD.                    "save_data_to_file
  METHOD add_data.
    SELECT * FROM spfli INTO CORRESPONDING FIELDS OF s_spfli WHERE connid = connid.
      CALL METHOD transfer_data.
    ENDSELECT.
  ENDMETHOD.                    "add_data
ENDCLASS.                    "cl_template IMPLEMENTATION

*----------------------------------------------------------------------*
*       CLASS cl_select1 DEFINITION
*----------------------------------------------------------------------*
* класс который преобразует данные по способу № 1
*----------------------------------------------------------------------*
CLASS cl_select1 DEFINITION INHERITING FROM cl_template.
  PUBLIC SECTION.
    METHODS:
      constructor,
      transfer_data REDEFINITION.
  PROTECTED SECTION.
    TYPES:
      BEGIN OF out_tab_t,
        airpfrom TYPE spfli-airpfrom,
        count TYPE i,
      END OF out_tab_t.
ENDCLASS.                    "cl_select1 DEFINITION

*----------------------------------------------------------------------*
*       CLASS cl_select1 IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS cl_select1 IMPLEMENTATION.
  METHOD constructor.
    CREATE DATA out_tab TYPE STANDARD TABLE OF out_tab_t.
    CREATE DATA out_tab_wa TYPE out_tab_t.
    file_name = 'select1'.
  ENDMETHOD.                    "constactor
  METHOD transfer_data.
    FIELD-SYMBOLS:
                   <tab> TYPE STANDARD TABLE,
                   <tab_wa> TYPE out_tab_t.

    ASSIGN out_tab->* TO <tab>.
    ASSIGN out_tab_wa->* TO <tab_wa>.

    MOVE-CORRESPONDING s_spfli TO <tab_wa>.
    <tab_wa>-count = 1.
    COLLECT <tab_wa> INTO <tab>.
  ENDMETHOD.                    "transfer_data
ENDCLASS.                    "cl_select1 IMPLEMENTATION

*----------------------------------------------------------------------*
*       CLASS cl_select1 DEFINITION
*----------------------------------------------------------------------*
* класс который преобразует данные по способу № 2
*----------------------------------------------------------------------*
CLASS cl_select2 DEFINITION INHERITING FROM cl_template.
  PUBLIC SECTION.
    METHODS:
      constructor,
      transfer_data REDEFINITION.
  PROTECTED SECTION.
    TYPES:
    BEGIN OF out_tab_t,
      airpfrom TYPE spfli-airpfrom,
      airpto TYPE spfli-airpto,
      count TYPE i,
    END OF out_tab_t.
ENDCLASS.                    "cl_select1 DEFINITION

*----------------------------------------------------------------------*
*       CLASS cl_select1 IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS cl_select2 IMPLEMENTATION.
  METHOD constructor.
    CREATE DATA out_tab TYPE STANDARD TABLE OF out_tab_t.
    CREATE DATA out_tab_wa TYPE out_tab_t.
    file_name = 'select2'.
  ENDMETHOD.                    "constactor
  METHOD transfer_data.
    FIELD-SYMBOLS:
                   <tab> TYPE STANDARD TABLE,
                   <tab_wa> TYPE out_tab_t.

    ASSIGN out_tab->* TO <tab>.
    ASSIGN out_tab_wa->* TO <tab_wa>.

    MOVE-CORRESPONDING s_spfli TO <tab_wa>.
    <tab_wa>-count = 1.
    APPEND <tab_wa> TO <tab>.
  ENDMETHOD.                    "transfer_data
ENDCLASS.                    "cl_select1 IMPLEMENTATION

DATA:
      select1 TYPE REF TO cl_select1,
      select2 TYPE REF TO cl_select2.


INITIALIZATION.
  CREATE OBJECT select1.

  CALL METHOD select1->add_data
    EXPORTING
      connid = 1984.

  CALL METHOD select1->save_data_to_file.

  CREATE OBJECT select2.

CALL METHOD select2->add_data
    EXPORTING
      connid = 1984.

  CALL METHOD select2->save_data_to_file.

_________________
я в пути и нет у меня никаких тревог и забот. одинокая лодка моя рассекая волну плывет...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопрос по ООП
СообщениеДобавлено: Пн, авг 09 2010, 12:28 
Младший специалист
Младший специалист

Зарегистрирован:
Чт, ноя 02 2006, 18:56
Сообщения: 78
Тогда лучше сделать как было первоначально (только без методов выгрузки в потомках)
В родительском классе объявить атрибут "MR_DATA TYPE REF TO DATA" В методах потомка, прямо в конструкторах написать
GET REFERENCE OF me->out_tab INTO me->mr_data.
А выгрузку в шаблоне делать через assign из mr_data.
Т.е. получим атрибуты данных в каждом потомке свои, со своей реализацией выбора, а в наследуемом mr_data будет у каждого лежать ссылка на свой атрибут


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопрос по ООП
СообщениеДобавлено: Пн, авг 09 2010, 19:00 
Президент
Президент

Зарегистрирован:
Пт, апр 28 2006, 22:39
Сообщения: 2514
Откуда: North Taxolina, USA
Пол: Женский
Методы-шметоды... У нас для подобных целей есть обычная routine в инклюде (можно под ФМ переделать), которая записывает внутреннюю таблицу в файл, локально или на сервере. Это, конечно, не супер-пупер технология, но работает и короче гораздо:

Code:
*&---------------------------------------------------------------------*
*&      Form  data_file_write
*&---------------------------------------------------------------------*
*       Transfer the current internal table to a file on the server
*       or on local PC
*----------------------------------------------------------------------*
*      -->P_TABNAM  - Name of internal table
*      -->P_PATH    - Pathname (directory + file)
*      -->P_LOCAL   - Path on local PC? (space = No)
*      <--P_RC      - Return code (0=success, other=fail)
*----------------------------------------------------------------------*
FORM data_file_write  USING     value(p_tabnam)
                                p_path
                                p_local
                      CHANGING  p_rc.

* Local data
  DATA: l_path TYPE string.
  FIELD-SYMBOLS: <p_itab> TYPE STANDARD TABLE,
                 <wa> TYPE ANY.

  p_rc = 4.
  ASSIGN (p_tabnam) TO <p_itab>.
  CHECK NOT <p_itab>[] IS INITIAL.

  IF p_local = 'X'.

    l_path = p_path.

    CALL FUNCTION 'GUI_DOWNLOAD'
      EXPORTING
        filename                = l_path
      TABLES
        data_tab                = <p_itab>
      EXCEPTIONS
        file_write_error        = 1
        no_batch                = 2
        gui_refuse_filetransfer = 3
        invalid_type            = 4
        no_authority            = 5
        unknown_error           = 6
        header_not_allowed      = 7
        separator_not_allowed   = 8
        filesize_not_allowed    = 9
        header_too_long         = 10
        dp_error_create         = 11
        dp_error_send           = 12
        dp_error_write          = 13
        unknown_dp_error        = 14
        access_denied           = 15
        dp_out_of_memory        = 16
        disk_full               = 17
        dp_timeout              = 18
        file_not_found          = 19
        dataprovider_exception  = 20
        control_flush_error     = 21
        OTHERS                  = 22.

    p_rc = sy-subrc.

  ELSE.

    TRY.
        OPEN DATASET p_path FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
        IF sy-subrc = 0.
          LOOP AT <p_itab> ASSIGNING <wa>.
            TRANSFER <wa> TO p_path.
          ENDLOOP.
          CLOSE DATASET p_path.
          p_rc = 0.
        ELSE.
          p_rc = sy-subrc.
        ENDIF.
      CATCH cx_sy_file_access_error.
    ENDTRY.

  ENDIF.

ENDFORM.                    " data_file_write

_________________
"One of the symptoms of an approaching nervous breakdown is the belief that one's work is terribly important." Bertrand Russell


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопрос по ООП
СообщениеДобавлено: Чт, авг 12 2010, 14:38 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Чт, дек 07 2006, 16:32
Сообщения: 131
Откуда: Украина, Мариуполь
Пол: Мужской
просите а это то здесь причем? нет штука конечно хорошая, но вопрос был не по методам выгрузки а по проектированию классов :)

_________________
я в пути и нет у меня никаких тревог и забот. одинокая лодка моя рассекая волну плывет...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: вопрос по ООП
СообщениеДобавлено: Чт, авг 12 2010, 22:12 
Президент
Президент

Зарегистрирован:
Пт, апр 28 2006, 22:39
Сообщения: 2514
Откуда: North Taxolina, USA
Пол: Женский
r00xus написал:
просите а это то здесь причем? нет штука конечно хорошая, но вопрос был не по методам выгрузки а по проектированию классов :)

Ваш пост:
Цитата:
Возникла задача сделать механизм выгрузки кучи различных выборок в локальные файлы. <...>Или может быть есть альтернативный вариант решения?

Я привела альтернативный вариант решения. Извините, если если кого обидела невольно.

На практике, к сожалению, мне нередко встречались случаи, когда программисты делали разработку таким образом, чтобы исключительно потешить самолюбие (ну или иметь возможность добавить лишнюю строчку в ?), в то время как абсолютно того же результата можно было достигнуть проще и дешевле. Подход "ООП ради ООП" ("я дерусь потому, что я дерусь") не всегда оптимален IMHO.

_________________
"One of the symptoms of an approaching nervous breakdown is the belief that one's work is terribly important." Bertrand Russell


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 14 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB