상세 컨텐츠

본문 제목

순차 지향 절차지향 객체지향

백엔드 공부진행도/Java

by myeongjaechoi 2024. 12. 21. 15:05

본문

순차지향과 절차지향의 차이

나는 지금까지 둘이 같은 의미인줄 알았다.

순차지향 프로그래밍 - 코드가 위에어 아래로 순차적으로 실행

절차지향 프로그래밍 - 위에서 아래로 순차적으로 실행

둘이 말의 의미가 같지 않나?

하지만 둘은 다른 패러다임을 가지고 있다.

순차지향 프로그래밍의 원래 명칭 : 'Sequential oriented programming' / Ex) 어셈블리어에는 함수가 없다

절차지향 프로그래밍의 원래 명칭 : 'Procedure oriented programming' / Ex) C언어

이 둘의 차이를 알겠는가?

Sequential은 '순차적으로' 라는 뜻이 맞다. 하지만 Procedure은 컴퓨터 공학에서 함수로 쓰인다.

따라서 절차지향 프로그래밍은 함수 지향 프로그래밍이다.

 

그래서 평상시에 자바 언어를 사용하고 있더라도 함수 위주의 사고 방식으로 프로그램을 만든다면 절차지향 패러다임으로 개발하는 것이다.

나의 첫 프로젝트 코드

위 코드는 그저 GroupService 클래스에 있는 create,join,getAlarm 메소드를 실행하기 위해 Group,GroupMember가 존재한다.

서비스에 모든 비즈니스 로직이 들어가고, 클래스는 그저 데이터를 저장하는 용도로만 사용하고 있었다...

나름의 객체지향적 코드 짜볼려고 했던 것

위 클래스에서는 비즈니스 로직을 객체가 처리하도록 변경하였다. 아까 join 메소드 처럼 클래스가 갖고 있던 데이터를 그대로 전달받기만 하는 것이 아니라, Board Class에서 행동을 가지게 되였다.

그래서 가장 중요한 것은

객체에 incrementViewCount()를 행동하라는 메시지를 전달할 수 있고, 해당 메소드를 실행하는 책임을 갖게 되었고, 해결 방법을 Board Class가 알고 있다. 라는 점이다.

책임을 객체가 나눠 가져야 한다.

객체란 데이터(속성)와 이를 처리하는 코드(메서드)를 하나로 묶어 현실 세계의 개념을 프로그래밍으로 구현한 독립적인 단위이다.

그러면 C언어의 struct를 사용하면 객체지향인가? -> 추상의 개념 지원X확장에는 유연해야 한다..! -> 새로운 요구사항이 생겼을 때, 코드를 추가되는 것을 지양해야한다. -> 클래스가 아닌 추상정인 것에 집중

TDA(Tell, Dont's Ask) 원칙

    • 객체에게 값에 관해 물어보지 말고 일을 시켜라

Board Class

만약 해당 멤버가 해당 게시글에 좋아요를 누르지 않았을 경우 좋아요가 증가하는 것이다. 이것은 TDA에 적합하지 않다.

왜냐하면 객체에게 값(멤버가 좋아요를 눌렀는지 안 눌렀지)을 물어보기 때문이다.

 

 

객체지향은 가독성보단 책임에 좀 더 집중합니다.
-자바/스프링 개발자를 위한 실용주의 프로그래밍-

'백엔드 공부진행도 > Java' 카테고리의 다른 글

객체 지향  (1) 2024.12.26
자바 프로그램  (1) 2024.12.25
SOLID 원칙  (0) 2024.12.19
동일성과 동등성  (1) 2024.12.19

관련글 더보기