Tải bản đầy đủ (.pptx) (30 trang)

Bài giảng Lập trình hướng đối tượng Chương 4 Trường Đại học Ngoại ngữ Tin học

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (167.91 KB, 30 trang )

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

1


NỘI DUNG
Lý do dùng properties
Tạo properties
Auto – Implemented properties
Object Initializer

2


Lý do dùng properties


Lý do dùng properties
Ví dụ:
class Time
{
private int seconds;
}
Nhu cầu: Bên ngồi lớp có thể truy cập giá trị


seconds

4


Lý do dùng properties
Giải pháp “cổ điển”: Tạo method trả về giá trị
second và 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;
}

5


Lý do dùng properties
Nhận xét

Nhu cầu dùng method get và set cực kỳ nhiều
Cách viết trên có một chút “cồng kềnh”
class Program
{
public static void Main()
{
Time time = new Time();

}

}

int x = time.GetSeconds();
time.SetSeconds(90);

6


Lý do dùng properties
Một cách cực kỳ “thuận lợi” nhưng không ai 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 1 giải pháp cho vấn đề này là Property
7


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;
}

9


Tạo properties
Khai báo property: có 3 phần
Từ khóa ‘public’: Ai cũng có thể dùng property
Kiểu của property

Tên property

Thân của property
get: thực thi khi ai đó đọc giá trị của property
set: thực thi khi ai đó gán giá trị cho property

10


Tạo properties
Nội dung của get và set giống hàm GetSeconds
và SetSeconds
Hàm SetSeconds có tham số cịn set khơng có
tham số mà dùng từ khóa value đại diện cho
giá trị gán cho property

11


Tạo properties
class Program
{
public static void Main()
{
Time time = new Time();

class Program
{
public static void Main()
{

Time time = new Time();

time.Seconds = 90;

time.SetSeconds(90);

}

}

}

}

12


Tạo properties
Tóm tắt
<modifier> <type> <PropertyName>
{
get
{

return …;
}
set
{

}

}
13


Tạo properties
Backing field
Property có get hay set giá trị cho field thì field đó
gọi là backing field của property
Một property khơng nhất thiết có backing field

14


Tạo properties
class Time
{
private int seconds;
public int Seconds
{
get
{
return seconds;
}
set
{
seconds = value;
}
}

public int Minutes

{
get
{
return seconds/60;
}
}

}

public int Hours
{
get
{
return seconds/3600;
}
}

15


Bài tập thực hành 4.1
Trong lớp TaiKhoan ở bài tập 3.1
thay thế các phương thức Get/Set
thành các properties. Và kiểm tra
tính hợp lệ trước khi thay đổi dữ
liệu của field.
Số tiền phải là số dương (Sotien > 0)

16



Bài tập thực hành 4.2
Trong lớp Sach ở bài tập 3.4 thay
thế các phương thức Get/Set
thành các properties. Và kiểm tính
hợp lệ trước khi thay đổi dữ liệu
của field.
Tên sách không được là chuỗi rỗng.
Giá sách phải là số dương.
17


Bài tập thực hành 4.3
Trong lớp SinhVien ở bài tập 3.2 thay
thế các phương thức Get/Set thành
các properties. Và kiểm tính hợp lệ
trước khi thay đổi dữ liệu của field.
Họ tên không được là chuỗi rỗng.
Năm sinh phải là số dương.
Địa chỉ không được là chuỗi rỗng.
18


Bài tập thực hành 4.4
Trong lớp Circle ở bài tập 3.3 thay
thế các phương thức Get/Set
thành các properties. Và kiểm tính
hợp lệ trước khi thay đổi dữ liệu
của field.
Bán kính phải lớn hơ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 và Property

21


Object initializer


Object Initializer
Khi tạo đối tượng, có thể dùng các 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 chính
Lý do dùng properties
Truy cập field
Code dễ đọc


Một field khơng nhất thiết chỉ có 1 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


×