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
        }
    }
    
  • Ներառականություն: Մեխանիզմ, որը թույլ է տալիս ստեղծել նոր դաս (մշակ) հին դասի հիման վրա, ժառանգելով նրա հատկությունները և մեթոդները: Սա նպաստում է կոդի կրկնվող օգտագործմանը:

    // Դասերը Dog և Cat ժառանգում են 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) մյաում է")
        }
    }
    
  • Պոլիմորֆիզմ: Հնարավորություն, երբ տարբեր դասերի օբյեկտները պատասխանեն նույն հաղորդագրությանը (մեթոդի կանչին) տարբեր կերպ՝ կախված իրենց տիպից:

    // տարբեր իրականացման մեթոդներ makeSound() դասերում Dog և Cat
    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
        }
    }