Sobes.tech
Intern

Šta je objektno-orijentisano programiranje?

sobes.tech АИ

Одговор од АИ

Објектно-оријентирано програмирање (ООП) је парадигма програмирања која се заснива на концепту "објеката", који могу садржати податке (атрибуте) и код (методе).

Основни принципи ООП укључују:

  • Инкапсулација: Скривање података и метода унутар објекта, којем се приступа кроз добро дефинисан интерфејс.
  • Наслеђивање: Механизам који омогућава једној класи (подкласи) да наследи својства и понашање друге класе (родитељске класе).
  • Полиформизам: Могућност коришћења истог интерфејса за објекте различитих класа, при чему сваки објекат понаша се својим начином.
// Пример инкапсулације у Swift-у
struct Point {
    private var x: Double
    private var y: Double

    init(x: Double, y: Double) {
        self.x = x
        self.y = y
    }

    func distance(to otherPoint: Point) -> Double {
        let deltaX = self.x - otherPoint.x
        let deltaY = self.y - otherPoint.y
        return sqrt(deltaX * deltaX + deltaY * deltaY)
    }
}

let p1 = Point(x: 0, y: 0)
let p2 = Point(x: 3, y: 4)
// print(p1.x) // Грешка при компилацији: 'x' није приступачан због 'private' нивоа заштите
print(p1.distance(to: p2)) // Излаз: 5.0
// Пример наслеђивања у Swift-у
class Animal {
    func speak() {
        print("Некој општи звук")
    }
}

class Dog: Animal {
    override func speak() {
        print("Вуф!")
    }
}

let myDog = Dog()
myDog.speak() // Излаз: Вуф!
// Пример полиморфизма у Swift-у

// Користимо класе Animal и Dog из примера наслеђивања

func makeAnimalSpeak(animal: Animal) {
    animal.speak()
}

let someAnimal: Animal = Animal()
let aDog: Animal = Dog() // Објекат Dog, али третира се као Animal

makeAnimalSpeak(animal: someAnimal) // Излаз: Некој општи звук
makeAnimalSpeak(animal: aDog) // Излаз: Вуф!

Предности ООП:

  • Поновна употреба кода: Преко наслеђивања и композиције.
  • Боља читљивост и одржавање: Код је организован у логичке јединице (објекте).
  • Флексибилност: Полиморфизам омогућава лако додавање нових типова објеката без измене постојећег кода.
  • Лакше дебаговање: Омогућава изолацију проблема унутар конкретних објеката.