THE CLPROLF PROGRAMMING LANGUAGE


CLPROLF – Explaining Declensions

Clprolf is a language and framework that helps you design objects with a single, explicit responsibility. By assigning each class a role (also called its declension), you ensure compliance with the Single Responsibility Principle (SRP). Objects become components, and this clarity remains intact even with inheritance.


Foundational Principles of Clprolf

Clprolf is based on two core principles:

  1. A class is either technical or organized around a well-defined class domain.
  2. Inheritance must preserve the class domain; if it does not, composition is used instead.

These principles define how Clprolf structures components and relationships.


The class domain is the central subject around which a class is organized. It defines what the class fundamentally represents and what it is responsible for.

For example:

A technical class, by contrast, does not represent a conceptual domain. It provides technical support (e.g., logging, parsing, low-level utilities).


What Is a Declension?

A declension expresses the nature of a class — its fundamental role in the system. Clprolf defines only a few basic roles, which keeps design unambiguous and intuitive.

The five available declensions are:

  1. agent Synonyms: abstraction, simu_real_obj.

  2. worker_agent Synonyms: comp_as_worker.

  3. model (no synonyms).

  4. information (no synonyms).

  5. indef_obj A flexible object without explicit role, behaving like a traditional OO class.


Synonyms and Aspects

Each declension keeps only a minimal set of synonyms, and every synonym reflects a specific aspect:

This structure makes the system both easy to memorize and easy to teach. Synonyms are no longer arbitrary alternatives but clearly justified by the perspective they express.


Domain Objects

These objects represent real-world abstractions or domain concepts.


Technical Objects

These objects handle purely computational or support tasks. Here, the computer itself is seen as the actor.

Examples: system utilities, DAOs, repositories, low-level services, or MVC view components.


Interfaces and Declensions

Interfaces also have declensions:


Inheritance Consistency

Clprolf enforces that inheritance stays role-consistent:


Using Declensions

In pure Clprolf, the declension replaces the class keyword. In the framework, it appears as an annotation above the class.

Example:

public class_for agent Animal { ... }
@Agent
public class Animal { ... }

Algorithm for Choosing a Declension

Every class must declare a role.

Step 1 – Does the class have methods?

Step 2 – Is the responsibility domain or technical?


Summary

Result: a simpler, more maintainable system, where every object is clearly positioned.


Notice

If the class already fits one of the well-known architectural categories, you can directly assign a matching role: