인프런 강의 후기 최범균님 <객체지향 프로그래밍 입문>

출처 : Anthony DELANOIX

인프런에서 최범균님의 객체지향 프로그래밍 입문 강의를 듣고, 정리한 포스팅이다.

간단하게 정리했기 때문에 이 포스팅을 보는것만으로 OOP를 이해할 수 있다고 생각하지는 않는다. 아직 OOP가 익숙하지 않다면, 꼭 강의를 듣고 다시 이 포스팅을 보면서 정리하면 좋을것 같다.


캡슐화

  • 내부 구현 감춤
  • 내부 구현 변경에 따른 외부 영향을 최소화하기 위함.

추상화

  • 여러 구현체(하위 객체)의 공통점을 상위 타입으로 도출
  • 객체간 의존도를 낮추고(느슨한 결합), 재사용성을 높힘

상속보단 조립

상속의 단점

1
2
3
class inheritanceCons {
private
}
  • 상위 클래스 변경시 하위 클래스에 영향이 전파됨.
  • 다중상속관계에서는 리팩토링시 간단한 변경사항임에도 많은 클래스를 생성해야 할 수 있음.
  • 하위 객체에서 상위 객체 메소드 호출시 같은 이름의 다른 메소드를 오용할 가능성 존재

조립

1
2
3
4
5
6
7
class inflearnOOP {
private Lecture lecture = new Lecture(); // 조립

public void play() {
Author author = lecture.getAuthor();
}
}
  • 필드를 선언해서 필요한 기능을 갖고있는 객체를 참조하는 방식으로 사용
  • 필요한 시점에 인스턴스를 호출하는 방식으로 사용.
  • 상속보다는 조립의 이점이 많으므로 상속보다 우선적으로 검토하고, 하위 타입에 해당하는 클래스만 상속으로 구현.

기능/책임 분리

  • 기능은 곧 책임.
  • 메소드가 많은 기능을 갖거나 클래스가 많은 메소드를 가질 경우, 리팩토링의 비용이 높아짐.
  • 객체가 최소한의 책임을 갖도록 잘게 분리하는 것이 중요.
  • 분리가 잘되어 있는 코드는 리팩토링뿐 아니라 테스트에도 유리.

DI, Dependency Injection

  • 의존하는 객체를 외부에서 주입해서 사용하는 방식
  • 의존하는 대상이 바뀌더라도 조립기에서만 변경하면 됨.
  • 테스트시 대역 객체(테스트를 위한 객체)를 생성해서 사용하는 것이 가능하다.

강의 후기

클린코드 과정을 통해 TDD를 경험해보면서 OOP에 대한 이해가 부족하다는 판단이 들어 듣게된 강의였다.

구입한 건 훨씬 오래 전이었는데, 짧은 강의다보니 집중해서 보기보다 졸렵거나 잠깐 잠깐 강의 하나씩 듣다보니 이제서야 완강하게 되었다.

2시간 30분 정도 되는 러닝타임에 강의는 11개로 구성되어 있고, 강의료 또한 약 2만원에 불과해 이렇게 가성비좋은 강의가 또 있을까 싶다.

아래에 해당하는 사람들에게 추천하고 싶은 강의이다.

  • 스프링 프레임워크를 왜 사용하는지 이해하고 싶은 사람
  • 클린코드가 무엇인지 궁금한 사람
  • 테스트 코드를 배우기 시작한 사람
  • 1년 미만의 신입 개발자

리팩토링 책의 코드를 일부 인용하시면서 매우 친절하게 설명해주시는 덕분에 출퇴근길에 지하철에서 보기에도 좋은 강의라고 생각된다. 인프런을 보면 아직 수강생이 1천명이 안되는데, 더 많은 분들이 수강하시고 조금 더 성장하시는 계기가 되었으면 좋겠다. 나도.

강의 들으러 가기 ➡️ https://inf.run/8i2h

어떠한 댓가가 없는 포스팅이며, 위의 링크로 접속하더라도 저에게 어떠한 이익이 발생하지 않습니다.