Inflearn brand logo image
Inflearn brand logo image
BEST

오브젝트 - 기초편

책임 주도 설계 방법으로 대표되는 객체지향 설계 방법을 학습하고 응집도, 결합도, 캡슐화 관점에서 설계를 트레이드오프하는 방법을 살펴봅니다.

초급자를 위해 준비한
[소프트웨어 설계, 객체지향] 강의입니다.

이런 걸 배울 수 있어요

  • 절차적인 설계의 문제점

  • 객체지향적으로 코드를 설계하고 구현하는 방법

  • 객체에게 책임을 할당하는 기본 원칙

  • 의존성 관리 기법

  • 응집도, 결합도, 캡슐화를 이용해서 설계를 트레이드오프하는 방법

객체지향 설계의 핵심을 담았다!

이 강의는 제가 집필한 오브젝트라는 책을 기반으로 책임 주도 설계 방법에 따라 객체 사이의 협력을 설계하고 객체지향 언어를 사용해서 구현하는 방법을 설명합니다. 책임 주도 설계 방법은 객체에게 할당할 책임을 중심으로 애플리케이션의 기능을 구현하는데 필요한 객체 협력을 설계하는 방법입니다

오브젝트 책을 쓰면서 아쉬웠던 점이 있는데 책임을 기반으로 객체를 설계하는 방법을 설명하는 과정에서 지면의 제약으로 인해 도메인과 책임에 초점을 맞춰야 하는 이유에 대해서는 충분히 설명드리지 못했다는 것입니다. 또한 책임을 할당하는데 사용하는 GRASP 패턴의 일부를 다루지 못했다는 점도 개인적으로 아쉬운 부분으로 남아 있습니다.

강의에서는 이런 아쉬움을 달래고자 객체지향적으로 설계하는 방법 뿐만 아니라 책에서 충분하게 다루지 못했던 책임 주도 설계 방법의 이론적인 배경과 함께 누락된 GRASP 패턴도 수록했습니다. 따라서 객체지향 설계의 핵심이라고 생각되는 부분을 최대한 간결하게 정리해서 담았다고 자신있게 말할 수 있습니다.

이런 면에서 특별해요

📌 언어에 독립적인 객체지향 설계 개념을 설명합니다.

📌 예제는 자바로 구현되어 있지만 강의에서 제공하는 개념은 어떤 언어나 환경에서도 적용 가능합니다.

📌 핵심 내용들로 채워진 690 페이지 분량의 슬라이드를 제공합니다.

📌 개념을 단순한 텍스트가 아닌 시각적인 그림으로 표현해서 내용을 이해하시기 쉽도록 구성했습니다.

📌 리팩토링 과정을 한땀 한땀 슬라이드에 담아 코드의 변경 과정을 쉽게 이해할 수 있습니다.

이런 내용을 배워요

섹션 1. 영화 예매 도메인

강의에서 예제로 사용할 영화 예매 시스템의 요구사항을 살펴봅니다. 영화 예매 도메인을 구성하는 중요한 개념과 관계들을 기반으로 할인 금액을 계산하는 방식을 분석합니다.

이렇게 분석된 도메인 모델은 나중에 객체에게 책임을 할당할 때 유용한 재료로 사용됩니다.

섹션 2. 절차적인 설계 개선하기

절차적인 방식으로 코드를 작성하면 유지보수 측면에서 여러가지 단점이 있다는 이야기는 들었지만 정확하게 어떤 부분이 문제인지는 잘 모르셨나요?

강의에서는 절차적인 방식으로 작성된 코드의 문제점을 설명하고 코드를 변경하기 쉽게 개선시키는 과정을 통해 객체지향이 필요한 이유를 자연스럽게 이해하실 수 있도록 구성했습니다.

섹션 3.객체지향 기본 원칙

책임 주도 설계는 가장 널리 사용 되는 객체지향 설계 기법입니다. 책임 주도 설계 방법은 객체에 할당할 책임을 기반으로 전체적인 객체 협력을 설계합니다. 많은 분들이 책임을 설계의 중심에 둬야 한다는 사실은 알고 있지만 정확한 이유는 모르는 상태에서 책임 주도 설계 방법을 적용하고 있습니다.

강의에서는 책임을 중심에 두는 이유를 설명하고 객체를 설계하고 구현하는데 필요한 큰 그림을 그려봅니다.

섹션 4.책임 할당하기

책임 주도 설계 방법을 성공적으로 적용하기 위해서는 협력이라는 문맥 안에서 객체에게 할당할 책임을 신중하게 선택해야 합니다.

강의에서는 책임을 할당할 때 일반적으로 적용할 수 있는 정보 전문가, 창조자, 낮은 결합도, 높은 응집도, 다형성, 변경 보호 패턴을 살펴보고 이 패턴들을 언제 적용해야 하는지 학습합니다.

섹션 5. 객체지향 구현

책임 관점에서 설계한 객체들을 클래스로 구현하는 방법을 학습합니다. 메시지와 메서드를 명확하게 구분하면 의존성을 통제할 수 있기 때문에 설계를 유연하고 일관성 있게 만들 수 있다는 사실도 배웁니다.

섹션 4에서 다루지 못했던 간접화, 순수한 가공물, 컨트롤러 패턴들을 살펴보고 애플리케이션 로직을 구현하는 객체를 구현하기 위해 이 패턴들을 적용하는 방법도 살펴봅니다.

섹션 6. 변경과 설계

설계의 목표는 변경하기 쉬운 코드를 작성하는 것이고 좋은 설계란 응집도가 높고, 결합도가 낮고, 캡슐화를 준수하는 설계를 가리킵니다.

강의에서는 변경이라는 관점에서 응집도, 결합도, 캡슐화의 개념을 학습하고 절차적인 설계와 객체지향 설계를 트레이드오프하기 위해 이 원칙들을 적용해 봅니다.

수강 전 참고 사항

학습 자료

  • 690페이지 분량의 강의 슬라이드가 PDF 형태로 제공됩니다.

  • 강의에서 사용하는 예제 코드는 깃허브에서 받아보실 수 있습니다.

선수 지식 및 유의사항

  • 예제 코드가 자바로 작성되어 있기 때문에 자바의 기본 문법을 알고 계셔야 원활한 학습이 가능합니다.


  • 일부 스프링 프레임워크를 사용하는 코드가 포함되어 있지만 스프링 프레임워크를 모른다고 하더라도 내용을 이해하시는데 무리는 없도록 구성했습니다.


이런 분들께
추천드려요!

학습 대상은
누구일까요?

  • 객체지향 설계의 개념과 적용 방법이 궁금하신 분들

  • 객체지향 개념을 코드에 적용하는데 어려움을 느끼시는 분들

  • 객체에게 책임을 할당하는 기본 원칙이 궁금하신 분들

선수 지식,
필요할까요?

  • 자바 기본 문법

  • 객체지향 언어를 이용해서 코드를 작성해본 경험

안녕하세요
조영호입니다.

1,787

수강생

82

수강평

64

답변

5.0

강의 평점

2

강의

객체지향 설계와 도메인-주도 설계에 관심이 많으며 행복한 팀과 깔끔한 코드, 존중과 협력이 훌륭한 소프트웨어를 낳는다는 믿음을 가지고 있는 평범한 개발자입니다. 개발자, 교육자, 관리자를 오가며 익힌 다양한 경험을 바탕으로 좋은 코드와 함께 좋은 프로덕트를 만들기 위해 노력하고 있습니다.

저서로는 『객체지향의 사실과 오해』와 『오브젝트』가 있고 번역서로는 『엘레강트 오브젝트』가 있으며 『만들면서 배우는 클린 아키텍처』에 감수자로 참여했습니다.

💡개인블로그 : https://eternity-object.tistory.com/

 

더보기

커리큘럼

전체

31개 ∙ (5시간 0분)

해당 강의에서 제공:

수업자료
강의 게시일: 
마지막 업데이트일: 

수강평

전체

70개

5.0

70개의 수강평

  • ycseol님의 프로필 이미지
    ycseol

    수강평 5

    평균 평점 5.0

    5

    100% 수강 후 작성

    IT의 기술을 다루는 강의에서 개발 패러다임이라는 어찌보면 주관을 다루는 강의는 학습자에게 소양을 쌓는데 큰 도움을 주는것 같다. 다른 스프링이나 자바 강의도 좋지만 타이핑을 하기 전에 한 번 쯤 생각할 수 있게 만드는 이런 강의가 정말 좋은것 같다.

    • 조영호
      지식공유자

      강의를 만들 때 객체지향 설계가 Spring처럼 지금 당장 배울 필요가 있는 내용은 아니다보니 오픈 이후 반응이 어떨지 조금 걱정했는데 ycseol님처럼 도움이 된다고 생각하시는 분들이 계셔서 마음이 놓이네요. 긍정적으로 평가해 주셔서 감사합니다. :)

  • 김민규 (Rabbit)님의 프로필 이미지
    김민규 (Rabbit)

    수강평 2

    평균 평점 5.0

    5

    100% 수강 후 작성

    최고입니다 ..

    • 조영호
      지식공유자

      김민규님 완강 축하드립니다. :) 강의가 도움이 되셨길 바랄게요. 좋은 수강평 남겨 주셔서 감사드리고 다음 강의도 열심히 준비해 보겠습니다! 즐거운 휴일 보내세요.

  • 아무도_모를_아이디님의 프로필 이미지
    아무도_모를_아이디

    수강평 40

    평균 평점 4.8

    5

    90% 수강 후 작성

    이번년도 최고의 강의 중의 하나이며 개발에 대한 관점이 완전히 바뀌었습니다.

    • 조영호
      지식공유자

      과분한 칭찬 남겨주셔서 감사합니다. 강의를 들으신 분들이 유지보수성 관점에서 코드를 바라보도록 시각이 바뀌면 좋겠다고 생각했는데 관련해서 조금이라도 인사이트를 얻으셨기를 기대할게요. :)

  • 황설탕님의 프로필 이미지
    황설탕

    수강평 1

    평균 평점 5.0

    5

    87% 수강 후 작성

    [인프런에서 산 강의 중 가장 만족스러운 강의] 개인적으로 가격대가 있다고 느껴 고민하다 수강했는데, 정작 강의를 듣고 나서는 왜 진작 듣지 않았을까 후회할 정도로 대만족했고, 오브젝트 책도 바로 구매했습니다😊 최근 학교에서 작은 프로젝트 과제를 풀게 되었는데, 과제를 진행하며 계속 크고 작은 문제가 생겼고, 이를 해결하기 위해 설계와 코드를 뒤엎고 새로 짜는 과정을 수없이 반복했습니다. 하지만 막상 뒤엎고 코드를 다시 짜도 어디에 어느 정도의 책임을 둬야 할지 기준을 제대로 잡지 못했으며, 사소한 변경에도 수많은 코드를 뜯어고치느라 한참을 헤맸습니다. 처음에는 언어가 부족하거나 디자인 패턴 혹은 설계를 몰라서 그런가 싶어 관련 책을 사서 추가적으로 공부를 했고, 교수님과 선배들에게 상담도 받아봤지만, 그 무엇도 막상 제가 정말 궁금한 부분들을 시원하게 해소해 주지는 못했습니다. 그렇게 고민을 안고 있을 때 우연히 오브젝트 강의를 발견했습니다. 강의 설명을 훑어보고 '뭔가 내가 찾던 내용인가?' 싶었는데, 그게 정답이었습니다! 제 고민들은 `나도 모르게 절차지향적인 코드를 객체지향적인 코드라 착각하며 짜고 있음`으로부터 생겨난 것들이었습니다. 저는 학교에서 수업을 듣고, 인프런에서 자바/스프링 강의도 몇 개 수강했으며, 관련 책도 몇 권 읽었기에 '그래도 객체지향적으로 코드를 작성하고 있지 않을까?'라고 생각했지만, 강의를 듣자마자 그건 크나큰 착각이었고, 여지껏 제가 짜온 코드는 절차지향적인 코드라는 사실을 깨달았습니다...ㅋㅋㅋ 절차지향적인 코드들을 객체지향적인 설계로 바꾸는 과정과 개념들을 저 같은 초보자도 무리 없이 들을 수 있도록 쉽게 풀어 설명해 주셨습니다. 특히 까먹을 만하면 딱 그 내용을 다시 간단히 설명해 주시는 점이 소름 돋으면서도 정말 좋았습니다. 강의를 통해 그간 객체지향에 대해 오해하고 있던 부분들, 모호하거나 피상적으로 알고 있던 부분들을 확실히 잡을 수 있어 좋았고, "객체를 객체답게 사용한다"가 어떤 의미인지 깨달을 수 있었습니다. 밀린 숙제하듯 들은 강의가 아니라 궁금했던 부분을 정확히 해소해준 강의라 시간 가는 줄 모르고 정말 재밌게 들었던 강의였습니다. 다음 강의가 빨리 나왔으면 좋겠습니다!!

    • 조영호
      지식공유자

      황설탕님 좋은 수강평 남겨 주셔서 감사합니다. :) 강의의 주된 내용이 객체지향의 기본 철학에 집중하다보니 강의를 들으시는 분들이 많이 지루해하시지 않을까 걱정이 많았었는데 황설탕님의 수강평을 보고나니 안심이 되네요. 강의를 들으시고 "객체를 객체답게" 사용하는 방법에 대해 이해를 하셨다니 다행입니다. 강의 재미있게 들어주셔서 정말 감사드리고 다음 강의도 잘 준비해서 빠른 시일 내에 찾아 뵙겠습니다. :) 궁금한 내용 있으면 질문 남겨주시고 행복한 주말 보내세요!

  • korchl님의 프로필 이미지
    korchl

    수강평 2

    평균 평점 5.0

    5

    100% 수강 후 작성

    너무 좋은 강의입니다. 연차와 상관없이 들으시면 모든 개발자들에게 도움이 될 것 같아요.

    • 조영호
      지식공유자

      korchl님 완강 축하드리고 좋게 평가해 주셔서 정말 감사합니다. 도움이 되었다니 정말 다행이네요. 다음 강의도 실망하시지 않도록 열심히 만들어 보겠습니다. :) 날씨가 많이 쌀쌀해 졌는데 건강 잘 챙기시고 새해 복 많이 받으세요!

비슷한 강의

같은 분야의 다른 강의를 만나보세요!

연관 로드맵

강의가 포함된 로드맵으로 학습해 보세요!

월 ₩22,000

5개월 할부 시

₩110,000