객체 지향 프로그래밍
객체란 자신의 속성을 가지고 있으면서 식별이 가능한 것을 말한다. 속성과 동작으로 구분되어 있다.
여기서 속성은 필드, 동작은 메소드로 이해하면 된다.
객체에는 상호작용이 빠질 수 없는데 상호작용을 하려면 메소드 호출방법을 알아야 한다.
리턴값 = 객체명.메소드(매개값, 매개값2,...);
int result = Calculator.add(10,20);
// 계산기 객체에 있는 더하기 매소드에 매개값으로 10, 20을 넘겨준 코드
객체 간의 관계
대부분의 객체는 다른 객체와 관계를 맺고 있다. 관계의 종류에는 집합 관계, 사용 관계, 상속 관계로 분류된다.
집합 관계
여러 객체가 모여 완성된 객체가 된다고 생각하면 편하다. 예를들어 컴퓨터 부품이 모여 본체가 되는 것.
사용 관계
집합 관계로 완성된 컴퓨터와 사용자의 관계 주로 동작 메소드를 호출하는 관계이며 컴퓨터를 예를 들면 부팅, 클릭 등등이 있다.
상속 관계
상위 객체를 기반으로 하위 객체를 생성하는 관계이다. 학교를 예를 들면 상위 객체엔 학교가 있고 하위 객체엔 학생, 선생님 등이 있을 것이다.
객체와 클래스
객체는 설계도를 바탕으로 만드는데 이 설계도를 클래스라고 한다. 클래스에는 객체를 생성하기 위한 필드와 메소드가 정의되어 있고 클래스로부터 만들어진 객체를 해당 클래스의 인스턴스라고 한다. 컴퓨터의 객체는 컴퓨터 클래스의 인스턴스라고 이해하면 편하다.
객체 지향 프로그래밍 개발은 세 가지 단계가 있다.
클래스 선언
클래스의 생성 규칙
public class 클래스명{
}
public class Web_Browser{
}
객체 생성과 클래스 변수
클래스를 선언했다면 객체를 생성하기 위한 설계돡 만들어진 셈이다. 클래스로부터 객체를 선언하려면 new 연산자를 사용해야한다.
new 클래스();
new Web_Borowser();
new 연산자 뒤에는 생성자가 작성되며 생서자는 클래스() 형태를 가지고 있다. new연산자로 생성된 객체는 메모리 힙 영역에 생성된다. new 연산자는 힙 영역에 객체를 생성시킨 뒤 객체의 번지수를 리턴하도록 되어있다. 때문에 같은 클래스에서 생성된 객체이더라도 변수명만 다르면 새로 객체를 생성하므로 서로 다른 객체이다.
클래스의 구성 멤버
클래스에는 객체가 가져야 할 구성 멤버가 선언된다. 구성 멤버로는 필드, 생성자, 메소드가 있다. 이 구성 멤버들은 생략되거나 복수로 작성될 수 있다.
필드
필드는 각 객체가 가지고 있는 변수 데이터를 선언하는 곳이다. 변수와는 다르게 생성자와 메소드 전체에서 사용되며 객체가 소멸되지 않는 한 객체와 함께 존재한다.
생성자
생성자는 new 연산자로 호출되는 중괄호 블록이다. 생성자는 객체가 생성될 때 필드를 초기화 하고 메소드를 호출해서 객체를 사용할 준비를 한다. 특이점으로는 리턴 타입이 존재하지 않는다.
메소드
메소드는 객체의 동작을 담당하는 중괄호 블록이다. 메소드를 호출하면 메소드 안에 있는 코드들이 실행된다. 메소드는 필드를 읽고 수정하는 역할도 하지만 다른 객체를 생성해서 기능을 수행하거나 객체 간의 데이터를 전달하는 역할도 수행한다.
느낀점
자바의 아이덴티티라고 생각되는 '객체'의 앞부분을 공부했다. 복잡하고 알아야할 것도 많지만 절대 타협할 수 없는 챕터라는 것을 알고 있다. 자바는 클래스를 나눠서 프로그램을 짜는 것이 보편적이고 또 보기도 편하다. 내일은 원래 필드만 공부하는 걸로 되어있지만... 필드와 생성자는 떼어놓을 수 없다고 생각해 둘 다 한번에 공부해볼 생각이다.
내일 해야할 일
오전 : 자바 스터디, 팀 스터디
오후