{'fraction_non_alphanumeric': 0.016923076923076923, 'fraction_numerical': 0.0, 'mean_word_length': 4.7105263157894735, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Inheriting and modifying behavior

In languages such as C++, the mechanism of protected members is critical to making inheritance work. It allows access to some of the intervals of a base class B to the designer of a derived class D, while denying it to clients of B. The authors develop a formal approach in which class behavior is precisely specified in terms of an abstract specification and a concrete specification, the former for use by a client, the latter containing information about how the protected members change, for use by a derived class designer. They present rules that allow one to establish that a class meets both specifications.