Sobes.tech
Junior

Obyekt yönümlü proqramlaşdırmanın prinsipləri nədir?

sobes.tech Süni İntellekt

AI-dan cavab

Obyekt yönümlü proqramlaşdırmanın (OOP) prinsipləri:

  • İnkapsulyasiya: Məlumatların (xüsusiyyətlərin) və bu məlumatlar üzərində işləyən metodların tək obyektə toplanması və daxili tətbiqin xarici dünyadan gizlədilməsi. Məlumatlara giriş müəyyən açıq interfeyslər (metodlar) vasitəsilə həyata keçirilir.

    // Balance xüsusiyyətinin daxili tətbiqinin gizlədilməsi
    class Account {
        private var balance: Double = 0.0
    
        func deposit(amount: Double) {
            if amount > 0 {
                balance += amount
            }
        }
    
        func getBalance() -> Double {
            return balance
        }
    }
    
  • Miras: Mövcud sinfi (ata) əsas götürərək yeni sinf (uşaq) yaratmaq və onun xüsusiyyətləri və metodlarını miras almaq. Bu, kodun təkrarlanmasının qarşısını alır.

    // Dog və Cat sinfləri, Animal sinfinin xüsusiyyətlərini və metodlarını miras alır
    class Animal {
        let name: String
    
        init(name: String) {
            self.name = name
        }
    
        func makeSound() {
            print("\(name) səs çıxarır")
        }
    }
    
    class Dog: Animal {
        override func makeSound() {
            print("\(name) havlayır")
        }
    }
    
    class Cat: Animal {
        override func makeSound() {
            print("\(name) miyavlayır")
        }
    }
    
  • Çox biçimlilik: Müxtəlif siniflərin obyektlərinin eyni mesaj (metod çağırışı) ilə fərqli cavablar verə bilmə qabiliyyəti.

    // Dog və Cat sinflərində makeSound() metodunun müxtəlif tətbiqləri
    func playSound(of animal: Animal) {
        animal.makeSound() // Polimorfik çağırış
    }
    
    let myDog = Dog(name: "Bobby")
    let myCat = Cat(name: "Murka")
    
    playSound(of: myDog) // "Bobby havlayır" çıxaracaq
    playSound(of: myCat) // "Murka miyavlayır" çıxaracaq
    
  • Abstraksiya: Ob'ektin əsas xarakteristikalarını vurğulamaq və qeyri-əsas olanları nəzərə almamaq. Ob'ektlərin ümumi təqdimatlarını yaratmaq.

    // Geometrik fiqurun nümayişi, konkret tətbiq olmadan
    protocol Shape {
        func calculateArea() -> Double
        func calculatePerimeter() -> Double
    }
    
    // Dairə və kvadrat üçün konkret tətbiqlər
    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
        }
    }