Việc khai báo nhiều phương thức cùng tên và cùng danh sách tham số được gọi là

Phương Thức Của Lớp

Phương thức, hay còn gọi là Method. Một số tài liệu khác gọi là Hàm. Các phương thứcnày làcác hành động của một lớp. Sau này khi các đối tượng được tạo ra từ lớp, thì các hành động nàycũng chính là các hành động hay các hành vi của đối tượng đó.

Cú pháp của một phương thức như sau.

[kả_năng_truy_cập] kiểu_trả_về tên_phương_thức[ [tham_số] ] { // Các dòng code }
  • khả_năng_truy_cập mình sẽ nói ở bài sau, tuy nhiên, bạn cũng nên biết khả_năng_truy_cập của một phương thức hoàn toàn giống với khả_năng_truy_cập của thuộc tính ở bài học trước, nên chúng ta sẽ chỉ cần nói một lần cho cả hai ở bài học sau mà thôi.
  • tên_phương_thức là tên của phương thức, các quy tắc đặt tên cho phương thức tương tự như quy tắc đặttên cho tên_thuộc_tính ở bài hôm trước, hay tên_biến ở bài học về biến và hằng.
  • tham_số là các đối số truyền vào cho phương thức, sẽ được nói rõ trong bài học hôm nay.

Giới thiệu lập trình hướng đối tượng [OOP] với C++

- C++ là ngôn ngữ "lai" giữa lập trình cấu trúc và lập trình hướng đối tượng.

- Lập trình hướng đối tượng [OOP- Object-Oriented Programming] là một cách tư duy mới, tiếp cận hướng đối tượng để giải quyết vấn đề bằng máy tính. Thuật ngữ OOP ngày càng trở nên thông dụng trong lĩnh vực công nghệ thông tin.

- Lập trình hướng đối tượng [OOP] là một phương pháp thiết kế và phát triển phần mềm dựa trên kiến trúc lớp và đối tượng.

- Trong lập trình hướng đối tượng trong mỗi chương trình chúng ta có một số các đối tượng [object] có thể tương tác với nhau , thuộc các lớp [class] khác nhau, mỗi đối tượng tự quản lý lấy các dữ liệu của riêng chúng.

Mục lục

  • 1 Các loại hàm tạo
    • 1.1 Hàm tạo tham số
    • 1.2 Hàm tạo mặc định
    • 1.3 Hàm tạo sao chép
    • 1.4 Hàm tạo chuyển đổi
    • 1.5 Hàm tạo di chuyển
  • 2 Cú pháp
  • 3 Ghi chú
  • 4 Tham khảo

Các loại hàm tạoSửa đổi

Hàm tạo tham sốSửa đổi

Hàm tạo tham số [parameterized constructor] là hàm tạo có kèm theo ít nhất một đối số. Ví dụ:

class Example { int x, y; public: Example[]; Example[int a, int b]; // Parameterized constructor }; Example:: Example[] { } Example:: Example[int a, int b] { x = a; y = b; }

Khi một đối tượng được khai báo trong hàm tạo tham số, giá trị ban đầu phải được truyền qua như là đối số của hàm tạo. Cách thông thường để khai báo đối tượng có thể không hoạt động. Hàm tạo có thể được gọi tường minh hay ngầm. Phương thức gọi hàm tạo ngầm còn được gọi là phương thức tốc ký [shorthand].

Example e = Example[0, 50]; // Explicit call Example e[0, 50]; // Implicit call

Hàm tạo mặc địnhSửa đổi

Nếu lập trình viên không cung cấp hàm tạo cho một lớp, hầu hết mọi ngôn ngữ đều cung cấp một hàm tạo mặc định [default constructor].

Hành vi của hàm tạo mặc định phụ thuộc vào ngôn ngữ. Nó có thể khởi tạo các thành viên dữ liệu về số 0 hay giá trị tương đương, hoặc có thể không làm gì.

Một số ngôn ngữ [Java, C#, VB.NET] sẽ mặc định tạo mảng của các kiểu lớp để chứa tham chiếu rỗng. Ngôn ngữ không có tham chiếu rỗng có thể không cho phép xây dựng mặc định các mảng của đối tượng không được xây dựng mặc định, hay yêu cầu khởi tạo tường minh tại thời điểm tạo [C++]:

#include class student{ public: int a,b; student[a=0,b=0] //default constructor }; int main[] { }

Hàm tạo sao chépSửa đổi

Xem thêm: Hàm tạo sao chép [C++]

Hàm tạo sao chép [copy constructor] định nghĩa các hành động được thực hiện khi trình biên dịch sap chép đối tượng lớp. Một hàm tạo sao chép có một tham số chính thức là kiểu của lớp [tham số đó có thể tham chiếu tới một đối tượng]. Nó được sử dụng để tạo ra một bản sao của một đối tượng có sẵn của cùng lớp. Mặc dù cả hai lớp giống nhau, nó được tính như là một hàm tạo chuyển đổi.

Mặc dù hàm tạo sao chép thường được viết tắt là copy ctor hay cctor, nó không có liên quan gì đến hàm tạo lớp [class constructor] được dùng trong .NET dù được viết tắt giống nhau.

Hàm tạo chuyển đổiSửa đổi

Hàm tạo chuyển đổi [conversion constructor] cung cấp một phương tiện cho trình biên dịch để ngầm tạo một đối tượng dựa trên một đối tượng khác không cùng kiểu. Các hàm tạo này thường được ngầm gọi để chuyển các đối số hoặc toán hạng sang một kiểu thích hợp, nhưng chúng cũng có thể được gọi tường minh.

Hàm tạo di chuyểnSửa đổi

Trong C++, hàm tạo di chuyển [move constructor] lấy giá trị tham chiếu tới một đối tượng của lớp, và được dùng để hiện thực chuyển quyền sở hữu tài nguyên của đối tượng tham số.

Lớp [class] trong Java

Lớp [class] là mô tả về các đối tượng sẽ được tạo ra. Mỗi lớp có tên lớp, trong lớp có các thuộc tính như là dữ liệu của lớp và các ứng xử của lớp đó [các hàm] gọi là các phương thức.

Ví dụ một lớp mô tả về con người có thể có:

  • Các thuộc tính: tên, chiều cao, cân nặng, giới tính, tuổi ...
  • Các ứng xử: đi, chạy, nhảy, nói, ngủ ...

Từ lớp con người như vậy tạo ra các đối tượng cụ thể khi chạy chương trình như: Đàn ông, Phụ nữ, Bạn A, Bạn B ...

Các lớp [class] được định nghĩa bằng cách dùng từ khóa class sẽ tìm hiểu sau, ví dụ:

public class ClassName { //... Định nghĩa các thuộc tính //... Định nghĩa các phương thức }

Khai báo phương thức trong C#

Phương thức [method, gần giống function hàm trong lập trình hướng thủ tục] trong C# là một nhóm các lệnh nhằm thực hiện một tác vụ nào đó, dùng phương thức để sử dụng lại code, dễ dàng kiểm tra và bảo trì ứng dụng. Phương thức có thể thuộc về một đối tượng lớp nào đó, hoặc không tuy nhiên khai báo phương thức thì phải khai báo trong một lớp nào đó.

Lớp là một cách tổ chức code của lập trình hướng đối tượng - ta sẽ tìm kiểu kỹ về lớp ở các phần sau.

Xem lại chương trình C# đầu tiên ở phần 1, bạn thấy có một hàm Main được khai báo bên trong thân của lớp tên là Program, hàm này mặc dù khai báo trong lớp Program nhưng có từ khóa static ở phía trước, nên nó có thể chạy mà không cần phải tạo đối tượng từ lớp Program

Cú pháp khai báo một phương thức cơ bản như sau:

[] { // Các câu lệnh trong phương thức }
  • Access Modifiers cho biết cấp độ được phép truy cập đến hàm này [nói kỹ thi học về hướng đối tượng], có các mức độ như public, private, protect, internal ... Nếu thiếu thành phần này thì mặc định coi là internal [truy cập được ở các file cùng assembly cùng file code]. Ngoài ra đếu cho vào từ khóa static ở trước Access Modifiers thì phương thức [hàm] đó gọi là PHƯƠNG THỨC TĨNH [Truy cập được mà không cần tạo đối tượng lớp], thường dùng kèm với Access Modify tên public để tạo các hàm chức năng, tiện ích.
  • return type là kiểu trả về của hàm như int, double, string ... nếu hàm không có kiểu trả về thì đề từ khóa void.
  • name_method tên của phương thức do bạn đặt.
  • parameters là các tham số của hàm nếu có, các tham số khai báo theo mẫu kiểu tên như int thamso1, nhiều tham số thì cách nhau bởi dấu ,.
  • Cuối cùng là phần thân hàm { }, trong đó chứa các câu lệnh C# mà khi hàm được gọi nó sẽ thi hành theo logic của code từ đấu đến cuối, hoặc khi gặp lệnh return;. Khi hàm có kiểu trả về thì trong thân hàm bắt buộc phải có câu lệnh return value; [với value là giá trị, đối tượng, biểu thức có kiểu cùng kiểu tra về của hàm]

Ví dụ 1] Khai báo hàm [phương thức] tĩnh có tên BinhPhuong trong lớp Program, phương thức có một tham số kiểu double, trả về kiểu double là bình phương của tham số. Sau đó gọi hàm tính bình phương của 5.

using System; namespace CS06_Method { class Program { /// Tính bình phương của số thực double static double BinhPhuong[double number] { double ketqua = number * number; return ketqua; } static void Main[string[] args] { double bp = BinhPhuong[5]; // Gọi hàm Console.WriteLine["Bình phương của 5 là: " + bp]; } } }

Chạy chương trình sẽ in ra:

Bình phương của 5 là: 25

Nhìn vào phần khai báo phương thức BinhPhuong, thấy không chỉ rõ Access Modify nào, điều này có nghĩa hàm có Access Modify mặc định là internal nghĩa là viết đầy đủ thì sẽ là:

static internal double BinhPhuong[double number]

Do có từ khóa static nó trở thành phương thức tĩnh, nên có thể gọi nó mà không cần tạo đối tượng kiểu lớp Program, để gọi hàm dạng này chỉ cần chỉ ra chính xác tên hàm.

Trắc nghiệm Tin học 11 Bài 17 [có đáp án]: Chương trình con và phân loại

Trang trước Trang sau

Câu 1:Hãy chọn phương án ghép đúng. Kiểu của một hàm được xác định bởi

A. Kiểu của các tham số

B. Kiểu giá trị trả về

C. Tên hàm

D. Địa chỉ mà hàm trả về

Hiển thị đáp án

Trả lời: Kiểu của một hàm được xác định bởi kiểu giá trị mà hàm trả về và chỉ có thể là các kiểu integer, real, char, Boolean, string…

Đáp án: B

Câu 2:Mô tả nào dưới đây về hàm là sai?

A. Phải trả lại kết quả

B. Phải có tham số

C. Trong hàm có thể gọi lại chính hàm đó

D. Có thể có các biến cục bộ

Hiển thị đáp án

Trả lời: Hàm là chương trình con thực hiện một số thao tác nào đó và trả về một giá trị qua tên của nó. Trong hàm có thể gọi lại chính hàm đó, hàm có thể có hoặc không có tham số.

Đáp án: B

Câu 3: Mô tả nào dưới đây về tham số là sai?

A. Một hàm có thể có cả tham số giá trị và tham số biến;

B. Có thể truyền biến số cho tham số giá trị ;

C. Có thể truyền giá trị cho tham số biến;

D. Có thể dùng tham số biến để nhận kết quả;

Hiển thị đáp án

Trả lời: Tham số giá trị là các tham số hình thức được thay bằng các tham số thực sự tương ứng là các giá trị cụ thể→ không thể truyền biến số cho tham số giá trị.

Đáp án: B

Câu 4: Hàm chuẩn nào dưới đây biến giá trị thực 6 thành 7?

A. Odd;

B. Round;

C. Trunc;

D. Abs;

Hiển thị đáp án

Trả lời:

+ Odd: hàm kiểm tra số lẻ

+ Round: hàm làm tròn

+ Trunc: hàm lấy phần nguyên

+ Abs: hàm lấy giá trị tuyệt đối.

Đáp án: B

Câu 5: Trong các chương trình chuẩn sau đây, chương trình chuẩn nào là thủ tục chuẩn?

A. Sin[x];

B. Length[S];

C. Sqrt[x];

D. Delete[S,5,1];

Hiển thị đáp án

Trả lời: Thủ tục là chương trình con thực hiện các thao tác nhất định nhưng không trả về giá trị nào qua tên của nó → Delete không trả về giá trị.

Đáp án: D

Câu 6: Phát biểu nào dưới đây về biến là sai?

A. Biến toàn cục có thể được sử dụng ở trong một thủ tục;

B. Biến cục bộ phải có tên khác với tên của biến toàn cục;

C. Biến cục bộ có thể có kiểu khác với kiểu của biến toàn cục có cùng tên;

D. Một hàm có thể có nhiều tham số biến;

Hiển thị đáp án

Trả lời: Biến cục bộ là biến được khai báo để dùng riêng trong chương trình con. Biến toàn cục là biến được khai báo trong chương trình chính. Biến cục bộ có thể có kiểu khác với kiểu của biến toàn cục có cùng tên. Biến cục bộ không nhất thiết phải có tên khác với tên của biến toàn cục.

Đáp án: B

Câu 7: Mô tả nào dưới đây về chương trình có cấu trúc là phù hợp nhất?

A. Chương trình có sử dụng cấu trúc mảng và bản ghi;

B. Sử dụng các hàm và thủ tục thư viện chuẩn;

C. Được chia thành nhiều chương trình con.

D. Cả A B

Hiển thị đáp án

Trả lời: Chương trình có cấu trúc là chương trình được chia thành nhiều chương trình con. Chương trình không sử dụng cấu trúc mảng và bản ghi

Đáp án: C

Câu 8: Khẳng định nào sau đây là đúng?

A. Cả thủ tục và hàm đều có thể có tham số hình thức.

B. Chỉ có thủ tục mới có thể có tham số hình thức.

C. Chỉ có hàm mới có thể có tham số hình thức.

D. Thủ tục và hàm nào cũng phải có tham số hình thức.

Hiển thị đáp án

Trả lời: Trong chương trình con, thủ tục và hàm đều có thể có tham số hình thức tùy thuộc vào từng chương trình cụ thể.

Đáp án: A

Câu 9: Để khai báo hàm trong Pascal bắt đầu bằng từ khóa

A. Program.

B. Procedure.

C. Function.

D. Var.

Hiển thị đáp án

Trả lời: Để khai báo hàm trong Pascal bắt đầu bằng từ khóa Function [hàm]. Cấu trúc khai báo hàm: Function [[]] : ;

Đáp án: C

Câu 10: Để khai báo thủ tục trong Pascal bắt đầu bằng từ khóa

A. Program.

B. Procedure.

C. Function.

D. Var.

Hiển thị đáp án

Trả lời: Để khai báo thủ tục trong Pascal bắt đầu bằng từ khóa Procedure. Cấu trúc khai báo thủ tục:

Procedure [[]];

[]

Begin

[]

End;

Đáp án: B

Xem thêm các bài Câu hỏi trắc nghiệm Tin học 11 chọn lọc, có đáp án khác:

  • Trắc nghiệm Tin học 11 Bài 15: Thao tác với tệp
  • Trắc nghiệm Tin học 11 Bài 16: Ví dụ làm việc với tệp
  • Trắc nghiệm Tin học 11 Bài 18: Ví dụ về cách viết và sử dụng chương trình con
  • Trắc nghiệm Tin học 11 Bài 19: Thư viện chương trình con chuẩn

Giới thiệu kênh Youtube Tôi

Trang trước Trang sau

Video liên quan

Bài Viết Liên Quan

Chủ Đề