1. 객체란?
- 객체는 현실 세계에 존재하는 모든 물체나 개념을 소프트웨어 세계로 표현한 것이다. 객체는 그 자체로 하나의 역할을 수행하며, 상태와 행동을 가진다.
2. 객체의 구성
- 속성(필드): 객체의 상태나 특징을 표현한다. 예: 사람의 이름, 나이, 키 등
- 행위(메서드): 객체가 할 수 있는 작업이나 기능을 표현한다. 예: 사람이 걷다, 뛰다, 먹다 등
3. 객체 간의 상호작용
- 객체들은 메서드를 호출하는 방식으로 서로 상호작용한다. 이를 통해 데이터나 명령을 주고받는다.
4. 객체 간의 관계
- 사용 관계: 한 객체가 다른 객체의 기능을 사용하는 관계
- 포함 관계: 한 객체가 다른 객체를 포함하는 관계, 예: 자동차 객체 안에 엔진 객체
- 상속 관계: 한 객체가 다른 객체의 특성을 물려받는 관계
5. 객체 지향 프로그래밍의 특징
- 캡슐화: 내부 구현을 감추고, 사용자에게는 필요한 정보와 기능만을 제공한다. 데이터의 보호 및 외부의 무분별한 접근 제한의 목적이다.
- 상속: 기존 클래스의 특성을 재사용하면서 확장하여 새로운 클래스를 정의하는 것. 코드 재사용성을 높이며, 계층구조를 통한 구조화가 가능하다.
- 다형성: 하나의 인터페이스나 클래스가 여러 형태로 동작하는 것. 메서드 오버로딩, 오버라이딩을 통해 구현되며, 유연한 코드 작성이 가능하다.
- 추상화: 복잡한 현실 세계의 객체를 소프트웨어 세계에서 필요한 특징만을 가진 단순화된 객체로 변환하는 것. 예: 동물이라는 추상적 개념 아래 개나 고양이 같은 구체적인 객체를 묶는 것.
6. 객체와 클래스
- 클래스: 객체를 생성하기 위한 템플릿 혹은 설계도. 객체의 공통된 속성과 행위를 정의한다.
- 인스턴스: 클래스를 통해 실체화된 객체. 클래스에 정의된 속성과 행위를 가진 실체.
- 인스턴스화: 클래스를 사용하여 새로운 인스턴스(객체)를 생성하는 과정.