객체지향 프로그래밍(Object-Oriented Programming, OOP)
객체지향 프로그래밍의 원리를 기반으로 하는 자바 프로그래밍 언어의 특징
소프트웨어를 모듈화하고 재사용 가능한 코드를 작성하는 방법론 중 하나
▶ 객체지향 프로그래밍의 핵심 개념
- 클래스(Class) : 객체의 설계도 혹은 틀로서, 객체를 생성하기 위한 필드와 메서드를 정의한다. 자바에서 모든 코드는 클래스 내에 정의되어야 한다.
- 객체(Object) : 클래스의 인스턴스로서, 메모리 상에 실제로 존재하는 데이터와 그 데이터를 처리하는 메서드의 조합이다. 객체는 클래스로부터 생성된다.
- 상속(Inheritance): 클래스가 다른 클래스의 특징과 동작을 상속받아 확장할 수 있는 메커니즘이다. 상속을 통해 코드의 재사용성을 높이고, 계층적 구조를 만들 수 있다.
- 다형성(Polymorphism): 같은 이름의 메서드나 연산자가 다른 작업을 수행할 수 있는 능력이다. 다형성을 통해 코드의 유연성을 높이고, 코드의 가독성을 개선할 수 있다.
- 캡슐화(Encapsulation): 데이터와 그 데이터를 처리하는 메서드를 하나의 단위로 묶어 외부로부터 데이터에 직접 접근하는 것을 제어하는 메커니즘이다. 캡슐화를 통해 코드의 안정성과 보안성을 개선할 수 있다.
▶ 객체지향 프로그래밍을 이해하기 위해 알아야 할 개념
1. 객체 : 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중에서 자신의 속성을 가지고 있으면서 식별 가능한 것
- 클래스라는 틀을 기반으로 생성되며, 클래스는 객체를 생성하기 위한 설계도 또는 틀을 제공함
1) 객체의 구성
- 속성(필드)과 동작(메서드)로 구성되어 있다.
- 속성(필드): 데이터, 즉 이름, 나이 등
- 동작(메서드): 기능, 즉 웃다, 먹다 등
2) 객체의 특징
- 속성(Attributes) 또는 필드(Fields): 객체가 가지는 데이터를 나타낸다. 이러한 데이터는 객체의 상태를 나타내며, 변수로 표현된다. 예를 들어, 자동차 객체의 속성으로는 브랜드, 모델, 색상 등이 있을 수 있다.
- 메서드(Methods): 객체가 수행하는 동작을 나타낸다. 이러한 동작은 객체의 행위를 정의하며, 함수 또는 메서드로 구현된다. 예를 들어, 자동차 객체의 메서드로는 주행, 정지, 가속 등이 있을 수 있다.
- 식별자(Identifier): 각 객체는 메모리 상에서 고유한 식별자를 가진다. 프로그램 요소에 이름을 부여하는 데 사용되는 이름입니다. 변수, 메소드, 클래스, 패키지 등 모든 요소에 이름을 지정할 때 사용된다.
- 캡슐화(Encapsulation): 객체는 데이터와 그 데이터를 처리하는 메서드를 하나의 단위로 묶어 캡슐화된다.
- 캡슐화는 아래와 같은 접근 제한자를 사용하여 달성한다.
- public : 어떤 클래스에서든 접근 가능
- protected : 같은 패키지 내의 클래스 및 하위 클래스에서만 접근 가능
- default (접근 제어자를 명시하지 않음) : 같은 패키지 내의 클래스에서만 접근 가능
- private : 같은 클래스 내에서만 접근 가능
- 상태(State): 객체의 현재 상태는 속성(필드) 값의 집합으로 표현된다. 객체는 이러한 상태를 변경할 수 있으며, 이러한 상태 변경은 메서드를 통해 이루어진다.
- 행위(Behavior): 객체는 메서드를 통해 정의된 동작을 수행할 수 있다. 객체의 행위는 메서드를 호출함으로써 이루어지며, 이를 통해 객체 간의 상호작용이 이루어진다.
2. 객체 모델링 : 현실 세계의 객체를 소프트웨어 객체로 설계하는 것
- 현실 세계 객체의 속성과 동작을 추려내어 소프트웨어 객체의 필드와 메소드로 정의하는 과정
3. 객체의 상호작용 : 객체들은 각각 독립적으로 존재하고, 다른 객체와 서로 상호작용하면서 동작한다.
- 메소드 : 객체들 사이의 상호작용 수단
- 메소드 호출 : 객체가 다른 객체의 기능을 이용하는 것