Junior
Объектке багытталган программалоонун негизги принциптери эмнелер?
sobes.tech AI
AIден жооп
ООП принциптери:
-
Инкапсуляция: Маалыматтар (мөлчөмдөр) жана алар менен иштөөчү ыкмалар бир объектке бириктирилип, ички ишке ашыруу сырдуу кылынат жана сырттан көзөмөлдөнөт. Маалыматтарга жетүү белгилүү коомдук интерфейстер (ыкмалар) аркылуу жүргүзүлөт.
// Balance мүчө өзгөчөлүгүнүн ички ишке ашырылышын жашыруу class Account { private var balance: Double = 0.0 func deposit(amount: Double) { if amount > 0 { balance += amount } } func getBalance() -> Double { return balance } } -
Мураскорлук: Жаңы класс түзүү механизми (балдар) бар болсо, ал мурунку (ата) классынан өзгөчөлүктөрү жана ыкмалары менен мурас алат. Бул кодду кайра колдонууга жардам берет.
// Ит жана мышык класстары Animal классынын өзгөчөлүктөрү жана ыкмаларын мурас алат class Animal { let name: String init(name: String) { self.name = name } func makeSound() { print("\(name) үн чыгарат") } } class Dog: Animal { override func makeSound() { print("\(name) чычкайт") } } class Cat: Animal { override func makeSound() { print("\(name) мияулайт") } } -
Полиморфизм: Төрлөрү ар түрдүү объекттер бир эле билдирүүгө (метод чакырууга) жооп кайтара алат, алардын тибине жараша:
// Dog жана Cat класстарындагы makeSound() методунун ар түрдүү ишке ашырылышы func playSound(of animal: Animal) { animal.makeSound() // Полиморфтук чакыру } let myDog = Dog(name: "Бобик") let myCat = Cat(name: "Мурка") playSound(of: myDog) // "Бобик чычкайт" чыгат playSound(of: myCat) // "Мурка мияулайт" чыгат -
Абстракция: Объекттин маанилүү өзгөчөлүктөрүн бөлүп алуу жана маанилүү эмес нерселерди көзгө илбөө. Объекттер жөнүндө жалпы түшүнүктөр түзүү:
// Геометриялык фигура жөнүндө жалпы түшүнүк, конкреттүү ишке ашырылышы жок protocol Shape { func calculateArea() -> Double func calculatePerimeter() -> Double } // Чекит жана квадрат үчүн конкреттүү ишке ашырылыштар 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 } }