https://amara.org/ko/videos/XJGyts0sfDVQ/info/robert-c-martin-principles-of-component-design/
너무 고마우신 분께서 한글자막까지 달아주셨다.
OOP 장점이 현실 세계를 잘 비춘다고 적었었다. 그런데 Robert C. Martin은 아니라고 한다.
38:59를 보면 이야기가 시작된다. 객체 지향은 무엇인지? 왜 사람들이 객체 지향을 좋아하는지.
(청중) 현실 세계를 모델링 할 수 있습니다.
(Robert C. Martin) 현실 세계를 모델링 할 수 있다. 감사합니다.
내가 이렇게 답하라고 저 사람을 여러분 사이에 심어놨습니다. 내가 저사람의 답변을 발기 발기 찢어버리려고요.아닙니다. 아주 터무니없는 이야기에요. ...
(Robert C. Martin) 객체지향에 특별할 것은 없습니다.
하지만 객체지향으로 인해 가능해진 게 하나 있긴 합니다. 예전에는 위험해서 잘 안 썼지요. 다형성입니다. 아주 사용하기 쉬운 다형성이지요. ...
https://www.youtube.com/watch?v=26S4VFUWlJM
애플리케이션 로직과 도메인 로직을 분리하고, 어떻게 객체에 초점을 둔 로직을 작성하는지 알려주는 영상. 절차지향 코드와 객체지향 코드 예시를 통해 비교한다.
https://youtu.be/26S4VFUWlJM?t=46m57s
https://youtu.be/26S4VFUWlJM?t=55m37s
https://youtu.be/26S4VFUWlJM?t=56m36s
https://youtu.be/26S4VFUWlJM?t=1h6m57s
slide: https://www.slideshare.net/baejjae93/ss-151545329 video: https://youtu.be/dJ5C4qRqAgA
어떻게 객체지향 코드를 작성할 수 있는지 설명하는 글. 코드를 단계별로 개선해나가는 방식으로 설명해서 이해하기 쉽다.
두 가지 이유:
절차적 코드와 객체지향 코드의 trade-off를 잘 고려해서 사용한다.
ORM을 통한 객체 참조는 가장 강한 결합도를 가진다.
객체 대신 ID를 사용하면 결합도를 약하게 만들 수 있다.
결합도를 낮추고, 관련있는 객체끼리 packaging 한다.
같은 도메인(패키지)는 객체 참조, 경계 밖에 있는 도메인은 ID로 연관 관계 가지는 것도 좋다.
모델 내에서 객체 참조로 구현했던 로직은 더 이상 사용할 수 없다.
각각 다른 도메인의 객체를 조합해서 비즈니스 로직을 작성할 새로운 객체가 필요하다.
각 객체를 조합해서 검증 로직을 담당하는 새로운 객체를 만든다.
이런 절차지향 코드는 한 눈에 볼 수 있고, 검증 로직을 변경하기 위해서만 수정하기 때문에 응집도가 높다.
OOP (객체 지향 프로그래밍) 프로그래밍 실습용 좋은 책 추천 부탁드립니다
https://kldp.org/node/123799
헤드퍼스트 책, 자바 swing을 이용한 GUI 프로그래밍. Smalltalk를 직접 사용해 보는 것이 눈에 띈다.
책 - 객체지향적으로 생각하라
http://book.daum.net/detail/book.do?bookid=KOR9788956744612
책 - 개발자가 반드시 정복해야 할 객체 지향과 디자인 패턴
http://www.yes24.com/24/goods/9179120 - 책
http://epicdevs.com/14 - 후기
한국 스몰토크 사용자그룹
http://smalltalk.kr/wiki/doku.php
최초의 순수한 OOP 언어 스몰토크를 배울 수 있는 곳
초보 개발자에게 권장하는 객체지향 모델링 공부 방법
http://okky.kr/article/358197
덧글에 자세하게 예시를 들어주셨다.
Anti-OOP: if를 피하는 법
http://meetup.toast.com/posts/94
함수형 프로그래밍도 객체지향 프로그래밍도 분기문을 지양한다. 추적하기가 힘들어지기 때문이다.
디자인 패턴의 모범 사례를 보여준다.
캡슐화(encapsulation)를 위한 getter, setter는 정말 필요한 걸까요?
http://qna.iamprogrammer.io/t/encapsulation-getter-setter/193
validation, lazy loading, 접근 권한 등을 이유로 반드시 필요하다는 의견과 getter, setter 남용에 대한 이야기 등.
객체 지향 프로그래밍 연습하기 좋은 방법은?
https://slipp.net/questions/475
여기서 객체지향 생활체조가 눈에 와 닿았다.
객체지향 생활 체조 총정리
https://developerfarm.wordpress.com/2012/02/03/object_calisthenics_summary/
9가지 규칙(체조)을 통해 객체지향을 실천하자는 내용이다. 이론적인 내용이 아니라 실철하도록 상세히 작성되었다. 어떻게 보면 극단적으로 제약하고 있어, 실제로 해보면 고통스럽기도..
스칼라 강좌 (11) - getter 와 setter
http://okky.kr/article/342405
이 글은 OOP에서의 getter, setter 위치에 대해서 설명하고 스칼라에서 getter, setter는 어떻게 표현되는지 보여준다.
적당히 구현하더라도 문제는 없지만, Best Practice를 지키고 싶다.
https://www.youtube.com/watch?v=4F72VULWFvc
Animal
파생 클래스 Cat
가 있다. 파생 클래스를 만들지 말고 부모 클래스의 생성자에 Cat
에 대한 정보를 넘겨서 같은 동작을 하도록 하면 어떨까?Inheritance with EF Code First: Part 1 - Table per Hierarchy (TPH)
Heuristics on when should one subclass and when not