Tạo SecurityEntity trong C++ Winform

Mọi người cho mình hỏi mình muốn chuyển đoạn code bên dưới sang c++ winform thì làm ntn ạ??

namespace QUANLYTHUVIENLIBS.Security
{
    public class SecurityEntity
    {
        public string HoTen { get; set; } 
        public bool LoginSuccess { get; set; }
        public Guid MaNhanVien { get; set; }
        public Guid MaBoPhan { get; set; }
        public bool isAdmin { get; set; }
        public bool NhatKyHeThong { get; set; }
        public bool DocGia { get; set; }
        public bool NhanVien { get; set; }
        public bool Sach { get; set; }
        public bool DangKyThe { get; set; }
        public bool TraCuuSach { get; set; }
        public bool NhapSach { get; set; }
        public bool MuonSach { get; set; }
        public bool TraSach { get; set; }
        public bool ThuTuc { get; set; }
        public bool BCSachChuaMuon { get; set; }
        public bool BCMuonQuaHan { get; set; }
        public bool BCSoLuotMuon { get; set; }
        public bool BCDSDocGia { get; set; }
    }
}
1 Like

Nhớ không lầm thì C++ làm gì có Property mà chuyển nhỉ.

1 Like

thật thế hả mình mới nghiên cứu nên không rõ

1 Like

tạo bình thường, property chỉ là tên gọi, bên C++ vẫn có property chỉ khác mình phải tạo bằng tay thôi (ko ghi tắt get;set; như C#)

1 Like

Chưa thấy bên C++ có Property bao giờ ??

Bạn cho xin ví dụ cho thông não phát?

1 Like

Bên C# dùng Get; Set
Thì bên C++ viết 2 hàm get, set :slight_smile:

1 Like

2 hàm get set tách rời bên C++ đâu gọi là Property ? Nó chỉ là method, bên C# cũng có thể viết 2 hàm get set tách rời, nhưng nó không phải property.

2 Likes

hình như properties trong C# cũng chỉ là method? Nhưng đỡ cái phải thêm dấu () cho đẹp thôi. Qua mấy ngôn ngữ khác ko có properties thì cứ getX() setX() mà phang.

1 Like

Method là method, property là property.
Để dấu kính dữ liệu thì bất cứ ngôn ngữ nào cũng có thể viết các method “riêng rẽ” để truy xuất dữ liệu. Đó là điều bình thường.
C# cho khả năng kết hợp 2 phương thức get/set trong một và gọi là property.
Một property và method là khác nhau, có những đặc điểm không dùng cho nhau được.

1 Like

Sai rồi, miễn là thiết kế theo hướng đối tượng thì đều có property cả
Chả qua cách bao đóng thuộc tính cho đối tượng khác nhau thôi, nói như bạn thì nên xem lại C# 2.0 xem property nó như thế nào nha :slight_smile:

Vậy bạn cho hỏi theo ý bạn thì Property trong C++ nó thể hiện ở chỗ nào ? Nó khác Method ở cái gì ?

Property chỉ là 1 cách dùng để bao đóng thuộc tính của 1 đối tượng, cụ thể là get;set;
C# bây giờ ghi tắt get;set; cho nhanh chứ thực tế nó là 1 method bình thưởng thôi, giả dủ giờ mình muốn đặt điều kiện ở get;set; thì làm như thế nào,
Mình nói rõ là property chỉ là 1 cách đóng gói thuộc tính của 1 đối tượng, bên C# là keyword get;set; là đóng gói, nhưng bên ngôn ngữ khác tì nó khác, chả hạn java, c++ nó đều là ngôn ngữ hướng đối tượng cả, chỉ khác property nó khác bên C# thôi chứ ko phải là ko có

property chỉ là cách trang trí cho lập trình viên lười viết a.setHoTen("Abc"); thôi. Họ thích viết a.HoTen = "Abc"; hơn. Ko có property thì mấy ngôn ngữ hướng đối tượng khác đâu có chết gì đâu, chỉ là viết xấu đi thông qua a.setHoTen("Abc");a.getHoTen("Abc");

viết

public string HoTen { get; set; }

thì tương đương với

private string m_hoTen;
public string getHoTen() { return m_hoTen; }
public void setHoTen(string val) { m_hoTen = val; }

có gì bí hiểm đâu ~.~ Chỉ là viết cho code đẹp và dễ đọc hơn thôi.

Theo cách của bạn thì tất cả ngôn ngữ đều như nhau.
Còn chỗ này :

Mình không hiểu. Bạn muốn đặt điều kiện trong get set ?

int MyProperty{
    get{
         if(.....){
             ...........// code here
         }
         return ....;
    }
    set{
         ......... = value;
         if(.....){
             ...........// code here
         }
    }
}
1 Like

Nếu chỉ nhìn vào việc để get và set dữ liệu trong class và nói rang chỉ để đẹp hơn thì không đúng. Không phải tự nhiên người ta làm ra cái đó chỉ để cho người lười và cho nó đẹp.


Mọi người đều đồng ý trong C++ và C# nó khác nhau. Vậy làm sao mà chuyển property từ C# sang C++. Nó làm gì còn tính các tính chat của property như trong C# nữa. Nó gọi là viết lại mã thì đúng hơn là chuyển.

bạn đang sử dụng visual 2015 đúng ko, mình chả rảnh đi đôi co với bạn về vấn đề này, mình nói luôn là property là 1 cách đóng gói thuộc tính của đối tượng thôi, bạn cứ lấy property trong C# làm thước đo chuẩn trong khi có rất nhiều ngôn ngữ hướng đối tượng trên thế giới.
https://en.wikipedia.org/wiki/Property_(programming) xem coi property nó như thế nào nha, lần đầu tiên mình phải post link để diễn dải đấy
Chủ thớt yên tâm, C# làm được thì C++ làm được :slight_smile:

2 Likes

Mình dung nhiều bản VS lắm. Dùng cả cái từ thời chưa có VS.Biết có cái gọi là property từ trước khi thằng C# nó được sinh ra. Chắc bạn nghĩ mình mới bập bẹ vào và dung VS2015 nên “không hiểu chuyện đời” :slight_smile:.

Còn chủ thớt đưa cái đoạn mã chứa đầy Property của C# và mình bảo không chuyển sang C++ được. Có điều gì đó không đúng nhỉ ? Bạn có biết property trong C# có những việc dù bạn có viết được 2 method get set cũng không làm được chức năng của property không ? Vậy thì chuyển sang C++ làm gì.

Cái link bạn đưa ấy bạn đã đọc chưa. Mình có đọc qua nhưng không thấy nói đến property của C++. Thảo nào mấy ngày tra google về nó mà không ra. Đây mình trích nguyên văn cái đoạn mình đọc được :

Còn chỗ này :

Nó không mang ý nghĩa gì cả và còn sai.
C# có thể sử dung dll của C++ còn C++ thì không thể làm ngược lại.
C# có thể làm web còn C++ không biết có làm được không @@.

1 Like

vậy property có công dụng gì nữa ngoài việc viết cho đẹp? Property có gì mà method get() set() ko làm được?

Em nghĩ ý của bác

Là C# dùng Property thì C++ cũng dùng được


Còn em thì thấy ý kiến của mọi người đều đúng chỉ là ý hiểu còn chưa giống nhau :smile:

Ý của bác @Duong_Act là việc sử dụng giữa Property và việc tạo ra một method như property là khác nhau
Còn ý của bác @rongthhieng1 và bác @tntxtnt là về việc ý nghĩa sử dụng của cả hai cái.


Mọi người thảo luận sôi nổi, em cũng theo dõi và theo ý kiến cá nhân của em thì
Giữa property và method khác nhau chứ :smiley:
Việc mục đích sử dụng thì có vẻ gần chung một mục đích.
Còn về việc xây dựng và sử dụng thì em nghĩ nó khác nhau ở phần đó

Mình đưa ra vài ví dụ :
1.Nếu bạn đã dung VS và đã từng kéo thả (có thể bạn không đề cao kéo thả lắm) nhưng bạn chắc biết cái bang Properties có chức năng gì. Nếu không có Property như của C# thì nó sẽ như những cái bang tương tự dành cho C++ mà bạn thấy trong QT, hay MFC, hay RAID Studio. Bạn đã thấy nó nghèo nàn chưa ? Bây giờ muốn có điều đó thì tự viết trong code nhé.

2.Mình có cái đoạn mã này để thực hiện Binding dữ liệu :

<DataGrid x:Name="dataGrid" Margin="0,10,6,101" Background="#FF202020" HorizontalAlignment="Right" Width="285" HorizontalGridLinesBrush="#19FFFFFF" VerticalGridLinesBrush="#19FFFFFF" CanUserAddRows="False" IsReadOnly="True">
            <DataGrid.Effect>
                <DropShadowEffect Color="Black" ShadowDepth="5" BlurRadius="20" Direction="-45"/>
            </DataGrid.Effect>
            <DataGrid.Columns>
                <DataGridTextColumn Header="Thông số" Binding="{Binding Param}" MinWidth="150" Foreground="LimeGreen"/>
                <DataGridTextColumn Header="Giá trị" Binding="{Binding Value}" MinWidth="80" Foreground="White"/>
                <DataGridTextColumn Header="Đơn vị" Binding="{Binding Unit}" MinWidth="50" Foreground="Brown"/>
            </DataGrid.Columns>
        </DataGrid>

Mình đang thực hiện Binding đến 3 property Param,Value,Unit ở code behind. Giá trị của nó sẽ được tự động update với GUI mà không cần gọi hàm chức năng tương tự. Bạn sẽ thay 2 hàm get , set vào đó như thế nào ? Hay mỗi lần muốn update lên GUI hay đọc từ GUI xuống lại phải gọi hàm để update.

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?