Sobes.tech
Junior

Mi az az objektumorientált programozás alapelvei?

sobes.tech MI

Válasz az MI-től

Objektumorientált programozás alapelvei:

  • Encapsuláció: Az adatok (tulajdonságok) és az azokkal dolgozó metódusok egyetlen objektumba való összegyűjtése, valamint a belső implementáció elrejtése a külvilág elől. Az adatokhoz való hozzáférés meghatározott nyilvános interfészek (metódusok) segítségével történik.

    // A balance tulajdonság belső implementációjának elrejtése
    class Account {
        private var balance: Double = 0.0
    
        func deposit(amount: Double) {
            if amount > 0 {
                balance += amount
            }
        }
    
        func getBalance() -> Double {
            return balance
        }
    }
    
  • Öröklődés: Olyan mechanizmus, amely lehetővé teszi egy új osztály (gyermek) létrehozását egy meglévő (szülő) osztály alapján, örökölve annak tulajdonságait és metódusait. Ez a kód újrahasznosítását segíti elő.

    // A Dog és Cat osztályok öröklik az Animal osztály tulajdonságait és metódusait
    class Animal {
        let name: String
    
        init(name: String) {
            self.name = name
        }
    
        func makeSound() {
            print("\(name) hangot ad ki")
        }
    }
    
    class Dog: Animal {
        override func makeSound() {
            print("\(name) ugat")
        }
    }
    
    class Cat: Animal {
        override func makeSound() {
            print("\(name) nyávog")
        }
    }
    
  • Polimorfizmus: Képesség, hogy különböző osztályok objektumai ugyanarra az üzenetre (metódushívásra) különböző módon reagáljanak, az adott típusuktól függően.

    // Különböző implementációk a makeSound() metódusra a Dog és Cat osztályokban
    func playSound(of animal: Animal) {
        animal.makeSound() // Polimorfikus hívás
    }
    
    let myDog = Dog(name: "Bobby")
    let myCat = Cat(name: "Murka")
    
    playSound(of: myDog) // "Bobby ugat" fog megjelenni
    playSound(of: myCat) // "Murka nyávog" fog megjelenni
    
  • Absztrakció: A lényeges jellemzők kiemelése egy objektumról, a nem lényegesek figyelmen kívül hagyása. Általánosított reprezentációk létrehozása az objektumokról.

    // Egy geometriai alakzat ábrázolása konkrét megvalósítás nélkül
    protocol Shape {
        func calculateArea() -> Double
        func calculatePerimeter() -> Double
    }
    
    // Konkrét megvalósítások kör és négyzet esetén
    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
        }
    }