DataCamp недавно выпустил свой первый курс по Scala: Введение в Scala. Зацените это!
Также проверьте следующие руководства:
Введение

В общем, ООП (Объектно-ориентированное программирование) состоит из классов и объектов и стремится реализовать реальные мирные сущности, такие как полиморфизм и наследование.
ООП значительно ускоряет и удешевляет разработку, обеспечивая лучшую поддержку программного обеспечения. Основной причиной этого чуда является количество поддерживаемых функций; у вас есть классы и объекты, которые легко могут быть использованы в будущем в соответствии с требованием, в отличие от программы, лишенной классов и объектов. Это, в свою очередь, приводит к более качественному программному обеспечению, которое также может быть расширено с помощью новых методов и атрибутов.
Предположим, у вас есть автосалон; каждые несколько месяцев запускается новый автомобиль, и чтобы информировать аудиторию о его названии и характеристиках, вам нужно определять новые методы и атрибуты с нуля. Однако, если у вас есть объектно-ориентированная программа, в которой есть класс car, вам нужно будет просто добавить объект для этого нового автомобиля, который будет вызывать методы и атрибуты класса с информацией о транспортном средстве.
Класс можно рассматривать как представление или дизайн для объектов. Классы обычно имеют свои собственные методы (поведение) и атрибуты.
Атрибуты — это индивидуальные сущности, которые различают каждый объект и определяют различные качества объекта. Методы, с другой стороны, больше похожи на обычные функции в программировании. Они определяют, как работает экземпляр класса. Именно благодаря методам (поведению) объекты имеют возможность выполнять действия.

В приведенной выше схеме дается больше интуитивного понимания потока объектно-ориентированного программирования или, если быть точнее, того, как выглядит класс. На приведенном выше рисунке есть class car
, который имеет атрибуты: топливо, максимальная скорость
, и может иметь больше атрибутов, таких как модель
, марка
и т.д. У него есть разные наборы методов
, такие как refuel()
, getFuel()
, setSpeed()
, и некоторые дополнительные методы, такие как смена передачи
, запуск двигателя
, остановка двигателя
и т.д.
Таким образом, когда вы говорите о конкретном автомобиле, у вас будет объект, который является экземпляром класса.
Теперь давайте поговорим об объектно-ориентированном программировании в Scala.
Классы и объекты в Scala
Как и в c++ и java, объектно-ориентированное программирование в Scala следует практически тем же конвенциям. В нем есть концепция определения классов
и объектов
, а также конструкторов
в классах, и это все, что составляет объектно-ориентированное программирование в Scala.
Объявление класса
class Class_name{ // методы и атрибуты }
Класс в Scala определяется с помощью ключевого слова class
, за которым следует имя класса, и, как правило, имя класса начинается с заглавной буквы. Есть несколько ключевых слов, которые являются необязательными, но могут быть использованы в объявлении класса Scala, таких как: class-name
, оно должно начинаться с заглавной буквы: superclass
, имя родительского класса, предшествующее ключевому слову extend: traits
, это список, разделенный запятыми, реализуемый классом и предшествующий ключевому слову extend.
Класс в Scala может наследовать только один родительский класс, что означает, что Scala не поддерживает множественное наследование. Однако это можно достичь с помощью Traits
.
Наконец, тело класса в Scala окружено фигурными скобками {}
.
// Имя класса - Car class Car { // Переменные класса var make: String = "BMW" var model: String = "X7" var fuel: Int = 40 // Метод класса def Display() { println("Make of the Car : " + make); println("Model of the Car : " + model); println("Fuel capacity of the Car : " + fuel); } } object Main { // Главный метод def main(args: Array[String]) { // Объект класса var obj = new Car(); obj.Display(); } }
Вы можете сохранить вышеуказанный код под именем class.scala
и запустить его в терминале как scala class.scala
, и вы должны увидеть вывод, как показано ниже.

Хорошо, вышеуказанный код не полностью использует привилегии, которые программа, основанная на объектно-ориентированном подходе, способна обеспечить. Поскольку вывод вышеуказанного кода будет возвращать одинаковый результат независимо от того, сколько раз вы запустите его. Вы определили статические переменные внутри класса, и значения этих переменных останутся постоянными, даже если вы создадите бесконечное количество новых объектов. В заключение, вы не можете ожидать, что он предоставит вам информацию для автомобилей Mercedes Benz или Ferrari.
Конструктор в Scala
Конструкторы в основном используются для инициализации состояния объекта. Эта инициализация объекта происходит в момент создания объекта и вызывается только один раз.
Существует два типа конструкторов в Scala: основной
и вспомогательный
. Для этого урока вы узнаете о основном конструкторе (Источник: O’Reilly).
class Class_name(Parameter_list){ // методы, атрибуты }
Основной конструктор содержит тот же тело, что и класс, и он создается неявно вместе с определением класса. Он начинается с определения класса и охватывает полное тело класса. Кроме того, когда в программе на Scala есть только один конструктор, он называется основным конструктором. Основной конструктор может быть определен с нулевым, одним или более параметрами.
Также, здесь вы узнаете новую особенность класса, то есть класс может иметь несколько объектов или экземпляров, но все они независимы друг от друга.
// Имя класса - Car class Car(make: String, model: String, fuel: Int) { // Метод класса def Display() { println("Make of the Car : " + make); println("Model of the Car : " + model); println("Fuel capacity of the Car : " + fuel); } } object Main { // Главный метод def main(args: Array[String]) { // Множество объектов класса var obj1 = new Car("BMW", "X7", 40); var obj2 = new Car("Mercedes Benz", "S350D", 50); obj1.Display(); obj2.Display(); } }
Давайте быстро посмотрим на вывод:

Неужели это не замечательно? С помощью конструктора вы смогли получить более эффективные результаты.
Объявление объектов в Scala
Объявление объектов в Scala также может быть названо созданием экземпляра класса или вызовом класса. Как и классы, объекты также являются основной единицей объектно-ориентированного программирования.
Объект может состоять из трех особенностей (Источник: GeeksforGeeks:
Состояние:
Атрибуты объекта представляют его. Они также отражают свойства объекта.Поведение:
Методы объекта представляют его. Они также отражают ответ объекта с другими объектами.Идентичность:
Она дает уникальное имя объекту и позволяет одному объекту взаимодействовать с другими объектами.
Представьте Dog как объект и посмотрите на нижеследующийdiagram для его идентичности, состояния и поведения.

Все экземпляры или объекты общего класса имеют собственные атрибуты и методы. Один класс может содержать множество объектов, как вы узнализдесь. Однако состояние или значения каждого объекта уникальны.
В конце вы напишете код, в котором будут сочетаться главные конструкторы, классные переменные, атрибуты и методы.
Ниже представлено изображение компонентов, выстроенных в классе Motorcycle
.

Нижеследующий код ясно по себе; на высоком уровне он проверяет, включено ли двигателем мотоцикла on
или off
.Initially, the engine is set to an off state, and it will notify you of its state and switch it on.
class Motorcycle(make:String,color:String) { var engineState: Boolean = false; def startEngine() { if (engineState == true){ println("The engine is already on."); } else { engineState = true println("The engine is now on."); } } def showAtts() { println("This motorcycle is a "+ color + " " + make); if (engineState == true){ println("The engine is on."); } else{ println("The engine is off."); } } } object Main { def main (args: Array[String]) { var m = new Motorcycle("BMW K 1600 GTL","White"); println("Calling showAtts..."); m.showAtts(); println("------"); println("Starting engine..."); m.startEngine(); println("------"); println("Calling showAtts..."); m.showAtts(); println("------"); println("Starting engine..."); m.startEngine(); } }

Поздравляем!
Поздравляем вас с окончанием этого tutorila.
Вы теперь умеете декларировать классы и методы, инициализировать объекты, устанавливать их атрибуты и вызывать методы экземпляра в Scala. Эти понятия будут полезны вам не только в Scala, но и в других языках программирования.
Объектно-ориентированные концепции являются интересными и, в то же время, очень мощными. Они добавляют новую глубину в ваш код, делают его повторно используемым. Если ваш program становится больше, ваш код станет более сложным. В объектно-ориентированных концепциях есть много ценного, как наследование, полиморфизм, методы экземпляров. another мощный признак – это Singleton. Принципы дизайна помогают сохранять ваш код более структурированным и читаемым. Чтобы больше узнать о дизайн-паттернах, рассмотрите возможность прочитать эту книгу.
Пожалуйста, не стесняйтесь задавать вопросы, связанные с этой учебной программой, в下方的 комментариях.
В конце, не забудьте принять новый курс Scala на DataCamp, Introduction to Scala.
Source:
https://www.datacamp.com/tutorial/scala-classes-objects