객체 지향 프로그래밍(Object Oriented Programming - OOP)
쉽게 말해 조립식 프로그래밍 이라고 할 수 있다. - 프로그램을 부분부분 미리 만들어놓고 이를 조립하여 프로그램을 완성하는 과정이다.
* 객체 지향의 장점
1. 프로그램의 관리가 편리하다.
2. 객체를 재사용할 수 있다.
3. 프로그램 확장이 편리해진다.
객체(Object)
객체란 말 그대로 하나의 대상을 프로그래밍 가능한 형태로 추상화하여 나타낸 것을 말한다.
예를 들면 사람, 동물, 책 이런것들 하나하나의 특징과 행동을 프로그래밍 하는것에 초점을 맞춰 추상화 해주는것이다.
클래스(Class)
클래스란 객체를 만들기 위한 하나의 설계도 라고 할 수 있다.
예를 들어 사람이라는 하나의 객체를 표현하고자 할 때, 이름, 나이 성별과 같은 특징들과 인사하기, 잠자기 와 같은 가능한 행동들을 각각 필드(field)와 메소드(method)로 표현하여 객체를 구성하는 하나의 틀을 만들어주는 것이다.
이렇게 클래스를 통해 객체를 만들어내는 과정을 '인스턴스 화' 라고 하고, 이 때문에 객체를 인스턴스라고 부르기도 한다.
또한 설계된 객체의 필드와 메소드를 하나의 도표로 작성해준 것을 클래스 다이어그램 이라고 한다.
아래는 강아지 객체를 만들기 위해 설계한 클래스이다.
Dog.java
class Dog {
String name; // 이름
String breeds; // 품종
int age; // 체중
void wag() {
System.out.println("꼬리 치기");
}
void bark() {
System.out.println("짖기");
}
}
* 생성자(Constructor)
클래스로부터 객체를 만들어주는 특별한 메소드이다.(클래스 인스턴스를 생성시키는 메소드)
- 생성자를 호출할 때는 new 키워드를 사용하며, 클래스 상에서 생성자를 정의할 때는 리턴 타입을 지정하지 않는다.
- 클래스에 생성자를 정의해 두지 않으면 자동으로 디폴트 생성자가 생성되므로, 생성자를 따로 정의해 두지 않아도 디폴트 생성자를 통해 객체 인스턴스를 생성하는 것이 가능하다.
-> 디폴트 생성자 : 입력 파라미터가 없는 생성자(NoArgsConstructor)
- 반대로 입력 파라미터가 있는 생성자가 정의 될 경우 디폴트 생성자는 사용할 수 없다.(필요하다면 입력 파라미터가 없는 디폴트 생성자를 직접 정의해주어야 한다.)
- 같은 이름임에도 불구하고 입력 파라미터가 다른 것을 기반으로 메소드를 구분할 수 있는 것을 객체 지향에서의 다형성 이라고 한다.
객체지향 프로그래밍의 특징
1. 추상화
- 목적과 관련이 없는 부분을 제외해서 필요한 부분을 포착하는 기법
- 객체의 공통된 속성들 중 필요한 부분을 포착해서 클래스로 정의하는 기법
2. 캡슐화
- 외부에 노출할 필요가 없는 정보들을 은닉하는것(정보 은닉)
3. 상속
- 상속 관계에 있는 두 클래스에 대해, 부모 클래스가 자손 클래스에게 속성을 물려주는것
- 코드의 재사용이 목적이다.
4. 다형성
- 같은 형태이지만 서로 다른 기능을 하는것
- 관련된 기능으로 오버라이딩이 있다.
'JAVA > 객체지향' 카테고리의 다른 글
JAVA - 객체지향 프로그래밍(OOP) - 추상 클래스 (0) | 2022.01.23 |
---|---|
JAVA - 객체지향 프로그래밍(OOP) - 인터페이스 (0) | 2022.01.23 |
JAVA - 객체지향 프로그래밍(OOP) 특징 - 2 (0) | 2022.01.23 |
JAVA - 객체지향 프로그래밍(OOP) 특징 - 1 (0) | 2022.01.23 |