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