티스토리 뷰
OOP
OOP(Object - Oriented - Programing)의 줄임말
객체지향프로그래밍을 뜻한다.
프로그램을 수많은 '객체(object)'라는 기본 단위로 나누고 이들의 상호작용으로 서술하는 방식이다.
OOP는 코드 재사용성과 생산성의 향상 효과를 볼 수 있고, 유지보수의 편의성 덕택에 협업이 중요하고
규모가 큰 대형 프로젝트에 사용되는 프로그래밍 이론이다.
OOP의 이전에 프로그래밍
절차지향 프로그래밍
초기프로그래밍은 절차지향프로그래밍이다. 입력을 받아 명시된 순서대로 처리후 결과를 내는 방식이다
그러나 간단한 알고리즘이면 몰라도 조금만 복잡해져도 코드가 복잡해지고 시간이 흐를수록
복잡한 프로그램을 요구가 되었는데 절차지향프로그래밍으로 해결 할 수없었다.
구조적 프로그래밍
절차지향프로그래밍을 개선한 방식으로 프로그램을 함수단위로 나누고 함수끼리 호출하는 방식이다.
프로그램이라는 큰 문제를 해결하기 위해 작은함수로 쪼개는 방식 Top-down (하향식)방식이라고 불린다.
OOP의 4가지 특징
1. 캡슐화
정보 은닉화를 통해 높은 응집도, 낮은 결합도를 유지할 수 있도록 설계하는것
객체의 데이터를 외부에서 직접 접근하지 못하게 막고, 메소드를 통해서만 조작이 가능하게 한다.
예를들어 캐릭터의 레벨로 비유하자 캐릭터의 레벨 같은경우 사용자가 임의로 조작하면 게임에 문제가 생길가능성이 있다.
그래서 레벨업이라는 함수를 통해서만 레벨이 조작이 되게 설계하고 외부에서 레벨이라는 변수에 접근을 못하도록 한다
2. 추상화
추상화는 객체들이 가진 객체의 공통적인 속성과 기능을 추출하여 정의하는 것이다.
추상화를 할때 속성 위주가 아닌 동작위주로 정의하는 작업을 하는것이다.
객체의 동작에 연관이 되지 않는 속성들은 결국 불필요하다.
3. 상속
기존 상위클래스에 기능을 가져와 재사용할 수 있으면서도 동시에 새로운 하위 클래스에 새로운 기능도 추가할 수 있는 것이다.
기능의 일부분을 변경하는 경우 자식 클래스에서 상속받아 수정 및 사용함
상속은 캡슐화를 유지, 클래스의 재사용이 용이하도록 해 준다.
- 부모 클래스 : 속성, 규칙, 행동 등을 물려주는 클래스
- 자식 클래스 : 부모 클래스로부터 상속을 받아 새롭게 정의 되는 클래스
4. 다향성
다형성이란 상속과 연관있는 개념으로 한 객체가 상속을 통해 기능을 확장하거나 변경하여 다른 여러형태(객체)로 재구성 되는 것을 말한다.
객체지향의 페러다임이라고 할수 있다.
인터페이스를 구현한 객체 인스턴스를 실행 시점에 유연하게 변경할 수 있다.
클라이언트를 변경하지 않고, 서버의 구현 기능을 유연하게 변경할 수 있다.
정리
결론적으로 객체 간의 독립성이 뚜렷하게 생기고, 중복되는 코드의 양이 줄어든다.
따라서 유지보수에 용이해질 것이다. 확장가능한 설계가 가능해진다.
'프로그래밍 > 자바-스프링' 카테고리의 다른 글
DTO와 VO (0) | 2022.05.07 |
---|---|
객체지향프로그래밍의 5원칙 : SOLID (0) | 2022.04.24 |