Sobes.tech
Junior

Obyektga yo'naltirilgan dasturlash prinsiplari nima?

sobes.tech AI

AIdan javob

Ob'ektga yo'naltirilgan dasturlash (OOP) asoslari:

  • Inkapsulyatsiya: Ma'lumotlar (xususiyatlar) va ular bilan ishlovchi metodlarni bitta ob'ektga jamlash va ichki implementatsiyani tashqi dunyodan yashirish. Ma'lumotlarga kirish maxsus jamoat interfeyslari (metodlar) orqali amalga oshiriladi.

    // Balance xususiyatining ichki implementatsiyasini yashirish
    class Account {
        private var balance: Double = 0.0
    
        func deposit(amount: Double) {
            if amount > 0 {
                balance += amount
            }
        }
    
        func getBalance() -> Double {
            return balance
        }
    }
    
  • Merosi: Mavjud sinf (ota) asosida yangi sinf (bola) yaratish va uning xususiyatlari hamda metodlarini meros qilib olish. Bu kodni takrorlashdan saqlaydi.

    // Dog va Cat sinflari Animal sinfining xususiyatlari va metodlarini meros oladi
    class Animal {
        let name: String
    
        init(name: String) {
            self.name = name
        }
    
        func makeSound() {
            print("\(name) tovush chiqaradi")
        }
    }
    
    class Dog: Animal {
        override func makeSound() {
            print("\(name) larz etadi")
        }
    }
    
    class Cat: Animal {
        override func makeSound() {
            print("\(name) miyovlaydi")
        }
    }
    
  • Polimorfizm: Turli sinflarga oid ob'ektlar bir xil xabar (metod chaqiruvi)ga turlicha javob berish imkoniyati.

    // Dog va Cat sinflarida makeSound() metodining turli implementatsiyalari
    func playSound(of animal: Animal) {
        animal.makeSound() // Polimorfik chaqiruv
    }
    
    let myDog = Dog(name: "Bobby")
    let myCat = Cat(name: "Murka")
    
    playSound(of: myDog) // "Bobby larz etadi" chiqaradi
    playSound(of: myCat) // "Murka miyovlaydi" chiqaradi
    
  • Abstraktsiya: Ob'ektning muhim xususiyatlarini ajratib ko'rsatish va muhim bo'lmaganlarini e'tiborsiz qoldirish. Ob'ektlarning umumiy tasvirlarini yaratish.

    // Geometrik shaklning tasviri, aniq implementatsiya yo'q
    protocol Shape {
        func calculateArea() -> Double
        func calculatePerimeter() -> Double
    }
    
    // Doira va kvadrat uchun konkret implementatsiyalar
    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
        }
    }