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

Chương 4: Phương thức (Method)

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

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

Một nhóm các lớp có liên quan đến nhau và phương thức của chúng. FCL được tạo thành từ các namespaces. Namespaces được lưu trong các file .dll gọi là assemblies. Danh sách các Namespace của .Net framwork được giới thiệu trong hình 4.3 . Tất cả các lớp trong C# được cho trong thư viện của các Namespace. Có từ khoá là using .

Chủ đề:
Lưu

Nội dung Text: Chương 4: Phương thức (Method)

  1. Chương 4. Phương thức (Method) Outline 4.1 Phương thức – Methods 4.1.1. Module trong C# 4.1.2. Định nghĩa phương thức 4.1.3. Tại sao sử dụng phương thức 4.1.4. Ví dụ về các phương thức của lớp Math 4.2 Chuyển đổi đối số 4.2.1. Chuyển đổi tường minh 4.2.2. Chuyển đổi không tường minh 4.3 C# Namespaces 4.4 Tham trị và tham biến 4.5 Truyền theo tham trị và tham biến 4.6. Phạm vi 4.7 Đệ quy 4.7.1. Đệ quy 4.7.2. So sánh đệ quy và vòng lặp 4.8 Phương thức nạp chồng (Method Overloading)
  2. 4.1.1. Module trong C#  Modules  L ớp  Các phương thức  Dùng các lớp hay phương thức chỉ cần biết chúng làm được gì chứ không cần biết chúng làm thế nào  Lớp thư viện Framwork .NET (FCL)  Tăng khả năng sử dụng lại  Console-Giao tiếp bàn phím và màn hình  MessageBox- Hộp thoại
  3. 4.1.1. Module trong C# Ta minh hoạ bằng sơ đồ: Ông chủ Công Công Công nhân 1 nhân 2 nhân 3 Công Công nhân 4 nhân 5
  4. 4.1.2. Định nghĩa phương thức  viết một phương thức  Phần đầu  ReturnType Properties Name( Param1, Param2, … )  Thân  Chứa mã của phương thức  Chứa giá trị trả về nếu cần thiết  Được dùng ở một nơi khác trong chương trình  bỏ dấu () nếu cần thiết  Tất cả các phương thức phải được định nghĩa trong lớp
  5. 4.1.3. Tại sao sử dụng phương thức  Thực hiện chính sách "chia để trị".  Có thể được sử dụng lại ▪ Dùng các lớp và phương thức để xây dựng các đối tượng mới.  Giảm việc lặp lại ▪ Phương thức có thể được gọi từ bất kỳ chỗ nào của chương trình.
  6. 4.1.4. Ví dụ về các phương thức của lớp Math  Lớp phương thức Math  Cho phép ta sử dụng các phép toán chung.  Cách thức dùng  ClassName.MethodName( argument1, arument2, … )  Hằng số  Math.PI = 3.1415926535…  Math.E = 2.7182818285…
  7. Phươ ng  t hứ c   M ô  tả   Ví d ụ  Abs( x ) Trị tuyệ đối của x t Abs( 23.7 ) is 23.7 Abs( 0 ) is 0 Abs( -23.7 ) is 23.7 Ceiling( x ) Làm tròn x t ới số tự nhiên nhỏ nhất Ceiling( 9.2 ) is 10.0 không nhỏ hơn x Ceiling( -9.8 ) is -9.0 Cos( x ) cosine lượng giác của x Cos( 0.0 ) là 1.0 (x đo bằng radians) Exp( x ) e mũ x Exp( 1.0 ) xấ xỉ 2.7182818284590451 p Exp( 2.0 ) xấ xỉ p 7.3890560989306504 Floor( x ) Làm tròn x tới số nguyên lớn nhất Floor( 9.2 ) is 9.0 không vượt quá x Floor( -9.8 ) is -10.0 Log( x ) logarit tự nhiên của x (cơ số e) Log( 2.7182818284590451 ) is approximately 1.0 Log( 7.3890560989306504 ) is approximately 2.0 Max( x, y ) Giá trị lớn nhấ giữa x và y t Max( 2.3, 12.7 ) is 12.7 (also has versions for float, int and Max( -2.3, -12.7 ) is -2.3 long values) Min( x, y ) giá trị nhỏ nhấ của x và y t Min( 2.3, 12.7 ) is 2.3 (also has versions for float, int and Min( -2.3, -12.7 ) is -12.7 long values) Pow( x, y ) x mũ y (xy) Pow( 2.0, 7.0 ) is 128.0 Pow( 9.0, .5 ) is 3.0 Sin( x ) sin l ượng giác của x Sin( 0.0 ) is 0.0 (x đo bằng radians) Sqrt( x ) Căn bậ hai của x c Sqrt( 900.0 ) is 30.0 Sqrt( 9.0 ) is 3.0 Tan( x ) tang của x Tan( 0.0 ) is 0.0 (x đo bằng radians) Hình 4.1.4  C á c  p hươ n g  th ức  ha y d ùn g  tro n g  lớ p   Math . 
  8. 1 // Fig. 6.3: SquareInt.cs 2 // A programmer-defined Square method. 3 4 using System; // includes basic data types 5 using System.Drawing; // for graphics capabilities 6 using System.Collections; báo lớp SquareInteger. structures Khai // for complex data Nó nằm trong 7 using System.ComponentModel; // controls component behavior 8 using System.Windows.Forms.Form System.Windows.Forms; // for GUI development 9 using System.Data; // for reading outside data 10 11 // form used to display results of squaring 10 numbers 12 public class SquareIntegers : System.Windows.Forms.Form 13 { 14 private System.ComponentModel.Container components = null; 15 16 // label containing results 17 private System.Windows.Forms.Label outputLabel; 18 19 public SquareIntegers() 20 { Bắt đầu định nghĩa các phương thức 21 // Required for Windows Form Designer support 22 InitializeComponent(); của SquareIntegers 23 24 int result; // store result of call to method Square 25 Đây là một biến số của phương thức, nó chỉ được sử dụng trong phương thức.
  9. 26 // loop 10 times 27 for ( int counter = 1; counter
  10. 52 // The main entry point for the application. 53 [STAThread] 54 static void Main() 55 { 56 Application.Run( new SquareIntegers() ); 57 } Phương thức Square. Một biến 58 59 // Square method definition nguyên vào và ra. 60 int Square( int y ) 61 { 62 return y * y; // return square of y 63 64 } // end method Square 65 Phương thức trả lại bình phương của 66 } // end of class SquareIntegers biến nguyên
  11. 1 // Fig. 6.4: MaximumValue.cs 2 // Finding the maximum of three doubles. 3 4 using System; 5 6 class MaximumValue 7 { 8 // main entry point for application 9 static void Main( string[] args ) 10 { 11 // obtain user input and convert to double 12 Console.Write( "Enter first floating-point value: " ); Chương trình 13 double number1 = Double.Parse( Console.ReadLine() ); 14 nhập 3 số 15 Console.Write( "Enter second floating-point value: " ); 16 double number2 = Double.Parse( Console.ReadLine() ); 17 18 Console.Write( "Enter third floating-point value: " ); 19 double number3 = Double.Parse( Console.ReadLine() ); 20 21 // call method Maximum to determine largest value 22 double max = Maximum( number1, number2, number3 ); 23 24 // display maximum value Ba biến nguyên làm đầu vào cho 25 Console.WriteLine("\nmaximum is: " + max ); 26 phương thức Maximum. 27 } // end method Main
  12. 28 29 // Maximum method uses method Math.Max to help determine 30 // the maximum value 31 static double Maximum( double x, double y, double z ) 32 { 33 return Math.Max( x, Math.Max( y, z ) ); 34 35 } // end method Maximum 36 37 } // end class MaximumValue Phương thức Maximum có 3 biến nguyên vào và trả lại giá trị lớn nhất của chúng. Math.Max dùng phương thức Max trong lớp Math. Dấu . dùng để gọi phương thức. Enter first floating-point value: 37.3 Enter second floating-point value: 99.32 Enter third floating-point value: 27.1928 maximum is: 99.32
  13. 4.2 Chuyển đổi đối số  4.2.1.Chuyển đổi tường minh  Đối tượng được chuyển đổi trực tiếp đến một dạng theo yêu cầu  Chỉ được thực hiện khi chương trình dịch biết không có dữ liệu bị mất  4.2.2.Chuyển đổi không tường minh  Đối tượng được chuyển đổi bằng tay  Được yêu cầu khi có mất mát dữ liệu.  Mở rộng  Tạo một đối tượng của lớp dẫn xuất và phức tạp hơn  Thu hẹp  Tạo đối tượng của lớp cơ sở và dẫn đến mất dữ liệu
  14. BẢNG THĂNG CẤP BIẾN: Typ e  Ca n b e Conv erted  to Typ e(s)  bool object byte decimal, double, float, int, uint, long, ulong, object, short or ushort sbyte decimal, double, float, int, long, object or short char decimal, double, float, int, uint, long, ulong, object or ushort decimal object double object float double or object int decimal, double, float, long or object uint decimal, double, float, long, ulong, or object long decimal, double, float or object ulong decimal, double, float or object object None short decimal, double, float, int, long or object ushort decimal, double, float, int, uint, long, ulong or object string object Fig. 6.5  Allo w e d  imp lic it  c o nv e rsio ns. 
  15. 4.3 C# Namespaces  Namespace  Một nhóm các lớp có liên quan đến nhau và phương thức của chúng  FCL được tạo thành từ các namespaces  Namespaces được lưu trong các file .dll gọi là assemblies  Danh sách các Namespace của .Net framwork được giới thiệu trong hình 4.3  Tất cả các lớp trong C# được cho trong thư viện của các Namespace  Có từ khoá là using
  16. 4.3 C# Namespaces Na m esp a c e  Mô  tả   System Chứa các loại lớp và kiểu dữ liệu cần thiết (như int, double, char, v.v.).Được tham chiếu tới trong mọi chương trình C# . System.Data Gồm các lớp tạo nên ADO .NET, dùng để truy cập và thao tác trên cơ sở dữ liệu System.Drawing Chứa các lớp để vẽ và dùng đồ hoạ. System.IO Chứa các lớp vào ra dữ liệu,nhất là với files System.Threading Gồm các lớp đa tiến trình dùng để chạy song song các phần của một chương trình. System.Windows.Forms Gồm các lớp tạo giao diện. System.Xml Chứa các lớp xử lý dữ liệu XML . Hình 4.3  Na mesp a c e s tro ng  Fra m ew ork Cla ss Lib ra ry. 
  17. 4.4 Tham trị và tham biến  Tham trị  Gồm các dữ liệu có dạng xác định  Người lập trình tạo ra  struct  enum  Tham biến  Chứa địa chỉ của điểm trỏ tới các dữ liệu  Lập trình viên tạo ra  Lớp  Giao diện  Hàm uỷ quyền
  18. 4.5.Truyền theo tham trị và tham biến  Truyền theo tham trị  Gửi tới phương thức một bản copy của đối tượng  Luôn trả lại giá trị.  Khởi tạo một giá trị mặc định  Truyền theo tham biến  Gửi tới phương thức điểm quy chiếu thật sự của đối tượng  Do đó biến có thể bị thay đổi trong chương trình  Hàm trả lại luôn ở dạng tham chiếu  Từ khoá ref định nghĩa một tham chiếu  Từ khoá out gọi tới một phương thức khi nó chưa khởi tạo giá trị ban đầu
  19. 1 // Fig. 6.8: RefOutTest.cs 2 // Demonstrating ref and out parameters. 3 4 using System; 5 using System.Windows.Forms; 6 7 class RefOutTest 8 { Khai báo biến số tham chiếu giá trị 9 // x is passed as a ref int (original value nó thay đổi đến khi hết chương của will change) 10 static void SquareRef( ref int x ) 11 { trình. 12 x = x * x; 13 } 14 Khi khai báo là void thì không cần 15 // original value can be changed and initialized 16 static void SquareOut( out int ịx ) lại. giá tr trả 17 { 18 x = 6; 19 x = x * x; 20 } 21 22 // x is passed by value (original value not changed) 23 static void Square( int x ) 24 { 25 x = x * x; 26 } 27 28 static void Main( string[] args ) 29 { 30 // create a new integer value, set it to 5 31 int y = 5; 32 int z; // declare z, but do not initialize it 33
  20. 34 // display original values of y and z 35 string output1 = "The value of y begins as " 36 + y + ", z begins uninitialized.\n\n\n"; 37 38 // values of y and z are passed by value 39 RefOutTest.SquareRef( ref y ); Gọi phương thức SquareRef 40 RefOutTest.SquareOut( out z ); và SquareOut 41 42 // display values of y and z after modified by methods 43 // SquareRef and SquareOut 44 string output2 = "After calling SquareRef with y as an " + 45 "argument and SquareOut with z as an argument,\n" + 46 "the values of y and z are:\n\n" + 47 "y: " + y + "\nz: " + z + "\n\n\n"; 48 Gọi tới phương thức 49 // values of y and z are passed by value 50 RefOutTest.Square( y ); SquareRef và SquareOut bằng 51 RefOutTest.Square( z ); tham trị. 52 53 // values of y and z will be same as before because Square 54 // did not modify variables directly 55 string output3 = "After calling Square on both x and y, " + 56 "the values of y and z are:\n\n" + 57 "y: " + y + "\nz: " + z + "\n\n"; 58 59 MessageBox.Show( output1 + output2 + output3, 60 "Using ref and out Parameters", MessageBoxButtons.OK, 61 MessageBoxIcon.Information ); 62 63 } // end method Main 64 65 } // end class RefOutTest
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

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