Biến lớp
Lưu trữ tình trạng của đối tượng
Sử dụng cách khai báo biến thông thường
Thêm mức truy xuất
Ví dụ
public int tuSo;
private int mauSo
protected soBanhXe;
Truy xuất biến lớp:
tenDoiTuong.bienLopPhương thức (method)
Các hàm bên trong lớp
Mô tả hoạt động của đối tượng
Thêm mức truy xuất khi khai báo
Truy xuất phương thức
tenBien.TenPhuongThuc();
Ví dụ:
• PhanSo a = new PhanSo();
• a.ToiGian();
• PhanSo b = a.NhanMotSo(2);static
Dùng cho các thành phần lớp không phụ
thuộc vào đối tượng cụ thể
Có thể truy cập trong bản thân lớp
Được truy cập trực tiếp từ tên lớp
Phương thức static chỉ truy cập được
những thành viên static của lớp
Truy cập:
TenLop.TenBien
TenLop.TenPhuongThuc()
35 trang |
Chia sẻ: trungkhoi17 | Lượt xem: 433 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Bài giảng Lập trình C# - Chương 4: Lớp và đối tượng, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Chương 4
Lớp và đối tượng
Nội dung
Khái niệm đối tượng
Các mức truy xuất
Các thành phần của lớp
Đối tượng
Khái niệm đối tượng (object) trong lập
trình hướng đối tượng giống như một đối
tượng cụ thể trong thế giới thực.
Mỗi đối tượng có các thuộc tính và các
hành vi riêng.
Thuộc tính (attribute) mô tả đặc điểm của đối
tưởng.
Hành vi là phương thức hoạt động của đối
tượng, gọi tắt là phương thức (method).
Đối tượng
Ví dụ: Phân số
Đặc điểm
Tử số
Mẫu số
Thao tác
Cộng, trừ, nhân, chia
Tối giản
Nghịch đảo
Đối tượng
Ví dụ: xe hơi
Màu trắng
4 cửa
4 bánh
Hiệu Toyota
Chạy tới
Chạy lui
Xe dừng
Đối tượng
Đối tượng:
XeHoi
Hiệu xe
Màu xe
Số bánh xe
Số cửa
Chạy tới
Chạy lui
Dừng xe
Tên đối tượng
Thuộc tính
Phương thức
Đối tượng
Các đối tượng có các đặc điểm (thuộc tính
và phương thức) giống nhau được gom
nhóm thành một lớp để phân biệt với các
đối tượng khác và dễ quản lý.
Một lớp (class) là sự phân loại của các
đối tượng hay là kiểu (type) của đối
tượng.
Ví dụ:
− Các chiếc xe Toyota, Honda, Porsche thuộc
lớp xe hơi.
• Các con chó giữ nhà, chó săn, chó kiểng
thuộc lớp chó.
Khai báo đối tượng
class TenLop
{
//khai báo biến lớp
kieubien tenBien1;
kieubien tenBien2;
//khai báo phương thức
PhuongThuc1();
PhuongThuc2();
}
Khởi tạo đối tượng
TenLop tenBien = new TenLop();
Ví dụ:
PhanSo a = new PhanSo();
XeHoi b = new XeHoi();
Khai báo đối tượng
Đối tượng phân số:
class PhanSo
{
//khai báo biến lớp
int tuSo;
int mauSo;
//khai báo phương thức
...
}
Mức truy xuất
public
Có thể truy xuất ở mọi nơi khác
private
Chỉ có thể truy xuất ở trong class
protected
Chỉ có thể truy xuất ở trong class hoặc class
kế thừa
Biến lớp
Lưu trữ tình trạng của đối tượng
Sử dụng cách khai báo biến thông thường
Thêm mức truy xuất
Ví dụ
public int tuSo;
private int mauSo
protected soBanhXe;
Truy xuất biến lớp:
tenDoiTuong.bienLop
Phương thức (method)
Các hàm bên trong lớp
Mô tả hoạt động của đối tượng
Thêm mức truy xuất khi khai báo
Truy xuất phương thức
tenBien.TenPhuongThuc();
Ví dụ:
• PhanSo a = new PhanSo();
• a.ToiGian();
• PhanSo b = a.NhanMotSo(2);
static
Dùng cho các thành phần lớp không phụ
thuộc vào đối tượng cụ thể
Có thể truy cập trong bản thân lớp
Được truy cập trực tiếp từ tên lớp
Phương thức static chỉ truy cập được
những thành viên static của lớp
Truy cập:
TenLop.TenBien
TenLop.TenPhuongThuc()
Hàm khởi tạo (constructor)
Khởi tạo giá trị ban đầu cho đối tượng khi
khai báo
Cùng tên với tên lớp
Không khai báo kiểu trả về
Khai báo:
class TenLop
{
public TenLop()
{
...
}
}
Constructor mặc định
Là constructor không có tham số và không
thực hiện lệnh gì cả
Nếu không khai báo constructor thì trình
biên dịch sẽ tự thêm constructor mặc định
Constructor
Một lớp có thể có nhiều constructor
Các constructor khác nhau về tham số
Số tham số
Kiểu tham số
Đối tượng được khởi tạo theo constructor
tương ứng khi khai báo
Chú ý: Khi khai báo constructor khác,
constructor mặc định sẽ không có. Nếu
muốn sử dụng thì phải khai báo lại.
Constructor
class PhanSo
{
//khai báo biến lớp
public int tuSo;
public int mauSo;
public PhanSo()
{
tuSo = 0;
mauSo = 1;
}
public PhanSo(int ts, int ms)
{
tuSo = ts;
mauSo = ms;
}
}
Constructor
Khởi tạo đối tượng phân số có tử số = 0,
mẫu số = 1:
PhanSo a = new PhanSo();
PhanSo b = new PhanSo(0, 1);
Khởi tạo đối tượng phân số có tử số = 1,
mẫu số = 2
PhanSo c = new PhanSo(1, 2)
Tham chiếu this
Tham khảo đến đối tượng hiện hành
Trong trường hợp đặt tên tham số trùng
với tên biến lớp, sử dụng this để chỉ biến
lớp class PhanSo
{
public int tuSo;
public int mauSo;
public PhanSo(int tuSo, int mauSo)
{
this.tuSo = tuSo;
this.mauSo = mauSo;
}
}
Truyền đối tượng vào phương thức
Đối tượng là kiểu tham chiếu
Nếu có câu lệnh tác động đến giá trị các
biến lớp của đối tượng trong phương thức
đối tượng bị thay đổi sau khi hoàn tất
phương thức.
Chương 4
Lớp và đối tượng
Nội dung
Thuộc tính
Operator
Bảo vệ truy cập biến lớp
Thay đổi tên biến thay đổi code ở
những chỗ dùng biến?
Hạn chế người dùng thay đổi giá trị biến?
Kiểm tra hợp lệ khi gán giá trị biến?
Biến chỉ đọc (read only)?
Truy cập giá trị là kết quả của việc xử lý
các biến lớp?
Bảo vệ truy cập biến lớp
Không cho phép truy cập biến lớp
dùng hàm để truy cập
class PhanSo
{
private int tuSo;
public int mauSo;
public int LayTuSo()
{
return tuSo;
}
public void GanTuSo(int gt)
{
tuSo = gt;
}
}
Thuộc tính
Dùng để bảo vệ việc truy cập biến lớp
Cho phép chỉnh sửa code không làm ảnh
hưởng nhiều đến chương trình
Thuộc tính
class PhanSo
{
private int tuSo;
private int mauSo;
public int TuSo
{
get { return tuSo; }
set { tuSo = value; }
}
public int MauSo
{
get { return mauSo; }
set { mauSo = value; }
}
}
Kiểm tra hợp lệ
class PhanSo
{
private int tuSo;
private int mauSo;
public int TuSo { }
public int MauSo
{
get { return mauSo; }
set
{
if(value == 0)
mauSo = 1;
else
mauSo = value;
}
}
}
Thuộc tính chỉ đọc
Không cho người dùng sửa giá trị biến
Chỉ có get, không có set
class PhanSo
{
private int tuSo;
private int mauSo;
private double giaTri;
public double GiaTri
{
get { return giaTri; }
}
public double LayGiaTri()
{
giaTri = (double)tuSo / (double)mauSo;
return giaTri;
}
}
Thuộc tính là kết quả xử lý
class PhanSo
{
private int tuSo;
private int mauSo;
private double giaTri;
public int TuSo{}
public int MauSo{}
public double GiaTri
{
get { return (double)tuSo / (double)mauSo; }
}
}
Toán tử
Các phép tính +, -, *, /
Phép so sánh >, =, <=
Các kiểu xây dựng sẵn (int, string,
double) sử dụng được toán tử.
Các kiểu do người dùng tạo cũng cần
toán tử
Ví dụ:
• Phân số
• Số La Mã
Thực hiện bằng hàm
Xây dựng hàm để thực hiện tính toán
class PhanSo
{
private int tuSo;
private int mauSo;
public PhanSo Cong(PhanSo b)
{
PhanSo c = new PhanSo();
c.TuSo = this.MauSo * b.TuSo + this.TuSo * b.MauSo;
c.MauSo = this.MauSo * b.MauSo;
return c;
}
}
Sử dụng toán tử
public static PhanSo operator +(PhanSo trai, PhanSo phai)
{
PhanSo c = new PhanSo();
c.TuSo = trai.MauSo * phai.TuSo
+ trai.TuSo * phai.MauSo;
c.MauSo = trai.MauSo * phai.MauSo;
return c;
}
Sử dụng toán tử
Các toán tử logic phải đi đôi với nhau
> và <
>= và <=
== và !=
Lưu ý
Sử dụng toán tử đúng chỗ, hợp lý
Nên sử dụng đúng ý nghĩa toán tử (toán
tử + thì nên là phép cộng)
Sử dụng toán tử để thực hiện công việc
đơn giản
Các file đính kèm theo tài liệu này:
- bai_giang_lap_trinh_c_chuong_4_lop_va_doi_tuong.pdf