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

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

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

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

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

textual
Листинг программы
; SLIME 2015-04-19
INSOMNIA> (defclass tabouret ()
            ((h :initarg :h
                :accessor h
                :initform (error "Высота обязательна - h")
                :type fixnum
                :documentation "Это высота")
             (quality :initarg :quality
                      :accessor quality
                      :initform (error "Качество обязательно - quality")
                      :type string
                      :documentation "Это качество")))
#<STANDARD-CLASS TABOURET>
INSOMNIA> (defmethod amount-of-wood ((tabouret tabouret))
            (cond ((equal (quality tabouret) "low")
                   (+ 12 (* 4 (h tabouret))))
                  ((+ 14 (* 5 (h tabouret))))))
#<STANDARD-METHOD AMOUNT-OF-WOOD (TABOURET) {100454DC63}>
INSOMNIA> (defmethod cost ((tabouret tabouret))
            (let ((amount-of-wood (amount-of-wood tabouret)))
              (cond ((equal (quality tabouret) "low")
                     (* amount-of-wood 2))
                    ((equal (quality tabouret) "medium")
                     (* amount-of-wood 3))
                    ((equal (quality tabouret) "high")
                     (* amount-of-wood 4)))))
#<STANDARD-METHOD COST (TABOURET) {1004609893}>
INSOMNIA> (defmethod info ((tabouret tabouret))
            (format 
             t 
             "Высота: ~A~%Качество материала: ~A~%Количество древесины: ~A~%Стоимость: ~A~%"
             (h tabouret)
             (quality tabouret)
             (amount-of-wood tabouret)
             (cost tabouret)))
#<STANDARD-METHOD INFO (TABOURET) {10046C04A3}>
INSOMNIA> (defparameter tabouret 
             (make-instance 'tabouret :h 70 :quality "medium"))
TABOURET
INSOMNIA> (amount-of-wood tabouret)
364
INSOMNIA> (cost tabouret)
1092
INSOMNIA> (info tabouret)
Высота: 70
Качество материала: medium
Количество древесины: 364
Стоимость: 1092
NIL
INSOMNIA>

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

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

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


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

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

14   голосов , оценка 4.214 из 5
Похожие ответы