강의

멘토링

커뮤니티

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) 128 reviews

1,733 learners

Level Basic

Course period Unlimited

  • eternity
software-design
software-design
oop
oop
software-design
software-design
oop
oop

Reviews from Early Learners

Reviews from Early Learners

5.0

5.0

고대준

100% enrolled

I took the course after reading the book Object-oriented facts and misconceptions. Personally, this course helped me the most. When I read the book, I had vague ideas about the distinction between messages and methods, responsibilities, cooperation, and roles. This course, although not perfect, helped me resolve some of them. In particular, the best part was that it taught me how to apply object-oriented to the Controller > Service > Repository MVC structure that we generally use. I will review the course content again and organize my thoughts. Since you said it is a basic course, can I look forward to the next one? Thank you for creating a great course.

5.0

도던

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!🙂

5.0

apocalypse23

100% enrolled

Online Classes often have lower information density than books due to the nature of their content, but this lecture should be considered an exception. The cohesion of the code explained in the lecture is directly applied to the lecture itself, making it a truly high-cohesion lecture. In your previous work "Object," you explained the massive concept of design with incredible precision, and throughout reading it, I could feel the instructor's bone-cutting effort to write the book. In the lecture version, seeing you explain tremendous content more concisely than the book to the extent that I wondered if it was possible to contain this much in an online lecture, it was such high-quality content that I worried whether you had any more bones left to cut. Watching every single sentence of the script written with high cohesion, I indirectly experienced skills that went beyond what you showed in the example code. Although it's a relatively short 5-hour lecture compared to others, learners will need to invest at least three times more time to truly absorb the essence of this lecture. Because of this, some people might find the lecture somewhat difficult to follow, so I'd like to leave a small tip. One monitor isn't enough. I recommend watching the lecture in at least a dual monitor environment with the video on one side and the lecture materials on the other. If you only refer to the lecture materials in the video, the screen might move on before you fully understand, and there are contexts that can only be understood by comparing materials before and after. Also, the movie domain is an essential element for conveying the overall content of the lecture. You might feel tempted to quickly skim through it, but I recommend repeatedly reviewing the materials and thinking of it as a service you originally developed, keeping it in your mind. This way, you can focus more on the essence of the lecture. Since the core is about how to manage code changes, you need to follow along with what changes occurred in the domain used as an example in the lecture to receive the deep message about how to write code that's resilient to change. For those who find object-oriented programming somewhat abstract, I have no doubt that if you thoroughly understand this lecture, you'll experience a paradigm shift in how to write and view code.

What you will gain after the course

  • 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,542

Learners

173

Reviews

101

Answers

5.0

Rating

2

Courses

I am an ordinary developer with a deep interest in object-oriented design and domain-driven design, holding the belief that happy teams, clean code, respect, and collaboration lead to great software. Based on my diverse experiences moving between roles as a developer, educator, and manager, I strive to create great products alongside good code.

His authored books include The Essence of Object-Orientation and Objects, and his translated works include Elegant Objects, and he participated as a technical reviewer for Get Your Hands Dirty on Clean Architecture.

💡Apply for Mentoring : https://inf.run/YvAd2

💡Personal Blog : https://eternity-object.tistory.com/

and participated as a technical reviewer for the book "Get Your Hands Dirty on Clean Architecture." 💡Apply for Mentoring: https://inf.run/YvAd2 💡Personal Blog: https://eternity-object.tistory.com/

Curriculum

All

31 lectures ∙ (5hr 0min)

Course Materials:

Lecture resources
Published: 
Last updated: 

Reviews

All

128 reviews

5.0

128 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 ends in 2 days

$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!