Junior — Middle
Vai jūs varat izskaidrot galveno ideju atvēršanas un slēgšanas principā objektorientētajā programmēšanā?
sobes.tech AI
Atbilde no AI
Objektorientētās programmēšanas principā Atvērtības/ Aizvērtības princips nozīmē, ka programmatūras vienības (klases, moduļi, funkcijas) ir atvērtas paplašināšanai, bet aizvērtas modifikācijai.
Tas nozīmē, ka sistēmas uzvedību var paplašināt bez esošā koda maiņas. Šī pieeja palīdz izvairīties no kļūdām, kas var rasties, mainot pārbaudīto kodu, un atvieglo programmas uzturēšanu un attīstību.
Piemēram, ja nepieciešams pievienot jaunu funkcionalitāti, ir labāk izveidot jaunu klasi, kas paplašina esošo, nevis tieši mainīt sākotnējo klasi.
Piemērs Swift:
protocol Shape {
func area() -> Double
}
class Circle: Shape {
var radius: Double
init(radius: Double) { self.radius = radius }
func area() -> Double { return .pi * radius * radius }
}
class Rectangle: Shape {
var width: Double, height: Double
init(width: Double, height: Double) {
self.width = width
self.height = height
}
func area() -> Double { return width * height }
}
// Lai pievienotu jaunu figūru, piemēram, Trijstūri, nemainām esošās klases, bet izveidojam jaunu:
class Triangle: Shape {
var base: Double, height: Double
init(base: Double, height: Double) {
self.base = base
self.height = height
}
func area() -> Double { return 0.5 * base * height }
}