260 likes | 453 Views
BUỔI 3: Chương 2 Lớp Đối Tượng - CLASS -. Môn : Lập trình hướng đối tượng Trình bày : TRẦN ĐỨC TÂM. Software development process. Khi sử dụng phương pháp hướng đối tượng , quy trình phát triển phần mềm sẽ bao gồm các bước : Xây dựng các lớp đối tượng Khởi tạo các đối tượng cần thiết
E N D
BUỔI 3: Chương2LớpĐốiTượng- CLASS - Môn: Lậptrìnhhướngđốitượng Trìnhbày: TRẦN ĐỨC TÂM
Software development process • Khisửdụngphươngpháphướngđốitượng, quytrìnhpháttriểnphầnmềmsẽbaogồmcácbước: • Xâydựngcáclớpđốitượng • Khởitạocácđốitượngcầnthiết • Tươngtácvớicácđốitượng
Các thành phần cơ bản của lớp đối tượng • Lớp đối tượng bao gồm 2 thành phần: • Thành phần dữ liệu • Thành phần xử lý • Do đó, khi định nghĩa lớp đối tượng cần: • Định nghĩa tên lớp • Định nghĩa thành phần dữ liệu • Định nghĩa thành phần xử lý
Cú pháp khai báo lớp đối tượng • từ khóa tên lớp • ↓ ↓ • class MyCSharpClass • { • //Khai báo các thành phần dữ liệu • //Khai báo các thành phần xử lý • } • từ khóa tên lớp • ↓ ↓ • class MyJavaClass • { • //Khai báo các thành phần dữ liệu • //Khai báo các thành phần xử lý • } CSharp Java
Trường dữ liệu (Field) • Trường dữ liệu là biến dữ liệu của lớp đối tượng • Trường dữ liệu có: • Tên trường dữ liệu • Kiểu trường dữ liệu • Trường dữ liệu có thể: • Truy xuất giá trị • Gán giá trị class MyCSharpClass { kiểu dữ liệu ↓ int MyField; ↑ } tên trường dữ liệu class MyJavaClass { kiểu dữ liệu ↓ int MyField; ↑ } tên trường dữ liệu CSharp Java
Ví dụ minh họa • Xây dựng lớp đối tượng HCN dùng để mô tả hình chữ nhật. • Lớp đối tượng HCN có thể cho ta biết: • Chiều dài hình chữ nhật • Chiều rộng hình chữ nhật • Diện tích hình chữ nhật • Chu vi hình chữ nhật classHCN { publicdouble height; publicdouble width; } classHCN { publicdouble perimeter; publicdouble area; }
Declaring a class does not create any actual objects • A class is just an abstract description of what an object will be like
Software development process • Khisửdụngphươngpháphướngđốitượng, quytrìnhpháttriểnphầnmềmsẽbaogồmcácbước: • Xâydựngcáclớpđốitượng • Khởitạocácđốitượngcầnthiết • Tươngtácvớicácđốitượng
Khai báo đối tượng • Đối tượng cũng là biến dữ liệu bình thường. Do đó khai báo biến đối tượng cũng tương tự như khai báo một biến dữ liệu bình thường • Cú pháp khai báo: <tên lớp> <tên biến đối tượng>;
Biến đối tượng lưu trữ địa chỉ của vùng nhớ chứa đối tượng mà nó đang tham chiếu đến
Khởi tạo đối tượng • Lớp đối tượng là kiểu tham chiếu. Do đó, biến đối tượng sẽ lưu trữ địa chỉ của vùng nhớ chứa đối tượng thực sự trong vùng nhớ heap • Khi mới khai báo, mặc định biến đối tượng sẽ trỏ về vùng nhớ null. • Cú pháp khởi tạo đối tượng: từkhóadấungoặctròn ↓ ↓ new TypeName( ) ↑ tênlớpđốitượng
Ví dụ minh họa classMyClass { publicintV1; publicintV2; } classProgram { staticvoid Main() { MyClassA1; //Lệnh 1 A1 = newMyClass(); //Lệnh 2 } } Stack Stack Heap Heap V1 = 0 V2 = 0 null A1 A1 Lệnh 1 Lệnh 2
Ví dụ minh họa classHCN { publicdouble square; publicdouble perimeter; } classProgram { staticvoid Main(string[] args) { HCN a; a = newHCN(); HCN b = newHCN(); HCN c = a; } } Có bao nhiêu đối tượng được tạo?
Software development process • Khisửdụngphươngpháphướngđốitượng, quytrìnhpháttriểnphầnmềmsẽbaogồmcácbước: • Xâydựngcáclớpđốitượng • Khởitạocácđốitượngcầnthiết • Tươngtácvớicácđốitượng
Cách truy xuất thành phần dữ liệu của đối tượng • Cú pháp: <tên đối tượng>.<tên thành phần dữ liệu> • Dấu chấm nói lên quan hệ sở hữu • Ý nghĩa của cú pháp: truy xuất thành phần dữ liệu nào của đối tượng nào classHCN { publicdouble width; publicdouble height; } classProgram { staticvoid Main(string[] args) { HCN a = newHCN(); a.height = 3; a.width= 2; Console.WriteLine(“Chieudai: " + a.height); Console.WriteLine("Chieurong: " + a.width); Console.ReadLine(); } }
Ví dụ minh họa classHCN { publicdouble width; publicdouble height; } classProgram { staticdoubleTinhDienTich(HCN a) { returna.width * a.height; } staticdoubleTinhChuVi(HCN a) { return(a.height + a.width) * 2; } staticvoid Main(string[] args) { HCN a = newHCN(); a.height= 3; a.width= 2; Console.WriteLine("Dientich: " + TinhDienTich(a)); Console.WriteLine("Chu Vi: " + TinhChuVi(a)); Console.ReadLine(); } } Cú pháp ĐÚNG Nhưng SAI về kỹ thuật lập trình OOP Xâydựnglớp KHÔNG cóthànhphầnxửlý
Phương thức (Method) • Phươngthứclàhàmxửlý • Khikhaibáovàđịnhnghĩa 1 phươngthứccầnlưu ý đếnnhữngthànhphầnsauđây: • Kiểutrảvề • Tênphươngthức • Danhsáchthamsố • Phầnthựcthicủaphươngthức • class SimpleClass • { • kiểutrảvềdanhsáchthamsố • ↓ ↓ • void PrintNums ( ) • { • Console.WriteLine("1"); • Console.WriteLine("2"); • } • }
Ví dụ minh họa • Tính diện tích hình chữ nhật: • Lấy chiều dài nhân với chiều rộng • Tính chu vi hình chữ nhật: • Lấy chiều dài cộng chiều rộng • Nhân kết quả vừa có với 2 Khôngrõnghĩa Chiềudài, chiềurộngcủahìnhchữnhậtnào?
Ví dụ minh họa • Tínhdiệntíchhìnhchữnhật: • Lấychiềudàicủahìnhchữnhậtđangxétnhânvớichiềurộngcủahìnhchữnhậtđangxét • Tínhchu vi hìnhchữnhật: • Lấychiềudàicủahìnhchữnhậtđangxétcộngchiềurộngcủahìnhchữnhậtđangxét • Nhânkếtquảvừacóvới 2
Khái niệm về tham chiếu this • Tham chiếu this dùng để ám chỉ đối tượng đang gọi phương thức • Ví dụ: • khi hình chữ nhật agọi phương thức tính diện tích thì this chính là a • Khi hình chữ nhật b gọi phương thức tính diện tích thì this chính là b classHCN { publicdouble width; publicdouble height; publicdoubleTinhDienTich() { returnthis.width * this.height; } publicdoubleTinhChuVi() { return (this.width + this.height) * 2; } }
Khái niệm về tham chiếu this (tt) • Tuynhiên, nếukhôngviếtrõ “củađốitượngnào” thìmặcđịnhlà “củađốitượngđangxét - this” • Do đónếukhôngcósựnhầmlẫnthì LTV cóthểbỏtừkhóa “this” classHCN { publicdouble width; publicdouble height; publicdouble TinhDienTich() { returnwidth * height; } publicdouble TinhChuVi() { return(width + height) * 2; } }
Cách gọi phương thức của đối tượng • Cúpháp: <tênđốitượng>.<tênphươngthức> ( <danhsáchthamsố>) • Dấuchấmnóilênquanhệsởhữu • Ý nghĩacủacúpháp: gọiphươngthứcnàocủađốitượngnào classProgram { staticvoid Main(string[] args) { HCN a; a = newHCN(); a.height = 3; a.width = 2; HCN b = newHCN(); b.height = 5; b.width = 4; Console.WriteLine("Dien tich cua a: " + a.TinhDienTich()); Console.WriteLine("Chu vi cua b: " + b.TinhChuVi()); Console.ReadLine(); } }
Bài tập về nhà • Đọcchương 5 vàchương 14 (quyển [2]) đểtrảlờinhữngcâuhỏisauđây: • Phânbiệt Formal Parameter và Actual Parameter • Phânbiệt Value Parameter, Reference Parameter và Output Parameter • Cómấyloại Array. Cáchkhaibáo, khởitạo, sửdụngtừngloại Array Đọcchương4 (quyển [1])