Các đặc điểm của lập trình hướng đối tượng
Khái niệm lớp và cách khai báo lớp(class)
Khái niệm đối tượng và cách khởi tạo đối tượng(object)
Constructor(hàm tạo)
Constructor mặc định
Static constructor
Con trỏ this
22 trang |
Chia sẻ: candy98 | Lượt xem: 652 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Bài giảng Lập trình C# - Bài 5: Lớp và phương thức, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Bài 5Lớp và phương thứcÔn tập lại bài cũMảngCâu lệnh foreachLớp RandomKí tựChuỗi kí tựSubject name / Session# / 3 of TotalpageNội dung trình bàyCác đặc điểm của lập trình hướng đối tượngKhái niệm lớp và cách khai báo lớp(class)Khái niệm đối tượng và cách khởi tạo đối tượng(object)Constructor(hàm tạo)Constructor mặc địnhStatic constructorCon trỏ thisLớp và phương thứcNội dung trình bàyDeconstructor(hàm hủy)Garbage CollectorPhương thức(method)Static member và not static memberMethod Overloading(chồng phương thức)Chồng toán tử (Operator Overloading)Access modifier(phạm vi truy cập)Từ khóa ref và outLớp và phương thứcCác đặc điểm của lập trình hướng đối tượngTrừu tượng hóa dữ liệu(Data Abstraction)Bao gói dữ liệu(Encapsulation)Kế thừa(Inheritance)Đa hình(Polymorphism)Lớp và phương thứcLớp và phương thứcKhái niệm lớpLớp là khái niệm để chỉ một lớp các đối tượng có cùng đặc điểm, thuộc tínhMỗi lớp các đối tượng gồm có các thuộc tính(characteristics còn gọi là state ) và các hành vi(behavior, còn gọi là action).Cách khai báo một lớp trong C#Thông thường một lớp gồm có:Các fieldCác constructor(hàm tạo)Các phương thứcCú pháp để khai báo một lớp:class {//class member}Ví dụ DEMO khai báo lớpLớp và phương thứcKhái niệm đối tượng (object)Là một thực thể tồn tại trong thực tếLà một thể hiện của lớp (Instance of class)Cú pháp để tạo một đối tượng của một lớp(Instantiating Objects) = new ();Cấp phát vùng nhớKhởi tạo đối tượngSo sánh lớp(class) và đối tượng(object)Lớp định nghĩa ra mô hình, nó đưa ra các thuộc tính và các hành động mà một đối tượng của lớp đó phải cóCòn đối tượng là một thực thể thật trong thực tếVí dụ DEMO về khởi tạo đối tượng của lớpLớp và phương thứcConstructorLà phương thức đặt biệt dùng để khởi tạo đối tượng của một lớpĐặc điểm:Trùng với tên của lớpKhông trả về kiểu dữ liệuCó đối số hoặc không có đối sốNếu không viết constructor, trình biên dịch cung cấp một constructor mặc định trình sẽ dùng constructor mặc địnhVí dụ DEMO về ConstructorLớp và phương thứcDefault constructor(Constructor mặc định)Nếu không viết constructor cho lớp thì trình biên dịch sẽ cung cấp một constructor mặc định, constructor mặc định có các đặc điểm:Phạm vi truy xuất là publicTrùng tên của lớpKhông có đối sốKhông có kiểu dữ liệu trả vềKhởi tạo các thuộc tính(field) của lớp bằng 0,false hoặc nullVí dụ DEMO default constructorLớp và phương thứcStatic constructorĐược tự động thực thi để khởi tạo các class variable(các biến tĩnh)Static constructor được thực thi trước khi bất kỳ một đối tượng nào của lớp được khởi tạoStatic constructor được thực thi trước khi một static variable hay static method nào của lớp được gọiStatic constructor chỉ được gọi một lần duy nhấtStatic constructor không chứa bất kỳ tham số nàoKhông sử dụng con trỏ this trong static constructorVí dụ DEMO static constructorLớp và phương thứcDestructorĐây là phương thức đặt biệt được tự động gọi để giải phóng vùng nhớ của đối tượng khi đối tượng không được sử dụngMỗi một lớp chỉ có duy nhất một destructorDestructor không thể kế thừa và không thể gọi một cách tường minhTrùng với tên của lớp và thêm ký tự ~ đằng trước tên destructorVí dụ về destructorLớp và phương thứcGarbage collectorToán tử new dùng để cấp phát vùng nhớ cho một đối tượng. Tuy nhiên do bộ nhớ là giới hạn nên cần phải giải phóng vùng nhớ của các đối tượng khi các đối tượng không còn được sử dụng nữa để giành bộ nhớ cấp phát cho các đối tượng khácQuá trình giải phóng vùng nhớ được thực hiện bởi cơ chế tên là Garbage collector trong .NET FrameworkLớp và phương thứcCon trỏ thisDùng để tham chiếu đến đối tượng hiện tại của lớpNó dùng trong trường hợp khi đối số của phương thức hoặc đối số của constructor trùng với tên của các thuộc tính trong lớp.Ví dụ DEMO con trỏ thisLớp và phương thứcPhương thức(method)Là các hàm bên trong một lớp, mỗi phương thức cài đặt một hành động của đối tượngCác phương thức được gọi thông qua các đối tượng hoặc thông qua tên lớp nếu là phương thức tĩnhCú pháp để khai báo một phương thức ([danh sách đối số]){}Gọi phương thức: tênđốitượng.tênphươngthức(các đối số)Tênlớp.tênphươngthức.Lớp và phương thứcChồng phương thức(Method Overloading)Trong một lớp, cho phép các phương thức có cùng tên nhưng khác nhau về số đối số hoặc kiểu của đối số, các phương thức như vậy gọi là method overloadingVí dụ DEMO method overloadingLớp và phương thứcStatic member và non static member(các thuộc,phương thức tĩnh và các thuộc tính, phương thức không tĩnh)Các thành phần tĩnhCác thuộc tính và phương thức tĩnh là các thành phần của lớpCác từ khóa static đằng trước thộc tính hoặc phương thứcChỉ có thể truy xuất đến các thành phần tĩnh này qua tên lớpCác thành phần không tĩnhLà thành phần của đối tượngKhông có từ khóa static đằng trướcChỉ được truy xuất thông qua đối tượng của lớpVí dụ DEMO Lớp và phương thứcOperator OverloadingCác phép toán(toán tử) mà ngôn ngữ lập trình C# cung cấp chỉ thực hiện trên các kiểu dữ liệu cơ bảnVí dụ biểu thức a+b thì a,b phải là 2 kiểu dữ liệu cơ bản(int, float)Nếu a,b, là 2 đối tượng của một lớp nào đó thì phép cộng sẽ không thực hiện được.Vậy để cộng được thì làm thế nào? Câu trả lời phải định nghĩa lại phép cộng(chồng toán tử cộng) để nó có thể cộng được 2 đối tượng.Lớp và phương thứcVí dụ: để cộng 2 đối tượng time1 và time2Cách 1: sử dụng phương thức: time = objTime.Add(time1, time2)Cách 2: dùng chồng toán tử: time = time1 + time2;=>Cách 2 dễ hiểu hơn.Các phép toán có thể đặt chồng là:Cú pháp:operatorVí dụ DEMO chồng toán tử(operator overloaded)Lớp và phương thứcPhạm vi truy xuấtCác ngôn ngữ lập trình hướng đối tượng có khả năng giới hạn việc truy cập đến các thành phần trong lớp(thuộc tính, phương thưc..).Access modifier là thuật ngữ chỉ định phạm vi truy xuất(được truy xuất ở những chỗ nào) của các thành phần bên trong lớpGồm có:public: cho phép một thành phần bên trong lớp được truy xuất bên trong lớp cũng như bên ngoài lớpprivate: chỉ cho phép các thành phần chỉ truy xuất được bên trong một lớpprotected: cho phép các thành phần được truy xuất bên trong lớp cũng như các lớp kế thừa từ lớp đó.Ví dụ DEMOLớp và phương thứcTừ khóa ref và outCả 2 từ khóa này dùng để truyền tham số cho phương thức theo kiểu tham biến2 từ khóa này khác nhau ở chỗ: từ khóa out không yêu cầu phải khởi tạo biến khi truyền cho phương thứcVí dụ DEMO từ khóa ref và outLớp và phương thứcTổng kếtLớp và đối tượngConstructor và DestructorGarbage CollectorPhương thức(Method)Chồng phương thức(Method Overloading)Chông toán tử(Operator Overloading)Access modifier (phạm vi truy xuất)Từ khóa ref và outLớp và phương thức