Bài giảng Lập trình hướng đối tượng Chương 4 Properties cung cấp cho người học các kiến thức Lý do dùng properties, tạo properties, auto – Implemented properties, object Initializer. Mời các bạn cùng tham khảo nội dung chi tiết.
Click to edit Master subtitle CHƯƠNG 4: style PROPERTIES Khoa Công nghệ thông tin Trường Đại học Ngoại ngữ - Tin học, TP.HCM NỘI DUNG Lý dùng properties Tạo properties Auto – Implemented properties Object Initializer Lý dùng properties Lý dùng properties Ví dụ: class Time { private int seconds; } Nhu cầu: Bên lớp truy cập giá trị seconds Lý dùng properties Giải pháp “cổ điển”: Tạo method trả giá trị second method gán giá trị cho second class Time { private int seconds; public int GetSeconds() { return seconds; } } public void SetSeconds(int seconds) { this.seconds = seconds; if (this.seconds < 0) this.seconds = 0; } Lý dùng properties Nhận xét Nhu cầu dùng method get set nhiều Cách viết có chút “cồng kềnh” class Program { public static void Main() { Time time = new Time(); } } int x = time.GetSeconds(); time.SetSeconds(90); Lý dùng properties Một cách “thuận lợi” không dùng class Time { public int seconds; } class Program { public static void Main() { Time time = new Time(); } } int s = time.seconds; time.seconds = 90; C# cung cấp giải pháp cho vấn đề Property Tạo properties Tạo properties class Time { private int seconds; } public int Seconds { get { return seconds; } set { this.seconds = value; if (this.seconds < 0) this.seconds = 0; } } class Time { private int seconds; public int GetSeconds() { return seconds; } } public void SetSeconds(int seconds) { this.seconds = seconds; if (this.seconds < 0) this.seconds = 0; } Tạo properties Khai báo property: có phần Từ khóa ‘public’: Ai dùng property Kiểu property Tên property Thân property get: thực thi đọc giá trị property set: thực thi gán giá trị cho property 10 Bài tập thực hành 4.1 Trong lớp TaiKhoan tập 3.1 thay phương thức Get/Set thành properties Và kiểm tra tính hợp lệ trước thay đổi liệu field Số tiền phải số dương (Sotien > 0) 16 Bài tập thực hành 4.2 Trong lớp Sach tập 3.4 thay phương thức Get/Set thành properties Và kiểm tính hợp lệ trước thay đổi liệu field Tên sách không chuỗi rỗng Giá sách phải số dương 17 Bài tập thực hành 4.3 Trong lớp SinhVien tập 3.2 thay phương thức Get/Set thành properties Và kiểm tính hợp lệ trước thay đổi liệu field Họ tên không chuỗi rỗng Năm sinh phải số dương Địa không chuỗi rỗng 18 Bài tập thực hành 4.4 Trong lớp Circle tập 3.3 thay phương thức Get/Set thành properties Và kiểm tính hợp lệ trước thay đổi liệu field Bán kính phải lớn không 19 Auto – implemented properties Auto – Implemented properties class Time { private int seconds; } public int Seconds { get { return seconds; } set { seconds = value; } } class Time { public int Seconds { get; set; } } Nhận xét AIP tự động tạo backing field Property 21 Object initializer Object Initializer Khi tạo đối tượng, dùng properties để khởi tạo giá trị class Book { private string title; private string author; private int pages; public string Title { get { return title; } set { title = value; } } public string Author { get { return author; } set { author = value; } } } public int Pages { get { return pages; } set { pages = value; } } 23 Object Initializer class Program { static void Main(string[] args) { Book book = new Book() { Title = "Don't Make Me Think", Author= "Steve Krug" }; } } class Program { static void Main(string[] args) { Book book = new Book(); } } book.Title = “Don't Make Me Think”; book.Author = “Steve Krug”; 24 Điểm Lý dùng properties Truy cập field Code dễ đọc Một field không thiết có property Auto – Implemented properties Vừa tạo properties vừa tạo fields Object Initializer Dùng tạo{ Title đối =tượng Book bookfield = newkhi Book() "Don't Make Me Think", Author= "Steve Krug" }; 25 Bài tập thực hành 4.5 Trong lớp Circle tập 4.4 vừa cài đặt Tạo mảng đối tượng lớp Circle Trong phương thức Main() thực yêu cầu sau: Khai báo nhập n hình trịn Xuất thơng tin n hình trịn hình Tính xuất diện tích hình trịn Tìm diện tích lớn n hình trịn 26 Bài tập thực hành 4.6 Tạo lớp Color biểu diễn giá trị red, green, blue (có giá trị từ đến 255) alpha (transparency – suốt – từ đến 255: suốt, 255 đậm đặc) Thêm instance variables (fields) Thêm default constructor (255,255,255: white) Thêm constructor có tham số Thêm copy constructor Thêm properties Thêm phương thức tính giá trị xám màu (tính trung bình cộng màu) 27 Bài tập thực hành 4.7 Tạo lớp Ball, sử dụng lớp Color làm field Gồm fields: kích thước (size hay radius), màu sắc (color) số lần ném banh (timeOfThrown) Khai báo fields cho Ball (field color nên dùng kiểu Color tạo từ trước) Thêm default constructor: size=0, soLanNem=0, màu mặc địn Thêm constructor có tham số Thêm copy constructor Thêm properties (có kiểm tra ràng buộc) Thêm phương thức Pop (banh nổ => size=0) 28 Bài tập thực hành 4.7 (tt) Tạo lớp Ball (tt) Thêm phương thức Throw (cộng thêm banh chưa bị nổ) Thêm phương thức Input() để nhập thông tin trái banh Thêm phương thức Output() để xuất thông tin trái banh Viết phương thức Main() • Khai báo tạo n trái banh có giá trị mặc định (n nhập từ bàn phím) • Nhập lại thơng tin trái banh thứ • Xuất n trái banh • Ném trái banh thứ 1, • Cho nổ trái thứ ném trái thứ • In số lần ném trái banh 29 Tài liệu tham khảo tập Bài tập OOP ThS Tôn Quang Toại, Khoa CNTT, Huflit, 2016 30 ... tạo{ Title đối =tượng Book bookfield = newkhi Book() "Don''t Make Me Think", Author= "Steve Krug" }; 25 Bài tập thực hành 4. 5 Trong lớp Circle tập 4. 4 vừa cài đặt Tạo mảng đối tượng lớp Circle... hành 4. 2 Trong lớp Sach tập 3 .4 thay phương thức Get/Set thành properties Và kiểm tính hợp lệ trước thay đổi liệu field Tên sách không chuỗi rỗng Giá sách phải số dương 17 Bài tập thực hành 4. 3... 28 Bài tập thực hành 4. 7 (tt) Tạo lớp Ball (tt) Thêm phương thức Throw (cộng thêm banh chưa bị nổ) Thêm phương thức Input() để nhập thông tin trái banh Thêm phương thức Output() để xuất thơng tin