Các từ khoá đặc tả truy cập

Một phần của tài liệu Lập trình hướng đối tượng với C docx (Trang 39 - 42)

Thuộc tính truy cập quyết định khả năng các phương thức của lớp bao gồm việc các phương thức của lớp khác có thể nhìn thấy và sử dụng các biến thành viên hay những phương thức bên trong lớp. Bảng 2.1.5 tóm tắt các thuộc tính truy cập của một lớp trong C#.

Thuộc tính Giới hạn truy cập

public Không hạn chế. Những thành viên được đánh dấu public có thê được dùng bởi bất kì trong các phương thức của các lớp khác.

private Thành viên trong một lớp A được đánh dấu là private thì chỉ được truy cập bới các phương thức của lớp A.

protected Thành viên trong lớp A được đánh dấu là protected thì chỉ được các phương thức bên trong lớp A và những phương thức của lớp dẫn xuất từ lớp A truy cập.

internal Thành viên trong lớp A được đánh dấu là internal thì được truy cập bởi bất cứ lớp nào trong cùng khối hợp ngữ với A

protected internal Thành viên trong lớp A được đánh dấu là protected internal được truy cập bởi các phương thức của lớp A, các phương thức của lớp dẫn xuất của lớp A, và bất cứ lớp nào trong cùng khối hợp ngữ với lớp A.

Mong muốn chung là thiết kế các biến thành viên của lớp ở thuộc tính private. Khi đó chỉ có phương thức thành viên của lớp truy cập được giá trị của biến. C# xem thuộc tính private là mặc định nên trong ví dụ 2.1b ta không khai báo thuộc tính truy cập cho 6 biến nên mặc định chúng là private:

// Các biến thành viên private

int Nam; int Thang; int Ngay; int Gio; int Phut; int Giay;

Trong lớp ThoiGian có hai phương thức thành viên Hien và KhoiTao được khai báo là public nên bất kỳ lớp nào cũng có thể truy cập được.

Chú ý:

Thói quen lập trình tốt là khai báo tường minh các thuộc tính truy cập của biến thành viên hay các phương thức trong một lớp. Mặc dù chúng ta biết chắc chắn rằng các thành viên của lớp là được khai báo private mặc định. Việc khai báo tường minh này sẽ làm cho chương trình dễ hiểu, rõ ràng và tự nhiên hơn.

Các thành phần trong khái báo lớp được sắp xếp hết sức tùy ý. Nhưng chúng ta lên gop các thành phần dữ liệu vào một chỗ, các phương thức vào một chỗ

Ví dụ 2.1.5: Nhập vào độ dài ba cạnh của một tam giác rồi tính diện tích của tam giác và cho biết đó là tam giác gì

using System;

publicclass tamgiac {

private double a, b, c;/*độ dài ba cạnh*/ public void nhap()

{

/*nhập vào ba cạnh của tam giác, có kiểm tra điều kiện*/ do

{

Console.Write("Nhap vao canh a=");

a = Convert.ToDouble(Console.ReadLine()); Console.Write("Nhap vao canh b=");

b = Convert.ToDouble(Console.ReadLine()); Console.Write("Nhap vao canh c=");

c = Convert.ToDouble(Console.ReadLine()); } while (a + b <= c || b + c <= a || c + a <= b); }

public void hien() {

Console.WriteLine("Do dai ba canh:a={0},b={1},c={2}", a, b, c); /* gọi hàm thành phần bên trong một hàm thành phần khác cùng lớp */ Console.WriteLine("Dien tich tam giac : {0}", dientich());

switch (loaitg()) {

case 1: Console.WriteLine("Tam giac deu"); break; case 2: Console.WriteLine("Tam giac vuong can"); break; case 3: Console.WriteLine("Tam giac can"); break; case 4: Console.WriteLine("Tam giac vuong"); break; default: Console.WriteLine("Tam giac thuong"); break; }

}

private double dientich() {

}

private int loaitg() { if (a == b || b == c || c == a) if (a == b && b == c) return 1; else if (a * a == b * b + c * c || b * b ==a * a + c * c || c * c == a * a + b * b) return 2; else return 3; else if (a * a == b * b + c * c || b * b ==a * a + c * c || c * c == a * a + b * b) return 4; else return 5; } }

publicclass Tester {

static void Main() {

tamgiac t=new tamgiac(); t.nhap();

t.hien(); } }

Một phần của tài liệu Lập trình hướng đối tượng với C docx (Trang 39 - 42)

Tải bản đầy đủ (PDF)

(142 trang)