ПрограммированиеФорумОбщее

Линус Торвальдс ненавидит С++. А мы с вами? (25 стр)

Страницы: 124 25 26 2730 Следующая »
#360
22:05, 27 янв 2012

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

ну как же так ? есть класс Complex, есть полиморфизм для operator + ( он есть и для Complex и для int и для float ), есть инкапсуляция содержимого Complex
так что ООП очень даже есть :)

#361
22:14, 27 янв 2012

innuendo
> есть полиморфизм для operator +
Это перегрузкой в народе называют. Полиморфным поведение станет тогда, когда я Compile time не буду знать, над какими конкертно типами я совершаю операции.

Например,

class Number {...};
class Complex {...};
class Integer {...};

....
Number* foo(Number* lhs, Number* rhs) { return lhs->add(rhs); }
...
Complex a;
Integer b;

Number* r = foo(&a, &b);

Но операции над числами - фиговый пример, в общем-то

#362
22:16, 27 янв 2012

crsib
> > есть полиморфизм для operator +
> Это перегрузкой в народе называют. Полиморфным поведение станет тогда, когда я
> Compile time не буду знать, над какими конкертно типами я совершаю операции.

неа, есть статик полиморфизм, есть динамик :)

#363
22:17, 27 янв 2012

crsib
> Проблема в том, что ты не понимаешь, что в описанном тобой случае полиморфизма нет.
Ну растолкуй мне википедию. Только это ты не понимаешь.

#364
22:21, 27 янв 2012

crsib
> Это перегрузкой в народе называют.

int abs (int x)
{
 if (x<0)
 {
  return -x;
 }
 return x;
}
float abs (float x)
{
 if (x<0.0)
 {
  return -x;
 }
 return x;
}

Вот это перегрузка. Но ты не обратил внимания, что один и тот же оператор различно перегружается для разных версий одного типа, различающихся внутренним представлением данных, сохраняя при этом весь интерфейс и семантику и оба раза являясь членом. А перекрытие в потомке функции, или оператора предка при сохранении и синтаксиса, и семантики называется уже иначе.

#365
22:21, 27 янв 2012

innuendo
> неа, есть статик полиморфизм, есть динамик :)
Ну, во первых, статический полиморфизм придумал Александреску, во вторых он не об этом. То, что ты приводишь в качестве примера - перегрузка. Статическим полиморфизмом страдает (или наслаждается?) STL

atavin-ta
> Ну растолкуй мне википедию. Только это ты не понимаешь.
Забей, чувак, я не к.т.н., мне вряд ли удасться тебе это объяснить. Ты мне все равно не поверишь, куда мне до тебя... В
innuendo
у меня больше веры xD

#366
22:23, 27 янв 2012

crsib
> То, что ты приводишь в качестве примера - перегрузка.

http://ru.wikipedia.org/wiki/%D0%9F%D0%B5%D1%80%D0%B5%D0%B3%D1%80… 6%D0%B8%D0%B9


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

crsib
> Ну, во первых, статический полиморфизм придумал Александреску

ну, допустим,  Страуструп писал об этом задолго до ...

#367
22:24, 27 янв 2012

crsib
> Ты мне все равно не поверишь,
А ты попробуй.

#368
22:29, 27 янв 2012

innuendo
> Перегрузка операторов — в программировании — один из способов реализации полиморфизма,
По форме да, но один и тот же указатель в случае функции abs не может менять своё поведение в части вызова разной функции по

a=abs(*p);

, в зависимости от фактического типа данного в ячейке поэтому указателю, следовательно это ещё не полиморфизм по сути. В отличие от иерархии классов комплексных чисел.

#369
22:30, 27 янв 2012

innuendo
> неа, есть статик полиморфизм, есть динамик :)
Ты не ответил, какое отношение статический полиморфизм имеет к ООП. В ООП имеют дело с полиморфизмом подтипов. Статический полиморфизм (ad-hoc, параметрический) в основном ассоциируется с функциональным программирование и к ООП отношения не имеет. Если он в том или ином виде поддерживается гибридными языками типа C++ - оно не говорит о том, что это ООП.

#370
22:32, 27 янв 2012

vladislav
> В ООП имеют дело с полиморфизмом подтипов.
А TArifmeticComplex с каких пр перестал быть подтипом TComplex?

#371
22:33, 27 янв 2012

atavin-ta
> TArifmeticComplex
Что это?

#372
22:34, 27 янв 2012

vladislav
> Ты не ответил, какое отношение статический полиморфизм имеет к ООП.

а ты не ответил на мой вопрос :)

> Статический полиморфизм (ad-hoc, параметрический) в основном ассоциируется с
> функциональным программирование и к ООП отношения не имеет.

а в C++, за который речь идёт,  всё ассоциируется как надо, так что вопросов нету

> Если он в том или ином виде поддерживается гибридными языками типа C++ - оно не
> говорит о том, что это ООП.

вот очень хочется услышать, что такое не ООП ?

#373
22:36, 27 янв 2012

innuendo
> вот очень хочется услышать, что такое не ООП ?
Я тоже.
Я могу сказать, что не ООП ;)

#374
22:36, 27 янв 2012

vladislav
> а ты не ответил на мой вопрос :)
На какой?

Страницы: 124 25 26 2730 Следующая »
ПрограммированиеФорумОбщее

Тема в архиве.