강의

멘토링

로드맵

BEST
Programming

/

etc. (Programming)

Objects - Basics

Learn object-oriented design methods, represented by the responsibility-driven design method, and explore how to make design tradeoffs in terms of cohesion, coupling, and encapsulation.

(5.0) 106 reviews

1,619 learners

  • eternity
저자 직강
이론 중심
객체지향
software-design
oop

Reviews from Early Learners

What you will learn!

  • Problems with procedural design

  • How to design and implement code in an object-oriented manner

  • Basic principles for assigning responsibilities to objects

  • Dependency Management Techniques

  • How to trade off design using cohesion, coupling, and encapsulation

Contains the core of object-oriented design!

This lecture, based on my book, Objects , explains how to design collaboration between objects and implement it using an object-oriented language, following the Responsibility-Driven Design (RDR) methodology. RDR is a method of designing the object collaboration necessary to implement an application's functionality, focusing on the responsibilities assigned to each object.

One regret I had while writing the Objects book was that, while explaining how to design objects based on responsibility, space constraints prevented me from fully explaining why we should focus on domains and responsibilities. I also regret not covering some of the GRASP patterns used to assign responsibilities.

To address this shortcoming, the lecture covers not only object-oriented design methods, but also the theoretical background of responsibility-driven design methods, which were not fully covered in the book, as well as the missing GRASP patterns. Therefore, I can confidently say that I've summarized what I consider to be the core of object-oriented design in the most concise manner possible.

It's special in this respect

📌 Describes language-independent object-oriented design concepts.

📌 The examples are implemented in Java, but the concepts presented in the lecture are applicable to any language or environment.

📌 We provide 690 pages of slides filled with key content.

📌 We've organized the content so that it's easy to understand by expressing concepts in visual images rather than simple text.

📌 The refactoring process is carefully documented in slides, making it easy to understand the code change process.

Learn about these things

Section 1. Movie Ticket Reservation Domain

We'll examine the requirements for a movie ticket reservation system, which we'll use as an example in this lecture. We'll analyze how discounts are calculated based on the key concepts and relationships that make up the movie ticket reservation domain.

The domain model analyzed in this way serves as useful material for assigning responsibilities to objects later.

Section 2. Improving Procedural Design

Have you ever heard that writing code procedurally has several maintenance drawbacks, but not sure exactly what the issues are?

The lecture is structured to help you naturally understand why object-oriented programming is necessary by explaining the problems with procedurally written code and improving it to make it easier to change.

Section 3. Object-Oriented Fundamentals

Responsibility-driven design (RDR) is the most widely used object-oriented design technique. RDR designs the overall collaboration of objects based on the responsibilities assigned to each object. Many people understand that responsibility should be central to design, but they often apply RDR without fully understanding the precise reasons for doing so.

In this lecture, we explain why responsibility is central and outline the big picture required to design and implement objects.

Section 4. Assigning Responsibilities

Successfully applying responsibility-driven design methods requires careful selection of responsibilities to assign to objects within the context of collaboration.

In this lecture, we will look at the information expert, creator, loose coupling, high cohesion, polymorphism, and change protection patterns that are commonly applied when assigning responsibilities, and learn when to apply these patterns.

Section 5. Object-Oriented Implementation

Learn how to implement objects designed from a responsibility perspective as classes. You'll also learn that clearly separating messages and methods allows you to control dependencies, making your design flexible and consistent.

We'll look at the Indirection, Pure Artifact, and Controller patterns, which we didn't cover in Section 4, and how to apply these patterns to implement objects that implement application logic.

Section 6. Changes and Design

The goal of design is to write code that is easy to change, and good design means a design that is highly cohesive, loosely coupled, and adheres to encapsulation.

In this lecture, you will learn the concepts of cohesion, coupling, and encapsulation from the perspective of change, and apply these principles to trade-off procedural and object-oriented design.

Things to note before taking the course

Learning Materials

  • 690 pages of lecture slides are provided in PDF format.

  • The example code used in the lecture can be found on GitHub .

Player Knowledge and Precautions

  • Since the example code is written in Java, you need to know basic Java grammar to learn smoothly.


  • Although it contains some code that uses the Spring Framework, it is structured so that you can understand the content without any difficulty even if you are not familiar with the Spring Framework.


Recommended for
these people

Who is this course right for?

  • For those who are curious about the concept and application of object-oriented design

  • People who have difficulty applying object-oriented concepts to their code

  • For those of you who are curious about the basic principles of assigning responsibilities to objects

Need to know before starting?

  • Java Basic Grammar

  • Experience writing code using an object-oriented language

Hello
This is

2,312

Learners

143

Reviews

92

Answers

5.0

Rating

2

Courses

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

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

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

 

Curriculum

All

31 lectures ∙ (5hr 0min)

Course Materials:

Lecture resources
Published: 
Last updated: 

Reviews

All

106 reviews

5.0

106 reviews

  • whybwhy3576님의 프로필 이미지
    whybwhy3576

    Reviews 45

    Average Rating 4.8

    5

    90% enrolled

    One of the best lectures I've taken this year and it completely changed my perspective on development.

    • eternity
      Instructor

      Thank you for your generous compliments. I hope that those who attended the lecture will change their perspective to look at code from a maintainability perspective, and I hope that you gained some insight into this. :)

  • ycseol1857님의 프로필 이미지
    ycseol1857

    Reviews 5

    Average Rating 5.0

    5

    100% enrolled

    In a lecture that deals with IT technology, a lecture that deals with the subject of development paradigms seems to be of great help to the learners in building their knowledge. Other Spring or Java lectures are good, but I think this kind of lecture that makes you think at least once before typing is really good.

    • eternity
      Instructor

      When I was making the lecture, I was a little worried about how the response would be after opening because object-oriented design is not something that needs to be learned right away like Spring, but I feel relieved that there are people like ycseol who think it will be helpful. Thank you for your positive evaluation. :)

  • korchl8273님의 프로필 이미지
    korchl8273

    Reviews 2

    Average Rating 5.0

    5

    100% enrolled

    This is a great lecture. I think it will be helpful to all developers, regardless of their experience level.

    • eternity
      Instructor

      I congratulate you on completing the course, korchl, and I am really grateful that you gave it a good review. I am really glad that it was helpful. I will try my best to make the next lecture so that you won't be disappointed. :) The weather has gotten really cold, so take care of your health and have a happy new year!

  • minqueue님의 프로필 이미지
    minqueue

    Reviews 2

    Average Rating 5.0

    5

    100% enrolled

    It's the best..

    • eternity
      Instructor

      Congratulations on completing the course, Min-gyu Kim. :) I hope the lecture was helpful. Thank you for leaving a good review and I will prepare hard for the next lecture! Have a nice holiday.

  • redthink902392님의 프로필 이미지
    redthink902392

    Reviews 4

    Average Rating 5.0

    5

    29% enrolled

    As I became more advanced in terms of simple implementation, I looked for Cho Young-ho's books a lot, but sadly, I couldn't approach <Object> in terms of quantity and difficulty. But now I'm so happy that I can approach it as a lecture. The basics feel like learning <Facts and Misconceptions of Object-Orientedness> in more detail. I can personally realize the necessity of it by looking at cases of transitioning from procedure-oriented to object-oriented. I've only seen the beginning, but it's been a great help in recalling the content that I had forgotten for a while. However, there's something really disappointing. Since you read the script, you convey the content in a stiff literary style. As someone who knows the instructor's smooth and immersive teaching skills, I really, really regret this part. More people should know the instructor's charm..!!!!! He speaks with ease in every word, and he explains difficult concepts in an easy and fun way😭 I remember you saying in another lecture that online is more awkward than offline, so how about creating an environment like an offline lecture for the next lecture? I am cautious about making this suggestion, but I would like to tell you that it comes from my heart as a fan. I have two fathers. One is my biological father, and the other is Professor Cho Young-ho🤭 He is someone I am very grateful to for broadening my horizons. Thank you for always giving me great lectures!🙂

    • eternity
      Instructor

      Hello, Dodun. I'm glad that the lecture was helpful. While preparing this lecture, I tried to visually express design-related knowledge as easily as possible, and after reading Dodun's course review, I feel good that I achieved my goal to some extent. :) I completely agree with what you said, and I personally think it's too bad. While offline lectures can be conducted in sync with the listeners and fit the atmosphere, online lectures are not easy for me personally. Online lectures seem to sound stiff because they focus more on delivering content than offline lectures. After talking to people around me and receiving mostly positive feedback, I decided to release it, but after reading the feedback, I feel regretful. I will think about finding a balance between offline and online lectures for the next lecture. :) I feel burdened and grateful to be called father, but I will come back with a better lecture so that you won't be disappointed. Thank you so much for your positive review!

    • I really sympathize with this part where the content is delivered in a stiff octopus style.

Limited time deal

$63.80

24%

$84.70

eternity's other courses

Check out other courses by the instructor!

Similar courses

Explore other courses in the same field!