This rule checks that non-abstract classes inheriting from AbstractUc begin with Uc, end with Impl and implement an interface with the same name except the suffix Impl.
public class UcTestImpl extends AbstractUc {}
public abstract class UcClass extends AbstractUc {}
public class UcTestImpl extends AbstractUc implements UcTest {}