탄생 배경
초기 프로그래밍은 절차적 프로그래밍이었다. 명시된 입력을 받아서 명시된 순서로 처리한 다음, 그 결과는 내는 방식이었다. 프로그램을 어떤 논리로 어떤 순서대로 써 내려가는것이 주요한 쟁점이었다. 그러나 간단한 알고리즘이면 몰라도, 조금만 복잡해지면 순서도로 나타내지는게 불가능한 스파게티코드를 양산하게 된다. 시간이 흐를수록 복잡한 프로그램이 요구되었는데, 기존 절차적 프로그래밍으로는 도저히 작성할 수가 없었던것.
이 때 구조적 프로그래밍이 탄생하게 된다. 프로그램을 함수단위로 나누고 함수끼리 호출을 하는 방식이다. 프로그램이라는 큰 문제를 해결하기 위해 작은 함수로 쪼개는 방식이기 때문에 탑-다운(하향식) 방식이라고도 불린다.
그러나 구조적 프로그래밍도 데이터 자체를 구조화 하지는 못했다. 전역 네임 스페이스는 점점 포화상태가 되어가고, 특히나 GUI프로그램에서는 실행 콘텍스트를 저장할 방법이 없었다.
이를 극복하기 위한 대안으로 나온것이 객체지향 프로그래밍이다. 큰 문제를 쪼개는 것이 아니라, 먼저 작은 문제들을 해결할 수있는 객체들을 만든 뒤, 이 객체들을 조합해서 큰 문제를 해결하는 상향식(Bottom-up) 해결법을 도입한 것이다. 객체를 독립성과 신뢰성이 보장되게 만들어 놓으면 재사용성도 높아지므로 개발기간과 비용 또한 줄어들게 되었다.
정의
객체지향 프로그래밍(Object-Oriented Programming , OOP)는 컴퓨터 프로그래밍의 패러다임의 하나이다. 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러개의 독립된 단위, 즉 '객체'들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고 데이터를 처리할 수 있다.
디자인 패턴
객체지향 프로그래밍 또한 점점 복잡해지면서 '디자인 패턴'이 대두되었다. 프로그래밍 형식을 정하는 약속으로, 협업을 전제로 한 환경에서 특히 강조된다.
'【 개발 이야기 】' 카테고리의 다른 글
인터페이스는 왜 필요한걸까요 그건 바로... (0) | 2025.03.14 |
---|---|
코틀린에서 new 없이 의존성 주입(DI)을 통해 객체를 생성하는 방식 (0) | 2025.03.14 |
RestTemplate <-> netty (0) | 2025.02.10 |
북마크 (0) | 2025.02.01 |
[java testcode] (1) | 2025.01.28 |