Создать класс Табуретка со свойствами - Lisp

Узнай цену своей работы

Формулировка задачи:

Создать класс Табуретка со свойствами: Высота (h, в см), Качествоизделия (низкое, среднее, высокое). Определить два виртуальных метода: «количество древесины», которое требует табуретка, по формуле4•h+12, если качество низкое, и 5•h+14, если качество среднее иливысокое, а также «стоимость», равная d•2, для низкого качест-ва, d•3, длясреднего качества, d•4, для высокого качества, где d — количество древесины, которое требует данный объект. Определить также метод «Информация», который возвращает строку, содержащую информацию обобъекте: Высоту, качество материала, количество древесины и стоимость. Создать также класс наследник Стул с дополнительным свойством:высота спинки (hb, в см), и переопределить метод «количество древесины», по формуле d+2•hb+5, где d — количество древесины, которые требует табуретка с такими же параметра-ми (Метод «стоимость» непереопределять). В главной программе (либо по нажатию на кнопку) создать экземплярыклассов Та-буретка и Стул, и напечатать информацию в таком виде:«табуретка» + информация о табуретке и «стул» + информация о стуле. (Для реализации использовать классы и наследование.)

Решение задачи: «Создать класс Табуретка со свойствами»

textual
Листинг программы
  1. ; SLIME 2015-04-19
  2. INSOMNIA> (defclass tabouret ()
  3.             ((h :initarg :h
  4.                 :accessor h
  5.                 :initform (error "Высота обязательна - h")
  6.                 :type fixnum
  7.                 :documentation "Это высота")
  8.              (quality :initarg :quality
  9.                       :accessor quality
  10.                       :initform (error "Качество обязательно - quality")
  11.                       :type string
  12.                       :documentation "Это качество")))
  13. #<STANDARD-CLASS TABOURET>
  14. INSOMNIA> (defmethod amount-of-wood ((tabouret tabouret))
  15.             (cond ((equal (quality tabouret) "low")
  16.                    (+ 12 (* 4 (h tabouret))))
  17.                   ((+ 14 (* 5 (h tabouret))))))
  18. #<STANDARD-METHOD AMOUNT-OF-WOOD (TABOURET) {100454DC63}>
  19. INSOMNIA> (defmethod cost ((tabouret tabouret))
  20.             (let ((amount-of-wood (amount-of-wood tabouret)))
  21.               (cond ((equal (quality tabouret) "low")
  22.                      (* amount-of-wood 2))
  23.                     ((equal (quality tabouret) "medium")
  24.                      (* amount-of-wood 3))
  25.                     ((equal (quality tabouret) "high")
  26.                      (* amount-of-wood 4)))))
  27. #<STANDARD-METHOD COST (TABOURET) {1004609893}>
  28. INSOMNIA> (defmethod info ((tabouret tabouret))
  29.             (format
  30.              t
  31.              "Высота: ~A~%Качество материала: ~A~%Количество древесины: ~A~%Стоимость: ~A~%"
  32.              (h tabouret)
  33.              (quality tabouret)
  34.              (amount-of-wood tabouret)
  35.              (cost tabouret)))
  36. #<STANDARD-METHOD INFO (TABOURET) {10046C04A3}>
  37. INSOMNIA> (defparameter tabouret
  38.              (make-instance 'tabouret :h 70 :quality "medium"))
  39. TABOURET
  40. INSOMNIA> (amount-of-wood tabouret)
  41. 364
  42. INSOMNIA> (cost tabouret)
  43. 1092
  44. INSOMNIA> (info tabouret)
  45. Высота: 70
  46. Качество материала: medium
  47. Количество древесины: 364
  48. Стоимость: 1092
  49. NIL
  50. INSOMNIA>

Объяснение кода листинга программы

  1. Создание класса Табуретка с двумя свойствами: Высота и Качество.
  2. Дефиниция метода amount-of-wood, который возвращает количество древесины, использованной для создания табуретки, в зависимости от ее качества.
  3. Дефиниция метода cost, который возвращает стоимость табуретки, в зависимости от ее качества и количества использованной древесины.
  4. Дефиниция метода info, который выводит информацию о табуретке, включая ее высоту, качество, количество использованной древесины и стоимость.
  5. Создание экземпляра класса Табуретка с заданными значениями высоты и качества.
  6. Вызов метода amount-of-wood для определения количества древесины, использованной для создания табуретки.
  7. Вызов метода cost для определения стоимости табуретки.
  8. Вызов метода info для вывода информации о табуретке.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.214 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы