Thứ Năm, 15 tháng 4, 2010

// // Leave a Comment

Lớp và đối tượng

1.    Lớp và đối tượng


a.        Lớp (class)


      Một lớp là một khái niệm mô tả cho những thực thể có chung tính chất và hành vi. Lớp định nghĩa những thuộc tính và hành vi được dùng cho những đối tượng của lớp đó. Do đó có thể nói lớp là một khuôn mẫu cho các đối tượng.


Công thức để tạo một class

AccessModifier  class className
{
      // thân class
}

Ví dụ tôi định nghĩa một class là color, class này được truy cập public
public class Color
{
    // Nội dung class

}

b.         Đối tượng

Đối tượng là một đại diện, hay có thể nói là một sản phẩm của một class. Tất cả các đối tượng đều có chung những thuộc tính và hành vi mà class định nghĩa. Cách tạo đối tượng giống như cách tạo một biến có kiểu dữ liệu là Class.

Ví dụ tôi muốn khai báo một đối tượng c là thể hiện của class color nói trên. Tôi làm như sau:

       Color c = new Color();
Sau đó từ đối tượng c này tôi sẽ truy cập đến các thành phần của class thông qua toán tử “.” (Mà tôi đã giới thiệu ở bài học số 2). Tuy nhiên việc truy cập các thành phần của class còn tùy thuộc vào thành phần đó là instance hay static. Bạn sẽ được tìm hiểu khái niệm này ở phần tiếp theo của bài học.

c.         Ưu điểm khi sử dụng lớp và đối tượng trong lập trình

Có một số những ưu điểm của việc sử dụng Class và đối tượng trong phát triển phần mềm. Những ưu điểm nổi bật nhất được liệt kê như sau:

§         Duy trì code bằng việc mô hình hóa
§         Đóng gói những sự phức tạp trong mã lênh từ người dùng
§         Khả năng sử dụng lại
§         Cung cấp đơn kế thừa để thực thi nhiều phương thức.
Các bạn sẽ hiểu hơn về điều này ở các bài học sau của chúng tôi về inheritance (sự thừa kế) hay polymorphism ( Tính đa hình ).

2.    Khái niệm thành viên thể hiện (instance) và thành viên tĩnh(static)

Trong một lớp , các thành viên có thể là instance (thành viên thể hiện) hoặc static (thành   viên tĩnh). Một thành viên instance có nghĩa là thành viên đó liên quan đến thể hiện của một kiểu dữ liệu. Thành viên  static được xem như một phần của lớp. Chúng ta truy cập đến thành viên tĩnh của một lớp thông qua tên lớp đã được khai báo. Còn các thành viên instance thì phải thông qua thể hiện của lớp.
Giả sử chúng ta có một lớp là  class A và có 2 thể hiện là t1, t2 và một phương thức tĩnh là a(). Để truy cập phương thức này ta viết A.a(). Chứ không thể viết t1. a() hoặc t2.a() vì trong C# không cho phép truy cập đến phương thức cũng như các biến thành viên tĩnh thông qua một thể hiện.
Một số ngôn ngữ thì có sự phân chia giữa phương thức của lớp và các phương thức khác (toàn cục) tồn tại bên ngoài không phụ thuộc bất cứ một lớp nào. Tuy nhiên, điều này không cho phép trong C#, ngôn ngữ C# không cho phép tạo các phương thức bên ngoài của lớp, nhưng ta có thể tạo được các phương thức giống như  vậy bằng cách tạo các phương thức tĩnh bên trong một lớp. Phương thức tĩnh ít nhiều giống phương thức toàn cục bởi ta có thể truy cập đến nó không phải thông qua bất cứ một thể hiện nào của lớp chứa nó. Tuy nhiên phương thức tĩnh sẽ hoạt động tốt hơn phương thức toàn cục vì nó luôn được đặt trong phạm vi một lớp do đó chúng ta sẽ tránh được tình trạng lộn xộn do bị trùng tên giữa các phương thức đặt trong namespace.

3.    Các thành phần của lớp

a.         Fields


         Field là một phần tử dùng để thể hiện các biến trong  lớp – các  biến hoặc các thể hiện của một lớp dụ:

class Color
    {
        internal ushort redPart;
        internal ushort bluePart;
        internal ushort greenPart;
        public Color(ushort red, ushort blue, ushort green)
        {
            redPart = red;
            bluePart = blue;
            greenPart = green;
        }
    }    
Lớp color chứa các instance fields như là redPart, bluePart, và greenPart.
     Fields có thể là static như ví dụ dưới đây:

      Class Color
      {
            public static Color Red = new Color(0xFF, 0, 0);
            public static Color Blue = new Color(0, 0xFF, 0);
            public static Color Green = new Color(0, 0, 0xFF);
            public static Color White = new Color(0xFF, 0xFF, 0xFF);
            ...
  }   
Các phần tử Red, Blue, Green, White đều là các phần tử static.

b.         Properties

Property (thuộc tính, đặc tính) là một phần tử dùng để truy cập đến đặc điểm của một đối tượng hoặc một class (lớp). Ví dụ  như là độ dài một chuỗi, kích cỡ của font chữ, độ rộng của một cửa sổ, tên của một customer …Property là phần mở rộng của fields. Cả 2 đều được gọi tên với các kiểu kết hợp, và cách truy cập đến fields và properties là như nhau. Tuy nhiên khác với fields, properties không chỉ rõ nới lưu trữ nó. Thay vào đó, properties có cách truy nhập là dùng câu lệnh để thi hành việc đọc và ghi giá trị.

Property được định nghĩa bằng 2 phần. Phần thứ nhất giống như cách định nghĩa Fields. Phần thứ 2 chứa phần tử truy cập get và set.  Các bạn hãy xem ví dụ dưới đây :

public class Button
      {
        private string caption;
        public string Caption
        {
            get
            {
                return caption;
            }
            set
            {
                caption = value;
                Repaint();
            }
        }
    }
c.         Methods 
         Bạn sẽ được học về methods ở bài sau

0 comments: