Классы, объекты и пакеты
Изучите определение классов, создание объектов и организацию кода с помощью пакетов в Scala.
«Классы, объекты и пакеты» — бесплатный урок Scala for Backend Engineering & Functional Programming на CoddyKit. Это урок 1 из 2. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Scala for Backend Engineering & Functional Programming, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Scala for Backend Engineering & Functional Programming содержит 2 уроков всего.
Добро пожаловать в ООП в Scala
На этом уроке Вы погрузитесь в основы объектно-ориентированного программирования (ООП) в Scala. Мы рассмотрим, как структурировать код с помощью классов, создавать экземпляры этих классов (объекты) и организовывать всё с помощью пакетов.
Давайте начнём создавать надёжные и модульные приложения!
Классы: чертежи объектов
Представьте класс как чертёж для создания объектов. Он определяет свойства (данные) и поведение (методы), которыми будут обладать его объекты. Классы сами не хранят данные, а описывают, какие данные может хранить объект.
Вот базовое определение класса:
class Car {
// Properties and methods go here
}Определение простого класса
В Scala класс определяется с помощью ключевого слова class, за которым следует его имя. Давайте создадим простой класс Dog. Пока он почти ничего не делает, но это хорошее начало!
Попробуйте запустить это пустое определение класса:
class Dog {
// This dog has no properties or behaviors yet
}
object Main {
def main(args: Array[String]): Unit = {
println("Dog class defined!")
}
}Создание объектов (экземпляров)
Объект — это экземпляр класса. Это настоящая «вещь», созданная по шаблону. Чтобы создать объект, используется ключевое слово new, за которым следует имя класса.
Каждый объект получает собственный набор данных, определённый классом.
class Dog {
// Still an empty dog blueprint
}
object Main {
def main(args: Array[String]): Unit = {
val myDog = new Dog()
val yourDog = new Dog()
println("Two dog objects created!")
}
}Добавление свойств в класс
Классы могут иметь свойства (также называемые полями или членами), в которых хранятся данные. Их можно определить в конструкторе класса, сделав параметрами, которые передаются при создании объекта.
Давайте добавим нашему Dog имя name и породу breed:
class Dog(val name: String, val breed: String) {
// 'val' makes name and breed immutable properties
}
object Main {
def main(args: Array[String]): Unit = {
val myDog = new Dog("Buddy", "Golden Retriever")
println(s"My dog's name is ${myDog.name} and breed is ${myDog.breed}.")
}
}Добавление поведения (методов)
Классы также определяют методы — функции, описывающие поведение объекта. Методы могут обращаться к свойствам объекта и изменять их.
Теперь наш Dog умеет bark():
class Dog(val name: String, val breed: String) {
def bark(): String = {
s"${name} says Woof!"
}
}
object Main {
def main(args: Array[String]): Unit = {
val myDog = new Dog("Max", "Labrador")
println(myDog.bark())
}
}`object` в Scala (одиночные объекты)
В Scala ключевое слово object определяет одиночный объект. Это означает, что может существовать только один его экземпляр. Для его создания не используется new; достаточно обратиться к его имени.
Одиночные объекты часто используют для служебных методов или создания единой точки входа.
object MathUtils {
def add(a: Int, b: Int): Int = a + b
def subtract(a: Int, b: Int): Int = a - b
}
object Main {
def main(args: Array[String]): Unit = {
val sum = MathUtils.add(5, 3)
println(s"5 + 3 = ${sum}")
}
}Сопутствующие объекты
Сопутствующий объект — это object с тем же именем, что и у class, определённый в том же исходном файле. Они имеют особый доступ к закрытым членам друг друга.
- Класс содержит данные и методы, относящиеся к конкретным экземплярам.
- Сопутствующий объект содержит методы, подобные статическим, или фабричные методы.
class Circle(val radius: Double) {
def area: Double = Circle.PI * radius * radius
}
object Circle {
// This is the companion object for the Circle class
val PI: Double = 3.14159
def apply(r: Double): Circle = new Circle(r) // Factory method
}
object Main {
def main(args: Array[String]): Unit = {
val c = Circle(5.0) // Using the apply method from companion object
println(s"Circle area: ${c.area}")
}
}Организация кода с помощью пакетов
Пакеты позволяют организовывать классы и объекты в логические группы, предотвращая конфликты имён и упрощая сопровождение кода.
Представляйте их как папки для кода. Ключевое слово package объявляет пакет в начале файла Scala.
package com.coddykit.animals
class Cat(val name: String) {
def meow(): String = s"${name} says Meow!"
}
// This class is now inside com.coddykit.animals packageИмпорт членов из пакетов
Чтобы использовать классы или объекты, определённые в другом пакете, их нужно импортировать. Ключевое слово import делает члены пакета доступными в текущей области видимости.
Давайте импортируем наш класс Cat:
package com.coddykit.app
// Define a class in a package first for import example
package com.coddykit.animals {
class Cat(val name: String) {
def meow(): String = s"${name} says Meow!"
}
}
import com.coddykit.animals.Cat
object Main {
def main(args: Array[String]): Unit = {
val myCat = new Cat("Whiskers")
println(myCat.meow())
}
}Быстрая проверка: класс или объект?
Вы узнали о классах, объектах и пакетах. Давайте проверим, насколько хорошо вы это поняли!
Повторение: классы, объекты, пакеты
Отличная работа! Вы изучили основы ООП в Scala:
- Классы — это шаблоны, определяющие свойства и поведение.
- Объекты — это экземпляры, создаваемые из классов с помощью
new. - Ключевое слово
objectв Scala создаёт одиночные объекты, полезные для служебных функций или фабрик. - Сопутствующие объекты используются вместе с классами для хранения членов, подобных статическим.
- Пакеты организуют код, предотвращают конфликты имён и улучшают его структуру.
Далее мы продолжим развивать эту основу, изучая наследование и полиморфизм!
Часто задаваемые вопросы
Урок «Классы, объекты и пакеты» бесплатный?
Да — полный текст урока «Классы, объекты и пакеты» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Scala for Backend Engineering & Functional Programming, подпишись на CoddyKit PRO. Курс Scala for Backend Engineering & Functional Programming содержит 2 уроков всего.
Чему я научусь в уроке «Классы, объекты и пакеты»?
Изучите определение классов, создание объектов и организацию кода с помощью пакетов в Scala. Ты практикуешь Scala for Backend Engineering & Functional Programming с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Scala for Backend Engineering & Functional Programming?
Предыдущий опыт не требуется. Scala for Backend Engineering & Functional Programming на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 2.
Сколько времени занимает урок «Классы, объекты и пакеты»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Scala for Backend Engineering & Functional Programming?
Да. Каждый урок Scala for Backend Engineering & Functional Programming включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Классы, объекты и пакеты
- Наследование и полиморфизм