Q:

Java OO class design example of haircut in real life

guys i'm very new to OOP. 
I want to design the OO classes to represent how the human perform actions of haircut
I have the intial classes blueprint like this: 
class Human {
    Human(){}
    class Hair{
        private int length;
        Hair(){
            this.length=10;
        }
    }
}
class Tools{
    Tools(){}
    class Scissors{
        Scissors(){}
    }
}
class HoldingScissors{
    public void makeHairCut(Human theHuman){
        theHuman.Hair.length = 5;
    }
}

However, i don't know how to link up the relationships between them.
I want the human 'grab' the scissors first, and then have the ability to make a haircut.
Can someone please show me how to achieve this?

A:

HoldingScissor should probably not be a class, but a property that enables the execution of a class of actions. 
there are, however, one million ways to model this. there are two things about OO: message passing and encapsulation; do not focus on object granularity alone as you would be chasing the wrong abstraction
abstract class Action {
  public void perform();
}

public class CutHairsAction {

 Human agent,target;

 public  CutHairsAction(Human agent, Human target) {
   if (agent.getHolding() == null) throw new IllegalStateException("agent not holding scissors"); 
   if (! agent.getHolding() instanceOf Scissor) throw new IllegalStateException("agent not holding scissors"); 
 if (target.Hair.lenght < 5) throw new IllegalStateException("target hair short enough"); 

   this.target = target;
   this.agent = agent;
 }

 public void perform() {
 target.Hair.length = 5;
 }
}

