Sobes.tech
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
        }
    }