Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 19 kết quả

Đề tài: [ Solved ]Hỏi về lớp bao(wrapped class) trong C++

  1. #1
    Ngày gia nhập
    09 2008
    Bài viết
    4

    Smile [ Solved ]Hỏi về lớp bao(wrapped class) trong C++

    em đang học lập trình hướng đối tượng nhưng khi gặp phần định nghĩa và constructor của lớp bao(wrapped class) thì ko có ebook hay tài liệu nào viết về cái này cả.Mong các anh đã học qua có thể giải thích dùm em hoặc có ebook nào có nói về phần này cho em xin với.Em cám ơn nhiều

  2. #2
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    Tui không rành tiếng việt IT cho lắm, tui cũng chưa nghe cái terminology "wrapped class" trong C++ bao giờ, có lẽ bên tui học khác vì vậy cậu cứ đưa ví dụ lên đi !

  3. #3
    Ngày gia nhập
    09 2007
    Bài viết
    724

    Lần đầu tiên nghe tới "lớp bao".
    Không biết có phải là lớp toàn chứa các phương thức virtual không vậy?
    tương tự như lớp được khai báo với từ khóa abstract bên C# ko ta?

    nếu vậy thì chỉ constructor của nó chẳng cần phải làm gì cả(nó là hàm rỗng ruột - nếu thích thì cho câu lệnh return là ok). vì nó sẽ chẳng bao giờ được new ra cả.

    tất cả hãy quăng cho "class con" nó làm. vì chỉ class con nó mới biết là cần phải khởi tạo như thế nào đối với các thuộc tính đang có của nó.

    không biết đúng ý bạn không nữa?

    chúc bạn thành công.
    Đã được chỉnh sửa lần cuối bởi zkday2686 : 19-09-2008 lúc 04:54 PM.

  4. #4
    Ngày gia nhập
    09 2008
    Nơi ở
    Kĩ viện
    Bài viết
    169

    Lớp bao?, Là một cái class bao lấy một class khác

    Ví dụ có một cái class viết trên C++, bạn muốn xài nó trên C# thì bạn phải viết một cái lớp = C++.net bao lấy cái class C++, rồi dùng chính cái assembly C++.net đó trong C#.

    Edit:

    wrapper của Ogre trên C++ là một cái assembly C++.net xài được với mọi ngôn ngữ .net đấy. Mogre(managed ogre).
    Phá toái hư không - Bạch nhật thăng thiên.

  5. #5
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    Lớp bao?, Là một cái class bao lấy một class khác

    Ví dụ có một cái class viết trên C++, bạn muốn xài nó trên C# thì bạn phải viết một cái lớp = C++.net bao lấy cái class C++, rồi dùng chính cái assembly C++.net đó trong C#.

    Edit:

    wrapper của Ogre trên C++ là một cái assembly C++.net xài được với mọi ngôn ngữ .net đấy. Mogre(managed ogre).
    Cậu cho 1 ví dụ bằng C++ cho tui dễ hình dung được không ? Thanks cậu trước !

  6. #6
    Ngày gia nhập
    09 2008
    Nơi ở
    Kĩ viện
    Bài viết
    169

    Mặc định [ Solved ]Hỏi về lớp bao(wrapped class) trong C++

    Giả dụ có một cái class được viết = C++ chẳng hạn.

    Code:
    class Character
    {
    public:
            void Run()
            {
                  //!..............
            }
    };
    Ta dùng C++.net viết một cái class khác "bao" lấy nó.

    Code:
    public ref class ManagedCharacter
    {
    private:
            Character* character;
    public:
            ManagedCharacter()
            {
                   character = new Character();
            }
    
            ~ManagedCharacter()
            {
                   if(character)
                      delete character;
            }
    public:
            void Run()
            {
                  if(character)
                     character->Run();
            }
    };
    Thế là ta có một cái class .net "ManagedCharacter" bao lấy cái class C++ .
    Phá toái hư không - Bạch nhật thăng thiên.

  7. #7
    Ngày gia nhập
    09 2007
    Bài viết
    724

    Trích dẫn Nguyên bản được gửi bởi rox_rook Xem bài viết
    Cậu cho 1 ví dụ bằng C++ cho tui dễ hình dung được không ? Thanks cậu trước !

    ặc không biết có phải là lớp bao không nữa. thôi nói đại.

    giờ giả sử đang code game chơi cờ vua.
    có các class là: CQuanCo đây là class cha. (theo zkday hiểu định nghĩa ở trên thì nó là class "bao").
    các class khác là: CQuanVua, CQuanHau, ..... các class này được kế thừa từ class CQuanCo.

    C++ Code:
    1. class CQuanCo{
    2. protected:
    3.            int x; // chỉ số dòng trên bàn cờ
    4.            int y; // chỉ số cột trên bàn cờ
    5.            bool TinhTrang;//tình trạng là đã chết hay chưa.
    6.  
    7. public:
    8.           CQuanCo();
    9.           virtual ~CQuanCo();
    10.           virtual int DiQuanCo();
    11.           virtual bool KiemTraNuocDiHopLe();
    12. };
    13.  
    14. class CQuanVua : public CQuanCo
    15. {
    16. public:
    17.           CQuanVua(){
    18.               x = 0; // dong thu 0
    19.               y = 4; // cột thứ 4
    20.            }
    21.            ~CQuanVua()
    22.            {
    23.                x = 0; y = 4;
    24.            }
    25.           int DiQuanCo(){.........}
    26.           bool KiemTraNuocDiHopLe(int xMoi, int yMoi){.............}
    27. };
    28.  
    29.  
    30.  
    31. class CQuanHau : public CQuanCo
    32. {
    33. public:
    34.           CQuanHau(){
    35.               x = 0; // dong thu 0
    36.               y = 5;
    37.            }
    38.            ~CQuanHau()
    39.            {
    40.                x = 0; y = 4;
    41.            }
    42.           int DiQuanCo(){.........}
    43.           bool KiemTraNuocDiHopLe(int xMoi, int yMoi){.............}
    44. };


    thực chất khi sử dụng nó chúng ta chẳng bao giờ khai báo đại loại như:
    C++ Code:
    1. CQuanCo *a;
    2. a = new CQuanCo();

    vì nói một cái quân cờ chơi vơi như vậy thì biết là cái nào mà new.... đúng không???
    khi new phải new cụ thể như:

    C++ Code:
    1. a = new CQuanHau();
    Đã được chỉnh sửa lần cuối bởi zkday2686 : 19-09-2008 lúc 06:37 PM.

  8. #8
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    Cái này là proxy class thì phải : dùng hiding implementation technique để closed source. Thiệt không biết nó còn được gọi là wrapper class. Do tui không biết .NET nên chịu ! Để có gì tìm hiểu thêm. Dù gì cũng cám ơn cậu !

  9. #9
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    Cái của zkday2686 là abstract class, inheritance bình thường thui mà ! Cũng chẳng rõ wrapper thực ra là gì ! Dù gì cũng cám ơn cậu luôn nhé !

  10. #10
    Ngày gia nhập
    09 2008
    Nơi ở
    Kĩ viện
    Bài viết
    169

    http://www.ogre3d.org/index.php?opti...411&Itemid=131

    Cậu đọc xuống có đoạn động đến wrapper đấy, nói chung là dùng một cái gì đấy bao lấy một cái gì đấy để dùng trong một ngôn ngữ không xài được trực tiếp cái gì đấy. Cách trên của tớ chỉ là một ví dụ thôi, còn nhiều cách khác(nhưng tớ ko biết, tớ mù phython và java :( ).

    Edit: Cái này là thuật ngữ IT mà, nhưng chủ yếu dân nghiên cứu làm game bọn tớ hay xài đồ do tây nó viết nên đâm ra cũng biết.
    Phá toái hư không - Bạch nhật thăng thiên.

Các đề tài tương tự

  1. [ Solved ]Class hàng bán
    Gửi bởi luxiphe89 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 26
    Bài viết cuối: 09-11-2008, 10:04 AM
  2. [ Solved ]Hỏi về phương thức trong lớp (class )!
    Gửi bởi camping29 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 3
    Bài viết cuối: 07-10-2008, 03:31 PM
  3. [ Solved ]Hỏi về class?
    Gửi bởi khanh_0507 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 4
    Bài viết cuối: 12-09-2008, 10:54 AM
  4. [ Solved ]Thắc mắc về <Class> trong OOP.
    Gửi bởi hacker_mubaohiem trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 2
    Bài viết cuối: 14-03-2008, 04:15 PM
  5. Function Pointer trong Class, lỗi cannot convert from 'int (__cdecl *)(int)' to 'int (__thiscall Class::*)(int)'
    Gửi bởi DKhanh trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 5
    Bài viết cuối: 15-12-2007, 04:04 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn