반응형
객체지향 프로그래밍(이하 OOP)이란?
컴퓨터 프로그래밍 패러다임 중 하나로, "객체"의 모임으로 파악하고, 각 "객체"는 서로 메세지를 주고받고, 데이터를 처리할 수 있다
OOP의 기본 요소
- 클래스: 같은 속성과 행위를 정의한 것. OOP의 기본적인 사용자 정의 데이터형식
- 객체: 클래스의 인스턴스. 객체는 자신의 고유한 속성을 가지고, 정의된 행위를 할 수 있다.
- 메서드: 클래스로부터 생성된 객체를 사용하는 방법. 한 객체의 서브루틴 형태로 객체의 속성을 조작하는데 사용된다.
- 메세지: 객체에 내리는 명령. 객체 간 통신은 메세지를 통해 이뤄진다.
OOP의 특징
1. 추상화(Abstraction)
- 불필요한 정보는 없애고, 중요한 정보만을 표현함으로 프로그래밍을 쉽게만든다
- 객체지향의 관점에서 클래스를 정의하는 것
논외로, 속성 위주의 추상화가 아닌 동작 위주의 추상화를 하는 것이 좋다 동작에 필요하지 않은 속성은 결국 불필요하다
2. 캡슐화(Encaptulation)
- 객체의 데이터를 외부에서 접근하지 못하게 막고, 함수(메소드)를 통해서 조작이 가능하게 하는 작업
- SW 공학 관점에서 높은 응집도와 낮은 결합도를 유지할 수 있도록 설계하는 것 유지보수 할 때 유연하게 대처가 가능하다
- 응집도(Cohension): 클래스나 모듈 안의 요소가 얼마나 밀접하게 관련되어 있는지
- 결합도(Coupling): 어떤 기능을 수행하는데 다른 클래스나 모듈에 얼마나 의존적인지
코드를 수정 없이 활용 할 수 있도록 한다.
요청자는 '무엇'을 할지만 요청하고, 수신자는 '어떻게' 처리할 지를 결정하면 됨
3. 상속(Inheritance)
- 부모(조상) 클래스의 속성과 기능을 그대로 사용할 수 있다
- 기능의 일부를 변경할 경우 상속받은 자식 클래스에서 다시 정의하여 사용할 수 있게 하는 것
- General한 클래스를 만들어 두면 반복적으로 구현하지 않아도 됨
4. 다형성(Polymorphism)
- 동일한 요청에 대해 다양한 방식으로 응답할 수 있다.
즉, 오버로딩, 오버라이딩이 가능하다
오버로딩(Overloading): 같은 이름의 메서드를 여러개 정의하고, 매개변수 타입과 개수를 다르게 해 매개변수에 따라 다르게 호출한다
오버라이딩(Overriding): 부모클래스와 메서드와 같은 이름의 동작을 재정의한다
OOP의 장점
- 코드 재 사용이 용이하다 상속을 통해 확장하거나, 남이 정의한 클래스를 사용하기 쉽다
- 유지보수가 쉽다 절차지향언어에서는 수정할 부분을 찾아야 하지만, OOP에서는 클래스 내부를 수정하면 쉽게 해결할 수 있다
- 대형 프로젝트에 적합하다
OOP의 단점
- 처리속도가 상대적으로 느림
- 설계시 많은 노력이 필요하다
참고:
반응형
'Java' 카테고리의 다른 글
Java Code Convention (0) | 2021.05.02 |
---|---|
VO, DTO, Entity (0) | 2021.05.02 |
JVM이란 무엇인가? (0) | 2021.04.27 |
댓글