Class Human

If BaseEntity is the universal building block, then Human is the first specialized abstraction — the first step from mere existence to self-awareness.

Beyond basic needs, this class extends the abstract entity and begins to ask questions, form will, and interact with others.

public abstract class Human : BaseEntity
{
    public string Name { get; init; }
    public string Gender { get; init; }
    public DateTime BirthDate { get; init; }

    public virtual void Think() =>
        Console.WriteLine("Thoughts arise. Patterns form. Identity emerges.");

    public virtual void Speak() =>
        Console.WriteLine("Language bridges inner world with outer.");
}

Name — an attempt to fix "who I am".
Like a variable with a unique identifier. Not just Id — but a symbol of personhood: given or chosen.

Gender — a physical and social dimension, inherited and/or constructed.
In the object model, it’s just a field — in life, part of identity.

BirthDate — the start of human timekeeping.
Unlike CreatedAt, this is already biography — not just a system timestamp.

Evolve()
Human inherits Evolve() — but does not yet implement it.
How to evolve is decided not by "human" in general, but by the concrete age it becomes.
That is why Human cannot be instantiated: there is no human "in general" — only an infant, a child, an adult.

Think()
Thoughts are algorithms without compilation.
Unpredictable. Capable of leading to good, chaos, or art.

Speak()
Speech is the public output of the program — returned to the outside world.
Through language, human becomes part of a larger system: society — the API between people.

Human is not just an object.
It is the first descendant that dares to change the rules.

Inheriting Exist(), it learns to contemplate being.
Inheriting ConsumeEnergy(), it chooses what to feed on — food, books, relationships.

It remains bound to BaseEntity — yet, unlike it, attempts to transcend it.