Junior — Middle
Можете ли да обясните основната идея на принципа на отвореност и затвореност в обектно-ориентираното програмиране?
sobes.tech AI
Отговор от AI
Принципът на отвореност и затвореност в обектно-ориентираното програмиране означава, че софтуерните същности (класове, модули, функции) трябва да бъдат открити за разширяване, но затворени за модификация.
Това означава, че поведението на системата може да бъде разширено без да се променя съществуващият код. Този подход помага да се избегнат грешки, които могат да възникнат при промяна на проверения код, и улеснява поддръжката и развитието на програмата.
Например, ако трябва да добавите нова функционалност, е по-добре да създадете нов клас, който разширява съществуващия, отколкото да променяте директно оригиналния клас.
Пример на 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 }
}
// За да добавите нова фигура, например Триъгълник, не променяме съществуващите класове, а създаваме нов:
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 }
}