객체지향 프로그래밍은 객체 라는 개념을 중심으로 설계 및 구현하는 프로그래밍 패러다임이다
프로그램을 데이터와 동작을 가진 객체로 구성하며, 이 객체들간 상호작용으로 프로그램이 동작하는 방식으로 개발이 진행된다.
객체지향은 절차지향의 단점의 재사용성, 유지보수, 확장성을 개선하며
협업에 용이한 소프트웨어 개발을 위해 도입된 개발 방식이다.
장점
재사용성의 증가
이는 객체지향의 특징 상속성으로
기존 클래스를 재사용해 새로운 파생 클래스를 제작할 수 있다.
이는 부모클래스, 자식클래스로 나뉠 수 있으며 상속이라는 개념을 통해 제작된 클래스는
제작될 때부터 이미 부모에 대한 데이터, 기능을 모두 갖게된다.
유지보수성 향상
객체단위로 구성되므로 특정 기능을 수정해도 다른 부분의 영향이 최소화 될 수 있다.
수정해야 할 부분이 객체 내에 있으므로 특정 객체의 기능만 수정하면 된다.
확장성이 뛰어남
기존 로직에서 추가적인 기능이 필요할 때, 목표로 하는 기능을 담는 객체를 생성하여
프로그램 로직 내에 추가적인 상호작용을 접목시켜주면 된다.
모듈화, 분리성
각 객체 단위로 기능이 개발되며 각 객체가 독립적으로 동작하므로 코드의 구조가 명확해짐
이는 여러 개발자가 협업할 경우 각각의 객체를 독립적으로 개발이 가능해진다.
단점
초기개발 비용
OOP는 설계 단계에서 클래스, 상속, 인터페이스 등 신중하게 결정해야하므로
단순한 프로그램의 경우 절차적 프로그래밍보다 시간이 더 소요될 수 있음
과도한 추상화
지나치게 많은 클래스를 제작하게 될 경우 오히려 코드의 복잡도가 증가할 수 있으므로 가독성이 떨어지게 된다
의존성 문제
객체간의 의존성이 높아지게 될 경우 스파게티 코드로 인해 시스템 전체에 영향을 미칠 수 있음
'CS' 카테고리의 다른 글
절차지향 프로그래밍 POP (0) | 2025.02.13 |
---|---|
실행 플랫폼 별 생성되는 기계어 코드가 다른 이유 (0) | 2025.02.10 |
컴파일러 Compiler (0) | 2025.02.10 |
DI & DIP 의존성주입과 의존관계 역전원칙 (0) | 2024.12.11 |
String 문자열의 불변성 (1) | 2024.09.02 |