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