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ố 11 kết quả

Đề tài: Xin hỏi về các 4 tính chất của lập trình hướng đối tượng

  1. #1
    Ngày gia nhập
    07 2011
    Bài viết
    15

    Unhappy Xin hỏi về các 4 tính chất của lập trình hướng đối tượng

    Bản chất mình chưa hiểu về 4 tính chất của lập trình hướng đối tượng lắm, ai biết xin chỉ giáo dùm với
    p/s: làm winform kiểu bài quản lý thì có tính chất gì của lập trình hướng đối tượng. Mình chỉ biết học code, code sao cho ra, chứ chẳng biết nó có tính chất gì....

  2. #2
    Ngày gia nhập
    11 2008
    Nơi ở
    An Giang
    Bài viết
    502

    Tình toàn vẹn, Nhất quán... mình cũng không nhớ hết. Lúc đầu mình cũng quan niệm như bạn. Miễn sao chương trình ra kết quả đúng là đc. Nhưng như thế thì sau này ra ngoài làm ko ai nhận bạn đâu . Từ từ bạn sẽ hiểu

  3. #3
    Ngày gia nhập
    10 2010
    Bài viết
    49

    Bạn xem tài liệu bên trường ĐH KHTN thêm bạn sẽ hiểu.
    Link: http://www.mediafire.com/?c5xujji3c9e99v6
    Code for food

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

    cảm ơn bạn nhiều cái này mình cũng đang rất cần

  5. #5
    Ngày gia nhập
    07 2011
    Bài viết
    15

    Trích dẫn Nguyên bản được gửi bởi huuhung Xem bài viết
    Tình toàn vẹn, Nhất quán... mình cũng không nhớ hết. Lúc đầu mình cũng quan niệm như bạn. Miễn sao chương trình ra kết quả đúng là đc. Nhưng như thế thì sau này ra ngoài làm ko ai nhận bạn đâu . Từ từ bạn sẽ hiểu
    đúng như bạn nói, hum nọ mình đi pv họ hỏi mà, nếu đọc sách để hiểu đ/n về 4 cái tính chất của lập trình hướng đối tượng (đóng gói, kế thừa, đa hình, trừu tượng) thì mình có hiểu, nhưng để làm vào 1 bài lập trình thì mình k biết thì nào cần có nó và khi nào không, tại sao lại cần. Như mấy bài quản lý bằng winform mình làm, mình chẳng thấy cái tính chất nào trong đấy hết. Hum đi pv nhà pv hỏi: thế bài quản lý của em làm có phải là hướng đối tượng k?, lần đầu đi cũng trả lời là có, nhưng khi về mình mới ngẫm lại là chẳng thấy trong lúc mình làm nó có 4 cái tính chất của hướng đối tượng đâu. Họ hỏi mình thêm câu tính đa hình trong hướng đối tượng. Theo như mình đọc sách thì mỗi cái nói 1 kiểu
    VD như mình có đọc 1 quyển sách họ cho ví dụ là: lớp giang viên, lớp sinh viên, lớp nhân viên đều có phương thức Show(), nhưng khi gọi phương thức Show() ở lớp giảng viên lại khác khi gọi phương thức Show() ở lớp sinh viên ===> đó là đa hình ( nhưng theo mình đó có lẽ là overload chứ k phải là override). Tiếp đó mình đọc 1 cuốn sách nó lại có 1 VD về tính đa hình: có lớp chiến binh, lớp này có thể tùy từng tình huống mà có cách xử lý khác nhau, VD như lớp này có thể đánh tay không để tấn công đối phương, có thể dùng bow hay thậm chí có thể dùng sword để tấn công đối phương ==>đó là tính đa hình. Đọc xong cái VD sau mình nghĩ có lẽ là đúng là đa hình. Hum đi pv họ hỏi là nếu đối tượng là cái bút thì em nói cho anh biết tính đa hình của cái bút, mình định nói là: cái bút nếu để viết thì là cái bút, nhưng nếu nó để đánh nhau thì nó có thể là hung khí giết người...nhưng mà bản chất mình vẫn chưa hiểu nên mình k dám trả lời
    Vậy nên hum nay mới mạo muội hỏi các bạn của diễn đàn cộng đồng C việt, ai hiểu rõ bản chất về 4 tính chất của lập trình hướng đối tượng xin chỉ giáo cho mình (4 tính chất: đóng gói, kế thừa, đa hình, trừu tương )....Mình xin cảm ơn mọi người :(

  6. #6
    Ngày gia nhập
    04 2009
    Bài viết
    108

    Thumbs up Xin hỏi về các 4 tính chất của lập trình hướng đối tượng

    Trích dẫn Nguyên bản được gửi bởi one2one Xem bài viết
    đúng như bạn nói, hum nọ mình đi pv họ hỏi mà, nếu đọc sách để hiểu đ/n về 4 cái tính chất của lập trình hướng đối tượng (đóng gói, kế thừa, đa hình, trừu tượng) thì mình có hiểu, nhưng để làm vào 1 bài lập trình thì mình k biết thì nào cần có nó và khi nào không, tại sao lại cần. Như mấy bài quản lý bằng winform mình làm, mình chẳng thấy cái tính chất nào trong đấy hết. Hum đi pv nhà pv hỏi: thế bài quản lý của em làm có phải là hướng đối tượng k?, lần đầu đi cũng trả lời là có, nhưng khi về mình mới ngẫm lại là chẳng thấy trong lúc mình làm nó có 4 cái tính chất của hướng đối tượng đâu. Họ hỏi mình thêm câu tính đa hình trong hướng đối tượng. Theo như mình đọc sách thì mỗi cái nói 1 kiểu
    VD như mình có đọc 1 quyển sách họ cho ví dụ là: lớp giang viên, lớp sinh viên, lớp nhân viên đều có phương thức Show(), nhưng khi gọi phương thức Show() ở lớp giảng viên lại khác khi gọi phương thức Show() ở lớp sinh viên ===> đó là đa hình ( nhưng theo mình đó có lẽ là overload chứ k phải là override). Tiếp đó mình đọc 1 cuốn sách nó lại có 1 VD về tính đa hình: có lớp chiến binh, lớp này có thể tùy từng tình huống mà có cách xử lý khác nhau, VD như lớp này có thể đánh tay không để tấn công đối phương, có thể dùng bow hay thậm chí có thể dùng sword để tấn công đối phương ==>đó là tính đa hình. Đọc xong cái VD sau mình nghĩ có lẽ là đúng là đa hình. Hum đi pv họ hỏi là nếu đối tượng là cái bút thì em nói cho anh biết tính đa hình của cái bút, mình định nói là: cái bút nếu để viết thì là cái bút, nhưng nếu nó để đánh nhau thì nó có thể là hung khí giết người...nhưng mà bản chất mình vẫn chưa hiểu nên mình k dám trả lời
    Vậy nên hum nay mới mạo muội hỏi các bạn của diễn đàn cộng đồng C việt, ai hiểu rõ bản chất về 4 tính chất của lập trình hướng đối tượng xin chỉ giáo cho mình (4 tính chất: đóng gói, kế thừa, đa hình, trừu tương )....Mình xin cảm ơn mọi người :(
    Trong lập trình hướng đối tượng(OOP) có 4 tính chất là : Tính trừu tượng, giấu kín, kế thừa và đa hình
    1. Tính trừu tượng : Việc bạn mô hình hóa thông tin của 1 sinh viên dưới dạng 1 lớp chính là bạn đã sử dụng nó rồi đó

    Code:
            public class Student
           {
                public string FirstName{get;set;}
                public string LastName{get;set;}
                public int Age{get;set;}
                public static string Class
                {
                    get;set;
                }
                public string overrider ToString()
                {
                     return FirstName + " " + LastName;
                }
              
           }
    2. Tính giấu kín : Chỉ bên trong lớp mới đc truy cập trực tiếp các thông tin private của chính lớp đó, bên ngoài lớp phải truy cập thông qua Property
    Code:
       public class Student
           {
                    //Chỉ bên trong class Student mới được phép truy cập các trường này
                    private string _firstName;
                    private string  _lastName;
                    //Bên ngoài lớp vẫn truy cập được nó nhưng thông qua thuộc tính
                    //Giấu cơ chế hoạt động bên trong(Bạn có thể hiểu là ông muốn lấy hoặc thay đổi tên của 1 Student thì ông phải truy cập qua FirstName tôi sẽ làm cho ông(Ông ko thể biết được tôi đã làm thế nào)
                    public string FirstName
                    {
                         get
                         {
                            return this._firstName;
                         }
                         set
                         {
                             this._firstName = value;
                         }
                    }
    
            }
    1 ví dụ trong thực tế là cái điện thoại bàn. Ông cứ nhập số điện thoại và nhấn nút gọi là tôi sẽ gọi đến số máy kia cho ông(Ông ko thể biết đc tôi làm như nào, tháo tung cái điện thoại ra chưa chắc ông đã biết )

    3. Tính kế thừa(cái này quá rõ rồi)
    4. Tính đa hình : Khi trong lớp cơ sở bạn sử dụng thuộc tính, phương thức... mà có sử dụng modifier virtual, sau đó trong lớp kế thừa từ lớp này overrider thuộc tính, phương thưc... đó
    Giả sử bạn có 1 lớp Worker mô tả thông tin cơ bản 1 công nhân, với cách thức tính (lương bằng lương cơ bản * tổng số ngày làm việc)
    Code:
    public class Worker
         { 
            public string FirstName{get;set;}
            public string LastName{get;set;}
            public decimal SalaryBasic
            {  
                   get;set;
                        
             }
            public int TotalWork
            {
               get;
               set;
            }
            public virtual decimal Salary()
           {
                 return (SalaryBasic*TotalWork);
            }
         }
    Bây h bạn muốn tính lương cho công nhân lao động chân tay(WorkerManual) nhưng cách thức tính lương (Lương cơ bản * tổng số ngày làm việc) + Phụ cấp :
    Code:
     public class WorkerManual:Worker
         { 
            public string FirstName{get;set;}
            public string LastName{get;set;}
            public decimal Bonus{get;set;}
            public decimal SalaryBasic
            {  
                   get;set;
                        
             }
            public int TotalWork
            {
               get;
               set;
            }
            public override decimal Salary()
           {
                 return (SalaryBasic*TotalWork + Bonus);
            }
         }
    Tương tự với quản lý(Manager) thì cách thức tính lương (Lương cơ bản * tổng số ngày làm việc + 5*Bonus) chẳng hạn :
    Code:
    public class Manager:Worker
         { 
            public string FirstName{get;set;}
            public string LastName{get;set;}
            public decimal Bonus{get;set;}
            public decimal SalaryBasic
            {  
                   get;set;
                        
             }
            public int TotalWork
            {
               get;
               set;
            }
            public override decimal Salary()
           {
                 return (SalaryBasic*TotalWork + 5*Bonus);
            }
         }
    Hy vọng giúp ích !
    Ai đã gieo vào lòng Ai nỗi nhớ
    Để vì Ai sóng vỗ những đêm dài
    Ai có biết vì Ai-Ai không ngủ
    Trằn trọc hoài nỗi nhớ của riêng Ai.

  7. #7
    Ngày gia nhập
    04 2010
    Bài viết
    1,534

    Bạn đã đến giai đoạn đi phỏng vấn thì nên tập cách viết bài cho chững chạc. Đặt đoạn văn đều đặn, tránh dùng từ theo lối "học sinh", tránh viết tắt những từ chưa có quy luật viết tắt, vv...
    (tồi đọc mấy lần mới biết pv có nghĩa là phỏng vấn)

    Trả lời:

    Nếu chỉ dùng để trả lời trong buỏi phỏng vấn thì nên nói thẳng là:

    LTHĐT có bao nhiêu tính chất tùy theo cái nhìn, và cũng có khi tùy theo ngôn ngữ sử dụng. Tuy nhiên, theo quan niệm rộng rãi thì đa số mọi người công nhận rằng kỹ thuật này có 4 tính chất chính.
    (phần sau đây có một số từ được chú thích bằng tiếng Anh, nếu nhớ được tên tiếng Anh thì nên nói ra để tránh hiểu lầm - vd: đóng gói, tức là encapsulation and data hiding)

    Đóng gói (encapsulation and data hiding):
    Giấu kín dữ liệu của lớp và đối tượng, chỉ cho người sử dụng nhìn thấy những chi tiết cần thiết qua các công cụ như truy vấn (accessor) và thay đổi (mutator). Nói tóm lại người sử dụng chỉ có thể dùng giao diện thuộc tính (properties) chứ không được trực tiếp xâm phạm vào trường (fields)

    Trừu tượng (abstraction):
    Tính chất này đi sát với tính chất đóng gói. Bởi vì nó đảm bảo rằng người sử dụng chỉ được dùng những giao diện, tức là các thuộc tính và hàm công sộng (public) của lớp chứ không hề được biết sự thiết kế của lớp. Cũng như khi bạn sắm một chiếc xe máy thì giao diện hàm là tay lái, ga, số... và giao diện thuộc tính là vận tốc tối đa, khả năng leo dốc, màu sắc, bảng số... Bạn chỉ cần những giao diện này để sử dụng và phân biệt chiếc xe của mình. Còn thiết kế bên trong của nó, bạn không cần biết tới (trên nguyên tắc).

    Kế thừa (inheritance):
    Một lớp liên đới đến lớp khác qua 3 cách
    Cách "chứa" (has a) - bên trong A có chứa B, "sử dụng" (uses a) A sử dụng B, và "căn bản là" (is a) - A vốn gốc từ B. Cách "căn bản là" chính là tính kế thừa.
    Giải thích cho cặn kẽ thì phải ví dụ cho nên phần này rất dài. Tuy nhiên vì nó khá dễ hiểu nên tôi tạm ngưng ở đây

    Đa hình (Polymorphism)
    Đa hình chỉ vỏn vẹn có nghĩa là "một kiểu, nhiều hình dạng" (one name, many forms).
    Để biết cách sử dụng và cách hoạt động đa hình cần phải code về cái này khá nhiều cho quen. Nếu chỉ nói về lý thuyết code thì ta có hai kiểu đa hình, kiểu code kết nối sớm và kiểu code kết nối trễ.
    Kiểu "chồng bằng nhiều dạng chữ ký/signature" (overloading) là kiểu kết nối sớm, tức là hàm được xác định qua chữ ký (prototype) và kết nối lúc compile.
    Kiểu "chồng bằng hàm ảo và bảng ảo/virtual table" (overriding) là kiểu kết nối trễ, tức là compiler không biết dạng cuối cùng của đối tượng, đến lúc chương trình chạy thì mới biết thực dạng đối tượng và hệ thống dùng bảng ảo để nối đúng hàm.

  8. #8
    Ngày gia nhập
    07 2011
    Bài viết
    15

    Trích dẫn Nguyên bản được gửi bởi VoTichSu Xem bài viết
    Bạn đã đến giai đoạn đi phỏng vấn thì nên tập cách viết bài cho chững chạc. Đặt đoạn văn đều đặn, tránh dùng từ theo lối "học sinh", tránh viết tắt những từ chưa có quy luật viết tắt, vv...
    (tồi đọc mấy lần mới biết pv có nghĩa là phỏng vấn)

    Trả lời:

    Nếu chỉ dùng để trả lời trong buỏi phỏng vấn thì nên nói thẳng là:

    LTHĐT có bao nhiêu tính chất tùy theo cái nhìn, và cũng có khi tùy theo ngôn ngữ sử dụng. Tuy nhiên, theo quan niệm rộng rãi thì đa số mọi người công nhận rằng kỹ thuật này có 4 tính chất chính.
    (phần sau đây có một số từ được chú thích bằng tiếng Anh, nếu nhớ được tên tiếng Anh thì nên nói ra để tránh hiểu lầm - vd: đóng gói, tức là encapsulation and data hiding)

    Đóng gói (encapsulation and data hiding):
    Giấu kín dữ liệu của lớp và đối tượng, chỉ cho người sử dụng nhìn thấy những chi tiết cần thiết qua các công cụ như truy vấn (accessor) và thay đổi (mutator). Nói tóm lại người sử dụng chỉ có thể dùng giao diện thuộc tính (properties) chứ không được trực tiếp xâm phạm vào trường (fields)

    Trừu tượng (abstraction):
    Tính chất này đi sát với tính chất đóng gói. Bởi vì nó đảm bảo rằng người sử dụng chỉ được dùng những giao diện, tức là các thuộc tính và hàm công sộng (public) của lớp chứ không hề được biết sự thiết kế của lớp. Cũng như khi bạn sắm một chiếc xe máy thì giao diện hàm là tay lái, ga, số... và giao diện thuộc tính là vận tốc tối đa, khả năng leo dốc, màu sắc, bảng số... Bạn chỉ cần những giao diện này để sử dụng và phân biệt chiếc xe của mình. Còn thiết kế bên trong của nó, bạn không cần biết tới (trên nguyên tắc).

    Kế thừa (inheritance):
    Một lớp liên đới đến lớp khác qua 3 cách
    Cách "chứa" (has a) - bên trong A có chứa B, "sử dụng" (uses a) A sử dụng B, và "căn bản là" (is a) - A vốn gốc từ B. Cách "căn bản là" chính là tính kế thừa.
    Giải thích cho cặn kẽ thì phải ví dụ cho nên phần này rất dài. Tuy nhiên vì nó khá dễ hiểu nên tôi tạm ngưng ở đây

    Đa hình (Polymorphism)
    Đa hình chỉ vỏn vẹn có nghĩa là "một kiểu, nhiều hình dạng" (one name, many forms).
    Để biết cách sử dụng và cách hoạt động đa hình cần phải code về cái này khá nhiều cho quen. Nếu chỉ nói về lý thuyết code thì ta có hai kiểu đa hình, kiểu code kết nối sớm và kiểu code kết nối trễ.
    Kiểu "chồng bằng nhiều dạng chữ ký/signature" (overloading) là kiểu kết nối sớm, tức là hàm được xác định qua chữ ký (prototype) và kết nối lúc compile.
    Kiểu "chồng bằng hàm ảo và bảng ảo/virtual table" (overriding) là kiểu kết nối trễ, tức là compiler không biết dạng cuối cùng của đối tượng, đến lúc chương trình chạy thì mới biết thực dạng đối tượng và hệ thống dùng bảng ảo để nối đúng hàm.
    Bạn có thể cho ví dụ về tính đóng gói và đa hình lại được không ?
    Mình vẫn chưa hiểu lắm sau khi đọc 2 cục lý thuyết đó

  9. #9
    Ngày gia nhập
    07 2011
    Bài viết
    15

    Trích dẫn Nguyên bản được gửi bởi nguoidanongxala Xem bài viết
    Trong lập trình hướng đối tượng(OOP) có 4 tính chất là : Tính trừu tượng, giấu kín, kế thừa và đa hình
    1. Tính trừu tượng : Việc bạn mô hình hóa thông tin của 1 sinh viên dưới dạng 1 lớp chính là bạn đã sử dụng nó rồi đó

    Code:
            public class Student
           {
                public string FirstName{get;set;}
                public string LastName{get;set;}
                public int Age{get;set;}
                public static string Class
                {
                    get;set;
                }
                public string overrider ToString()
                {
                     return FirstName + " " + LastName;
                }
              
           }
    2. Tính giấu kín : Chỉ bên trong lớp mới đc truy cập trực tiếp các thông tin private của chính lớp đó, bên ngoài lớp phải truy cập thông qua Property
    Code:
       public class Student
           {
                    //Chỉ bên trong class Student mới được phép truy cập các trường này
                    private string _firstName;
                    private string  _lastName;
                    //Bên ngoài lớp vẫn truy cập được nó nhưng thông qua thuộc tính
                    //Giấu cơ chế hoạt động bên trong(Bạn có thể hiểu là ông muốn lấy hoặc thay đổi tên của 1 Student thì ông phải truy cập qua FirstName tôi sẽ làm cho ông(Ông ko thể biết được tôi đã làm thế nào)
                    public string FirstName
                    {
                         get
                         {
                            return this._firstName;
                         }
                         set
                         {
                             this._firstName = value;
                         }
                    }
    
            }
    1 ví dụ trong thực tế là cái điện thoại bàn. Ông cứ nhập số điện thoại và nhấn nút gọi là tôi sẽ gọi đến số máy kia cho ông(Ông ko thể biết đc tôi làm như nào, tháo tung cái điện thoại ra chưa chắc ông đã biết )

    3. Tính kế thừa(cái này quá rõ rồi)
    4. Tính đa hình : Khi trong lớp cơ sở bạn sử dụng thuộc tính, phương thức... mà có sử dụng modifier virtual, sau đó trong lớp kế thừa từ lớp này overrider thuộc tính, phương thưc... đó
    Giả sử bạn có 1 lớp Worker mô tả thông tin cơ bản 1 công nhân, với cách thức tính (lương bằng lương cơ bản * tổng số ngày làm việc)
    Code:
    public class Worker
         { 
            public string FirstName{get;set;}
            public string LastName{get;set;}
            public decimal SalaryBasic
            {  
                   get;set;
                        
             }
            public int TotalWork
            {
               get;
               set;
            }
            public virtual decimal Salary()
           {
                 return (SalaryBasic*TotalWork);
            }
         }
    Bây h bạn muốn tính lương cho công nhân lao động chân tay(WorkerManual) nhưng cách thức tính lương (Lương cơ bản * tổng số ngày làm việc) + Phụ cấp :
    Code:
     public class WorkerManual:Worker
         { 
            public string FirstName{get;set;}
            public string LastName{get;set;}
            public decimal Bonus{get;set;}
            public decimal SalaryBasic
            {  
                   get;set;
                        
             }
            public int TotalWork
            {
               get;
               set;
            }
            public override decimal Salary()
           {
                 return (SalaryBasic*TotalWork + Bonus);
            }
         }
    Tương tự với quản lý(Manager) thì cách thức tính lương (Lương cơ bản * tổng số ngày làm việc + 5*Bonus) chẳng hạn :
    Code:
    public class Manager:Worker
         { 
            public string FirstName{get;set;}
            public string LastName{get;set;}
            public decimal Bonus{get;set;}
            public decimal SalaryBasic
            {  
                   get;set;
                        
             }
            public int TotalWork
            {
               get;
               set;
            }
            public override decimal Salary()
           {
                 return (SalaryBasic*TotalWork + 5*Bonus);
            }
         }
    Hy vọng giúp ích !
    Bạn có thể nói lại cho mình tính đa hình được không ?
    Mình hiểu là nếu có "override" là phương thức ở lớp dẫn xuất sẽ phủ quyết lại phương thức ở lớp cơ sở
    Bạn có thể giải thích giúp mình là nếu đối tượng là "cái bút" thì nó thể hiện tính đa hình như thế nào được không ??.

  10. #10
    Ngày gia nhập
    04 2009
    Bài viết
    108

    Trích dẫn Nguyên bản được gửi bởi one2one Xem bài viết
    Bạn có thể nói lại cho mình tính đa hình được không ?
    Mình hiểu là nếu có "override" là phương thức ở lớp dẫn xuất sẽ phủ quyết lại phương thức ở lớp cơ sở
    Bạn có thể giải thích giúp mình là nếu đối tượng là "cái bút" thì nó thể hiện tính đa hình như thế nào được không ??.
    Các phương thức virtual được định nghĩa trong các lớp mà cùng chia sẻ 1 trật tự thừa kế cho phép bạn gọi các phiên bản khác nhau của cùng phương thức, dựa trên kiểu đối tượng, nó sẽ được xem xét ở thời điểm chạy. Tính chất này được gọi là đa hình. Để bạn có thể hiểu rõ hơn mình lấy luôn ví dụ với lớp Pen

    Code:
           public class Pen
           {
                public virtual void Paint()
                {
                      Console.write("A B C");
                }
          }
          
         public class Pencil:Pen
        {
               public override void Paint()
               {
                     Console.write("D E F G H");
                }
      
        }
        public class Brush:Pen
        {
             //Do not override
        }
        
       Pen myPen = new Pen();
       Pencil myPencil = new Pencil();
       Brush myBrush = new Brush();
       
       myPen.Paint();
       myPencil .Paint();
       myBrush.Paint();
    
       //Kết quả 
       A B C
       D E F G H
       A B C
    Hy vọng sẽ làm bạn hiểu rõ hơn !
    Ai đã gieo vào lòng Ai nỗi nhớ
    Để vì Ai sóng vỗ những đêm dài
    Ai có biết vì Ai-Ai không ngủ
    Trằn trọc hoài nỗi nhớ của riêng Ai.

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

  1. MS SQL Lỗi SQL Server 2005 express chạy chậm khi chạy report?
    Gửi bởi dongtrien trong diễn đàn Thắc mắc Microsoft SQL Server & Microsoft Access
    Trả lời: 1
    Bài viết cuối: 26-03-2013, 09:12 PM
  2. Q-Smart S15 thiết kế chắc chắn chạy android giá rẻ
    Gửi bởi 16thang4 trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 22-08-2012, 04:07 PM
  3. Trả lời: 4
    Bài viết cuối: 28-06-2012, 03:35 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