Announcement

Collapse
No announcement yet.

Cho em hỏi sự khác nhau giữa đối tượng và thể hiện trong C++

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • [C++] Cho em hỏi sự khác nhau giữa đối tượng và thể hiện trong C++

    Cho em hỏi sự khác nhau giữa đối tượng và thể hiện trong lập trình hướng đối tượng C++?

  • #2
    Originally posted by 13520552 View Post
    Cho em hỏi sự khác nhau giữa đối tượng và thể hiện trong lập trình hướng đối tượng C++?
    Câu này là biến thể của câu "trái bắp với quả ngô khác gì nhau trong tiếng Việt?" hả em. Em nên đặt câu hỏi rõ hơn.

    Comment


    • #3
      đối tượng là 1 thể hiện của lớp :v vậy ý bạn muốn hỏi kái j ?

      Comment


      • #4
        Trong lập trình, OOP là phương pháp lập trình mô tả lại đối tượng trong thực tế một cách tương đối ở khía cạnh nào đó cần quan tâm (không thể nào tuyệt đối y như thật được).
        - Class: một bản mô tả những đặc điểm (đang quan tâm) cần có của một nhóm thực thể nào (có cùng các đặc điểm đó) đó trong thế giới. Trong mỗi chương trình khác nhau, tùy vào yêu cầu, ta phân lớp các đối tượng tùy theo ý mình (liên quan tới phân tích thiết kế) .Ví như Cá biết bơi, Chim biết bay,... tuy nhiên cũng có thể phân lớp theo cách khác như Động Vật Nước Ngọt, Động Vật Nước Mặn (khi đó chim hay cá thì không quan tâm nữa).
        - Object: một trường hợp cụ thể mang các đặc điểm của class và có thể thao tác. Ở mức kỹ thuật thì nó là một tập hợp các biến với các kiểu dữ liệu đã được cấp phát sử dụng và tùy vào hệ thống khác nhau mà nó được reference và control khác nhau. Ngoài ra hệ thống điều khiển hành vi của nó theo cách mà class nó thuộc về đã mô tả về nó. Và nó hoàn toàn có thể thay đổi các giá trị các thuộc tính so với ban đầu qua các thao tác và lúc này các đối tượng khác nhau sẽ có những thứ khác nhau dù thuộc cùng một class (có khi đã khác nhau ngay từ đầu).
        - Instance: có nghĩa rất rộng, ở đây ta phải hiểu rằng bản chất hệ thống các class chỉ là một bản tuyên bố về cách phân chia thế giới cục bộ (như cách chúng ta chia Động Vật thành Động Vật Có Xương Sống / Không Xương Sống, Bò Sát/Lưỡng Cư,... rồi sâu hơn nữa) và để sử dụng được thì ta cần một "thể hiện" của phân lớp đó (như con Bạch Tuột Paul là một "thể hiện" của loài bạch tuột)...Vấn đề ở đây là cách dùng từ, trong OOP, thay vì nói rõ thể hiện của một OOP class thì người ta thường chỉ nói là "thể hiện" và nó chính là một Object của class đó.

        => Object là một thể hiện hay một trường hợp cụ thể của một class, người ta thường cũng có thể nói ngắn gọn là một "thể hiện" khi đang làm việc với OOP, nhưng thật chất nó mang nghĩa rộng hơn nhiều.
        Class chỉ mang tính khái niệm để gôm nhóm, còn Object và Instance là cái có thể dùng được.
        Last edited by 10520437; 20-06-2014, 02:55.

        Comment


        • #5
          A blueprint for a house design is like a class description. All the houses built from that blueprint are objects of that class. A given house is an instance.
          Nguồn: http://stackoverflow.com/questions/3...t-and-instance

          Comment


          • #6
            Thông thường trong lập trình thì hai khái niệm đối tượng (object) và thực thể (instance) được sử dụng để chỉ một cụ thể hóa của lớp.
            Dưới góc nhìn cá nhân thì mình hiểu:

            Code:
                Object a = new Object("abc");
            Object: lớp.
            a: đối tượng (trừu tượng - chung chung, nó có thể là Object với dữ liệu "abc", hoặc "bcd", hoặc ...).
            new Object("abc"): thực thể (cụ thể - xác định thông tin chứa dữ liệu "abc", được cấp phát vùng nhớ cụ thể,...).

            => Trong các lớp Factory thường có hàm được đặt tên kiểu Factory.getInstance() thay vì Factory.getObject()
            Last edited by 08520021; 20-06-2014, 15:19.

            Comment


            • #7
              truonganpn 12520668 Khi học ở trên lớp thì em có nghe thầy hỏi về sự khác nhau giữa đối tượng và thể hiện trong C++ mà chưa có câu trả lời, em lên mạng tìm thì cũng thấy không có câu trả lời, mà thầy có nói đối tượng và thể hiện không phải là một.

              Comment


              • #8
                Originally posted by 13520552 View Post
                truonganpn 12520668 Khi học ở trên lớp thì em có nghe thầy hỏi về sự khác nhau giữa đối tượng và thể hiện trong C++ mà chưa có câu trả lời, em lên mạng tìm thì cũng thấy không có câu trả lời, mà thầy có nói đối tượng và thể hiện không phải là một.
                Em không trình bày rõ các thuật ngữ này đặt trong ngữ cảnh nào thì rất khó có thể trả lời chính xác. Tôi nghĩ em nên hỏi lại giáo viên cho đây đủ. Ở phía trên các bạn trình bày cũng tương đối rõ rồi.

                Comment


                • #9
                  Originally posted by truonganpn View Post
                  Em không trình bày rõ các thuật ngữ này đặt trong ngữ cảnh nào thì rất khó có thể trả lời chính xác. Tôi nghĩ em nên hỏi lại giáo viên cho đây đủ. Ở phía trên các bạn trình bày cũng tương đối rõ rồi.
                  em cảm ơn! Để em xem lại thử

                  Comment


                  • #10
                    :salute: theo kinh nghiệm tròn 1 năm học OOP thì thể hiện là được dùng kiểu như đại diện của class, từ này khong dùng lung tung bên ngoài mà dùng khi mình viết các class Factory hoặc các class Single (thực tế thì 2 cái này hao hao nhau).
                    Còn đối tượng là cái mà được bạn tạo, hoặc khai báo trong chương trình bình thường.
                    Chỉ là kinh nghiệm học tập, không có sách vở nào mình đọc có chỗ định nghĩa 2 cái đó cả :salute:
                    Last edited by 12520054; 24-06-2014, 00:20.
                    -Trần Hữu Danh-
                    -GameUIT - SE-
                    ...Slowly... But Strongly...
                    clbgameuit.com F/clbgameuit

                    Comment


                    • #11
                      Originally posted by 12520054 View Post
                      Factory hoặc các class Sigle (thực tế thì 2 cái này hao hao nhau)
                      Ý Danh là Singleton.getInstance()? Factory vs Singleton làm sao mà giống nhau được Danh?

                      Comment


                      • #12
                        Theo cảm nhận của em thì Single là tạo 1 đối tượng duy nhất của class.
                        Còn Factory em code dùng để quản lý các Resource Game. Thực tế thì mỗi class Factory cũng không có nhu cầu tạo ra 2 đối tượng để làm gì :smile: nên em dựa trên tinh thần đó để viết class Factory.
                        Originally posted by 08520021 View Post
                        Ý Danh là Singleton.getInstance()? Factory vs Singleton làm sao mà giống nhau được Danh?
                        Last edited by 12520054; 24-06-2014, 00:20.
                        -Trần Hữu Danh-
                        -GameUIT - SE-
                        ...Slowly... But Strongly...
                        clbgameuit.com F/clbgameuit

                        Comment


                        • #13
                          Originally posted by 13520552 View Post
                          Cho em hỏi sự khác nhau giữa đối tượng và thể hiện trong lập trình hướng đối tượng C++?
                          Thầy bạn cho đáp án câu này chưa? Mình cũng đang thắc mắc 2 khái niệm đó khác nhau thế nào?

                          Theo mình biết thì thế này, sắp đến Trung Thu nên ví von xíu nhé:

                          - Object là cái bánh Trung Thu (nói chung).
                          - Class là cái khuôn làm bánh, bạn cho nguyên liệu vào, nó tạo ra cho bạn cái bánh hình thù y như cái khuôn.
                          - Mỗi Instance là một cái bánh độc nhất được tạo ra từ cái khuôn Class nói trên. Bạn tạo ra cái bánh Trung Thu (object), nhưng mỗi cái bánh có thể có gì đó khác nhau (cái ít nhân, cái nhiều, cái mặn, cái hơi nhạt), mỗi cái bánh khác nhau đó là một Instance.

                          Bạn biết mỗi cái bánh Trung Thu (mỗi instance) đều không giống nhau, nhưng bạn có thể nhìn và nói "Đó là những cái bánh Trung Thu (những object) và được tạo ra từ cái khuôn (class) kia".

                          Trong máy tính, mỗi instance đều khác nhau / phân biệt nhau ít nhất ở một thứ: đó là vị trí trong memory mà nó được cấp phát.

                          Tóm lại thì object là từ để gọi chung chung một instance của một class nào đó.

                          Hy vọng giúp bạn hiểu thêm phần nào.

                          Comment


                          • #14
                            Originally posted by 08520297 View Post
                            Thầy bạn cho đáp án câu này chưa? Mình cũng đang thắc mắc 2 khái niệm đó khác nhau thế nào?

                            Theo mình biết thì thế này, sắp đến Trung Thu nên ví von xíu nhé:

                            ....
                            Mình có 2 nhận xét thế này:
                            - Bạn đào mộ kinh quá.
                            - Bạn onl trong giờ làm việc.

                            Thêm cái nữa không liên quan đến bạn là mấy cái nick không phải sv trường toàn vào spam, thiết nghĩ forum trường nên đóng luôn cái chức năng ghi danh lại và xóa hết mấy tài khoản vớ vẩn kia luôn đi!

                            Comment

                            LHQC

                            Collapse
                            Working...
                            X