Khoanglang89
Bạn hãy đăng nhập hoặc đăng ký
Khoanglang89

NHẬN THIẾT KẾ WEBSITE/ SOFTWARE - LÀM ĐỒ ÁN TỐT NGHIỆP, ĐỒ ÁN CHUYÊN MÔN NGÀNH CÔNG NGHỆ THÔNG TIN


You are not connected. Please login or register

Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down  Thông điệp [Trang 1 trong tổng số 1 trang]

1 Lớp và đối tượng – Phần 2 on Fri Nov 02, 2012 12:54 pm

LostSoul89

avatar

Admin
Admin
Loading
Lớp và đối tượng – Phần 2






Khi
khai báo các thành phần dữ liệu và phương thức có thể dùng các từ khoá
private và public để quy định phạm vi sử dụng của các thành phần này.
Trong đó từ khóa private qui định các thành phần (được khai báo với từ
khóa này) chỉ được sử dụng bên trong lớp (trong thân các phương thức của
lớp).














2.2/- Khai báo các thành phần của lớp (thuộc tính và phương thức)

a/- Các từ khóa private và public

Các hàm bên ngoài lớp (không phải là phương thức của lớp) không được
phép sử dụng các thành phần này. Đặc trưng này thể hiện tính che giấu
thông tin trong nội bộ của lớp, để đến được các thông tin này cần phải
thông qua chính các thành phần hàm của lớp đó. Do vậy thông tin có tính
toàn vẹn cao và việc xử lý thông tin (dữ liệu) này mang tính thống nhất
hơn và hầu như dữ liệu trong các lớp đều được khai báo với từ khóa này.
Ngược lại với private, các thành phần được khai báo với từ khóa public
được phép sử dụng ở cả bên trong và bên ngoài lớp, điều này cho phép
trong chương trình có thể sử dụng các hàm này để truy nhập đến dữ liệu
của lớp. Hiển nhiên nếu các thành phần dữ liệu đã khai báo là privte thì
các thành phần hàm phải có ít nhất một vài hàm được khai báo dạng
public để chương trình có thể truy cập được, nếu không toàn bộ lớp sẽ bị
đóng kín và điều này không giúp gì cho chương trình. Do vậy cách khai
báo lớp tương đối phổ biến là các thành phần dữ liệu được ở dạng private
và thành phần hàm dưới dạng public. Nếu không quy định cụ thể (không
dùng các từ khoá private và public) thì C++ hiểu đó là private.

b/- Các thành phần dữ liệu (thuộc tính)

Được khai báo như khai báo các thành phần trong kiểu cấu trúc hay
hợp. Bình thường các thành phần này được khai báo là private để bảo đảm
tính giấu kín, bảo vệ an toàn dữ liệu của lớp không cho phép các hàm bên
ngoài xâm nhập vào các dữ liệu này.

c/- Các phương thức (hàm thành viên)

Thường khai báo là public để chúng có thể được gọi tới (sử dụng) từ các hàm khác trong chương trình.

Các phương thức có thể được khai báo và định nghĩa bên trong lớp hoặc
chỉ khai báo bên trong còn định nghĩa cụ thể của phương thức có thể
được viết bên ngoài. Thông thường, các phương thức ngắn được viết (định
nghĩa) bên trong lớp, còn các phương thức dài thì viết bên ngoài lớp.

Một phương thức bất kỳ của một lớp, có thể sử dụng bất kỳ thành phần
(thuộc tính và phương thức) nào của lớp đó và bất kỳ hàm nào khác trong
chương trình (vì phạm vi sử dụng của hàm là toàn chương trình).

Giá trị trả về của phương thức có thể có kiểu bất kỳ (chuẩn và ngoài chuẩn)

Ví dụ sau sẽ minh hoạ các điều nói trên. Chúng ta sẽ định nghĩa lớp
để mô tả và xử lý các điểm trên màn hình đồ hoạ. Lớp được đặt tên là
DIEM.

♦ Các thuộc tính của lớp gồm:




♦ Các phương thức:

Nhập dữ liệu một điểm

Hiển thị một điểm

Ẩn một điểm

Lớp điểm được xây dựng như sau:




Qua ví dụ trên có thể rút ra một số chú ý sau:

- Trong cả 3 phương thức (dù viết trong hay viết ngoài định nghĩa
lớp) đều được phép truy nhập đến các thuộc tính x, y và m của lớp.

- Các phương thức viết bên trong định nghĩa lớp (như phương thức an() ) được viết như một hàm thông thường.

- Khi xây dựng các phương thức bên ngoài lớp, cần dùng thêm tên lớp
và toán tử phạm vi :: đặt ngay trước tên phương phức để quy định rõ đây
là phương thức của lớp nào.

2.3/- Biến, mảng và con trỏ đối tượng

Như đã nói ở trên, một lớp (sau khi định nghĩa) có thể xem như một
kiểu đối tượng và có thể dùng để khai báo các biến, mảng đối tượng. Cách
khai báo biến, mảng đối tượng cũng giống như khai báo biến, mảng các
kiểu khác (như int, float, cấu trúc, hợp,...), theo mẫu sau:

Tên_lớp danh sách đối ;

Tên_lớp danh sách mảng ;

Ví dụ sử dụng DIEM ở trên, ta có thể khai báo các biến, mảng DIEM như sau:




Mỗi đối tượng sau khi khai báo sẽ được cấp phát một vùng nhớ riêng để
chứa các thuộc tính của nó. Chú ý rằng sẽ không có vùng nhớ riêng để
chứa các phương thức cho mỗi đối tượng, các phương thức sẽ được sử dụng
chung cho tất cả các đối tượng cùng lớp. Như vậy về bộ nhớ được cấp phát
thì đối tượng giống cấu trúc.

Trong trường hợp này:




a/- Thuộc tính của đối tượng

Trong ví dụ trên, mỗi đối tượng d1, d2, d3 và mỗi phần tử d đều có
3 thuộc tính là x, y, m. Chú ý là mỗi thuộc tính đều thuộc về một đối
tượng, vì vậy không thể viết tên thuộc tính một cách riêng rẽ mà bao giờ
cũng phải có tên đối tượng đi kèm, giống như cách viết trong cấu trúc
của C. Nói cách khác, cách viết thuộc tính của đối tượng như sau:

tên_đối_tượng.Tên_thuộc_tính

Với các đối tượng d1, d2, d3 và mảng d, có thể viết như sau:




[i]b/- Sử dụng các phương thức


Cũng giống như hàm, một phương thức được sử dụng thông qua lời gọi.
Tuy nhiên trong lời gọi phương thức bao giờ cũng phải có tên đối tượng
để chỉ rõ phương thức thực hiện trên các thuộc tính của đối tượng nào.

Ví dụ lời gọi sau sẽ thực hiện nhập số liệu vào các thành phần d1.x,
d1.y và d1.m: d1.nhapsl(); Câu lệnh sau sẽ thực hiện nhập số liệu vào
các thành phần d[3].x, d[3].y và d[3].m: d[3].nhapsl() ;

Chúng ta sẽ minh họa các điều nói trên bằng một chương trình đơn giản
sử dụng lớp DIEM để nhập 3 điểm, hiện rồi ẩn các điểm vừa nhập. Trong
chương trình đưa vào hàm kd_do_hoa() dùng để khởi động hệ đồ hoạ.







Hết phần 2



Nguồn: Internet

Xem lý lịch thành viên http://khoanglang89.forumvi.com

Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang  Thông điệp [Trang 1 trong tổng số 1 trang]

Bài viết mới cùng chuyên mục

    Bài viết liên quan vớiLớp và đối tượng – Phần 2

      Permissions in this forum:
      Bạn không có quyền trả lời bài viết