BEST
개발 · 프로그래밍

/

개발 · 프로그래밍 기타

오브젝트 - 기초편

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

(5.0) 수강평 36개

수강생 701명

Thumbnail

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

이런 걸
배워요!

  • 절차적인 설계의 문제점

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

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

  • 의존성 관리 기법

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

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

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

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

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

이런 면에서 특별해요

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

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

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

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

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

이런 내용을 배워요

섹션 1. 영화 예매 도메인

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

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

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

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

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

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

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

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

섹션 4.책임 할당하기

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

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

섹션 5. 객체지향 구현

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

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

섹션 6. 변경과 설계

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

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

수강 전 참고 사항

학습 자료

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

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

선수 지식 및 유의사항

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


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


이런 분들께
추천드려요!

학습 대상은
누구일까요?

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

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

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

선수 지식,
필요할까요?

  • 자바 기본 문법

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

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

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

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

 

커리큘럼

전체

31개 ∙ (5시간 0분)

수업 자료

가 제공되는 강의입니다.

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

수강평

아직 충분한 평가를 받지 못한 강의입니다.
모두에게 도움이 되는 수강평의 주인공이 되어주세요!