Модераторы: korob2001, ginnie

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Объектно Ориентированное Программирование, Обсуждение ООП в Perl 
:(
    Опции темы
Bulat
Дата 12.1.2010, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск

Репутация: 5
Всего: 57



Цитата(sir_nuf_nuf @  12.1.2010,  16:45 Найти цитируемый пост)
Вы считает что цвет - это свойство фигуры ?
Обычно в таких случаях в метод draw передают объект типа Canvas - то на чем происходит рисование.
А вот уже у Canvas устанавливается текущий цвет.


Я ничего не считаю. Представь себе, что я пользователь который будет использовать программу для рисования, которая пишется в данный момент.. И вот теперь, мне нужно чтобы все прямоугольники закрашивались в красный цвет, а все окружности в зеленый...

Более того, меня не интересует отдельный кусок кода, меня интересует где и как он будет находится в рамках того примера который привел korob2001.

Добавлено через 10 минут и 51 секунду
Цитата(mvsgt @  12.1.2010,  16:53 Найти цитируемый пост)
От оно как... Это Вы серьёзно написали, или в порядке разгрузки против трудового дня ? smile  Посмотрите определение термина, например,в Википедии - http://ru.wikipedia.org/wiki/%D0%9F%D0%BE%...%BD%D0%B8%D1%8F


У меня есть класс, в котором есть два поля - id, name и конструктор.. Этот класс не является ни чьим родителем и сам ни от кого ничего не наследует.. Более того, в ходе работы алгоритма вполне может быть такая ситуация, что каждый раз у меня будет создаваться не более одного объекта, экземпляра данного класса... - Где здесь полиморфизм?? Остальное я даже комментировать не буду. smile


--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
mvsgt
Дата 12.1.2010, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 209
Регистрация: 27.3.2009

Репутация: 1
Всего: 1



Цитата(Bulat @  12.1.2010,  16:55 Найти цитируемый пост)
Где здесь полиморфизм


А есть ли смысл объяснять Вам общепринятые термины и концепции?
PM MAIL   Вверх
Bulat
Дата 12.1.2010, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск

Репутация: 5
Всего: 57



Цитата(mvsgt @  12.1.2010,  17:16 Найти цитируемый пост)
А есть ли смысл объяснять Вам общепринятые термины и концепции? 


А ты попробуй  smile 



--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
mvsgt
Дата 12.1.2010, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 209
Регистрация: 27.3.2009

Репутация: 1
Всего: 1



Цитата(Bulat @  12.1.2010,  17:18 Найти цитируемый пост)
А ты попробуй  smile 


Попробовал уже - не понравилось. 
PM MAIL   Вверх
korob2001
Дата 12.1.2010, 23:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 31
Всего: 61



Цитата(Bulat @  12.1.2010,  13:55 Найти цитируемый пост)
Я ничего не считаю. Представь себе, что я пользователь который будет использовать программу для рисования, которая пишется в данный момент.. И вот теперь, мне нужно чтобы все прямоугольники закрашивались в красный цвет, а все окружности в зеленый...

Более того, меня не интересует отдельный кусок кода, меня интересует где и как он будет находится в рамках того примера который привел korob2001

Ну вообще-то, если брать во внимание именно тот код, который я привёл выше, то тут просто стоит добавить свойство color в класс Shape, так как впрниципе любая фигура может иметь цвет, либо не иметь его вовсе, т.е. быть transparent. Ну и инкапсулировать это свойство, добавив в этот же класс методы доступа getColor() и setColor(Color color). Ну и наконец использовать установленный цвет, при работе метода draw().
Цитата(Bulat @  12.1.2010,  13:55 Найти цитируемый пост)
У меня есть класс, в котором есть два поля - id, name и конструктор.. Этот класс не является ни чьим родителем и сам ни от кого ничего не наследует.. Более того, в ходе работы алгоритма вполне может быть такая ситуация, что каждый раз у меня будет создаваться не более одного объекта, экземпляра данного класса... - Где здесь полиморфизм?? Остальное я даже комментировать не буду.

А где здесь полиморфизм? Где наследование или реализация хотя бы одного интерфейса? Не знаю, как там обстаят дела с Object Pascal, но в Java у составных типов всегда есть родитель Object, собственно унаследованные от него методы и можно вызвать полиморфно, больше никаким полиморфизмом здесь  и не пахнет.


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
Bulat
Дата 13.1.2010, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск

Репутация: 5
Всего: 57



Цитата(korob2001 @  12.1.2010,  23:35 Найти цитируемый пост)
Ну вообще-то, если брать во внимание именно тот код, который я привёл выше, то тут просто стоит добавить свойство color в класс Shape, так как впрниципе любая фигура может иметь цвет, либо не иметь его вовсе, т.е. быть transparent. Ну и инкапсулировать это свойство, добавив в этот же класс методы доступа getColor() и setColor(Color color). Ну и наконец использовать установленный цвет, при работе метода draw().


ну так не интересно, либо уж мы делаем, либо не делаем. smile

Цитата(korob2001 @  12.1.2010,  23:35 Найти цитируемый пост)
А где здесь полиморфизм? Где наследование или реализация хотя бы одного интерфейса? Не знаю, как там обстаят дела с Object Pascal, но в Java у составных типов всегда есть родитель Object, собственно унаследованные от него методы и можно вызвать полиморфно, больше никаким полиморфизмом здесь  и не пахнет. 


От, ты почти пришел к тому, к чему вел я, однако и здесь слишком "легкомысленно" подошел и допустил одну неточность.. Для полиморфизма, нам необходимо, чтобы абстрактные методы не только наследовались, но и переопределялись и использовались....

и если мне не изменяет память, то ниже я перечислю все методы нашего основного метода Object

Код

Конструктор:
Object()

Методы:

    * protected Object clone() - Создает и возвращает копию этого объекта
    * protected void finalize() - Вызывается сборщиком мусора когда нет больше ссылок на объект
    * Class getClass() - Возвращает класс во время выполнения
    * int hashCode() - Возвращает hash код для объекта
    * void notify() - Возобновляет единичный поток, который ожидает на объектном мониторе
    * void notifyAll() - Возобновляет все потоки, которые ожидают на объектном мониторе
    * String toString() - Возвращает строковое представление объекта
    * void wait() - Остановка текущего потока пока другой поток не вызовет notify() или notifyAll метод для этого объекта
    * void wait(long timeout) - Остановка текущего потока на время или пока другой поток не вызовет notify() или notifyAll метод для этого объекта
    * void wait(long timeout, int nanos) - Остановка текущего потока на время или пока другой поток не вызовет notify() или notifyAll метод для этого объекта 


Вот не могу говорить за все случаи из жизни, но лично я когда работал на Java и писал как раз "коллекции" - мне не приходилось переопределять данные методы. smile 

А вообще мне очень не понравилась твоя фраза:

Цитата(korob2001 @  12.1.2010,  23:35 Найти цитируемый пост)
Не знаю, как там обстаят дела с Object Pascal, но в Java


смею напомнить, что Java многое переняла у C/С++ и лишь представила это по-своему, как впрочем и C#

И вот я представлю на твой суд очень интересную статью

http://ru.wikipedia.org/wiki/%D0%92%D0%B8%...%86%D0%B8%D1%8F

И в 120-й раз повторюсь, при понимании и осознании парадигм ООП, все же не очень хорошо опираться лишь на реализацию конкретного языка...

Обращу внимание, на данные строки из этой статьи

Код

Базовый класс может и не предоставлять реализации виртуального метода, а только декларировать его существование. 
Такие методы без реализации называются «чисто виртуальными» (калька с англ. pure virtual) или абстрактными. 
Класс, содержащий хотя бы один такой метод, тоже будет абстрактным. 
Объект такого класса создать нельзя (в некоторых языках допускается, но вызов абстрактного метода приведёт к ошибке). 
Наследники абстрактного класса должны предоставить реализацию для всех его абстрактных методов, иначе они, в свою очередь, будут абстрактными классами.


а также

Код

В некоторых языках программирования, например в Java, нет понятия виртуального метода


и кроме того

Код

Виртуальные методы — один из важнейших приёмов реализации полиморфизма.



Увы, мне пришлось потратить пару часов и эта не единственная интересная статья, которую я нашел. smile Было бы еще интересно взглянуть на VBasic, но я с ним не знаком и даже в университете не приходилось с ним сталкиваться(в отличие от C++ и Object Pascal)

Засим я расписываюсь в завершении дискуссии со своей стороны, ибо лично мне совсем не интересно обсуждать что-то с людьми, которые не то что "узко" понимают какие-то парадигмы, а просто не желают их хорошо понимать и расширять границы своих знаний, оттого и не видят тех недостатков на которые я уже давно пытаюсь открыть глаза. smile


korob2001, а учитывая что язык Java является более молодым по сравнению с тем же С/С++, Turbo Pascal/Object Pascal я вообще сомневаюсь, что реализация парадигм в данном языке наилучшая нежели в остальных... Более простая, понятная и удобная для разработчика - да, а вот лучшая ли??

Это сообщение отредактировал(а) Bulat - 13.1.2010, 16:06


--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
korob2001
Дата 13.1.2010, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 31
Всего: 61



Цитата(Bulat @  13.1.2010,  13:02 Найти цитируемый пост)
ну так не интересно, либо уж мы делаем, либо не делаем.

А что мы делаем? Ты попросил, добавить возможность изменения цвета фигуры, я всё описал. Или нужно каждый раз приводить полный код?

Цитата(Bulat @  13.1.2010,  13:02 Найти цитируемый пост)
От, ты почти пришел к тому, к чему вел я, однако и здесь слишком "легкомысленно" подошел и допустил одну неточность.. Для полиморфизма, нам необходимо, чтобы абстрактные методы не только наследовались, но и переопределялись и использовались....

Это само сабой разумеется, иначе как же мы создадим обьект? Класс унаследовавший абстрактный метод и не определивший его, может быть только абстрактным. Создавать обьекты абстрактного класса, боюсь не получится, кстати это же написано и в приведённой тобой статье.

Цитата(Bulat @  13.1.2010,  13:02 Найти цитируемый пост)
смею напомнить, что Java многое переняла у C/С++ и лишь представила это по-своему, как впрочем и C#

И вот я представлю на твой суд очень интересную статью

http://ru.wikipedia.org/wiki/%D0%92%D0%B8%...%86%D0%B8%D1%8F

И в 120-й раз повторюсь, при понимании и осознании парадигм ООП, все же не очень хорошо опираться лишь на реализацию конкретного языка...

Обращу внимание, на данные строки из этой статьи

Насчёт того, что Java перенял многое от C++, а так же и других языков, ничего против сказать не могу. Хотя, к чему было это высказывание, я так и не понял. Я действительно не знаю, как обстаят дела с ООП в Object Pascal, потому и написл отталкиваясь от Java.

Цитата(Bulat @  13.1.2010,  13:02 Найти цитируемый пост)
В некоторых языках программирования, например в Java, нет понятия виртуального метода

Зато есть понятие абстрактного метода и в куске статьи выше написано: Такие методы без реализации называются «чисто виртуальными» (калька с англ. pure virtual) или абстрактными.

Цитата(Bulat @  13.1.2010,  13:02 Найти цитируемый пост)
Виртуальные методы — один из важнейших приёмов реализации полиморфизма.

Никто с этим и не спорил, даже пример приводился с абстрактными методом.
Цитата(Bulat @  13.1.2010,  13:02 Найти цитируемый пост)
Засим я расписываюсь в завершении дискуссии со своей стороны, ибо лично мне совсем не интересно обсуждать что-то с людьми, которые не то что "узко" понимают какие-то парадигмы, а просто не желают их хорошо понимать и расширять границы своих знаний, оттого и не видят тех недостатков на которые я уже давно пытаюсь открыть глаза.

Я тоже считаю, что лучше закончить это обсуждение, особенно когда человек вообще не желает прислушаться, даже если ему говорит об этом не один человек. Плохо так же то, что у тебя просыпается желание кого-то, на чём-то "подловить". smile Что бы заниматься этим, нужно самому знать тему от и до. Кстати, Object - это класс, а не метод.

Это сообщение отредактировал(а) korob2001 - 13.1.2010, 19:40


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
Logo
Дата 28.3.2012, 01:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 694
Регистрация: 22.7.2008

Репутация: 3
Всего: 10



Пол года на перле не програмировал... забыл как называется, подскажите.
Модуль для очистки пакета класса от экспортируемых функций из других модулей, что бы они не были методами.
Поиск не помогает.
PM MAIL   Вверх
Pfailed
Дата 28.3.2012, 05:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 933
Регистрация: 19.7.2009

Репутация: 22
Всего: 39



namespace::clean?


--------------------
PM MAIL   Вверх
Logo
Дата 2.4.2012, 02:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 694
Регистрация: 22.7.2008

Репутация: 3
Всего: 10



Да, походу, он, правда странно что его нет в стандартной поставке.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1633 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.