В данной статье показано, что объектно ориентированное программирование на языке Crystal при решении практических задач эффективнее процедурного программирования.
Для примера использования ООП в языке программировании Crystal рассмотрим задачу измерения температуры и давления воздуха. Для получения измерений применяется два датчика – один в качестве датчика температуры, другой — датчика давления.
В программе предусматривается базовый класс Sensor, отражающий общие свойства любого датчика, и два производных от него класса SensorTemp и SensorDavl, соответственно, представляющие объекты — датчик температуры и давления. Измерения передаются в эти классы для хранения.
В качестве измеренного значения формируется среднее арифметическое всех измерений — сумма всех измерений, деленная на их количество. Для этого создается отдельный класс Izmer, в котором в методе srZnach осуществляется суммирование элементов массива измерений и вычисление среднего значения.
Код программы.
- class Sensor #измеритель — базовый класс
- @n=5
- @k=15
- @sum=0
- @izmPar =[] of Float64 #создаем пустой массив Array(Float64)
- def initialize(@n : Int32, @k : Int32, izmPar=[] of Float64)
- z = gen(n,k,izmPar) # генерируем массив izmPar(Float64) из n элементов
- # puts izmPar # оператор для отладки программы
- end
- def gen(n,k,mas=[] of Float64)
- i=0
- while i<n
- mas<<k+0.01*k*rand
- i+=1
- end
- # puts mas # оператор для отладки программы
- end
- end
- class SensorTemp < Sensor #измеритель температуры — производный класс
- def srTemp # метод вычисления среднего значения температуры
- end
- end
Далее создается класс для создания объекта — измеритель давления, — как производный класс от базового класса Sensor.
- class SensorDavl < Sensor #измеритель давления — производный класс
- def srDavl # метод вычисления среднего значения давления
- end
- end
- class Izmer # вычислитель самостоятельный класс
- def initialize()
- end
- def srZnach(n,mas=[] of Float64)
- i=0
- sum=0
- while i<n
- sum += mas[i]
- i+=1
- end
- srZnach=sum/n
- # puts «Среднее в классе», srZnach # оператор для отладки программы
- return srZnach
- end
- end
# Программа вычисления температуры и давления воздуха будет иметь следующий код.
- puts «Имитация измерителя температуры и давления»
- n=5
- srGenT=25
- srGenD=760
- izmPar =[] of Float64 #создаем пустой массив Array(Float64)
- sensor = Sensor.new(n,5,izmPar)
- izmer=Izmer.new()
- izmTemp =[] of Float64
- sensTemp = SensorTemp.new(n,srGenT,izmTemp)
- printf «Массив температур — «
- #puts «\n», izmTemp # оператор для отладки программы
- izmTemp.each_with_index{ |n, idx| print «%#{3.2}f » % n; print «\n» if idx % 10 == 5 }
- srTemp=izmer.srZnach(n,izmTemp)
- puts «\n», «Средняя температура», «%3.2f» %srTemp
- izmDavl =[] of Float64
- sensDavl = SensorDavl.new(n,srGenD,izmDavl)
- printf «Массив давлений — «
- izmDavl.each_with_index{ |n, idx| print «%#{3.2}f » % n; print «\n» if idx % 10 == 5 }
- srDavl=izmer.srZnach(n,izmDavl)
- puts «\n», «Среднее давление», «%3.2f» %srDavl
Результаты выполнения приведенной выше программы в среде разработки и выполнения языка Crystal представлены на следующем рисунке.

Анализ представленных результатов свидетельствует о работоспособности программы на языке Crystal. Это подтверждает возможности языка программирования Crystal создавать достаточно сложное и эффективное программное обеспечение.
Заключение
Объектно ориентированное программирование на языке Crystal при решении практических задач эффективнее процедурного программирования.
Программа, созданная на основе ООП на языке программирования Crystal, более компактна и удобочитаемая по сравнению с такой же программой на основе процедурного программирования.
Другой вариант объектно-ориентированного программирования при создании оконного приложения методом событийно-визуального программирования представлен в статье.
Статьи по теме
А также…
- Что такое программирование?
- Пример процедурного программирования на языке Crystal
- Как выбирать язык программирования высокого уровня для изучения
- Что выбирать язык или платформу программирования?
- Удаленная работа программистом и выбор языка программирования
- Как быстро изучить язык программирования
- Как изучать простые типы данных языка программирования?
- Как стать специалистом по большим данным?
На этом пока все. До скорой встрече на сайте brasmlibras.ru.