• Tidak ada hasil yang ditemukan

Chương 04. Lớp và đối tượng của lớp

N/A
N/A
Nguyễn Gia Hào

Academic year: 2023

Membagikan "Chương 04. Lớp và đối tượng của lớp"

Copied!
30
0
0

Teks penuh

Khi chúng tôi xác định một lớp, chúng tôi chỉ định quyền truy cập cho các thành viên của lớp bằng cách sử dụng các từ khóa công khai, riêng tư và được bảo vệ. Phần của lớp đứng sau từ khóa riêng tư: chỉ có thể được truy cập từ bên trong lớp, vì vậy chỉ các thành viên của lớp mới có quyền truy cập. Tuy nhiên, các hàm thành viên phải public để các phần khác của chương trình có thể gọi chúng và yêu cầu đối tượng làm điều gì đó.

Các hàm thành viên của lớp được khai báo và định nghĩa giống như các hàm thông thường. Chúng ta có thể định nghĩa các hàm thành viên trực tiếp trong phần mô tả lớp và không cần khai báo các hàm này nữa. Thông thường chỉ có các hàm thành viên nhỏ (chỉ vài dòng mã) được định nghĩa trực tiếp trong phần mô tả lớp.

Bởi vì nếu chúng ta định nghĩa hàm thành viên trực tiếp trong phần mô tả lớp, thì mặc định nó sẽ là hàm nội tuyến. Hàm nội tuyến khác với hàm thông thường ở chỗ khi biên dịch chương trình, trình biên dịch không để mã hàm trong một vùng bộ nhớ riêng mà chèn trực tiếp vào vị trí gọi hàm. Nếu các hàm thành viên được định nghĩa bên ngoài phần mô tả lớp thì phải có phần khai báo các hàm thành viên này trong phần mô tả lớp.

Đối với các hàm thành viên được định nghĩa bên ngoài lớp thì tên hàm phải có tên lớp trước nó, tên hàm và tên lớp cách nhau bằng hai dấu hai chấm liên tiếp.

Tạo và tương tác với các đối tượng

  • Tạo các đối tượng của một lớp 2. Gửi thông báo tới các đối tượng
  • Con trỏ trỏ tới đối tượng 5. Lệnh gán đối tượng
  • Truy nhập dữ liệu của các đối tượng cùng lớp
  • Tạo các đối tượng của một lớp
  • Gửi thông điệp tới các đối tượng
  • Mảng đối tượng
  • Mảng đối tượng (tiếp)
  • Con trỏ trỏ tới đối tượng
  • Con trỏ trỏ tới đối tượng (tiếp)
  • Lệnh gán đối tượng
  • Lệnh gán đối tượng (tiếp)

Tạo một lớp không gì khác hơn là tạo một bản thiết kế để tạo các đối tượng sau này. Cú pháp tạo đối tượng tương tự như cú pháp tạo biến (khai báo biến). Trong C++, các đối tượng được coi là biến và các lớp được coi là kiểu dữ liệu.

Khi một đối tượng được tạo, chúng ta có thể tương tác với nó bằng các hàm thành viên. Gọi một hàm thành viên của một đối tượng được gọi là gửi tin nhắn đến đối tượng đó. Dưới đây là một chương trình hoàn chỉnh để tạo các lớp và đối tượng lớp.

Vì C++ coi các đối tượng là các biến nên chúng ta cũng có thể khai báo một mảng các đối tượng. Mảng đối tượng rất hữu ích khi chúng ta muốn tạo một số lượng lớn các đối tượng thuộc cùng một lớp. Để gửi thông báo đến một đối tượng cụ thể trong mảng đối tượng, chúng ta cần sử dụng ký hiệu mảng để xác định đối tượng mà chúng ta muốn gửi thông báo tới.

Các đối tượng được lưu trữ trong bộ nhớ nên chúng cũng có địa chỉ. Do đó, con trỏ có thể trỏ đến các đối tượng giống như chúng trỏ đến các biến có kiểu cơ bản. Để đặt địa chỉ của một đối tượng vào một biến con trỏ, chúng ta sử dụng toán tử địa chỉ &.

Vậy có thể gán giá trị của một đối tượng cho một đối tượng khác không? Nhưng các đối tượng bao gồm cả dữ liệu và hàm thành viên. Trình biên dịch làm gì khi một đối tượng được gán cho một đối tượng khác? Bởi vì tất cả các đối tượng của cùng một lớp đều có cùng các hàm thành viên.

Chỉ có một bản sao của các hàm thành viên trong bộ nhớ, các đối tượng sử dụng các hàm giống nhau. Các hàm thành viên có thể truy cập trực tiếp vào dữ liệu riêng tư của các đối tượng cùng lớp.

Các thành viên tĩnh của lớp (static member)

  • Dữ liệu thành viên tĩnh 2. Hàm thành viên tĩnh
  • Dữ liệu thành viên tĩnh
  • Dữ liệu thành viên tĩnh (tiếp)
  • Hàm thành viên tĩnh
  • Hàm thành viên tĩnh (tiếp)

Chúng tồn tại khi đối tượng được tạo ra và biến mất khi đối tượng bị phá hủy. Điều gì sẽ xảy ra nếu chúng ta cần một biến có thể áp dụng cho toàn bộ lớp đối tượng thay vì một đối tượng cụ thể? Có thể chúng ta sẽ nghĩ đến các biến ngoài, nhưng các biến ngoài không bị ràng buộc vào một lớp cụ thể nào và có nhiều vấn đề xấu.

Chúng ta có thể truy cập dữ liệu thành viên tĩnh từ bất kỳ chức năng thành viên thông thường nào. Tuy nhiên, mọi người thường sử dụng một loại hàm toàn lớp đặc biệt để truy cập dữ liệu thành viên tĩnh. Việc khai báo và định nghĩa các hàm thành viên tĩnh cũng giống như các hàm thành viên thông thường, điểm khác biệt duy nhất là từ khóa static được sử dụng.

Lệnh gọi hàm thành viên tĩnh không giống lệnh gọi hàm thành viên thông thường. Các lệnh gọi đến các hàm thành viên tĩnh không được gắn vào đối tượng mà được gắn vào tên lớp bằng toán tử phạm vi: classname::static_function_name. Các hàm thành viên tĩnh chỉ có thể truy cập dữ liệu tĩnh vì chúng không biết gì về các đối tượng của lớp.

Chúng ta thậm chí có thể gọi hàm thành viên tĩnh trước khi bất kỳ đối tượng nào của lớp được tạo. Tính toán và hiển thị thời gian sau một phút nhập từ bàn phím. Hiển thị màn hình thông tin về sĩ quan và tổng số sĩ quan được nhập vào.

Viết chương trình nhập danh sách sinh viên cho đến khi không muốn nhập.

Viết chương trình nhập vào danh sách sinh viên cho tới khi không muốn nhập thì

Referensi

Dokumen terkait

Tuy nhiên, đối với một số hiện tượng quang học được trình bày trong chương trình thì HS khó hình dung về mối quan hệ giữa các đại lượng vật lí, như: hiện tượng truyền thẳng của ánh

Thông thường, tên gọi thường dựa vào đặc điểm thực tế của chính đối tượng, ví dụ như hình thù, dáng dấp, kích thước của đối tượng như thế nào hoặc màu sắc, tính chất, cấu trúc của đối