나는 지금까지 둘이 같은 의미인줄 알았다.
순차지향 프로그래밍 - 코드가 위에어 아래로 순차적으로 실행
절차지향 프로그래밍 - 위에서 아래로 순차적으로 실행
둘이 말의 의미가 같지 않나?
하지만 둘은 다른 패러다임을 가지고 있다.
이 둘의 차이를 알겠는가?
그래서 평상시에 자바 언어를 사용하고 있더라도 함수 위주의 사고 방식으로 프로그램을 만든다면 절차지향 패러다임으로 개발하는 것이다.
위 코드는 그저 GroupService 클래스에 있는 create,join,getAlarm 메소드를 실행하기 위해 Group,GroupMember가 존재한다.
서비스에 모든 비즈니스 로직이 들어가고, 클래스는 그저 데이터를 저장하는 용도로만 사용하고 있었다...
위 클래스에서는 비즈니스 로직을 객체가 처리하도록 변경하였다. 아까 join 메소드 처럼 클래스가 갖고 있던 데이터를 그대로 전달받기만 하는 것이 아니라, Board Class에서 행동을 가지게 되였다.
그래서 가장 중요한 것은
객체에 incrementViewCount()를 행동하라는 메시지를 전달할 수 있고, 해당 메소드를 실행하는 책임을 갖게 되었고, 해결 방법을 Board Class가 알고 있다. 라는 점이다.
책임을 객체가 나눠 가져야 한다.
객체란 데이터(속성)와 이를 처리하는 코드(메서드)를 하나로 묶어 현실 세계의 개념을 프로그래밍으로 구현한 독립적인 단위이다.
그러면 C언어의 struct를 사용하면 객체지향인가? -> 추상의 개념 지원X확장에는 유연해야 한다..! -> 새로운 요구사항이 생겼을 때, 코드를 추가되는 것을 지양해야한다. -> 클래스가 아닌 추상정인 것에 집중
만약 해당 멤버가 해당 게시글에 좋아요를 누르지 않았을 경우 좋아요가 증가하는 것이다. 이것은 TDA에 적합하지 않다.
왜냐하면 객체에게 값(멤버가 좋아요를 눌렀는지 안 눌렀지)을 물어보기 때문이다.
객체지향은 가독성보단 책임에 좀 더 집중합니다.
-자바/스프링 개발자를 위한 실용주의 프로그래밍-