Главная страница


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Oleg A. Paraschenko                  2:5020/400     06 Jun 2000  21:07:28
 To : All
 Subject : Re: динамическое наследование
 -------------------------------------------------------------------------------- 
 
     Привет!
 
 Aleksey Barabanov <alekseybb@mtu-net.ru> wrote in message
 news:393CE4C0.2F46FBE3@mtu-net.ru...
 
 > "Oleg A. Paraschenko" wrote:
 > >
 > [...много чего умного покоцано...]
 
 > Да, жаль что абстракция с мальчиками и девочками не покатила. Hе
 > хотелось никого впутывать в проблемы предметной области. Объяснюсь по
 > другому. Есть почтовый ящик ;))) Расположенный на удаленном
 > POP3-сервере. И есть такой-же ящик в директории на локальном диске. И с
 > тем и с другим ящиком используются одинаковые команды: Создать, прочесть
 > число писем и их размеры, прочесть заголовок письма N, прочесть
 > содержимое письма N, пометить письмо на удаление, отключиться. Вы же
 > понимаете, что внутри два эти класса реализованы совершенно по-разному.
 > Hо для вызывающей программы все выглядит идентично. Все методы имеют
 > одинаковые имена и возвращают одинаковые данные.
 
 В данном случае неважно - мальчики, девочки или pop3, imap, mbox. Программа
 должна работать с почтовым ящиком, а не с POP3-ящиком или IMAP-ящиком или
 mbox-ящиком. Для этого Вам как-то требуется ввести объект "почтовый ящик", а
 также уточнить это понятие для "pop3" и "mbox" ("imap" under construction
 :-)). Исходный вопрос был: будут ли подводные камни при уточнении с помощью
 @ISA. Ответ оказался утвердительным (все плохо). Моя версия - уточнение с
 помощью наследования ("pop3" extends "ящик", "mbox" extends "ящик") - всего
 лишь то, как бы это делал я. Как это делать правильно, может сказать только
 мастер ООП.
 
 >
 > Эта ситуация не беда. Собственно все прекрасно работает. Hо вот возникла
 > мысль, изгольнуться покруче и использовать тот факт, что два совершенно
 > разных класса имеют одинаковый интерфейс для порождения класса
 > соединяющего их схожие черты.
 
 Создатели Java, видимо, тоже с этим сталкивались. Даже слово похожее
 использовали:
 interface почтовый_ящик {
   int число_сообщений ();
   ...
 }
 class pop3 implements почтовый_ящик {
   int число_сообщений () {
     ...
   }
 }
 Специально для случая, когда классы не имеют ничего общего, кроме своего
 назначения. В Перле слова 'interface' нет. Hо оно без проблем заменяется еще
 одной записью в @ISA.
 
 > Сделать просто класс, использующий их в
 > основе, а в одноименных методах производящий ветвление это пошло.
 
 Если есть ветвление по типу объекта - это ошибка. Все надо срочно
 перепроектировать.
 
 > Это язык Ц. Я уже написал программищу 70 кило текста на Perl на языке Ц.
 > Теперь стоит задача переписать все с Perl/C на Perl/Perl.
 >
 > --
 > Aleksey Barabanov <alekseybb@mtu-net.ru>
 --- ifmail v.2.15dev5
  * Origin: St.Petersburg University (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 динамическое наследование   Aleksey Barabanov   05 Jun 2000 16:43:06 
 Re: динамическое наследование   Aleksey Barabanov   05 Jun 2000 18:27:57 
 Re: динамическое наследование   Paul Kulchenko   05 Jun 2000 23:11:54 
 Re: динамическое наследование   Aleksey Barabanov   06 Jun 2000 13:36:05 
 Re: динамическое наследование   Paul Kulchenko   07 Jun 2000 00:46:13 
 Re: динамическое наследование   Aleksey Barabanov   07 Jun 2000 15:21:29 
 Re: динамическое наследование   Oleg A. Paraschenko   06 Jun 2000 14:10:25 
 Re: динамическое наследование   Aleksey Barabanov   06 Jun 2000 16:28:51 
 Re: динамическое наследование   Oleg A. Paraschenko   06 Jun 2000 21:07:28 
 Re: динамическое наследование   Aleksey Barabanov   07 Jun 2000 15:21:32 
 Re: динамическое наследование   Aleksey Barabanov   12 Jun 2000 02:53:55 
Архивное /ru.perl/65786cb54d89.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional