Sobes.tech
Junior

Kādi ir objektorientētās programmēšanas principi?

sobes.tech AI

Atbilde no AI

Objektorientētas programmēšanas principi:

  • Iekapsulēšana: Datu (īpašību) un ar tiem saistīto metožu apvienošana vienā objektā un iekšējās realizācijas slēpšana no ārpuses. Pieeja datiem tiek nodrošināta caur noteiktiem publiskiem interfeisiem (metodēm).

    // Balansa īpašības iekšējās realizācijas slēpšana
    class Account {
        private var balance: Double = 0.0
    
        func deposit(amount: Double) {
            if amount > 0 {
                balance += amount
            }
        }
    
        func getBalance() -> Double {
            return balance
        }
    }
    
  • Mantošana: Mehānisms, kas ļauj izveidot jaunu klasi (bērnu), balstoties uz esošo (vecāku), mantojot tās īpašības un metodes. Tas veicina koda atkārtotu izmantošanu.

    // Suņu un kaķu klases manto dzīvnieku īpašības un metodes
    class Animal {
        let name: String
    
        init(name: String) {
            self.name = name
        }
    
        func makeSound() {
            print("\(name) rada skaņu")
        }
    }
    
    class Dog: Animal {
        override func makeSound() {
            print("\(name) rej")
        }
    }
    
    class Cat: Animal {
        override func makeSound() {
            print("\(name) mīca")
        }
    }
    
  • Polimorfisms: Spēja dažādu klases objektu atbildēt uz vienu un to pašu ziņojumu (metodes izsaukumu) dažādi, atkarībā no to tipa:

    // Atšķirīgas realizācijas makeSound() metodēs suņu un kaķu klasēs
    func playSound(of animal: Animal) {
        animal.makeSound() // Polimorfisks izsaukums
    }
    
    let myDog = Dog(name: "Bobs")
    let myCat = Cat(name: "Murka")
    
    playSound(of: myDog) // Izvadīs "Bobs rej"
    playSound(of: myCat) // Izvadīs "Murka mīca"
    
  • Abstrakcija: Svarīgu īpašību izdalīšana un nesvarīgu ignorēšana. Vispārēju priekšstatu veidošana par objektiem:

    // Parādība par ģeometrisku figūru bez konkrētas realizācijas
    protocol Shape {
        func calculateArea() -> Double
        func calculatePerimeter() -> Double
    }
    
    // Konkrētas realizācijas aprēķinam riņķim un kvadrātam
    struct Circle: Shape {
        let radius: Double
    
        func calculateArea() -> Double {
            return Double.pi * radius * radius
        }
    
        func calculatePerimeter() -> Double {
            return 2 * Double.pi * radius
        }
    }
    
    struct Square: Shape {
        let side: Double
    
        func calculateArea() -> Double {
            return side * side
        }
    
        func calculatePerimeter() -> Double {
            return 4 * side
        }
    }