객체 지향 프로그램이란 무엇이고 어떻게 활용할 수 있는지에 대한 것은 개발자 면접에서 자주 나오는 질문 중의 하나!
참고: POP (Procedural-Oriented Programming, 절차 지향 프로그래밍)
참고: OOP (Object-Oriented Programming, 객체 지향 프로그래밍)
참고: AOP (Aspect-Oriented Programming, 관점 지향 프로그래밍)
데이터와 함수를 별개로 취급
특정 기능을 수행하려면, 그 일을 해주는 메소드를 직접 호출해야 한다.
데이터를 중심으로, 순차적(절차적) 실행에 초점을 맞춰서 코드를 작성
(객체 지향에 비해) 컴퓨터의 작업 처리 방식과 유사하므로, 더 빨리 처리되어 시간적으로 유리
데이터와 함수를 하나로 묶음
특정 기능을 수행하는 메소드를 가진 객체를 만들어서, 그 인스턴스를 이용해 메소드를 호출
기능을 중심으로, 객체 간의 관계에 초점을 맞춰서 코드를 작성
주의!
절차지향의 반대는 객체지향이 아니고
객체지향의 반대는 절차지향이 아니다절차적 프로그래밍이라고 해서 객체를 다루지 않는 것이 아니고,
객체지향 프로그래밍이라고해서 절차가 없는 것도 아니다.
공통적인 기능을 각 객체의 횡단으로 입력
각 객체별로 처리
OOP 를 통한, 객체의 재사용으로 코드 중복 小
→ 그러나, 코드 중복을 완전히 없앨 수는 X (객체 지향 프로그래밍의 한계)
어플리케이션 전체에서 사용되는 부가 기능들을 모듈화하기 어려움
→ 객체 지향 프로그래밍은 비지니스 로직을 모듈화하기 때문
OOP 를 대신하는 개념 X
OOP 를 지원하는 개념 O
공통적인 기능을 종단간으로 삽입
각 관점별로 외부에서 접근
인프라, 부가기능을 모듈화
기능을 비즈니스 로직/공통 모듈로 구분 후, 코드 밖에서 필요 시 비즈니스 로직에 삽입
→ 게시간 기능 中 권한 체크, 인증, 예외 처리 등...이 필요할 때, 자동 삽입되도록 한다.
참고: 절차 지향, 객체 지향, 관점 지향 - 차이점
참고:절차지향(Procedural Programming), 객체지향(Object Oriented Programming) 장단점 및 차이점
참고: [Spring] AOP(관점지향)와 OOP(객체지향)의 차이?
참고: AOP - AOP란? AOP vs OOP