LISP. Как объявить класс со своими методами и свойствами? - Страница 2
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > LISP. Как объявить класс со своими методами и свойствами?

LISP. Как объявить класс со своими методами и свойствами?

Ответ
Поиск в этой теме
Непрочитано 19.07.2011, 08:26
LISP. Как объявить класс со своими методами и свойствами?
LastGraff
 
Томск
Регистрация: 13.07.2011
Сообщений: 81

Нашел, что в LISPе можно использовать свои классы и создаются они вроде так:
Код:
[Выделить все]
 (defclass AClass ()
  ( 
    (foo :initform 2) 
    (bar :initarg :bar)
  )
)
(setf lobj (make-instance 'AClass :bar 4))
(lobj 'foo) ;; reads slot -> 2
(lobj 'bar) ;; reads slot -> 4
(lobj 'bar 6) ;; sets slot -> 6
но результат -
;ошибка: no function definition: BAR

Может кто-то знает другой способ создания класса?
Просмотров: 7793
 
Автор темы   Непрочитано 20.07.2011, 14:41
#21
LastGraff


 
Регистрация: 13.07.2011
Томск
Сообщений: 81


Цитата:
Сообщение от Дима_ Посмотреть сообщение
Повесить либо один общий реактор на изменение документа, либо на каждый элемент в отдельности (если под каждый примитив надо генерировать отдельную функцию - без замыканих (которых нет в автолиспе) - то это геморно - я бы в большинстве случаев предпочел "общий" вариант - но в зависимости от предполагаемого использования). Данные о нахождении данных хранить либо в расширенных данных самого примитива (ИХМО - более предпочтительный вариант) - либо создавать отдельный список в памяти, либо "расширять" xml на "поле" имени примитива (как вариант можно рассмотреть подходит ли вариант индексации примитивов по сохраняемым признакам - тогда вобще никакие доп. данные не нужны - функция сама определит какую "nod'у" в XML изменить по состоянию до и после изменения).
Пока с этим проблемы:
1) я бы с удовольствием использовал вариант с хранением в расширенных параметрах примитива, но пока не могу понять как их найти... плюс пока не работал с реакторами вообще, поэтому сейчас старательно штудирую материал, коего немеряно, но все же полезности пока не особо много(((
LastGraff вне форума  
 
Непрочитано 20.07.2011, 14:55
#22
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


Откровенно говоря - при всей моей любви к лиспу - данный проект я бы делал без его участия (проект явно не на две строки - скорее всего придется делать какую-то "красивую" связку с xml и пр. - то есть боюсь без "добавок" реализация будет весьма "скудна", а коли они будут - то наверное, в данном случае, лисп особых приемуществ не дает - нет здесь тех вещей в которых он явно выигрывает).
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 20.07.2011, 15:13
#23
LastGraff


 
Регистрация: 13.07.2011
Томск
Сообщений: 81


Выбора в языке реализации у меня нет( Буду изыскивать возможности)
LastGraff вне форума  
 
Непрочитано 20.07.2011, 15:43
#24
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Цитата:
Сообщение от LastGraff Посмотреть сообщение
читается XML где указаны типы объектов и их координаты. Средствами лиспа делаем примитивы в автокаде... если происходит изменение одного из примитивов (перемещение) то лисп должен высылать сообщение на сервер, что внесены коррективы. Проблема в том, что я работал раньше с ООП и лисп для меня несколько непонятен. Я бы просто сделал на каждый примитив элемент собственного класса и отслеживал бы его свойства и методы. А как это реализовать функционально пока не знаю...
Мдя, откуда все такие умные берутся? Одному товарищу нужно было в эксцель данные пулять непременно пока он рисует; Вам, LastGraff, вообще на сервер... сначала научитесь понимать то, что именно вам нужно, как сильно вам это нужно и нафига вообще это вам нужно, потом научитесь делать постановку задачи и выбор средств для ее решения и наконец научитесь программировать... Не стоит кичиться знанием ООП... Это ваша как программиста мертвая петля на шее...
теперь по теме... единственным аналогом классов и объектов (хотя даже аналогом это трудно назвать) являются списки точечных пар... все... Некий аналог ООП просматривается при работе с диалоговыми окнами...
Хотите классы, изучайте VBA, там и отслеживание (события) изменений имеется...VBA, к слову тоже имеет некоторые ограничения... но, когда вы это поймете, вам не сложно будет перейти на vb.Net
gomer вне форума  
 
Непрочитано 21.07.2011, 22:09
#25
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 811


Цитата:
Сообщение от gomer Посмотреть сообщение
Мдя, откуда все такие умные берутся?
Пока не видел еще чтоб ты чё-то умное сказал..
Ждемс...
Олег (jr.) вне форума  
 
Непрочитано 22.07.2011, 07:09
#26
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Цитата:
Сообщение от Олег (jr.) Посмотреть сообщение
Пока не видел еще чтоб ты чё-то умное сказал..
по-видимому, что-то умное для большинства - это готовое решение с подробным описанием использования и тех.поддержкой в течении года
gomer вне форума  
 
Непрочитано 26.08.2022, 12:54
#27
alik3001


 
Регистрация: 12.09.2016
Сообщений: 33


Делал эксперимент, Circle наш класс


Код:
[Выделить все]
 (defun getParam (Object nameOfParam);определение метода возвращающего значение параметра nameOfParam
	 (cdr (assoc nameOfParam Object))
)

(setq Circle ;наш класс
       (list 
           (cons 'Radius 10000);радиус
           (cons 'getParam getParam);метод
         )
)

(defun getter (Ent name);геттер(внешняя функция)
  ((cdr (assoc 'getParam Ent)) Ent name); вызов внутреннего метода
)

(setq rad (getter Circle 'Radius))

Последний раз редактировалось alik3001, 26.08.2022 в 13:07.
alik3001 вне форума  
 
Непрочитано 26.08.2022, 15:51
#28
dar4


 
Регистрация: 26.08.2022
Сообщений: 1


Зачем вам здесь классы, у вас уже есть объекты - примитивы, отрезки, следите за ними, изменяйте, добавляйте, удаляйте
dar4 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > LISP. Как объявить класс со своими методами и свойствами?



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дробный текст методами LISP Nitrogenium LISP 1 08.02.2011 19:50
{Конкурс} Lisp. Задачки для студентов gomer LISP 10 05.01.2011 16:33
ГОСТ Р 53231-2008 UnyqUm Поиск литературы, чертежей, моделей и прочих материалов 5 15.09.2009 14:41
Хочу поделиться своими программками в LISP с желающими Olegic LISP 12 30.10.2004 22:52