본문 바로가기

TIL

Day29(객체지향 프로그램 작성에 대한 방향성,TDD 작성시 생각할 점,참조)

객사오 읽으면서 중요한 점

 

객체지향 프로그램을 작성할 때는 행동을 결정한 후에 그 행동을 수행하는데 필요한 데이터를 고민해야한다.

행동과 데이터를 결정 후 클래스의 구현 방법을 결정한다.

 

객체의 행동 이유는 다른 객체로부터의 요청을 수신 받기 때문이다. 요청에 대하여 처리하기 위한 객체의 행동을 책임이라 한다.

 

TDD를 작성할 때는 객체가 이미 존재한다고 가정하고 객체에게 어떤 메시지를 전송할 것인지에 관하여 먼저 생각한다.

또한 책임을 수행할 객체 또는 클라이언트가 기대하는 개체의 역할이 메시지를 수신할 때 어떤 결과를 반환하고 그 과정에서 어떤 객체와 협력한 것인지에 대한 기대를 코드로 작성한다.

 

 


참조와 참조 변수

 

자바에서 참조(reference)란, 객체를 가리키는 값으로 객체의 메모리 주소를 의미한다. 즉, 객체를 생성하면 해당 객체를 가리키는 참조가 생성되고, 이 참조를 이용하여 객체에 접근하고 조작할 수 있다.

 

자바에서 객체를 생성하면, 객체가 저장될 메모리 공간이 할당되고,  이 공간에는 객체의 상태와 메서드 등이 저장된다. 그리고 이 객체를 가리키는 참조 변수(reference variable)가 생성되어, 이 변수가 해당 객체의 메모리 주소를 가리키게 됩니다. 참조 변수는 객체의 타입과 일치해야 하며, 타입 뒤에 참조 변수 이름을 지정하여 생성한다.

 

Myobject obj = new MyObject();

위 코드에서 obj는 MyObject 타입의 참조 변수이며 ,new 연사자를 이용하여 MyObject 객체를 생성하고, 이 객체의 메모리 주소를 obj에 저장합니다. 이후에 obj를 이용하여 객체의 메서드를 호출하거나, 객체의 상태를 조작할 수 있습니다.

 

참조 변수는 단순한 포인터 개념이 아니며, 자바에서는 참조 변수와 객체 사이의 연결 관계를 Garbage Collector가 관리하므로, 프로그래머가 명시적으로 메모리를 해제할 필요가 없다. 이러한 Garbage Colletor의 동작은 참조 변수와 객체의 생명 주기를 관리하며,참조 변수가 객체를 가리키는 동안 객체는 계속 유지되고, 참조 변수가 가리키는 객체가 더 이상 필요하지 않을 때, Garbage Collector가 해당 객체를 자동으로 메모리에서 해제한다.

오류 코드java.io.IOException: Stream closed"