Purpose of UFUNCTION, UPROPERTY, UCLASS macros

From what I’ve read on Class Specifiers, it seems to be dependent on which specifier you use. I could be wrong though, I’m new.