Sobes.tech
Junior — Middle

Чӣ гуна фарқият дорад тақсимоти статикӣ ва динамикӣ дар барномасозӣ?

sobes.tech AI

Ҷавоб аз AI

Тақсимоти статик (static dispatch) дар вақти компилятсия рух медиҳад. Компилятор пешакӣ медонад, ки кадом метод даъват мешавад ва даъваро мустақиман бо иҷрои мушаххас пайванд мекунад. Ин иҷрои баландро таъмин мекунад, аммо чандириро кам мекунад.

Тақсимоти динамик (dynamic dispatch) дар вақти иҷрои барнома рух медиҳад. Даъвати метод аз рӯи навъи объект дар вақти иҷро муайян мешавад, ки имкон медиҳад полиморфизм ва ивазкунии методҳоро амалӣ кардан. Дар iOS, ин аксар вақт тавассути механизм runtime Objective-C иҷро мешавад, ки дар он даъватҳои метод тавассути ҷадвали паёмҳо мегузаранд.

Масалан дар Swift:

class Animal {
    func sound() {
        print("Баъзе сад")
    }
}

class Dog: Animal {
    override func sound() {
        print("Хӯрдан")
    }
}

let animal: Animal = Dog()
animal.sound() // Ба сабаби тақсимоти динамик "Хӯрдан" мебарояд

Ин ҷо, даъвати sound() дар вақти иҷро муайян мешавад, ки намунаи тақсимоти динамик аст.