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