실제 세계는 객체로 구성되어 있고, 객체들의 상호작용을 통해 모든 사건들이 발생한다.
객체의 속성(state), 기능(behavior) 을 분석하여 프로그래밍의 변수와 함수로 정의하는 행위를 통해 실제 세계를 반영하고자 함
객체지향
실제 세계를 모델링하여 소프트웨어를 개발하는 방법
프로그램 구현에 필요한 객체 파악 및 역할을 정의하여 객체들 간의 상호작용을 통해 프로그램을 만드는 것
장점: 캡슐화
, 상속
, 다형성
과 같은 특징 → 프로그램 개발 및 유지보수 비용과 시간을 감소, 데이터 관리에 용이
단점: 코딩의 난이도가 높으며, 객체에 대한 정확한 이해가 요구됨 → 설계 단계에서 많은 시간 소요
객체 생성을 위한 틀 또는 설계도
클래스는 객체가 아니다.
클래스를 통해 생성된 객체를 인스턴스라고 하며, 해당 과정을 인스턴스화(instantiate)라고 한다.
구성요소
필드(field): 변수 → 클래스의 속성
메서드(method): 함수 → 클래스의 기능
생성자(constructor) → 객체 생성
이너 클래스(inner class) → 클래스 내부에 위치하는 클래스
생성자를 제외한 3요소를 멤버(member)라고 함
class ClassName {
// 코드
}
클래스(class)로 인해 생겨난 인스턴스(instance)
실세계에 존재하거나 생각할 수 있는 것
엄밀하게 따진다면 객체는 인스턴스를 포함하여 더 넓은 의미를 가진다.
new
키워드를 통해 객체 생성
생성된 객체의 필드값과 메서드는 저장 영역이 다르다(클래스 영역, 스택 영역, 힙 메모리 영역)
// 객체 생성
클래스명 참조변수명 = new 생성자();
// 멤버 접근
참조변수명.필드명
참조변수명.메소드명