Từ 1 tới 9 trên tổng số 9 kết quả

Đề tài: Properties(get/set) | Giúp mình hiểu rõ hơn

  1. #1
    Ngày gia nhập
    03 2009
    Bài viết
    2

    Mặc định Properties(get/set) | Giúp mình hiểu rõ hơn

    hjx em học trên lớp thầy nói mà em ko hiểu lắm về tác dụng của hàm nay, ai hiểu giải thích cho em với... tk nhìu ạh

  2. #2
    Ngày gia nhập
    09 2006
    Nơi ở
    /usr/share/.hack@
    Bài viết
    1,433

    Visual C# Code:
    1. public class Person
    2. {
    3.     private _name;
    4.  
    5.     // constructor ....
    6.  
    7.     // properties
    8.    
    9.     //--NAME
    10.     public String Name
    11.     {
    12.         get {
    13.             return this._name;
    14.         }
    15.         set {
    16.             this._name = value;
    17.         }
    18.     }
    19. }

    Một đối tượng của lớp Person có đặc điểm là có Tên hay Name (đặc điểm, thuộc tính, tính chất, properties, attributes)

    Đây không phải là hàm (hàm chỉ có trong lập trình thủ tục hay không tồn tại trong OOP).

    Nếu bạn vẫn không hiểu, xin mời đọc và hiểu khải niệm về thuộc tính (properties) và phương thức (method), rồi gắn vào khái niệm OOP.
    None!

  3. #3
    Ngày gia nhập
    10 2008
    Nơi ở
    07T1 - DUT
    Bài viết
    101

    Theo mình nó có tác dụng truy cập vào các thuộc tính nhanh chóng mà không phải tạo các phương thức để lấy hay cài đặt các thuộc tính trong lớp mà vẫn đảm bảo yếu tố đóng gói dữ liệu trong OOP.
    In EarnMoney class doesn't have WorkShy method,but it has WorkingHard method!
    http://vn.myblog.yahoo.com/hoangsan_762

  4. #4
    Ngày gia nhập
    03 2009
    Bài viết
    2

    dạ thank 2 anh ạ

  5. #5
    Ngày gia nhập
    03 2009
    Bài viết
    31

    theo mình set có nghĩa là lấy 1 giá trị còn get là đưa ra 1 giá trị, tức là set sẽ lấy 1 giá trị mà chúng ta khởi tạo còn get có nhiệm vụ return lại giá trị đó
    bạn tham khảo 1 vd của mình nha
    Visual C# Code:
    1. using System;
    2. using System.Collections.Generic;
    3. using System.Text;
    4.  
    5. namespace thuoctinhgetset
    6. {
    7.     class Program
    8.     {
    9.         class concho
    10.         {
    11.             private string ten;
    12.             private string giong;
    13.             private int tuoi;
    14.             private string maulong;
    15.             public string Ten  
    16.             {
    17.                 get      //tra lai gia tri(duoi ham main khai bao la 'Ki')
    18.                 {
    19.                     return ten;      //dua thong tin ra ngoai man hinh
    20.                 }
    21.                 set    //lay gia tri(duoi ham main khai bao la 'Ki')
    22.                 {
    23.                     ten = value;  
    24.                      //vaule se lay gia tri ma ham main khai('Ki')
    25.                 }
    26.  
    27.             }
    28.             public string Giong
    29.             {
    30.                 get
    31.                 {
    32.                     return giong;
    33.                 }
    34.                 set
    35.                 {
    36.                     giong = value;
    37.                 }
    38.             }
    39.             public string Maulong
    40.             {
    41.                 get
    42.                 {
    43.                     return maulong;
    44.                 }
    45.                 set
    46.                 {
    47.                     maulong = value;
    48.                 }
    49.             }
    50.  
    51.         }
    52.         static void Main(string[] args)
    53.         {
    54.             concho a = new concho();
    55.             a.Ten = "Ki";               //set se lay gia tri nay cho vao value
    56.             a.Maulong = "Xanh";          //set se lay gia tri nay cho vao value
    57.             a.Giong = "Duc";            //set se lay gia tri nay cho vao value
    58.             Console.WriteLine(a.Ten);
    59.             //lấy public Ten, chứ ko phải là private string ten
    60.             Console.WriteLine(a.Giong);
    61.             Console.WriteLine(a.Maulong);
    62.             concho b = new concho();
    63.             b.Ten = "Ben";
    64.             b.Maulong = "Den";
    65.             b.Giong = "cai";
    66.             Console.WriteLine(b.Ten);
    67.             Console.WriteLine(b.Giong);
    68.             Console.WriteLine(b.Maulong);
    69.         }
    70.     }
    71. }
    Đã được chỉnh sửa lần cuối bởi Forlorn_hope : 30-03-2009 lúc 06:39 PM. Lý do: Lần sau nhớ để code vào tag
    Nếu biết ngày mai em lấy chồng
    Anh về cưới vợ thế là xong
    Đợi mai sau này con anh lớn
    Tìm đến con em trả thù lòng

  6. #6
    Ngày gia nhập
    11 2008
    Nơi ở
    vngameday.com
    Bài viết
    62

    Mặc định Properties(get/set) | Giúp mình hiểu rõ hơn

    còn mình thì nghĩ đơn giản như thế này: get và set giống như 1 tên quản kho, khi hàng về (dữ liệu) thì kiểm tra chất lượng rồi cho nhập hàng, còn khi hàng ra cũng phải kiểm tra trước khi mang ra dùng, có những quản kho chỉ cho nhập hàng ko cho lấy ra, còn có những tên chỉ cho lấy mà ko cho hàng vào. đơn giản mình nghĩ là vậy.
    vngameday.com - khi niềm đam mê luôn rực cháy. Rất mong nhận được sự đóng góp từ các bạn...

  7. #7
    Ngày gia nhập
    03 2009
    Bài viết
    2

    tạm thời thì qua ví dụ vẫn chưa hiểu rõ lắm vì khã năng đọc chương trình con` kém, nhưng mà có khá hơn chút ít rồi, thank mấy anh nhiều....

    Trích dẫn Nguyên bản được gửi bởi kkmct Xem bài viết
    còn mình thì nghĩ đơn giản như thế này: get và set giống như 1 tên quản kho, khi hàng về (dữ liệu) thì kiểm tra chất lượng rồi cho nhập hàng, còn khi hàng ra cũng phải kiểm tra trước khi mang ra dùng, có những quản kho chỉ cho nhập hàng ko cho lấy ra, còn có những tên chỉ cho lấy mà ko cho hàng vào. đơn giản mình nghĩ là vậy.
    nhưng mà anh à cái này có tới 2 thằng(get và set) và nói như anh thì am hiểu là có 2 thủ kho, 1 dầu vào 1 đầu ra, get nhận vào, set trả raq ha, vậy theo anh khau kiểm định đó để làm gì,.... đó là điều em muốn thắc mắc đấy....

  8. #8
    Ngày gia nhập
    03 2010
    Bài viết
    0

    Học lập trình hướng đối tượng lâu rồi nên không nhớ rõ. Nhưng đại khái nó như thế này:
    Nếu bạn lập trình C++ hay Java thì để lấy giá trị hoặc gán giá trị cho một thuộc tính của một đối tượng đồng thời để không vi phạm tính đóng gói thì bạn phải xây dựng riêng một phương thức để truy xuất thuộc tính.
    Ví dụ như class concho ở trên với thuộc tính ten chẳng hạn ta phải viết 2 phương thức sau để truy xuất lấy giá trị hoặc gán giá trị:
    Code:
    //phuong thuc lay gia tri
    public string getTen()
    {
            return this.ten;
    }
    //phuong thuc gan gia tri
    public string setTen(string name)
    {
            this.ten = name;
    }
    Như vậy bây giờ để lấy tên hay đăt tên cho con chó ta sẽ làm như sau:
    Code:
    //khai bao doi tuong con cho
    concho a = new concho();
    //dat ten
    a.setTen("con cay");
    //lay ten
    string nameConCho = a.getTen();
    Với cách lập phương thức cụ thể như vậy chúng ta sẽ đóng gói các thuôc tính của môt class để cho chương trình viết ra được bảo mật cao hơn, và tất cả các class khác cho dù không là bạn bè hay lớp con thì cũng đều truy xuất được vào các thuộc tính của đối tượng con chó bằng cách sử dụng hàm getName() và setName mà chúng ta viết bởi vì nếu không có phương thức cụ thể chúng ta không thể lấy giá trị của lớp đó từ một lớp khác theo kiểu:
    Code:
           //gia su day dang o mot lop khac
           string tenConCho = a.ten;
           string nameDog="john";
           a.ten = nameDog;
           //ca 2 lenh tren deu sinh loi khi bien dich
    Đó là đối với C++ và Java còn với C# thì khác biệt (có lẽ vì nó ra đời sau) bạn không cần mất công xây dựng cho mỗi thuộc tính 2 phương thức get và set khác nhau để truy xuất. C# cung cấp sẵn cho chúng ta cái cách thức
    Code:
      public string Ten  
                {
                    get      //tra lai gia tri(duoi ham main khai bao la 'Ki')
                    {
                        return ten;      //dua thong tin ra ngoai man hinh
                    }
                    set    //lay gia tri(duoi ham main khai bao la 'Ki')
                    {
                        ten = value;  
                         //vaule se lay gia tri ma ham main khai('Ki')
                    }
                }
    và như vậy chũng ta có thể truy xuất:
    Code:
          concho a = new concho();
          a.Ten = "Ki";               //set se lay gia tri nay cho vao value
    ở mọi nơi mà không sợ vi phạm tính đóng gói cũng như tính bảo mật dữ liệu cho đối tượng.
    Các bạn tìm hiểu thêm về tính đóng gói trong lập trình hướng đối tượng sẻ rõ hơn. Có jì chỉ lại cho mình với....

  9. #9
    Ngày gia nhập
    12 2012
    Bài viết
    11

    Ban có thể tham khảo hàm set,gest này:
    Code:
    class Phanso
    {
                  int Tuso;
                  int Mauso;
          public:
    		  void set(int t,int m)
    		  {
    			  this->Tuso=t;
    			  this->Mauso=m;
    		  }
    		  float gets()
    		  {
    			  return (float(Tuso)/Mauso);
    		  }
    .
    .
    .
    Code:
    void main()
    {
    	Phanso a,b,t;
    	cout<<"PHAN SO 1:"<<endl;
    	a.set(2,3);cout<<a.gets();
    .
    .
    .

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

  1. Thuộc tính properties
    Gửi bởi mafiavn241289 trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 1
    Bài viết cuối: 16-11-2013, 03:15 PM
  2. 741_5:Hỏi về phím tắt in Properties
    Gửi bởi thansau741 trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 2
    Bài viết cuối: 15-07-2012, 05:26 PM
  3. Cách tạo properties cho 1 component?
    Gửi bởi JohnnyChung trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 0
    Bài viết cuối: 11-07-2012, 02:46 PM
  4. Cửa sổ Properties của VC++ 2k5 trong 1 project MFC ?
    Gửi bởi gadapchetvoi trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 6
    Bài viết cuối: 25-03-2009, 09:39 AM
  5. Thắc mắc về properties
    Gửi bởi the-misery trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 5
    Bài viết cuối: 02-04-2008, 01:24 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