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

Chương 9: Lập trình hướng đối tượng trong C#

Chia sẻ: | Ngày: | Loại File: PPT | Số trang:130

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

Cơ sở của lập trình hướng đối tượng gắn liền với sự ra đời và định nghĩa về lớp và đối tượng . Lập trình hướng đối tượng là tư tưởng lập trình trong đó dữ liệu ( data ) và hàm ( functions ) được đóng gói trong các lớp. Một đối tượng là một thể hiện ( instance ) của lớp có các thành phần dữ liệu riêng của nó . Các đối tượng là thể hiện của cùng một lớp sẽ có cùng một bộ “ khung “ do lớp tạo ra....

Chủ đề:
Lưu

Nội dung Text: Chương 9: Lập trình hướng đối tượng trong C#

  1. Chương 9 – Lập trình hướng đối tượng trong C# Outline  9.1. Lớp và đối tượng - Class and Objects  9.2. Giao diện - Interfaces  9.3. Quyền truy cập - Modifiers  9.4. Thuộc tính - Properties  9.5. Phương thức – Methods  9.6. Sự kiện và hàm đại diện- Events and Delegates  9.7. Tính kế thừa – Inheritance Các lớp cơ sở và các lớp dẫn xuất Protected Members Phương thức khởi tạo: Constructors và hủy Destructors trong lớp dẫn xuất  9.8. Tính đa hình – Polymorphism Lớp Abstract và phương thức Nạp chồng toán tử
  2. 9.1. Lớp và đối tượng - Class and Objects  Cơ sở của lập trình hướng đối tượng gắn liền với sự ra đời và định nghĩa về lớp và đối tượng .  Lập trình hướng đối tượng là tư tưởng lập trình trong đó dữ liệu ( data ) và hàm ( functions ) được đóng gói trong các lớp  Một đối tượng là một thể hiện ( instance ) của lớp có các thành phần dữ liệu riêng của nó . Các đối tượng là thể hiện của cùng một lớp sẽ có cùng một bộ “ khung “ do lớp tạo ra  Phân loại lớp : Có thể phân loại lớp dựa theo nhiều tiêu chí khác nhau :  Lớp cha và lớp con : phân loại theo tính kế thừa .  Lớp nội và lớp ngoại : phân loại theo tính chứa đựng .  Lớp trừu tượng và lớp cài đặt : phân loại theo chức năng . 9.1
  3. Khai báo lớp  Cấu trúc : [Bổ từ truy cập] class [:] [Tên_lớp_cha] Trong đó các thành phần nằm trong [] là không bắt buộc  Bổ từ truy cập : Xác định phạm vi sử dụng của lớp .  class : Từ khoá chỉ ra một khai báo lớp  Tên_lớp : Là tên của lớp không chứa dấu cách và phải bắt đầu bằng kí tự  “ : “ : Thể hiện tính kế thừa  Tên_lớp_cha : Tên của lớp cha mà lớp kế thừa từ đó 9.1
  4. Khởi tạo đối tượng  Khởi tạo ( Instantiate ) một đối tượng từ một lớp là cấp phát bộ nh ớ cho đối tượng đó trong vùng nhớ Heap . Một đối tượng được khai báo nhưng chưa khởi tạo thì chưa được cấp phát bộ nhớ  Cách khởi tạo một đối tượng trong C# giống với Java và VB.Net = new ( Các tham số nếu có ) 9.1
  5. Phương thức khởi tạo - Constructor  Constructor là một phương thức đặc biệt của lớp  Dùng để khởi tạo đối tượng và thiết lập các dữ liệu ban đầu trong một lớp  Constructor có cùng tên với tên lớp và không có giá trị trả về  Constructor có thể nạp chồng  Constructor phải được sử dụng với bổ từ truy cập public  Constuctor trong C# giống hệt constructor trong Java  Cú pháp : ● public () [ : base () ] { // Đặt mã của bạn vào đây } ● public ( các tham số ) [ : base( các tham số ) ] { // Đặt mã của bạn vào đây } 9.1
  6. Phương thức khởi tạo - Constructor  base là từ khoá mặc định trong C# ( cũng như me trong VB.Net và super trong Java ) để chỉ lớp cha ( nếu có ) của lớp đang xét  Trong phương thức khởi dựng của một lớp có thể gọi các phương thức khởi dựng của lớp cha thông qua từ khoá base ● public ( ) [: base () ] ●public ( các tham số ) [ : base( các tham số ) ]  Ngoài ra , trong một phương thức khởi dựng , ta còn có thể gọi các phương thức khởi dựng nạp chồng khác của lớp với từ khoá this ● public ( các tham số ) [ : this ( các tham số ) ] 9.1
  7. Phương thức khởi tạo - Constructor   Trong  một  lớp  ,  nếu  không  có  Constructor  thì  C#  sẽ  sử  dụng  constructor  mặc  định  (  không  chứa  tham  số  )  và  khởi  tạo  các  biến  thành viên với giá trị mặc định :  Các biến giá trị số được gán bằng 0  Các biến đối tượng được gán bằng null  Ta cũng có thể có static constructor ( phương thức khởi tạo tĩnh ) .  Đây là phương thức chỉ được thực hiện một lần bất cứ khi nào một đối  tượng  của  lớp  được  Instantiate  .  Tác  dụng  của  static  constructor  là  giúp ta khởi tạo giá trị cho các biến thành phần kiểu static trong một  lớp 9.1
  8. 1 // Time1.cs 2 // Class Time1 maintains time in 24-hour format. 3 4 using System; Khởi tạo mặc định instance variables Time1.cs 5 Private 6 // Time1 class definition 7 public class Time1 : Object 8 { Phương thức SetTime 9 private int hour; // 0-23 10 private int minute; // 0-59 11 private int second; // 0-59 Tính hiệu lực của 12 tham số 13 // Time1 constructor initializes instance variables to 14 // zero to set default time to midnight 15 public Time1() 16 { 17 SetTime( 0, 0, 0 ); 18 } 19 20 // Set new time value in 24-hour format. Perform validity 21 // checks on the data. Set invalid values to zero. 22 public void SetTime( 23 int hourValue, int minuteValue, int secondValue ) 24 { 25 hour = ( hourValue >= 0 && hourValue < 24 ) ? 26 hourValue : 0; 27 minute = ( minuteValue >= 0 && minuteValue < 60 ) ? 28 minuteValue : 0; 29 second = ( secondValue >= 0 && secondValue < 60 ) ? 30 secondValue : 0; 31 } 32 9.1
  9. Time1.cs 33 // convert time to universal-time (24 hour) format string 34 public string ToUniversalString() 35 { 36 return String.Format( 37 "{0:D2}:{1:D2}:{2:D2}", hour, minute, second ); 38 } 39 40 // convert time to standard-time (12 hour) format string Giờ ra theo định 41 public string ToStandardString() 42 { dạng quốc tế 43 return String.Format( "{0}:{1:D2}:{2:D2} {3}", 44 ( ( hour == 12 || hour == 0 ) ? 12 : hour % 12 ), 45 minute, second, ( hour < 12 ? "AM" : "PM" ) ); 46 } 47 48 } // end class Time1 Giờ ra có định dạng chuẩn 9.1
  10. 1 // TimeTest1.cs 2 // Demonstrating class Time1. 3 Gọi khởi tạo thời 4 using System; gian mặc định TimeTest1.cs 5 using System.Windows.Forms; 6 7 // TimeTest1 uses creates and uses a Time1 object 8 class TimeTest1 Gọi phương thức 9 { 10 // main entry point for application SetTime để thiết lập 11 static void Main( string[] args ) thời gian với các tham 12 { số hợp lệ 13 Time1 time = new Time1(); // calls Time1 constructor 14 string output; 15 16 // assign string representation of time to output 17 output = "Initial universal time is: " + 18 time.ToUniversalString() + 19 "\nInitial standard time is: " + Gọi phương thức 20 time.ToStandardString(); SetTime với các tham số 21 22 // attempt valid time settings hợp lệ 23 time.SetTime( 13, 27, 6 ); 24 25 // append new string representations of time to output 26 output += "\n\nUniversal time after SetTime is: " + 27 time.ToUniversalString() + 28 "\nStandard time after SetTime is: " + 29 time.ToStandardString(); 30 31 // attempt invalid time settings 32 time.SetTime( 99, 99, 99 ); 33 9.1
  11. 34 output += "\n\nAfter attempting invalid settings: " + 35 "\nUniversal time: " + time.ToUniversalString() + 36 "\nStandard time: " + time.ToStandardString(); 37 38 MessageBox.Show( output, "Testing Class Time1" ); 39 40 } // end method Main 41 42 } // end class TimeTest1 TimeTest1.cs
  12. Đối tượng this và base  Không giống như trong C++ this là một con trỏ . Trong C# và Java , this là một đối tượng để chỉ ra đối tượng đang tham chiếu đến .  Dùng đối tượng this để truy cập đến các biến và hàm thành viên của lớp  base là một đối tượng được định nghĩa sẵn trong C# để truy cập đến đối tượng là một thể hiện của lớp cha của lớp đang tham chiếu đến . Dùng base , ta có thể truy cập đến các thuộc tính và ph ương thức của lớp cha .  base trong C# giống như super trong Java và MyBase trong VB.Net 9.1
  13. 1 // Time4.cs 2 // Class Time2 provides overloaded constructors. 3 4 using System; Tham chiếu this được dùng để ThisTest 5 6 // Time4 class definition thiết lập các biến thành phần 7 public class Time4 cho các tham số của hàm khởi 8 { tạo 9 private int hour; // 0-23 10 private int minute; // 0-59 11 private int second; // 0-59 12 this tham chiếu tới một 13 // constructor 14 public Time4( int hour, int minute, int second ) phương thức 15 { 16 this.hour = hour; 17 this.minute = minute; 18 this.second = second; 19 } 20 21 // create string using this and implicit references 22 public string BuildString() 23 { 24 return "this.ToStandardString(): " + 25 this.ToStandardString() + 26 "\nToStandardString(): " + ToStandardString(); 27 } 28 9.1
  14. ThisTest 29 // convert time to standard-time (12 hour) format string 30 public string ToStandardString() 31 { 32 return String.Format( "{0}:{1:D2}:{2:D2} {3}", 33 ( ( this.hour == 12 || this.hour == 0 ) ? 12 : 34 this.hour % 12 ), this.minute, this.second, 35 ( this.hour < 12 ? "AM" : "PM" ) ); 36 } 37 38 } // end class Time4 Con trỏ this dùng để truy cập vào các biến thành phần 
  15. 1 // ThisTest.cs ThisTest 2 // Using the this reference. 3 4 using System; 5 using System.Windows.Forms; 6 7 // ThisTest class definition 8 class Class1 9 { 10 // main entry point for application 11 static void Main( string[] args ) 12 { 13 Time4 time = new Time4( 12, 30, 19 ); 14 15 MessageBox.Show( time.BuildString(), 16 "Demonstrating the \"this\" Reference" ); 17 } 18 } 9.1
  16. Bộ gom rác (Garbage Collection)  Toán tử new phân phát bộ nhớ  Khi đối tượng không bao giờ được tham chiếu tới nữa, CLR sẽ thực hiện việc thu gom rác  Bộ gom rác có tác dụng tránh hiện tượng thiếu bộ nhớ(tràn bộ nhớ khi chạy vì các phần nhớ không sử dụng chưa được thu hồi lại)  Phân phát và thu hồi các tài nguyên khác (kết nối cơ sở dữ liệu,truy cập file,...) phải được kiểm soát rõ ràng bởi người lập trình 9.1
  17. Bộ gom rác (Garbage Collection)  Dùng finalizers chung với bộ gom rác để giải phóng tài nguyên và bộ nhớ  Trước khi bộ gom rác thu hồi bộ nhớ của một đối tượng,nó gọi finalizer (kết thúc) của đối tượng  Mỗi lớp chỉ có một finalizer ,cũng được gọi là huỷ (destructor) 9.1
  18. Phương thức huỷ - Destructor  Là phương thức ngược lại với phương thức khởi tạo ­ nó huỷ đối tượng  đã được tạo ra bằng phương thức khởi tạo .  Destructor có tên là dấu “ ~ “ theo sau là tên lớp.  Destructor không chứa tham số , không trả lại giá trị và không có bổ từ  truy cập đi kèm   Khai báo Destructor   ~  ( )  Ví dụ : ~ MyClass ( )     { // Đặt mã cần xử lý ở đây  } 9.1
  19. Các thành phần tĩnh của lớp (static Class Members)  Mỗi đối tượng của lớp có một bản sao riêng của tất cả các thể hiện của biến  Đôi khi sẽ thật có ích nếu tất cả các thể hiện của một lớp có chung một bản sao của biến  Khai báo biến dùng từ khoá static cho phép tạo một bản sao duy nhất cho một biến tại một thời điểm(được dùng chung cho tất cả các đối tượng cùng lớp)  Phạm vi có thể được xác định cho các biến static (public, private,...) 9.1
  20. 1 // Employee.cs 2 // Employee class contains static data and a static method. 3 Huỷ Employee Employee.cs 4 using System; 5 6 // Employee class definition 7 public class Employee 8 { Cập nhật số công nhân Giảm biến đếm các Employees 9 private string firstName; 10 private string lastName; thành phần tĩnh,để thấy 11 private static int count; // Employee n một employee ít hơobjects in memory 12 13 // constructor increments static Employee count 14 public Employee( string fName, string lName ) 15 { 16 firstName = fName; 17 lastName = lName; 18 19 ++count; 20 21 Console.WriteLine( "Employee object constructor: " + 22 firstName + " " + lastName + "; count = " + Count ); 23 } 24 25 // destructor decrements static Employee count 26 ~Employee() 27 { 28 --count; 29 30 Console.WriteLine( "Employee object destructor: " + 31 firstName + " " + lastName + "; count = " + Count ); 32 } 33 9.1
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

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