IIRC, in C++ (and some languages inspired by it) the this is a hidden argument/parameter, so the issue would be similar. Evidence of that is the fact that when overloading binary operators, some of the overloading has to be implemented outside the class (otherwise, there’ll be three arguments instead of two).
Since, unlike C++, Fortran has no reserved keywords, the passed-object can have any name but must be either explicitly passed or not at all (although, if passed, the argument doesn’t have to be the first one).
The second case you provided elsethread, should become valid if you do:
...
type PROB_T
real hyper_parameter
contains
procedure, nopass :: objective
end type PROB_T
contains
subroutine objective(x, y)
real, intent(in):: x
real, intent(out):: y
...
end subroutine objective
...
But that defeats the main idea of this thread (since objective would have no access to the instance of PROB_T).
In Python, the class object is passed as the first argument/parameter, unless the method has a staticmethod decorator, and the convention is to name that argument self.
So, Oberon-2 and Go may actually be the odd kids in the block.