На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Страницы: (3) [1] 2 3  все  ( Перейти к последнему сообщению )  
> Перегрузка операторов
    Здравствуйте!
    А в java принципиально невозможна перегрузка операторов? Даже в 5.0?
      видимо нет
      в книге видел это реализуеца методам add, sub... :D
        Цитата MAxZ @
        видимо нет
        в книге видел это реализуеца методам add, sub... :D

        то есть?
        наличие ф-ции add позволяет использовать "+"? Или просто пользоваться ф-циями?
          Цитата inc-visitor @
          А в java принципиально невозможна перегрузка операторов? Даже в 5.0?

          Да. И надеюсь, такой возможности никогда не появится.

          Единственный случай перегрузки, это операция конкатенации Стрингов (оператором +). Хотя я бы задумался и о ее упразднении. На мой взгляд, она нарушает объектно-ориентированную строгость. Однако удобно, спору нет.

          Добавлено
          Цитата inc-visitor @
          Или просто пользоваться ф-циями?

          Именно так.
            Цитата Lamer George @
            На мой взгляд, она нарушает объектно-ориентированную строгость

            функции друзья не нравятся? :) Или ты другое имеешь ввиду?
              Цитата Konigsberg @
              функции друзья не нравятся?

              Их я уже почти не помню :) Имхо, система пакетирования классов удобнее.

              Нет, я в данном случае я имел в виду перегрузку плюса. Раз строка - объект, давайте общаться с ней как с объектом, используя методы. Чего ради мы должны делать для класса String исключение?
              Хотя, конечно, писать конструкции вроде такой:
              ExpandedWrap disabled
                String str = new String("string 1").append(new String("string 2"));

              вместо
              ExpandedWrap disabled
                String str = "string 1" + "string 2";

              было бы неудобно.
                Цитата Konigsberg @
                На мой взгляд, она нарушает объектно-ориентированную строгость.

                я просто подумал, что тебе вообще перегрузка операторов не нравится, а не только конкатенация строк плюсом. Имхо, ниче плохого нет - теже методы, только записанные в "другом" виде.
                Сообщение отредактировано: Konigsberg -
                  Цитата Konigsberg @
                  я просто подумал, что тебе вообще перегрузка операторов не нравится, а не только конкатенация строк плюсом.

                  Именно так.
                  Цитата Konigsberg @
                  Имхо, ниче плохого нет - теже методы, только записанные в "другом" виде.

                  Принцип бритвы Оккама - ни к чему плодить лишних сущностей. Имхо, использование методов намного логичней. А то посмотришь на такой код:
                  ExpandedWrap disabled
                    SomeObject obj1 = new SomeObject(value1);
                    SomeObject obj2 = new SomeObject(value2);
                    SomeObject obj3 = obj1 + obj2;


                  Ну и как это понимать? Что значит "сложить обекты"?

                  Куда логичнее было бы написать, например
                  ExpandedWrap disabled
                    SomeObject obj1 = new SomeObject(value1);
                    SomeObject obj2 = new SomeObject(value2);
                    SomeObject obj3 = obj1.summarizeValues(obj2);
                    // или так:
                    // SomeObject obj3 = new SomeObject(obj1.getValue()+obj2.getValue());
                    Lamer George, а ф чём проблема нелогичного названия методоф?
                    невозможно сделать так, чтобы люди делали всё идеально правильно.
                    "сделай программу к-й сможет пользоваца даже идиот и только идиот захочт ею пользоваца."
                    также и с языками.
                    всё равно ведь можно назвать метод add и что тогда будет значить "obj1.add(obj2)" ?

                    я надеюсь что в яве это будет :) только не знаю как быть со знаком "=".
                      Цитата MAxZ @
                      а ф чём проблема нелогичного названия методоф?

                      Не понял. Я ни чего не говорил про нелогичные названия методов. Если ты имеешь в виду, что obj1 + obj2, это то же самое, что и obj1.add(obj2), я на это отвечу, что и этого следует избегать :)

                      Цитата MAxZ @
                      невозможно сделать так, чтобы люди делали всё идеально правильно.

                      Конечно, нет. Но желательно к этому стремиться. В том числе и с точки зрения простоты и однозначности синтаксиса.
                        Цитата Lamer George @
                        я на это отвечу, что и этого следует избегать

                        так почему?
                          Потому что я не понимаю, что значит "сложить два объекта". Складывать можно числа. Складывать мусорные баки и вентиляторы нельзя. Если нужно сложить сумму из двух чеков, я напишу "сложить суммы по чекам", а не "сложить чеки".
                            Цитата Lamer George @
                            Ну и как это понимать? Что значит "сложить обекты"?

                            да. никакого подвоха, все по честному :)
                            вот если бы ты взял пример с минусом, и предложил вычесть из одной строки другую, тут действительно непонятно, что хотят. Но компилятор вполне может выдать сообщение, что операция минус для типа стринг не определена. А уж как полезно было бы использовать операторы сравнения :rolleyes:
                              Цитата Lamer George @
                              Потому что я не понимаю, что значит "сложить два объекта".

                              я думаю если это не имеет смысла - то программист и не будет этого писать.
                              Ну а если программер неадекватный...

                              Добавлено
                              Цитата Lamer George @
                              Складывать мусорные баки и вентиляторы нельзя.

                              кстати а почему так? ведь это несоотвецтвие типов и такое принципиально невозможно (разве что программист захочет этого специально - наследует мусорный бак от вентилятора... :D )
                              складываюца вентиляторы и вентиляторы, мусорные баки с мусорными баками соответственно.
                                Продолжая аналогию с вентиляторами. Вот вам и неоднозначность при сложении двух вентиляторов:
                                Программист 1 думает, что он получит двухсторонний вентилятор.
                                Программист 2 думает, что он получит вентилятор удвоенных размеров.
                                Программист 3 думает, что он получит вентилятор с удвоенным количеством лопастей.
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (3) [1] 2 3  все


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0806 ]   [ 15 queries used ]   [ Generated: 28.04.24, 11:16 GMT ]