평상시,
클래스, 객체, 필드, 메소드를 비유해서 생각해본 결과
클래스 디자인할때 상당히 도움이 됬었습니다.
1년전 배운 20년경력 자바강사님에 따르면,
클래스 = 설계도 (아직 세상에 존재하지않음 = 메모리에 잡히지 않음)
객체 = 생명체 (세상에 존재함 = 메모리에 잡혀있음)
필드 = 객체를 추상화한 것중 "명사"에 해당
메소드 = 객체를 추상화한 것중, "동사"에 해당.
그리고 비유를 이렇게 하셨습니다.
김태희는 여자 클래스의 인스턴스이며, 객체입니다.
김태희의 특징을 모아보면
1, 말을한다 (동사)
2. 걷는다 (동사)
3. 나이 (명사)
4. 이름 (명사)
그래서,
public class Woman
{
private int age;
private String name;
public void run() {...}
public void speak() {...}
}
뭐 이런느낌으로요.
그래서, new Woman();을 하기 전까지는 메모리에 잡히지않고,
비로소 new Woman();.을 해야 메모리에 잡힌다.. 뭐 이런느낌이었습니다.
이 느낌이, 실제로 디자인하는대 지대한 영향을 줬고,
지금 생각해보니....
1. ??? static field는 뭐라고 비유해야하고..
2. ??? static method는 뭐라고 비유해야 아다리가 맞을까요?
+ 중첩클래스는 뭐라고 비유해야 적당할까요?
위에 비유들은 모두 instance field, instance method잖아요.
김태희의 나이도,
김태희가 걷는다도,
김태희가 세상에 태어나지않으면 존재할수없는 명사와 동작이니까요.
객체지향 설계 선배님들, 의견하나씩 주시면 감사하겠습니다.
객체지향 뉴비가 이걸 어떻게 비유해서 이해하면 좋을까요?