Sobes.tech
Junior

Принсипҳои барномасозии объектӣ-баҳоӣ чистанд?

sobes.tech AI

Ҷавоб аз AI

Принципҳои OOP:

  • Инкапсулятсия: Иҷрои ҳамгироии маълумот (хусусиятҳо) ва методҳо, ки бо ин маълумот кор мекунанд, дар як объект ва пинҳон кардани иҷрои дохилӣ аз олами беруна. Дастрасӣ ба маълумот тавассути интерфейсҳои умумӣ (методҳо).

    // Пинҳон кардани иҷрои дохилии хусусияти balance
    class Account {
        private var balance: Double = 0.0
    
        func deposit(amount: Double) {
            if amount > 0 {
                balance += amount
            }
        }
    
        func getBalance() -> Double {
            return balance
        }
    }
    
  • Наследият: Механизми, ки имкон медиҳад, ки синфи нав (ҳомил) бар асоси синфи мавҷуда (падари) сохта шавад, бо мерос гирифтани хусусиятҳо ва методҳо. Ин кӯмак мекунад, ки коди такроршаванда истифода шавад.

    // Синфҳои Dog ва Cat мерос мегиранд хусусиятҳо ва методҳои синфи Animal
    class Animal {
        let name: String
    
        init(name: String) {
            self.name = name
        }
    
        func makeSound() {
            print("\(name) садо медиҳад")
        }
    }
    
    class Dog: Animal {
        override func makeSound() {
            print("\(name) меояд")
        }
    }
    
    class Cat: Animal {
        override func makeSound() {
            print("\(name) мяука")
        }
    }
    
  • Полиморфизм: Имконият, ки объектҳои класи гуногун метавонанд ба як паём (дархост кардани метод) ҷавобҳои гуногун диҳанд, вобаста ба навъи худ.

    // Иҷрои гуногун дар методи makeSound() дар класи Dog ва Cat
    func playSound(of animal: Animal) {
        animal.makeSound() // Дақиқии полиморфӣ
    }
    
    let myDog = Dog(name: "Бобик")
    let myCat = Cat(name: "Мурка")
    
    playSound(of: myDog) // Натиҷа "Бобик меояд"
    playSound(of: myCat) // Натиҷа "Мурка мяука"
    
  • Абстраксия: Ҷудо кардани хусусиятҳои муҳим ва номуайянро нодида гирифтан. Таҳия кардани тасаввуроти умумӣ дар бораи объектҳо.

    // Тасаввурот дар бораи фигураи геометрӣ бе иҷрои мушаххас
    protocol Shape {
        func calculateArea() -> Double
        func calculatePerimeter() -> Double
    }
    
    // Иҷрои мушаххас барои давр ва чоркунҷа
    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
        }
    }