Scala til backendudvikling og funktionel programmering · Lektion

Klasser, objekter og pakker

Forstå, hvordan De definerer klasser, opretter objekter og organiserer Deres kode ved hjælp af pakker i Scala.

Lektion 1 af 212 trin

Klasser, objekter og pakker er en gratis Scala til backendudvikling og funktionel programmering-lektion på CoddyKit. Dette er lektion 1 af 2. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Scala til backendudvikling og funktionel programmering, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Scala til backendudvikling og funktionel programmering-kurset indeholder 2 lektioner i alt.

Velkommen til OOP i Scala

I denne lektion dykker du ned i kernen af objektorienteret programmering (OOP) i Scala. Vi undersøger, hvordan du strukturerer din kode ved hjælp af klasser, opretter instanser af disse klasser (objekter) og holder det hele organiseret med pakker.

Lad os begynde at bygge robuste og modulære applikationer!

Klasser: Grundtegningerne

Tænk på en klasse som en skabelon til at oprette objekter. Den definerer de egenskaber (data) og den adfærd (metoder), som dens objekter har. Klasser indeholder ikke selv data, men beskriver, hvilke data et objekt kan indeholde.

Her er en grundlæggende klassedefinition:

class Car {
  // Properties and methods go here
}

Definition af en simpel klasse

I Scala definerer du en klasse ved hjælp af nøgleordet class efterfulgt af dens navn. Lad os oprette en simpel klasse Dog. Den kan ikke så meget endnu, men det er en begyndelse!

Prøv at køre denne tomme klassedefinition:

class Dog {
  // This dog has no properties or behaviors yet
}

object Main {
  def main(args: Array[String]): Unit = {
    println("Dog class defined!")
  }
}

Oprettelse af objekter (instanser)

Et objekt er en instans af en klasse. Det er en virkelig "ting", der er oprettet ud fra skabelonen. Du opretter et objekt ved at bruge nøgleordet new efterfulgt af klassens navn.

Hvert objekt får sit eget sæt data, som defineret af klassen.

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!")
  }
}

Tilføjelse af egenskaber til en klasse

Klasser kan have egenskaber (også kaldet felter eller medlemmer), som gemmer data. Du kan definere dem i klassens konstruktør, så de bliver parametre, når du opretter et objekt.

Lad os give vores Dog et name og en 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}.")
  }
}

Tilføjelse af adfærd (metoder)

Klasser definerer også metoder, som er funktioner, der beskriver objektets adfærd. Metoder kan tilgå og ændre objektets egenskaber.

Vores Dog kan nu 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())
  }
}

Scalas `object` (singletoner)

I Scala definerer nøgleordet object en singleton. Det betyder, at der kun kan eksistere én instans af den. Du bruger ikke new til at oprette den; du henviser bare til dens navn.

De bruges ofte til hjælpefunktioner eller som et enkelt indgangspunkt.

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}")
  }
}

Ledsageobjekter

Et ledsageobjekt er et object, der har samme navn som en class og er defineret i den samme kildefil. De har særlig adgang til hinandens private medlemmer.

  • Klassen indeholder instansspecifikke data og metoder.
  • Ledsageobjektet indeholder statiske eller fabriksmetoder.
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}")
  }
}

Organisering af kode med pakker

Pakker er en måde at organisere dine klasser og objekter i logiske grupper på, så navnekonflikter undgås, og koden bliver lettere at vedligeholde.

Tænk på dem som mapper til din kode. Nøgleordet package erklærer pakken øverst i en Scala-fil.

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 af medlemmer fra pakker

Hvis du vil bruge klasser eller objekter, der er defineret i en anden pakke, skal du importere dem. Nøgleordet import gør pakkens medlemmer tilgængelige i dit aktuelle område.

Lad os importere vores klasse 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())
  }
}

Hurtigt tjek: Klasse eller objekt?

Du har lært om klasser, objekter og pakker. Lad os teste din forståelse!

Opsummering: Klasser, objekter, pakker

Rigtig godt arbejde! Du har lært det grundlæggende i OOP i Scala:

  • Klasser er skabeloner, der definerer egenskaber og adfærd.
  • Objekter er instanser, der oprettes ud fra klasser ved hjælp af new.
  • Scalas nøgleord object opretter singletoner, som er nyttige til hjælpefunktioner eller fabrikker.
  • Ledsageobjekter hører sammen med klasser og indeholder statiske medlemmer.
  • Pakker organiserer din kode, forhindrer navnekonflikter og forbedrer strukturen.

Nu bygger vi videre på dette grundlag ved at udforske nedarvning og polymorfi!

Gratis at komme i gang

Lær Scala med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
39
Lektioner
143

Ofte stillede spørgsmål

Er lektionen “Klasser, objekter og pakker” gratis?

Ja — hele teksten til “Klasser, objekter og pakker” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Scala til backendudvikling og funktionel programmering-kurset, skal du opgradere til CoddyKit PRO. Scala til backendudvikling og funktionel programmering-kurset indeholder 2 lektioner i alt.

Hvad lærer jeg i “Klasser, objekter og pakker”?

Forstå, hvordan De definerer klasser, opretter objekter og organiserer Deres kode ved hjælp af pakker i Scala. Du øver dig i Scala til backendudvikling og funktionel programmering med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Scala til backendudvikling og funktionel programmering?

Der kræves ingen tidligere erfaring. Scala til backendudvikling og funktionel programmering på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 1 af 2.

Hvor lang tid tager lektionen “Klasser, objekter og pakker”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Scala til backendudvikling og funktionel programmering-lektion?

Ja. Alle Scala til backendudvikling og funktionel programmering-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Klasser, objekter og pakker
  2. Nedarvning og polymorfi
← Tilbage til Scala til backendudvikling og funktionel programmering