intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Class & Object Thiết kế và cài đặt lớp & đối tượng1 1OOP in C# - GV: Phạm

Chia sẻ: Ngon Wa | Ngày: | Loại File: PDF | Số trang:10

71
lượt xem
4
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

ĐỂ ĐỊNH GNHĨA MỘT KIỂU DỮ LIỆU MỚI HAY MỘT LỚP ĐẦU TIÊN PHẢI KHAI BÁO RỒI SAU ĐÓ MỚI ĐỊNH NGHĨA CÁC THÀNH PHẦN DỮ LIỆU ( THUỘC TÍNH ) VÀ CÁC HÀM ( PHƯƠNG THỨC) CỦA KIỂU DỮ LIỆU ĐÓ.

Chủ đề:
Lưu

Nội dung Text: Class & Object Thiết kế và cài đặt lớp & đối tượng1 1OOP in C# - GV: Phạm

  1. Class & Object Thiết kế và cài đặt lớp & đối tượng OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com 1 1 1. Class Lớp Lớp (Class): Để định nghĩa một kiểu dữ liệu mới hay một lớp đầu tiên phải khai báo rồi sau đó mới định nghĩa các thành phần dữ liệu (thuộc tính) và các hàm (phương thức) của kiểu dữ liệu đó. Cú Cú pháp: [Mức độ truy cập] Class [:Lớp cơ sở] { } OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com 2 1
  2. Class & Object (tt) Mức Mức độ truy cập: gồm các từ khóa sau public, private, internal, protected, internal protected Tên Tên lớp (name class): định danh của lớp Lớp Lớp cơ sở (basic class): lớp cha Thân Thân lớp: được bao bọc bới dấu { } là nơi chứa khai báo: Các Các thành phần dữ liệu (data members) Các Các phương thức (methods) OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com 3 Mức độ truy cập (Access Modifier : A.M) Ý nghĩa A.M Thành viên được nhìn thấy bởi bất kỳ public phương thức nào của lớp khác. Chỉ có các phương thức của lớp A (cùng lớp) private mới được phép truy cập đến thành phần này Chỉ có các phương thức của lớp A hoặc của lớp dẫn xuất (con) từ A mới được phép truy protected cập đến thành phần này Các thành viên internal trong lớp A được truy xuất trong các phương thức của bất kỳ lớp internal trong khối kết hợp (assembly) của A protected Tương đương với protected or internal internal OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com 4 2
  3. Ghi chú về Access Modifier Mặc Mặc định Mức độ truy cập là private nếu chúng ta bỏ trống từ khóa về Khả năng truy cập Mức Mức độ truy cập internal cho phép truy cập: Các Các phương thức của các lớp trong cùng một khối kết hợp (assembly) với lớp đang định nghĩa. Các Các lớp thuộc cùng một project có thể xem là cùng một khối kết hợp. Các Các Project khác với Project hiện tại không thể truy cập các đối tượng có múc truy cập là internal OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com 5 ví dụ minh họa Tên lớp CPhanSo Tu Thuộc tính CPhanSo (thành phần dữ liệu) Mau 3 Nhap() 5 Xuat() Cong() Phương thức Tru() Nhan() Chia() Sơ đồ thể hiện ToiGian() KiemTra() Sơ đồ lớp OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com 6 3
  4. VD minh họa namespace Toanhoc // xem trang 90 { Public class CPhanSo { int Tu, Mau; //private members public void Nhap() { // Code nhập tử và mẫu số } public void Xuat() { // Code xuất tử và mẫu số } } } Một namespace có bao nhiêu class và class được viết ở đâu trong namespace? OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com 7 2. Object Object Object thể hiện của 1 class ra thành 1 thực thể Có Có thể tạo nhiều object từ 1 class, từng object trong cùng class có những đặc tính khác nhau Object Object là 1 kiểu tham chiếu nên dữ liệu được tạo ra ở vùng nhớ Heap và phải dùng toán tử new để cấp phát object syntax syntax: ClassName ObjectName ; ObjectName = new ClassName([parameter list]) ; hoặc ClassName ObjectName = new ClassName([param list]) ; OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com 8 4
  5. VD trang 7-8 namespace LopDoiTuongHCN { Public class HCN { protected float Dai, Rong; public float ChuVi() { return (Dai+Rong)*2 ; } public float DienTich() { return Dai*Rong ; } } } OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com 9 3. Phương thức tạo lập (constructor) // thiết lập Constructor Constructor có cùng tên với tên của class Constructor Constructor thường có thuộc tính public. Constructor Constructor không có giá trị trả về và không khai báo void Có Có thể có nhiều Constructor trong cùng lớp (overloaded function) Khi Khi một lớp có nhiều Constructor, việc tạo các đối tượng phải kèm theo các tham số phù hợp với một trong các Constructor đã khai báo. OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com 10 5
  6. 3. Phương thức tạo lập (constructor) (tt) Constructor Constructor được gọi tự động khi một đối tượng của lớp được tạo ra. Trình Trình biên dịch sẽ tự động tạo một constructor mặc định cho lớp đó và khởi tạo các biến bằng các giá trị mặc định. Nếu Nếu lớp chỉ có 1 constructor có tham số thì khi khởi tạo đối tượng (= new) ta phải truyền tham số cho constructor. OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com 11 Vd: Where is constructor and member Variables ? // Biến thành viên - private // Define Constructor // Use Constructor xem thêm VD: trang 10-11 OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com 12 6
  7. 4. Copy constructor Phương Phương thức tạo lập sao chép (Copy constructor) khởi gán giá trị cho đối tượng mới bằng cách sao chép dữ liệu của đối tượng đã tồn tại (cùng kiểu). OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com 13 VD: copy constructor public ThoiGian(ThoiGian tg) { Nam = tg.Year; Thang = tg.Month; Ngay = tg.Date; Gio = tg.Hour; Phut = tg.Minute; Giay = tg.Second; } Khi Khi đó cú pháp (syntax) khai báo t2 là: // Giải sử t1 đã được tạo và có giá trị t.gian hiện hành ThoiGian t2 = new Thoigian(t1) ; OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com 14 7
  8. 5. Quá tải hàm (overloaded function) // nạp chồng Là Là định nghĩa các hàm cùng tên nhưng khác tham số hoặc kiểu trả về. Hàm thích hợp nhất được gọi khi chạy chương trình. Public class Date { public Date() { // Coding here } public Date(DateTime dt) { // Coding here } public Date(Date ExistingDate) { // Coding here } } vd: xem trang 12-15 OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com 15 6. Sử dụng hàm thành viên tĩnh (static) Những Những thuộc tính và phương thức trong một lớp có thể là những thành viên thể hiện (instance members) hay những thành viên tĩnh (static members). instance instance members hay thành viên của đối tượng liên quan đến thể hiện của một kiểu dữ liệu Trong Trong khi static members (có từ khóa static đứng trước) được xem như một phần của lớp. OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com 16 8
  9. 6. Sử dụng hàm thành viên tĩnh (static) (tt) Việc Việc truy cập đến thành viên tĩnh phải thực hiện thông qua tên lớp (không được truy cập thành viên tĩnh thông qua đối tượng) // điều này khác với ngôn ngữ C++. Cú Cú pháp truy cập static members C# : TênLớp.TênThànhViênTĩnh Phương Phương thức tĩnh hoạt động ít nhiều giống như phương thức toàn cục thảo thảo luận: Phương Phương thức tĩnh trùng tên thì sao? Phương Phương thức tĩnh có thuộc đối tượng nào không? VD VD xem trang 16-17 OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com 17 7. Tham số của phương thức Truyền Truyền tham trị bằng tham số kiểu giá trị Truyền Truyền tham chiếu bằng tham số kiểu giá trị với từ khóa ref Truyền Truyền tham chiếu với tham số kiểu giá trị bằng từ khóa out (từ khóa out cho phép ta sử dụng tham chiếu mà không cần phải khởi tạo) Truyền Truyền tham trị với tham số thuộc kiểu tham chiếu; (chỉ có thể thực hiện các thao tác làm thay đổi các dữ liệu thành phần của đối số) Truyền Truyền tham chiếu với tham số thuộc kiểu dữ liệu tham chiếu VD xem trang 18-24 OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com 18 9
  10. Q&A Bài tập: 1. Đọc lại bài giảng 2. Làm bài tập 3. Đọc tiếp bài: Lớp & đối tượng 4. Buổi tới thảo luận & kiểm tra bài cũ OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com 19 19 int uscln(int a,int b) { while(a*b) { if(a>b) a%=b; else b%=a; } return (a+b); } int UCLN(int a,int b) { a=abs(a); b=abs(b); if(a==b) return (a); else if(a>b) return(UCLN(a-b,b)); else return(UCLN(a,b-a)); } int BCNN(int a, int b) { return ((a*b)/UCLN(a,b)); } OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com 20 10
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2