Xem mẫu

  1. Bài 3 HƯỚNG ĐỐI TƯỢNG TRONG C# GV. Chử Đức Hoàng 1
  2. TÌNH HUỐNG DẪN NHẬP • Những yếu tố chứa thông tin liên quan đến học viên của trường đại học quốc gia như đã phân tích ở bài trước đều được đưa ra để quản lý các đối tượng thực đó là học viên. Người lập trình có trách nhiệm làm cho máy tính có thể liên kết thông tin đó với những đối tượng trong thế giới thực. • Tuy nhiên, máy tính chỉ là một cỗ máy, nó chỉ thực hiện những công việc được lập trình, vì thế người lập trình phải cung cấp cho máy tính những thông tin theo cách thức mà nó cũng nhận thức được cùng những đối tượng như chúng ta nhận thức.  Vậy ngôn ngữ lập trình C# làm thế nào để thể hiện và thực hiện công việc quản lý đối tượng trong thực tế trong máy tính? 2
  3. MỤC TIÊU Trình bày về lập trình hướng đối tượng. Lập trình hướng đối tượng trong C#. Trình bày được cách gọi và khai báo các lớp, đối tượng và các phương thức trong C#. Xây dựng một chương trình C# thể hiện lớp và các thuộc tính. Tạo đối tượng và sử dụng đối tượng đó. 3
  4. NỘI DUNG 1 Khái niệm về lập trình hướng đối tượng 2 Giới thiệu về lập trình hướng đối tượng trong C# 3 Mô tả lớp và tạo đối tượng trong C# 4 Lập trình ứng dụng Console với C# 4
  5. 1.1. MỞ ĐẦU - TRÌNH BÀY VỀ PHƯƠNG PHÁP LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG • Lập trình hướng đối tượng là phương pháp lập trình lấy đối tượng làm nền tảng để xây dựng thuật toán, xây dựng chương trình • Có sự tương xứng giữa các đối tượng trong chương trình và các đối tượng trên thực tế và có hướng tiếp cận đa dạng. • Đối tượng phần mềm thông thường là sự kết hợp giữa mã lệnh và dữ liệu trong một thể thống nhất. 5
  6. 1.1.1. CÁC ĐẶC TÍNH CƠ BẢN CỦA LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG • Tính bao gói: Khả năng truy suất vào các thành phần của một đối tượng trong khi vẫn đảm bảo che giấu các đặc tính riêng tư bên trong đối tượng được gọi là tính bao gói. • Tính kế thừa: Tính kế thừa cho phép các đối tượng có thể chia sẻ hay mở rộng các thuộc tính hoặc phương thức mà không phải tiến hành định nghĩa lại. • Tính trừu tượng: Một đặc tả trừu tượng cho ta biết một đối tượng có thể làm gì mà không bận tâm vào việc nó làm như thế nào. • Tính đa hình: Tính đa hình thể hiện khi với cùng một phương thức nhưng có thể có cách ứng xử khác nhau ở những lớp cùng giao diện 6
  7. 1.1.2. ƯU ĐIỂM CỦA LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG • Khả năng tái sử dụng cao • Ổn định và dễ bảo trì • Chi phí giảm dần • Tăng năng suất lập trình • Tăng chất lượng phần mềm • Tăng tính dễ hiểu của phần mềm • Vòng đời của phần mềm tăng 7
  8. 1.1.3. LỚP • Lớp là khái niệm dùng để mô tả một nhóm các đối tượng có những thuộc tính, hành vi và những mối quan hệ thông thường tương tự nhau. • Thuật ngữ lớp có thể hiểu là “lớp các đối tượng (class)” là khuôn mẫu để sinh ra đối tượng, mỗi đối tượng được coi như là một “thể hiện” của lớp với những giá trị thuộc tính cũng như cách thức hoạt động đặc trưng. • Trong C# hỗ trợ đơn thừa kế giữa các lớp và một lớp bắt buộc phải được thừa kế từ một lớp nào đó. 8
  9. 1.1.3. LỚP Sơ đồ mô tả lớp Sơ đồ lớp mô tả những đặc điểm khái quát nhất về lớp bao gồm: Tên lớp, các thuộc tính và các phương thức. Sinhvien Tên lớp Tensv: string Sohieusv:int Diemtoan:int Diemly:int Thuộc tính Diemhoa:int Diemtb:float Nhap():void Inthongtin():void Tinhtb(): float Phương thức 9
  10. 1.1.4. ĐỐI TƯỢNG • Đối tượng là thể hiện (instance) của một lớp. • Mỗi đối tượng có:  Định danh;  Thuộc tính (dữ liệu);  Hành vi (phương thức). Đối tượng là các sinh viên có: Định danh: Sinh viên Thuộc tính: tên, tuổi, số hiệu sinh viên, điểm thi,… Hành vi: hàm tạo, nhập dữ liệu sinh viên, tính điểm cho sinh viên,… 10
  11. 1.1.4. ĐỐI TƯỢNG Name: Anna Name: Jack Sohieusv:122 Sohieusv:123 Diemtoan: 4 Diemtoan: 7 Diemly: 5 Diemly: 8 Diemhoa: 6 Diemhoa: 9 Actions: Actions: Nhap() Nhap() Inthongtin() Inthongtin() Tinhtb() Tinhtb() Thuộc tính và hành vi của đối tượng • Thuộc tính là những đặc điểm đặc trưng của đối tượng, thể hiện thông qua những giá trị cụ thể. • Hành vi là những cách thức mà qua đó đối tượng thể hiện sự hoạt động hay chức năng của chúng. 11
  12. 1.1.4. ĐỐI TƯỢNG Quản lý bộ nhớ khi sử dụng đối tượng. • Stack: khi gọi phương thức, bộ nhớ được yêu cầu cho các tham số và các biến cục bộ. Khi phương thức kết thúc, vùng nhớ được giải phóng. • Heap: Khi tạo một đối tượng sử dụng từ khóa new và lời gọi phương thức khởi tạo. Nó sẽ được giải phóng một cách tự động khi kết thúc. Stack Heap 1. void Method(int param){ 2. Sinhvien SV; int param 3. SV = new Sinhvien(); 4. } 42 42 Sinhvien SV @ 12
  13. 1.2. LỚP TRONG C# Cú pháp khai báo lớp trong C#: [Thuộc tính truy cập] class [:Lớp cơ sở] { } Lưu ý: Phần kết thúc của định nghĩa lớp không có dấu “;” như trong C++. Nếu vẫn để thì trình biên dịch vẫn biên dịch và không báo lỗi. Lớp luôn là kiểu dữ liệu tham chiếu trong C# 13
  14. 1.2. LỚP TRONG C# Các thuộc tính truy cập • Public: Không hạn chế giới hạn truy cập. Những thành viên được đánh dấu public có thể được dùng bởi bất kì các phương thức của lớp bao gồm những lớp khác. • Private: Chỉ được truy cập bởi các phương thức trong lớp. • Protected: Chỉ được các phương thức bên trong lớp và những phương thức dẫn xuất từ lớp đó truy cập. • Internal: Được truy cập bởi những phương thức của bất cứ lớp nào trong cùng khối hợp ngữ với nó. • Protected internal: Được truy cập bởi các phương thức của lớp, các phương thức của lớp dẫn xuất của lớp và bất cứ lớp nào trong cùng khối hợp ngữ của nó. 14
  15. 1.2. LỚP TRONG C# Ví dụ khai báo một lớp trong C# Ví dụ mô tả lớp Sinhvien: 5. public class Sinhvien { Sinhvien Class Name 6. public Sinhvien() 7. { + Sinhvien() Constructor 8.- //hàm tạo 9. } 10. } Hàm tạo (Constructor): là hàm đặc biệt giúp tạo và khởi tạo các trạng thái ban đầu cho đối tượng. Nếu không có hàm tạo này thì trình biên dịch tạo một constructor mặc định để khởi tạo một số giá trị mặc định như: gán chuỗi rỗng cho chuỗi, gán 0 cho kiểu số, gán false cho kiểu bool. 15
  16. 1.2. LỚP TRONG C# Xây dựng lớp Sinhvien Bổ sung cho Sinhvien • Các thuộc tính  tensv: kiểu dữ liệu chuỗi  sohieusv: kiểu dữ liệu số nguyên 11. public class Sinhvien { 12. private String tensv; • Các phương thức: 13. private int sohieusv;  nhap(): nhập vào thông tin một 14. sinh viên  inthongtin(): in ra thông tin của sinh viên 15. public Sinhvien() {  Tinhtb(): tính điểm trung bình của 16. // statement sinh viên 17. } 18. 19. public void nhap() { Sinhvien 20. // statement - tensvl: String 21. } -sohieusv: int 22. public void inthongtin() { 23. // statement + Sinhvien() 24. } + nhap(): void 25. public int tinhtb() { + inthongtin(): void 26. + tinhtb(): int 27. // statement 28. return diemtb; 29. } 30. } 16
  17. 1.3. ĐỐI TƯỢNG • Việc mô tả lớp chỉ có ý nghĩa đặc tả một nhóm đối tượng có chung đặc điểm thuộc tính và phương thức mà chưa thực sự tạo ra một đối tượng. • Lớp luôn là kiểu dữ liệu tham chiếu trong C# • Để tạo ra đối tượng ta sử dụng từ khóa new kết hợp với hàm tạo. • Có hai cách để tạo đối tượng: Cách 1: 31. Sinhvien sv; 32. sv = new Sinhvien(); Cách 2: 33. Sinhvien sv = new Sinhvien(); 17
  18. 1.4. HÀM TẠO • Hàm tạo (Constructor) hay còn gọi là bộ khởi dựng được mô tả trong mỗi lớp dùng để tạo và khởi tạo các trạng thái ban đầu của đối tượng. Nó được gọi một lần duy nhất khi khởi tạo đối tượng. • Trước khi bộ khởi dựng được thực hiện thì đối tượng chưa được cấp phát trong bộ nhớ. Sau khi bộ khởi dựng thực hiện hoàn thành thì bộ nhớ sẽ lưu giữ một đối tượng hợp lệ của lớp vừa khai báo. • Ví dụ: 34. public Sinhvien() { 35. tensv = “Nguyen X"; 36. diemtb = 8; 37. } 38. public Sinhvien(Stringm, int y) { 39. tensv = “Nguyen X”; 40. diemtb = 8; 41. } 18
  19. 1.4. HÀM TẠO Đặc điểm của hàm tạo • Có các loại hàm tạo: mặc định, không tham số, có tham số, tĩnh và sao chép • Tên hàm tạo giống như tên lớp. • Không có giá trị trả về. • Khai báo là public, nếu khai báo private thì không cho phép tạo đối tượng 42. sinhvien() 43. {//Khởi tạo các biến thành viên của lớp trong hàm tạo 44. Tensv = “ưkefljwe”; 45. Sohieusv = 1234; 46. ….. 47. } 48. sinhvien(); // phương thức không tham số 49. sinhvien(var1, var2);//phương thức khởi tạo có tham số 50. sinhvien SV2 = new sinhvien( SV1 ); 51. /*thực hiện việc tạo một đối tượng SV2 mới bằng cách sao chép tất cả các biến từ một đối tượng SV1đã có và cùng một kiểu dữ liệu*/ 19
  20. 1.4. HÀM TẠO Sử dụng đối tượng • Sau khi khai báo một đối tượng thuộc lớp sinhvien thì thông qua đối tượng này, ta có thể truy xuất vào các thành phần phương thức và thuộc tính của đối tượng vừa được tạo • Ví dụ: muốn thực hiện phương thức nhap() của đối tượng thuộc lớp sinhvien ta khai báo và sử dụng thông qua đối tượng tham chiếu SV1. 52. Sinhvien SV1 = new Sinhvien(); 53. SV1.nhap(); 54. SV1.ten=“Nguyễn Thị Na”; 55. SV1.diemtoan = 8; 56. SV1.diemly = 7; 57. SV1.diemhoa =10; 58. Diemtong = SV1.tinhtong(); 20
nguon tai.lieu . vn