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

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: Yandex [Bot]


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

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