XÂY DỰNG LỚP - ĐỐI TƯỢNG · Định nghĩa lớp· Thuộc tính truy cập· Tham số của phương thức· Tạo đối tượng· Bộ khởi dựng· Khởi tạo biến thành viên· Bộ khởi dựng sao chép· Từ khóa this
· Sử dụng các thành viên static· Gọi phương thức static
mới, phức tạp. Người lập trình tạo ra các kiểu dữ liệu mới bằng cách xây dựng các lớp
đối tượng và đó cũng chính là các vấn đề chúng ta cần thảo luận trong chương này.
Đây là khả năng
để tạo ra những kiểu dữ liệu mới, một đặc tính quan trọng của
ngôn ngữ lập trình hướng đối tượng. Chúng ta có thể xây dựng những kiểu dữ liệu mới
trong ngôn ngữ C# bằng cách khai báo và định nghĩa những lớp. Ngoài ra ta cũng có
thể định nghĩa các kiểu dữ liệu với những giao diện (interface) sẽ được bàn trong
Chương 8 sau. Thể hiện của một lớp được gọi là những đối tượng (object). Những
đối tượng này được tạo trong bộ nhớ khi chương trình được thực hiện.
Sự khác nhau giữa một lớp và một đối tượng cũng giống như sự khác nhau
giữa khái niệm giữa loài mèo và một con mèo Mun đang nằm bên chân của ta.
Chúng ta không thể đụng chạm hay đùa giỡn với khái niệm mèo nhưng có thể
thực
hiện điều đó được với mèo Mun, nó là một thực thể sống động, chứ không trừu tượng
như khái niệm họ loài mèo.
Một họ mèo mô tả những con mèo có các đặc tính: có trọng lượng, có chiều
cao, màu mắt, màu lông,...chúng cũng có hành động như là ăn ngủ, leo trèo,...một con
mèo, ví dụ như mèo Mun chẳng hạn, nó cũng có trọng lượng xác định là 5 kg, chiều
cao 15 cm, màu mắt đen, lông đen...Nó cũng có những kh
ả năng như ăn ngủ leo trèo,..
Lợi ích to lớn của những lớp trong ngôn ngữ lập trình là khả năng đóng gói các
thuộc tính và tính chất của một thực thể trong một khối đơn, tự có nghĩa, tự khả năng duy
trì . Ví dụ khi chúng ta muốn sắp nội dung những thể hiện hay đối tượng của lớp điều
khiển ListBox trên Windows, chỉ cần gọi các đối tượng này thì chúng sẽ
tự sắp xếp, còn
việc chúng làm ra sao thì ta không quan tâm, và cũng chỉ cần biết bấy nhiêu đó thôi.
Đóng gói cùng với đa hình (polymorphism) và kế thừa (inheritance) là các thuộc
tính chính yếu của bất kỳ một ngôn ngữ lập trình hướng đối tượng nào.
Chương 4 này sẽ trình bày các đặc tính của ngôn ngữ lập trình C# để xây dựng các lớp
đối tượng. Thành phần của một lớp, các hành vi và các thuộc tính, được xem như là
nghĩa bên trong thân của lớp, ph
ần thân này sẽ được bao bọc bởi hai dấu ({}).
Ghi chú: Trong ngôn ngữ C# phần kết thúc của lớp không có đấu chấm phẩy
giống như khai báo lớp trong ngôn ngữ C/C++. Tuy nhiên nếu người lập trình thêm
vào thì trình biên dịch C# vẫn chấp nhận mà không đưa ra cảnh báo lỗi.
Trong C#, mọi chuyện đều xảy ra trong một lớp. Như các ví dụ mà chúng ta đã tìm
hiểu trong chương 3, các hàm điều được đưa vào trong một lớp, kể cả hàm đầ
u vào
của chương trình (hàm Main()):
public class Tester
{public static int Main()
{//....
}
}Điều cần nói ở đây là chúng ta chưa tạo bất cứ thể hiện nào của lớp, tức là tạo đối tượng
cho
lớp Tester. Điều gì khác nhau giữa một lớp và thể hiện của lớp? để trả lới cho câu
hỏi này chúng ta bắt đầu xem xét sự khác nhau giữa kiểu dữ liệu int và một biến kiểu
Ví dụ 4.1: Tạo một lớp Thoigian đơn giản như sau.
-----------------------------------------------------------------------------
using System;
public class ThoiGian
{public void ThoiGianHienHanh()
{Console.WriteLine(“Hien thi thoi gian hien hanh”);
}// Các biến thành viên
int Nam;
int Thang;
int Ngay;
int Gio;
int Phut;
int Giay;
C# không có các tập tin tiêu đề, do vậy tất cả các phương thức được định nghĩa hoàn
toàn bên trong của lớp. Phần cuối của định nghĩa lớp là phần khai báo các biến
thành viên: Nam, Thang, Ngay, Gio, Phut, va Giay.
Sau khi định nghĩa xong lớp ThoiGian, thì tiếp theo là phần định nghĩa lớp Tester, lớp
này có chứa một hàm khá thân thiện với chúng ta là hàm Main(). Bên trong hàm
Main có một thể hiện của lớp ThoiGian được tạo ra và gán giá trị cho đối tượng t.
B
ởi vì t là thể hiện của đối tượng ThoiGian, nên hàm Main() có thể sử dụng phương
thức của t:
t.ThoiGianHienHanh();