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

Bài giảng Cơ sở lập trình: Chương 3 - Phạm Thanh An

Chia sẻ: _ _ | Ngày: | Loại File: PDF | Số trang:28

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

"Bài giảng Cơ sở lập trình - Chương 3: Xây dựng lớp, đối tượng" sau khi học bài này các bạn sinh viên sẽ nắm được định nghĩa lớp; tạo đối tượng; sử dụng các thành viên static; hủy đối tượng; nạp chồng phương thức; đóng gói dữ liệu với thuộc tính; thuộc tính chỉ đọc.

Chủ đề:
Lưu

Nội dung Text: Bài giảng Cơ sở lập trình: Chương 3 - Phạm Thanh An

  1. 4/10/2012 Chương 3 Xây dựng lớp, đối tượng ThS. Phạm Thanh An Khoa Công nghệ thông tin Đại học Ngân hàng Tp. Hồ Chí Minh Nội dung trình bày  Định nghĩa lớp.  Tạo đối tượng.  Sử dụng các thành viên static.  Hủy đối tượng.  Truyền tham số.  Nạp chồng phương thức.  Đóng gói dữ liệu với thuộc tính.  Thuộc tính chỉ đọc. Phát triển hệ thống OOP  Chương trình được tạo thành bởi các đối tượng.  Mỗi đối tượng đảm nhận thực hiện một tập các nhiệm vụ liên quan.  Trong phát triển hệ thống, đối tượng là sự mô tả một cái gì đó mà chúng ta muốn thao tác trong hệ thống: là thực thể vật lý hoặc thực thể khái niệm  Đối tượng có các thuộc tính (property) và hành vi (behaviors) 1
  2. 4/10/2012 Đối tượng  Sinh viên:  Thuộc tính:  Tên  Mã số sinh viên  Ngày sinh  Quê quán  Hành vi  Đăng ký môn học  Chọn chuyên ngành  Hủy một môn học Đối tượng (tt)  Đối tượng có thể biểu diễn cho người, vị trí, vật, một bảng dữ liệu cần xử lý  Xe hơi : là một thực thể vật lý  Tài khoản khách hàng: thực thể khái niệm  Khoa: thực thể khái niệm  Các đối tượng tương tác bằng cách gửi thống điệp (sending message)  sending message = calling method Lớp  Lớp là bản mẫu hay một kiểu chung cho tất cả những đối tượng có những đặc trưng giống nhau  có các thuộc tính và hành vi giống nhau  Trong lập trình hướng đối tượng, lớp được xem là đồng nhất với kiểu dữ liệu trừu tượng  Một lớp có thể tạo ra một số không giới hạn các đối tượng 2
  3. 4/10/2012 Lớp (tt) Khách hàng Tên Địa chỉ Tên Thanh Bình Lan Địa chỉ Quận 1 Quận 2 Quận 9 Điện thoai Điện thoại 123-456 221-4728 117-2321 Lớp với đối tượng Lớp Đối tượng  Là khuôn mẫu  Là một thể hiện của một  Định nghĩa các thuộc lớp, đối tượng tồn tại tính và hành động của trong bộ nhớ và có thời một đối tượng gian tồn tại hữu hạn  Được tạo ra khi thiết (finite lifespan) kế 245 Định nghĩa lớp  Sử dụng từ khoá class. [Bổ từ truy cập] class [: Lớp cơ sở] { // Các thành phần dữ liệu // Hàm }  Ghi chú: trong C# phần kết thúc của lớp không có dấu “;” như khai báo lớp trong ngôn ngữ C++ 3
  4. 4/10/2012 Ví dụ về định nghĩa lớp public class hocsinh { private string hoten; public int lop ; public void lenlop(); { lop = lop +1; } } // kết thúc khai báo lớp Ví dụ: Lớp tài khoản public class taikhoan { private float sodutk ; public void naptien(float sotien) { sodutk = sodutk + sotien; } public bool ruttien(float sotien) { if ( sodutk < sotien) return false ; else { sodutk = sodutk - tienrut; return true ; } } public float laysodu() { return sodutk ; } } Bổ từ truy cập (Access modifiers) Bổ từ truy Giới hạn truy cập cập public Không giới hạn. Những thành phần public có thể được dùng bởi bất cứ các phương thức của lớp bất kỳ. private Thành viên trong một lớp A được đánh dấu là private thì chỉ có thể được truy cập bởi các phương thức của lớp A. Thành viên trong lớp A được đánh dấu là protected thì chỉ có protected thể được truy cập các phương thức bên trong lớp A và những phương thức của những lớp dẫn xuất từ lớp A . 4
  5. 4/10/2012 Bổ từ truy cập (Access modifiers) Bổ từ truy Giới hạn truy cập cập Thành viên trong lớp A được đánh dấu là internal thì được internal 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 A. Thành viên trong lớp A được đánh dấu là protected protected internal được truy cập bởi các phương thức của lớp A, các internal phương thức của lớp dẫn xuất của A, và bất cứ lớp nào trong cùng khối hợp ngữ của A. Phương thức  Là các hàm khai báo bên trong lớp  Có trả về giá trị (int, float, string, object, vv)  Hoặc không trả về giá trị (void)  Một phương thức cài đặt hành vi của đối tượng  Khai báo phương thức (d/s tham số) { < câu lệnh> ; // thân phương thức } Tham số của phương thức  Có thể có 0 hoặc nhiều tham số.  Mỗi tham số phải khai báo kèm với kiểu dữ liệu  Bên trong thân của phương thức,  Các tham số này được xem như những biến cục bộ  Giống như biến ta khai báo bên trong phương thức và khởi tạo giá trị bằng giá trị của tham số truyền vào 5
  6. 4/10/2012 Tạo đối tượng  Sử dụng từ khóa new Đối tượng = new tênlớp()  Ví dụ:  taikhoan tk1 = new taikhoan();  hoặc taikhoan tk1 ; tk1 = new taikhoan();  Truy cập đến thành phần  . Ví dụ: lớp thời gian using System; public class ThoiGian { int Nam; int Thang; int Ngay; // Các thành viên private int Gio; int Phut; int Giay; public void ThoiGianHienHanh() { Console.WriteLine(“Hien thi thoi gian hien hanh”); } } Ví dụ: lớp thời gian public class Tester { static void Main() { ThoiGian t = new ThoiGian(); t.ThoiGianHienHanh(); } } 6
  7. 4/10/2012 Phương thức thiết lập (constructor)  Là một phương thức đặc biệt trong một lớp  Được gọi mỗi khi đối tượng được tạo  Không bắt buộc phải có, nhưng hữu ích cho việc khởi tạo các thành phần của đối tượng  Có cùng tên với tên lớp, được khai báo là public, không trả về giá trị (không sử dụng void)  Khi đó tạo đối tượng: đối tượng = new tênlớp(các tham số) Ví dụ: Phương thức thiết lập using System; public class Thang { private int days; public Thang(int songay) { days = songay; } static void Main() { Thang thang1 =new Thang(31); Thang thang4 = new Thang(30); Console.WriteLine (Thang1.days); } } Ví dụ: lớp Rectangle 7
  8. 4/10/2012 Phương thức thiết lập (tt)  Nếu không định nghĩa phương thức thiết lập, trình biên dịch sẽ cung cấp một phương thức thiết lập mặc định.  Phương thức thiết lập mặc định được tạo ra cho một đối tượng sẽ không thực hiện bất cứ hành động nào  Các thành viên lớp được khởi tạo các giá trị mặc định. Giá trị mặc định kiểu dữ liệu cơ bản Ví dụ: class MyClass { string myMsg; public MyClass (string msg) { myMsg = msg; } } class MyApp { MyClass c; public Main (string[] args) { c = new MyClass(); // Lỗi } } 8
  9. 4/10/2012 Ví dụ: lớp Time using System; using System.Collections.Generic; using System.Text; namespace DeclaringConstructor { public class Time { int Year; int Month; int Date; // private member variables int Hour; int Minute; int Second; Ví dụ: lớp Time (tt) public void DisplayCurrentTime( ) { System.Console.WriteLine( "{0}/{1}/{2} {3}:{4}:{5}", Month, Date, Year, Hour, Minute, Second ); } // phương thức thiết lập public Time( System.DateTime dt ) { Year = dt.Year; Month = dt.Month; Date = dt.Day; Hour = dt.Hour; Minute = dt.Minute; Second = dt.Second; } } // end class Time Ví dụ: lớp Time (tt) public class Kiemtra { static void Main( ) { System.DateTime currentTime =System.DateTime.Now; Time t = new Time( currentTime ); t.DisplayCurrentTime( ); } } } // end namespace 9
  10. 4/10/2012 Khởi tạo biến thành viên  Các biến thành viên có thể được khởi tạo trực tiếp khi khai báo trong quá trình khởi tạo private int Giay = 30; // Khởi tạo Nạp chồng phương thức thiết lập  Chúng ta có thể định nghĩa nhiều phương thức thiết lập trong một lớp  Với điều kiện  Danh sách các tham số phải khác nhau  Hoặc kiểu dữ liệu các các tham số phải khác nhau. Ví dụ public class taikhoan { private float sodutk ; private float gioihanrut; public taikhoan( int sd) { sodutk = sd; } public taikhoan (int sd, int lm) { sodutk = sd; gioihanrut = lm; } 10
  11. 4/10/2012 Ví dụ public void naptien(float sotiennap) { sodutk = sodutk + sotiennap; } public bool ruttien(float sotienrut) { if (sotienrut
  12. 4/10/2012 Ví dụ: … public class DaysInYear { private int days; public DaysInYear() { days = 365; } public DaysInYear(int day) { days = day; } public DaysInYear(String dayOne) { days =Convert.ToInt32(dayOne); } public void setDay(int newDays) { days = newDays; } … } Phương thức thiết lập sao chép  Để thực hiện việc tạo một đối tượng mới bằng cách sao chép tất cả các biến từ một đối tượng đã có và cùng một kiểu dữ liệu. public ThoiGian( ThoiGian tg) { Nam = tg.Nam; Thang = tg.Thang; Ngay = tg.Ngay; Gio = tg.Gio; Phut = tg.Phut; Giay = tg.Giay; } Phương thức thiết lập sao chép (tt)  Để sao chép từ một đối tượng đã hiện hữu t1 là đối tượng của lớp ThoiGian như sau:  ThoiGian t2 = new ThoiGian( t1 );  Lúc đó, đối tượng t2 được tạo ra như bản sao của đối tượng t1. 12
  13. 4/10/2012 Từ khóa this  Từ khóa this được dùng để tham chiếu đến thể hiện hiện hành của một đối tượng.  Được sử dụng để giải quyết sự xung đột về tên  Mỗi phương thức có thể tham chiếu đến những phương thức khác và các biến thành viên thông qua tham chiếu this này  Không thể sử dụng từ khóa this với các biến và phương thức tĩnh. Từ khóa this (tt)  Sử dụng khi các biến thành viên bị che lấp bởi tham số đưa vào, như trường hợp sau public void SetYear( int Nam) { this.Nam = Nam; }  Trong phương thức SetYear() có tham số (Nam) cùng tên với thành phần của lớp. Từ khóa this (tt)  Sử dụng tham chiếu this để gọi một phương thức nạp chồng từ một phương thiết lập khác : class myClass { public myClass(int i) { } public myClass( ) : this(42) { } } // end class 13
  14. 4/10/2012 Từ khóa this (tt)  Sử dụng this để gọi tường minh các thành phần và phương thức trong lớp public void MyMethod(int y) { int x = 0; x = 7; // gán biến cục bộ y = 8; // gán cho tham số this.z = 5; // gán cho thành phần lớp this.Draw( ); // gọi phương thức thành phần } Các thành viên tĩnh (static member)  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).  Những thành viên thể hiện hay thành viên của đối tượng, liên quan đến 1 thể hiện của lớp (một đối tượng).  Trong khi thành viên tĩnh được xem như một phần của lớp Các thành viên tĩnh (tt)  Để truy cập đến thành viên tĩnh của một lớp: .  Sử dụng từ khóa “static” để khai báo một thuộc tính hay một phương thức với thuộc về lớp 14
  15. 4/10/2012 Ví dụ: Phương thức tĩnh Các thành viên tĩnh (tt)  Chỉ có một bản sao của các thành phần tĩnh trong bộ nhớ, được chia sẽ bởi các thể hiển của lớp.  Ghi chú:  Trong C# không cho phép truy cập đến các thành viên tĩnh thông qua một thể hiện,  Nếu chúng ta cố làm điều đó thì trình biên dịch C# sẽ báo lỗi Ví dụ: thành viên tĩnh public class Counter { private Counter() { } public static int currentCount; public static int IncrementCount() { return ++currentCount; } } 15
  16. 4/10/2012 Ví dụ: thành viên tĩnh (tt) class TestCounter { static void Main() { Counter.currentCount = 100; Counter.IncrementCount(); System.Console.WriteLine("New count: {0}", Counter.currentCount); } } Các thành viên tĩnh (tt)  Các thuộc tính tĩnh rất hữu ích khi chúng ta muôn lưu trữ các trạng thái liên quan đến tất cả thể hiện của lớp  Phương thức tĩnh có tác dụng khi hành vi là chung cho của lớp chứ không phải một thể hiện cụ thể nào của lớp. Ví dụ sử dụng các thuộc tính tĩnh using System; public class Cat { private static int instance =0; public Cat() { instance++; } public static void HowManyCats() { Console.WriteLine(“{0} cats”, instance); } } 16
  17. 4/10/2012 Ví dụ sử dụng các thuộc tính tĩnh public class Tester { static void Main() { Kết quả: Cat.HowManyCats(); 0 cats Cat mun = new Cat(); 1 cats Cat.HowManyCats(); Cat muop = new Cat(); 3 cats Cat miu = new Cat(); Cat.HowManyCats(); } } Gọi một phương thức tĩnh  Main() là một phương thức tĩnh.  Các phương thức tĩnh không cần có tham chiếu this và một thể hiện nào tham chiếu tới.  Các phương thức tĩnh không thể truy cập trực tiếp đến các thành phần không tĩnh (nonstatic)  Ví dụ với Main() để gọi một phương thức không tĩnh (nonstatic), phải tạo ra một thể hiện lớp Ví dụ: using System; public class Class1 { public void SomeMethod(int p1, float p2) { Console.WriteLine(“Ham nhan duoc hai tham so: {0} va {1}”, p1,p2); } } public class Tester { static void Main() { int var1 = 5; float var2 = 10.5f; Class1 c = new Class1(); c.SomeMethod( var1, var2 ); } } 17
  18. 4/10/2012 Phương thức thiết lập tĩnh  Nếu một lớp khai báo một phương thức thiết lập tĩnh (static constructor), thì phương thức thiết lập tĩnh này sẽ được thực hiện trước bất cứ thể hiện nào của lớp được tạo ra.  Ghi chú:  Không thể điều khiển chính xác khi nào thì phương thức thiết lập tĩnh này được thực hiện.  Nó sẽ được thực hiện sau khi chương trình chạy và trước bất kì biến đối tượng nào được tạo ra. Ví dụ: Sử dụng hàm thiết lập tĩnh class A { public static int x; static A ( ) Sử dụng phương thức { thiết lập tĩnh để khởi đầu x = 0; các biến thành phần tĩnh } public void Increase() { x = x+1; } } Lưu ý về phương thức thiết lập tĩnh  1 lớp có thể định nghĩa duy nhất một phương thức thiết lập tĩnh  Phương thức thiết lập tĩnh thưc hiện duy nhất 1 lần cho dù chúng ta có tao ra một số bất kỳ các đối tượng  Phương thức thiết lập tĩnh không nhận bổ từ truy cập (private, public,..) và không nhận bất kỳ tham số nào.  Phương thức thiết lập tĩnh được thực hiện trước bất kỳ phương thức thiết lập mức thể hiện. 18
  19. 4/10/2012 Phương thức thiết lập private  Được sử dụng khi một lớp chỉ có các thành phần tĩnh, và đối tượng của lớp không cần tạo ra Phương thức thiết lập private (tt)  C# không có phương thức toàn cục và hằng số toàn cục (đều phải khai báo trong 1 lớp).  Sử dụng phương thức thiết lập private,khi cần tạo ra những lớp tiện ích nhỏ chỉ để chứa các phương thức tĩnh (lớp Math, Console)  Lưu ý:  Nếu một lớp có phương thức thiết lập private và không có phương thức thiết lập public, thì tất cả các lớp khác (ngoại trừ lớp lồng) không được phép tạo ra thể hiện của lớp này. Phương thức hủy (Destructors)  Không nhận tham số  Khai báo như phương thức thiết lập, có thêm ‘~’ vào trước  Được gọi bởi Garbage Collector trong C#  Garbage Collector giải phóng bộ nhớ bằng cách hủy những đối tượng không dùng nữa hoặc không tham chiếu đến nữa …  Cú pháp: ~() { ; } … 19
  20. 4/10/2012 Phương thức hủy (Destructors)  Lưu ý:  Có duy nhất 1 phương thức hủy trong 1 lớp  Không thể gọi tường minh phương thức hủy  Không nhận bất kỳ tham số nào  Khổng thể nạp chồng hay kế thừa  Không nhân các bổ từ truy cập Ví dụ: phương thức hủy Truyền tham số  Mặc định, các kiểu giá trị thì sẽ được truyền giá trị vào cho phương thức.  C# đưa ra khả năng cho phép ta truyền các tham số kiểu giá trị dưới hình thức là tham chiếu, sử dụng các bổ từ:  ref : Bắt buộc phải khởi tạo giá trị ban đầu cho tham số truyền vào  out: Không cần phải khởi tạo giá trị ban đầu cho tham số truyền vào. 20
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

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