|
Комбинатор
980 / 252 / 13
Регистрация: 10.03.2010
Сообщений: 3,556
|
|
CoffeeScript ООП19.09.2014, 12:40. Показов 1263. Ответов 8
Метки нет (Все метки)
0
|
|
| 19.09.2014, 12:40 | |
|
Ответы с готовыми решениями:
8
CoffeeScript не компилируется. Заменит ли CoffeeScript JavaScript CoffeeScript или JavaScript с сахаром |
|
414 / 379 / 220
Регистрация: 18.07.2014
Сообщений: 1,259
|
|
| 19.09.2014, 13:40 | |
|
DenQ,
а как вы себе представляете концепцию "абстрактный класс" применимо к js??
0
|
|
|
Комбинатор
980 / 252 / 13
Регистрация: 10.03.2010
Сообщений: 3,556
|
|
| 21.09.2014, 22:24 [ТС] | |
|
whiteapps, можете задать этот вопрос разработчикам TypeScript или Dart, если вы конечно знаете, что это такое...
Но если все же интересно конкретно мое мнение, то это возможно, за счет реализации на стороне самого языка CoffeeScript, скажем хотя бы на уровне анализатора кода. Возможно есть какие-то плагины или расширения для самого языка.
0
|
|
|
|
|
| 22.09.2014, 00:04 | |
|
DenQ, может, я неправильно понимаю Ваши требования, однако, нетепизированным языкам не нужны какие-либо синтаксические доп. структуры для всех функций интерфейса (передача и возвращение объекта с некими методами без знаний о конкретной реализации) и абстрактного класса (описание методов объектов без знания о реализации иных методов или иных особенностей рассматриваемого объекта). Иное дело — типизированные языки.
Приведите конкретный пример, какую задачу Вы хотите решить с использованием интерфейсов или абстрактных классов более элегантно, чем это можно сделать известные Вам средствами.
0
|
|
|
Комбинатор
980 / 252 / 13
Регистрация: 10.03.2010
Сообщений: 3,556
|
|
| 22.09.2014, 10:10 [ТС] | |
|
Mysterious Light, Вы извините, но у меня складывается мнение, что вы не знаете зачем нужны интерфейсы и абстрактные классы.
Видимо вы думаете, что программисту скажем PHP не нужно думать интерфейсами, а думать глаголами... Второй вариант часто приводит к очень плохому коду, с запашком и где от ООП используется только наследование и нет никакого представления о том что такое патерны и тем более полиморфизм. Конечно все можно решить с помощью switch ![]() Приведу минимальный пример, есть метод который принимает в качестве параметра экземпляры, конкретного семейства классов, для этого запишем это где-то таким образом foo(YoutClass class). Благодаря интерфейсу мы точно знаем что у каждого экземпляра из семейства классов YouClass есть метод bur(), и мы можем смело его вызывать, а не делать тучу проверок на существование такого метода и принадлежности переменной именно этому семейству классов... Все просто.
0
|
|
|
|
||
| 22.09.2014, 11:03 | ||
|
AFAIK, он, как и JS, является нетипизированным, а им в принипе не присущь такого рода подход пометок типов аргументов в самом коде. Пример: Вы написали функцию, которая считает среднее арифметическое массива чисел, а передали в аргумент что-то вроде argument или какой-то другой псевдо-массив. Какова ожидаемая Вами реакция программы должна быть? Бросить исключение на этапе компиляции? В рантайме? Та проблема, которую Вы описали, в JS/CS решается через контракты, которые делают именно то, что я подчеркнул в Вашем сообщении. То решение, которое Вы импортируете из классовых ОО языков, без введения хотя бы минимальной системы типов невозможно. CS, насколько я знаю, нетипизирован. Но он позволяет сделать то, что выделенное жирным. Добавлено через 3 минуты upd. Я понял: Вы решили, что CS походит на классовые ОО языки, поэтому можно использовать те же практики, что и в других языках, где система типов имеется. Тогда я не могу Вам помочь, простите.
0
|
||
|
Комбинатор
980 / 252 / 13
Регистрация: 10.03.2010
Сообщений: 3,556
|
|
| 22.09.2014, 12:04 [ТС] | |
|
Mysterious Light, php, тоже не типизирован, но это не мешает использовать абстрактные классы и интерфейсы. А так же при описании метода указывать тип параметров.
Что мешает это сделать в языке CoffeeScript, просто на уровне самого языка CoffeeScript, ведь в большом проекте этого очень не хватает, а coffeeScript как раз и нужен в таких случаях. Пока что я надеюсь, что в новых версиях хоть что-то подобное реализуют. Благодарю за ответы, надеюсь не обидел. PS. Жаль так же что нет деструкторов. Пока что вижу этот язык довольно сырым.
0
|
|
|
414 / 379 / 220
Регистрация: 18.07.2014
Сообщений: 1,259
|
||
| 22.09.2014, 14:20 | ||
|
DenQ, если вы пытаетесь изучить незнакомый вам язык, следует изучать его, а не пытаться примерять к нему парадигмы из известных вам языков.
в js абстрактных классов нет и быть не может, т.к. в нем нет классов как таковых, в привычном понимание ООП вы можете сколько угодно поливать свой код синтаксическим сиропом из coffeescript с его якобы классами, но в js коде который вы получите на выходе классы от этого не появятся. в php под перегрузкой методов почему-то подразумевается механизм геттеров/сеттеров в отличие от любого другого ООП языка если в этих языках есть непривычные, для программистов незнакомых с ними, особенности - это вовсе не говорит о их сырости, или о том что нужно в них создавать абстракции для приведения к понятным вам языкам
0
|
||
|
Комбинатор
980 / 252 / 13
Регистрация: 10.03.2010
Сообщений: 3,556
|
||||||
| 22.09.2014, 16:54 [ТС] | ||||||
|
Во вторых, давайте возьмем в пример SQL и то как этот язык реализуется в разных СУБД(Р) - разумеется синтаксис слегка отличается, но не настолько что б, left join заменяли вложенными запросами, или отсутствовал уникальный индекс... Подобный SQL, любой нормальный разработчик назовет урезанным, так же как и недо реализацию ООП в CoffeeScript - какой она пока и является. И от JS это вообще не зависит. Когда то возможно, кто-то так же как и вы, задавался вопросом, как же реализовать ООП для С++, ведь на asm они от этого не появятся.
0
|
||||||
| 22.09.2014, 16:54 | |
|
Помогаю со студенческими работами здесь
9
Что выбрать для GUI-приложений Java/CoffeeScript или Python/Django Изучаю Python, сейчас учу основы ООП, где можно найти задачи по ООП Не пашет coffeescript в прадакшн (наполовину пашет;) )
С#+ООП Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию.
2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
|
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
|
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO
Апнулись до NET10.
Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта
так и в интерактивном режиме. из сложностей - чисто функциональный подход.
Решил. . .
|
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2.
Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники".
В. . .
|
|
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии.
. . .
|
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
|
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут.
https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc
Первый документ красиво выглядит, но без схемы.
Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
|
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере".
Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
|