Sobes.tech
Junior

Nesne Yönelimli Programlamanın Prensipleri nelerdir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Nesne Yönelimli Programlama (OOP) İlkeleri:

  • Kapsülleme: Verilerin (özellikler) ve bu verilerle çalışan metodların tek bir nesne içinde toplanması ve iç uygulamanın dış dünyadan gizlenmesi. Verilere erişim belirli genel arayüzler (metodlar) aracılığıyla sağlanır.

    // balance özelliğinin iç uygulamasını gizleme
    class Account {
        private var balance: Double = 0.0
    
        func deposit(amount: Double) {
            if amount > 0 {
                balance += amount
            }
        }
    
        func getBalance() -> Double {
            return balance
        }
    }
    
  • Kalıtım: Mevcut bir sınıf (ebeveyn) temel alınarak yeni bir sınıf (çocuk) oluşturulması ve onun özellikleri ile metodlarının miras alınması. Bu, kodun tekrar kullanılmasını sağlar.

    // Dog ve Cat sınıfları, Animal sınıfının özelliklerini ve metodlarını miras alır
    class Animal {
        let name: String
    
        init(name: String) {
            self.name = name
        }
    
        func makeSound() {
            print("\(name) ses çıkarıyor")
        }
    }
    
    class Dog: Animal {
        override func makeSound() {
            print("\(name) havlar")
        }
    }
    
    class Cat: Animal {
        override func makeSound() {
            print("\(name) miyavlar")
        }
    }
    
  • Çok Biçimlilik: Farklı sınıflardan nesnelerin, aynı mesaj (metod çağrısı) ile farklı şekilde yanıt verebilme yeteneği.

    // Dog ve Cat sınıflarında makeSound() metodunun farklı uygulamaları
    func playSound(of animal: Animal) {
        animal.makeSound() // Çok biçimli çağrı
    }
    
    let myDog = Dog(name: "Bobby")
    let myCat = Cat(name: "Murka")
    
    playSound(of: myDog) // "Bobby havlar" yazdırır
    playSound(of: myCat) // "Murka miyavlar" yazdırır
    
  • Soyutlama: Bir nesnenin temel özelliklerini vurgulama ve önemsiz olanları göz ardı etme. Nesnelerin genel temsillerini oluşturma.

    // Belirli bir uygulaması olmayan geometrik şekil temsili
    protocol Shape {
        func calculateArea() -> Double
        func calculatePerimeter() -> Double
    }
    
    // Daire ve kare için somut uygulamalar
    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
        }
    }