강의

멘토링

커뮤니티

BEST
Programming

/

etc. (Programming)

Đối tượng - Phần nguyên tắc thiết kế

Học các nguyên tắc thiết kế đa dạng cần biết để viết mã hướng đối tượng, lấy mã hoạt động làm trung tâm.

(5.0) 39 đánh giá

753 học viên

  • eternity
oop
Software Test
software-design

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

Bạn sẽ nhận được điều này sau khi học.

  • Nguyên tắc thiết kế hướng đối tượng

  • Nhận biết vấn đề code qua nguyên tắc thiết kế

  • Cách tiến hóa mã bằng tái cấu trúc

  • Mối quan hệ giữa kiểm thử và chất lượng code

Nguyên tắc thiết kế hướng đối tượng ,
Hiểu cách áp dụng 🤔

Khi viết Object , có nhiều chủ đề mà tôi không thể đưa vào hoặc giải thích đầy đủ do hạn chế về mặt không gian, và điều đáng tiếc nhất là tôi không thể sắp xếp nội dung liên quan đến các nguyên tắc thiết kế một cách có hệ thống. Mặc dù một số nguyên tắc thiết kế đã được đề cập ngắn gọn hoặc bối cảnh và tính cần thiết của các nguyên tắc đã được giải thích dưới dạng gắn kết, kết hợp và đóng gói, nhưng không có hướng dẫn cụ thể nào về cách kết nối các nguyên tắc khác nhau trong bối cảnh thiết kế và cách áp dụng các nguyên tắc này.

Để bổ sung cho điều này, phần Nguyên tắc thiết kế đối tượng tập trung hoàn toàn vào các nguyên tắc thiết kế, giải thích những cách thực tế để áp dụng các nguyên tắc thiết kế khi đánh giá và cải thiện mã ở cấp độ mã cụ thể. Thông qua khóa học này, bạn sẽ học cách xác định và cải thiện các vấn đề trong mã của mình dựa trên các nguyên tắc thiết kế. Do đó, sau khi tham gia khóa học, bạn sẽ hiểu cách kết hợp nhiều nguyên tắc thiết kế khác nhau để thiết kế mã có thể bảo trì được.

Các nguyên tắc thiết kế được trình bày trong bài giảng là:

  • Nguyên lý trừu tượng đơn cấp ( SLAP )

  • Nguyên tắc trách nhiệm đơn lẻ ( SRP )

  • Nguyên lý đóng mở ( OCP )

  • Nguyên lý thay thế Liskov ( LSP )

  • Nguyên lý đảo ngược phụ thuộc ( DIP )

  • Nguyên lý phân tách giao diện ( ISP )

  • Luật Demeter ( LoD )

  • Hãy nói, đừng hỏi ( TDA )

  • Phân tách truy vấn lệnh ( CQS )

  • Đừng lặp lại chính mình ( DRY )


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

Khái niệm và sự cần thiết của nguyên tắc thiết kế

Mọi nguyên tắc thiết kế đều có chung mục tiêu là cải thiện chất lượng thiết kế. Tuy nhiên, mục tiêu chi tiết của từng nguyên tắc thiết kế lại khác nhau. Do đó, điểm khởi đầu để hiểu các nguyên tắc thiết kế là hiểu mục tiêu mà mỗi nguyên tắc thiết kế đang cố gắng cải thiện và xác định xem việc cải thiện mã hiện tại của bạn để đáp ứng mục tiêu đó có phù hợp hay không.

Bằng cách tham gia các bài giảng, bạn sẽ tự nhiên hiểu được lý do tại sao mỗi nguyên tắc thiết kế lại cần thiết và khi nào thì chúng hữu ích.

Hướng dẫn cụ thể để áp dụng các nguyên tắc thiết kế

Chỉ hiểu định nghĩa về nguyên tắc thiết kế thôi là chưa đủ. Phần quan trọng nhất của nguyên tắc thiết kế là hiểu khi nào và áp dụng nguyên tắc thiết kế nào, cũng như áp dụng chúng theo cách phù hợp.

Khóa học cung cấp hướng dẫn thực tế khi áp dụng từng nguyên tắc thiết kế. Bạn có thể sử dụng hướng dẫn này như một tài liệu tham khảo và la bàn để đánh giá và cải thiện mã của mình.

Nguyên tắc thiết kế và kiểm thử đơn vị

Việc ghi nhớ các bài kiểm tra sẽ giúp thiết kế trở nên gắn kết hơn, ít bị ràng buộc hơn và bao quát được những thay đổi. Và khi bạn triển khai mã của mình theo các nguyên tắc thiết kế, việc viết và chạy thử nghiệm sẽ trở nên dễ dàng hơn.

Bài giảng được thiết kế để giúp bạn hiểu mối quan hệ giữa các nguyên tắc thử nghiệm và thiết kế bằng cách giải thích cách mỗi nguyên tắc thiết kế có tác động tích cực đến thử nghiệm.

Nguyên tắc thiết kế và tái cấu trúc

Việc tái cấu trúc liên tục là điều cần thiết để đạt được thiết kế đủ đơn giản nhưng vẫn có thể bảo trì được. Nguyên tắc thiết kế cung cấp hướng dẫn về nơi cần tái cấu trúc mã và mục đích tái cấu trúc.

Bài giảng được thiết kế sao cho bạn có thể hiểu một cách tự nhiên các nguyên tắc thiết kế bằng cách trải qua quá trình tái cấu trúc mã ví dụ theo góc nhìn của các nguyên tắc thiết kế.

4 mã ví dụ cụ thể

Khóa học sẽ tái cấu trúc bốn ví dụ bằng cách sử dụng các nguyên tắc thiết kế: trò chơi phiêu lưu văn bản, ứng dụng quản lý doanh thu trò chơi, ứng dụng quản lý lịch trình định kỳ và hệ thống quản lý tiền tệ.

Sau khi hoàn thành khóa học, bạn sẽ hiểu được trực quan mối quan hệ giữa các nguyên tắc thiết kế, tái cấu trúc và thử nghiệm bằng cách học cách áp dụng nhiều nguyên tắc thiết kế khác nhau vào nhiều tình huống khác nhau.

Làm thế nào để áp dụng các nguyên tắc thiết kế một cách toàn diện

Các nguyên tắc thiết kế không được sử dụng một cách riêng lẻ. Khi viết mã, người ta thường áp dụng nhiều nguyên tắc thiết kế khác nhau theo cách toàn diện. Và để tuân theo một nguyên tắc thiết kế, các nguyên tắc thiết kế khác cũng phải được xem xét. Việc xem xét các nguyên tắc thiết kế theo cách phức tạp sẽ cải thiện đáng kể khả năng đưa ra lựa chọn thiết kế trong nhiều tình huống khác nhau.

Trong khóa học này, bạn sẽ học cách sử dụng kết hợp nhiều nguyên tắc thiết kế khác nhau, đồng thời chỉ ra cách cải thiện mã thông qua các lần tái cấu trúc liên tiếp.

Đối tượng - Mối quan hệ với những điều cơ bản

Bạn không cần phải nghe Objects - Basics trước để nghe Objects - Design Principles. Trong khi Object Fundamentals đề cập đến cách tiếp cận từ trên xuống để tạo ra các thiết kế có thể bảo trì bằng cách sử dụng thiết kế theo trách nhiệm, thì Object Design Principles đề cập đến cách tiếp cận từ dưới lên để tái cấu trúc mã nhằm giúp mã dễ bảo trì hơn.


Vì hai khóa học này đề cập đến thiết kế hướng đối tượng từ những góc nhìn khác nhau nên chúng bổ sung cho nhau thay vì phụ thuộc lẫn nhau. Vì vậy, thứ tự bạn học các bài giảng không quan trọng và sau khi học cả hai bài giảng, bạn sẽ có được cái nhìn toàn diện về hướng đối tượng.

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

📌 Mô tả các nguyên tắc thiết kế hướng đối tượng độc lập với ngôn ngữ.

📌 Mặc dù 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 1400 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.

📌 Vì quá trình tái cấu trúc được truyền tải bằng hình ảnh nên quá trình thay đổi mã rất dễ hiểu.

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

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

  • 1400 trang bài giảng có sẵn ở đị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 .
    Nếu bạn cảm thấy bất tiện khi nhận ví dụ cho mỗi bài giảng, bạn có thể học thoải mái hơn bằng cách nhận phiên bản tích hợp .

Kiến thức và ghi chú 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.

  • Tôi đã viết bài giảng này chỉ sử dụng JDK cơ bản nhất, nhưng một số ví dụ sử dụng phân tích cú pháp JSON.

    Thư viện Jackson , thư viện nhúng redis để hỗ trợ Redis trong bộ nhớ

    , Redis Java Client Thư viện Jedis

    , bao gồm phần sử dụng khung Swing để phát triển các ứng dụng GUI.
    Ngay cả khi bạn không biết các thư viện này, chúng tôi vẫn xây dựng nó để bạn có thể học các nguyên tắc cốt lõi mà không gặp khó khăn.


  • Chúng tôi sử dụng JunitAssertJ làm thư viện kiểm thử đơn vị.

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

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

  • Những người muốn tìm hiểu về khái niệm và cách áp dụng nguyên tắc thiết kế hướng đối tượng

  • Người khó áp dụng OOP vào code

  • Những người cần các nguyên tắc và hướng dẫn cơ bản để thiết kế code tốt

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

  • Cú pháp cơ bản Java

  • Kinh nghiệm lập trình bằng ngôn ngữ hướng đối tượng

Xin chào
Đây là

2,433

Học viên

156

Đánh giá

100

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ả

33 bài giảng ∙ (6giờ 16phú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ả

39 đánh giá

5.0

39 đánh giá

  • haedallog님의 프로필 이미지
    haedallog

    Đánh giá 16

    Đánh giá trung bình 4.9

    5

    100% đã tham gia

    It's an honor to leave the first review. After completing `<Object - Basics>`, I immediately took `<Object - Design Principles>` as well and am now writing this review. The advantages of the course are as follows: 1. It's easy to understand intuitively because it's not just listing principles but includes actual code examples. ㄴ I thought I knew the SOLID principles because I encounter them often, but after watching the lecture, I realized that was my misconception. 2. Convenience has increased compared to `<Object - Basics>`. ㄴ A link to the relevant repo is provided through the course materials, making it easy to access. ㄴ The presenter is no longer visible, making the presentation much easier to see. There are also some slightly disappointing aspects (They are minor). 1. The volume level differs slightly for each video, which is a bit distracting. 2. There are also cases where there are errors in the videos. 3. If colloquial phrases like '되게 됩니다.' were refined, it would feel tidier. 4. There are instances where the notation for foreign words differs (e.g., 메서드/메소드), and it would be a bit tidier if this were unified. I highly recommend watching `<Object - Basics>` as well. It allows for a broader understanding of the course. If you don't know what object-oriented design is, I strongly recommend this course. I plan to recommend it to many people around me as well 😊😊 Thank you to Jo Young-ho for planning this great course. I expect my code to change significantly in the future. Work less, earn more 😊😊😊

    • eternity
      Giảng viên

      I remember you recently left a review for "Object - Basic Course", and you've already completed it. Congratulations on completing the course, and thank you for leaving a review. :) I'm glad the course was helpful. I decided to remove my face from the videos at the request of many acquaintances, and I'm glad the reaction has been positive... Due to health reasons, the filming period was extended, which resulted in slightly varying audio levels. If anyone finds this inconvenient, I will consider re-recording "Object - Basic Course" along with it in the future. :) I'm creating, filming, and editing the course by myself, and this course ended up having more presentation slides than expected. Although I checked in between, it seems there were parts I didn't notice. I apologize for releasing it without thoroughly checking this part. I will also review it again and make corrections as quickly as possible. :) If it's convenient for you, please let me know about any errors in the video or inconsistencies in the slides, and I will correct and update them as quickly as possible. The phrase "Work less, earn more" resonates with me. I hope the course helps reduce maintenance costs and improve code quality. Thank you!

  • 개발인생님의 프로필 이미지
    개발인생

    Đánh giá 2

    Đánh giá trung bình 5.0

    5

    100% đã tham gia

    I really enjoyed the lecture. I thought I knew the design principles well, but unexpectedly, there were many things I had misunderstood. Explaining using code made it easy to understand. I was unsure how to refactor code, but after the lecture, I was able to establish some clear criteria. Thank you for creating a great lecture!

    • eternity
      Giảng viên

      Thank you for leaving a review, GaeBalInSaeng-nim. I'm glad the design principles, organized to be applicable when writing actual code, were helpful. :) If you have any questions, feel free to leave them anytime! Congratulations on completing the course, and have a happy start to your week.

  • enciel02028311님의 프로필 이미지
    enciel02028311

    Đánh giá 3

    Đánh giá trung bình 5.0

    5

    30% đã tham gia

    It's exciting like watching a movie, as the story about design continues~ I'll keep listening carefully~ Thank you for the good lecture!

    • eternity
      Giảng viên

      Thank you for leaving a review, Byung-mo Kim. It's structured to show how design principles are applied while improving examples, and it seems you're enjoying it. :) The difficulty increases slightly as you go towards the latter part, but more interesting content awaits, so please make sure to complete the course. If you have any questions or parts that need correction, please feel free to ask anytime. Have a great Friday night and spend happy days.

  • soljie742878님의 프로필 이미지
    soljie742878

    Đánh giá 2

    Đánh giá trung bình 5.0

    Đã chỉnh sửa

    5

    100% đã tham gia

    Following the basic course, this seems like the best lecture on object-oriented programming. It is very substantial as it is composed of well-structured content from concepts to examples.

    • eternity
      Giảng viên

      Thank you for leaving a course review, soljie74. If 'Object - Basic' explained how to write object-oriented code, 'Object - Design Principles' aimed to explain how to improve design using object-oriented principles, and I'm glad it was helpful. If you have any questions or suggestions for improvement, please feel free to ask anytime. Congratulations on completing the course, and have a good rest of your weekend!

  • chrispark님의 프로필 이미지
    chrispark

    Đánh giá 6

    Đánh giá trung bình 5.0

    5

    100% đã tham gia

    This is a premium lecture on the core principles and fundamentals of object-oriented development~ I can say there's a world of difference between developing with knowledge of these principles versus developing without them. If you're currently developing without knowing these principles, you'll eventually realize that you've been writing spaghetti code~!! :) Let's all keep fighting today to create code that's easy to maintain~ 😊

    • eternity
      Giảng viên

      Thank you so much for leaving a review, Chris Park. As you mentioned, I hope many people will be able to write clean code based on design principles. I'm so grateful that you're satisfied with the course, and I'll work hard to prepare the next course as well! Have a happy weekend. :)

Ưu đãi có thời hạn

64 ₫

24%

2.299.673 ₫

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!