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