강의

멘토링

로드맵

BEST
Programming

/

etc. (Programming)

Đối tượng - Cơ bản

Chúng tôi tìm hiểu các phương pháp thiết kế hướng đối tượng, bao gồm các phương pháp thiết kế hướng đến trách nhiệm và xem xét cách đánh đổi thiết kế về mặt gắn kết, khớp nối và đóng gói.

(5.0) 92 đánh giá

1,562 học viên

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

Đánh giá từ những học viên đầu tiên

Dịch cái này sang tiếng Việt

  • Các vấn đề với thiết kế thủ tục

  • Cách thiết kế và triển khai mã theo cách hướng đối tượng

  • Nguyên tắc cơ bản trong việc phân công trách nhiệm cho các đối tượng

  • Kỹ thuật quản lý sự phụ thuộc

  • Cách đánh đổi thiết kế của bạn bằng cách sử dụng sự gắn kết, khớp nối và đóng gói

Chứa đựng cốt lõi của thiết kế hướng đối tượng!

Bài giảng này, dựa trên cuốn sách " Objects" của tôi, giải thích cách thiết kế và triển khai sự cộng tác giữa các đối tượng bằng ngôn ngữ hướng đối tượng, theo phương pháp Thiết kế hướng trách nhiệm (RDR). RDR là một phương pháp thiết kế sự cộng tác giữa các đối tượng cần thiết để triển khai chức năng của ứng dụng, tập trung vào trách nhiệm được giao cho từng đối tượng.

Một điều tôi hối tiếc khi viết cuốn sách "Đối tượng" là, trong khi giải thích cách thiết kế đối tượng dựa trên trách nhiệm, những hạn chế về không gian đã ngăn cản tôi giải thích đầy đủ lý do tại sao chúng ta nên tập trung vào miền và trách nhiệm. Tôi cũng hối tiếc vì đã không đề cập đến một số mẫu GRASP được sử dụng để phân công trách nhiệm.

Để khắc phục điểm yếu này, bài giảng không chỉ đề cập đến các phương pháp thiết kế hướng đối tượng mà còn đề cập đến nền tảng lý thuyết của các phương pháp thiết kế hướng trách nhiệm, vốn chưa được đề cập đầy đủ trong sách, cũng như các mẫu GRASP còn thiếu. Do đó, tôi có thể tự tin nói rằng tôi đã tóm tắt những gì tôi coi là cốt lõi của thiết kế hướng đối tượng một cách súc tích nhất có thể.

Nó đặc biệt ở khía cạnh này

📌 Mô tả các khái niệm thiết kế hướng đối tượng độc lập với ngôn ngữ.

📌 Các ví dụ được triển khai bằng Java, nhưng các khái niệm được trình bày trong bài giảng có thể áp dụng cho bất kỳ ngôn ngữ hoặc môi trường nào.

📌 Chúng tôi cung cấp 690 trang slide chứa đầy đủ nội dung chính.

📌 Chúng tôi đã sắp xếp nội dung sao cho dễ hiểu bằng cách diễn đạt các khái niệm bằng hình ảnh trực quan thay vì văn bản đơn giản.

📌 Quá trình tái cấu trúc được ghi lại cẩn thận trong các slide, giúp bạn dễ dàng hiểu được quá trình thay đổi mã.

Tìm hiểu về những điều này

Mục 1. Tên miền đặt vé xem phim

Chúng ta sẽ xem xét các yêu cầu của hệ thống đặt vé xem phim, được sử dụng làm ví dụ trong bài giảng này. Chúng ta sẽ phân tích cách tính chiết khấu dựa trên các khái niệm và mối quan hệ chính tạo nên phạm vi đặt vé xem phim.

Mô hình miền được phân tích theo cách này đóng vai trò là tài liệu hữu ích để phân công trách nhiệm cho các đối tượng sau này.

Mục 2. Cải thiện thiết kế thủ tục

Bạn có thể đã nghe nói rằng việc viết mã theo thủ tục có một số nhược điểm về bảo trì, nhưng bạn không chắc chắn chính xác vấn đề là gì.

Bài giảng được xây dựng nhằm giúp bạn hiểu một cách tự nhiên lý do tại sao lập trình hướng đối tượng lại cần thiết bằng cách giải thích các vấn đề với mã được viết theo thủ tục và cải thiện mã đó để dễ thay đổi hơn.

Phần 3. Cơ sở hướng đối tượng

Thiết kế hướng trách nhiệm (RDR) là kỹ thuật thiết kế hướng đối tượng được sử dụng rộng rãi nhất. RDR thiết kế sự cộng tác tổng thể của các đối tượng dựa trên trách nhiệm được giao cho từng đối tượng. Nhiều người hiểu rằng trách nhiệm nên là trọng tâm của thiết kế, nhưng họ thường áp dụng RDR mà không hiểu rõ lý do chính xác.

Trong bài giảng này, chúng tôi giải thích lý do tại sao trách nhiệm đóng vai trò trung tâm và phác thảo bức tranh toàn cảnh cần thiết để thiết kế và triển khai các đối tượng.

Mục 4. Phân công trách nhiệm

Việc áp dụng thành công các phương pháp thiết kế theo trách nhiệm đòi hỏi phải lựa chọn cẩn thận các trách nhiệm để giao cho các đối tượng trong bối cảnh hợp tác.

Trong bài giảng này, chúng ta sẽ xem xét các mô hình chuyên gia thông tin, người sáng tạo, liên kết lỏng lẻo, gắn kết cao, đa hình và bảo vệ thay đổi thường được áp dụng khi phân công trách nhiệm và tìm hiểu khi nào nên áp dụng các mô hình này.

Mục 5. Triển khai hướng đối tượng

Tìm hiểu cách triển khai các đối tượng được thiết kế theo góc nhìn trách nhiệm dưới dạng lớp. Bạn cũng sẽ học được rằng việc phân tách rõ ràng các thông điệp và phương thức cho phép bạn kiểm soát các mối phụ thuộc, giúp thiết kế của bạn linh hoạt và nhất quán.

Chúng ta sẽ xem xét các mẫu Indirection, Pure Artifact và Controller mà chúng ta chưa đề cập trong Phần 4, cũng như cách áp dụng các mẫu này để triển khai các đối tượng thực hiện logic ứng dụng.

Mục 6. Thay đổi và Thiết kế

Mục tiêu của thiết kế là viết mã dễ thay đổi và thiết kế tốt nghĩa là thiết kế có tính gắn kết cao, kết nối lỏng lẻo và tuân thủ nguyên tắc đóng gói.

Trong bài giảng này, bạn sẽ tìm hiểu các khái niệm về sự gắn kết, kết nối và đóng gói theo góc nhìn thay đổi, đồng thời áp dụng các nguyên tắc này vào thiết kế hướng đối tượng và thiết kế theo thủ tục.

Những điều cần lưu ý trước khi tham gia khóa học

Tài liệu học tập

  • 690 trang bài giảng được cung cấp ở định dạng PDF.

  • Mã ví dụ được sử dụng trong bài giảng có thể được tìm thấy trên GitHub .

Kiến thức và biện pháp phòng ngừa của người chơi

  • Vì mã ví dụ được viết bằng Java nên bạn cần biết ngữ pháp Java cơ bản để học dễ dàng.


  • Mặc dù có chứa một số mã sử dụng Spring Framework, nhưng nó được cấu trúc sao cho bạn có thể hiểu nội dung mà không gặp bất kỳ khó khăn nào ngay cả khi bạn không quen với Spring Framework.


Khuyến nghị cho
những người này

Khóa học này dành cho ai?

  • Những người tò mò về khái niệm thiết kế hướng đối tượng và cách áp dụng nó

  • Những người gặp khó khăn khi áp dụng các khái niệm hướng đối tượng vào code

  • Những người tò mò về nguyên tắc cơ bản của việc phân công trách nhiệm cho các đối tượng

Cần biết trước khi bắt đầu?

  • Ngữ pháp cơ bản Java

  • Có kinh nghiệm viết code sử dụng ngôn ngữ hướng đối tượng

Xin chào
Đây là

2,199

Học viên

119

Đánh giá

78

Trả lời

5.0

Xếp hạng

2

Các khóa học

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

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

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

 

Chương trình giảng dạy

Tất cả

31 bài giảng ∙ (5giờ 0phút)

Tài liệu khóa học:

Tài liệu bài giảng
Ngày đăng: 
Cập nhật lần cuối: 

Đánh giá

Tất cả

92 đánh giá

5.0

92 đánh giá

  • whybwhy3576님의 프로필 이미지
    whybwhy3576

    Đánh giá 44

    Đánh giá trung bình 4.8

    5

    90% đã tham gia

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

    • eternity
      Giảng viên

      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

    Đánh giá 5

    Đánh giá trung bình 5.0

    5

    100% đã tham gia

    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
      Giảng viên

      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

    Đánh giá 2

    Đánh giá trung bình 5.0

    5

    100% đã tham gia

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

    • eternity
      Giảng viên

      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

    Đánh giá 2

    Đánh giá trung bình 5.0

    5

    100% đã tham gia

    It's the best..

    • eternity
      Giảng viên

      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

    Đánh giá 4

    Đánh giá trung bình 5.0

    5

    29% đã tham gia

    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
      Giảng viên

      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.

2.305.518 ₫

Khóa học khác của eternity

Hãy khám phá các khóa học khác của giảng viên!

Khóa học tương tự

Khám phá các khóa học khác trong cùng lĩnh vực!