Bài giảng Lập trình hướng đối tượng Chương 2 Lớp và đối tượng cung cấp cho người học các kiến thức Tạo lớp, tạo đối tượng, từ khóa ‘static’, mảng đối tượng. Mời các bạn cùng tham khảo nội dung chi tiết.
Trang 1Click to edit Master subtitle style
LỚP VÀ ĐỐI TƯỢNG
Khoa Công nghệ thông tin Trường Đại học Ngoại ngữ - Tin học, TP.HCM
CHƯƠNG 2:
Trang 2Tạo Lớp
Thêm FieldThêm ConstructorThêm Phương thức (method/function)
Tạo đối tượng
Từ khóa ‘ static ’
Mảng đối tượng
NỘI DUNG
Trang 33 NGUYÊN TẮC LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Trang 4Đóng gói (Encapsulation) và Giao diện (Interface)
cần thiết để dùng (Giao diện)
3 nguyên tắc lập trình hướng đối tượng
Trang 5TẠO LỚP
Trang 6Lớp (class) dùng để mô hình các đối tượng
thực thành các đối tượng trong chương trình
Trang 7Cú pháp:
Tạo lớp
[access modifier] class < ClassName >[:BaseClassName]
{
// Khai báo biến (Fields)
[access modifier] <type> VarName;
Trang 8Ví dụ: Tạo lớp Book để mô hình quyển sách
Trong Visual Studio
Click phải lên tên Project
Nhập tên lớp: BookTạo lớp
Trang 9Tạo lớp
Trang 10Tạo lớp
Trang 11class Book {
}
}
Trang 12Bước 1: Thêm các biến ( field ) vào lớp
Giả sử lớp Book chứa các thông tin: tựa sách, tác
class Book {
private string title;
private string author;
private int pages;
private int wordCount;
} }
Trang 13Giải thích:
Các field là các biến cục bộ (local variable)
Các field có thể truy cập (dùng hoặc thay đổi) mọi nơi trong lớp
• Từ các Phương thức trong lớp
• Từ các Constructors
Access Modifier của Field
• private: field được truy cập trong lớp, ngoài lớp không truy cập được
• public: field được truy cập mọi nơi, kể cả ngoài lớp
Thêm instance variable (field)
Trang 14Bước 2: Cho biết cách tạo đối tượng
Xem xét lại các field: Khi đối tượng tạo ra, field nên
có giá trị gì thì hợp lý?
Ví dụ:
• Khi tạo 1 quyển sách mà không có title được không?
• Khi tạo 1 quyển sách, phần lớn một quyển sách có thông
tin thông thường gì?
• Khi tạo 1 quyển sách, chúng ta muốn cung cấp đầy đủ
thông tin không?
Thêm các constructors
Trang 15class Book {
private string title;
private string author;
private int pages;
private int wordCount;
public Book(string title) {
this.title = title;
}
} }
Trang 16Giải thích:
public access modifier: Muốn người ngoài lớp có thể tạo đối tượng Book
Constructor giống method, nhưng có 2 khác biệt:
• Tên constructor giống tên lớp (Book)
Trang 17Từ khóa ‘this’
namespace CreatingClass {
class Book {
private string title; private string author;
private int pages;
private int wordCount;
public Book(string title ) {
this.title = title ; }
} }
Trang 18Phạm vi của biến (variable scope)?: Là những
nơi trong chương trình mà biến có thể truy cập
Class scope : Truy cập trong cả lớp
Method scope : Truy cập trong method
Block scope : Truy cập trong khối
Từ khóa ‘this’
Trang 19Name hiding
Từ khóa ‘this’
class Book {
private string title;
private string author;
private int pages;
private int wordCount;
}
Trang 20Giải quyết vấn đề Name hiding: Có 3 cách
Đặt tên tham số khác với tên field
Tên field bắt đầu là m_ (member):
• m_title,
• m_author, …
Dùng từ khóa ‘this’
• Đặt tên field và tên tham số giống nhau (name hiding xảy ra)
• Dùng từ khóa this khi muốn tham chiếu đến field
Từ khóa ‘this’
Trang 21• Thông thường không cần dùng this
• Khi name hiding xảy ra, dùng this để truy cập đến field của lớp
Từ khóa ‘this’
Trang 22class Book
{
private string title;
private string author;
private int pages;
private int wordCount;
public Book (string title)
Trang 23Bước 3: Hình dung lớp cần cung cấp những chức năng gì (method nào)?
Ví dụ: Người dùng lớp Book có muốn
Truy cập lấy title của Book?
Gán title khác cho Book?
Thêm Methods
Trang 24Thêm Methods
class Book {
private string title;
private string author;
private int pages;
private int wordCount;
Trang 25Giải thích:
Access Modifier của method:
• public: người dùng ở ngoài lớp có thể gọi phương thức
• private: Phương thức chỉ được gọi bên trong lớp
Phương thức bắt đầu Get, Set
• Get: Phương thức trả về giá trị
• Set: Phương thức gán giá trị (thường kiểm tra giá trị
trước khi gán)
Thêm Methods
Trang 26TẠO ĐỐI TƯỢNG
Trang 27Tạo đối tượng
Console WriteLine(book.GetTitle());
book.SetTittle ( "Mindset: How You Can Fulfil Your Potential" );
Console WriteLine(book.GetTitle());
}
}
Trang 28TỪ KHÓA ‘STATIC’
Trang 29Thành viên được đánh dấu static
Thành viên này không thuộc đối tượng (object/instance) Thành viên được shared cho các đối tượng (objects/instances)
Static variable
Biến được đánh dấu static phía trước Biến này shared cho các đối tượng Dùng tên lớp để truy cập biến
Từ khóa ‘static’
class Something {
public static int sharedNum;
}
Trang 30Static method
Gọi Method không cần tạo đối tượngDùng tên lớp để gọi method
Trong static method, không được truy cập instance variable
Từ khóa ‘static’
class Something {
public static void SharedMethod() {
} }
Trang 31Static class
Class được đánh dấu static phía trước
Tất cả member đều phải là static
Thường dùng để tạo các method tiện ích
public static int shareNumber;
public static void SharedMethod() {
}
Trang 32Static constructor
Constructor được đánh dấu static phía trước
Dùng để khởi tạo các biến static
Hàm static constructor được chạy khi lần đầu tiên
dùng lớp
Từ khóa ‘static’
class Something {
public static int sharedNumber;
static Something()
{
sharedNumber = 8;
}
Trang 33CLASS ACCESS MODIFIER
Trang 34Lớp (class) có 2 access modifier:
internal: Lớp chỉ được dùng trong 1 project hay 1 assembly
public: Lớp được dùng trong các project hay các assembly
Class access modifier
internal class Something
{
}
public class Something
{ }
class Something
{ }
Trang 35Cho bài toán đăng ký học phần (DangKyHP) Hãy thiết kế
lớp đối tượng theo yêu cầu sau:
• Thông tin đối tượng “học phần” (HocPhan): Mã học
phần, tên học phần, số lượng đăng ký tối đa và số lượng đăng ký hiện tại
lớp, hủy đăng ký một SV và hiển thị thông tin học phần, sao cho:
bằng định mức
sinh viên nào đăng ký
Bài tập
Trang 36MẢNG ĐỐI TƯỢNG
Trang 37• Khai báo thuộc tính
ClassName[] arrayName;
arrayName = new ClassName[size];
• size: Kích thước
• Các phần tử sẽ mang giá trị null
Mảng đối tượng
Trang 38• Tạo mới phần tử thứ i trong mảng đối tượng
arrayName[i] = new ClassName();
!!!Số lần khởi tạo đối tượng là số lượng mảng
(dùng vòng lặp)
Mảng đối tượng
Trang 39Bổ sung vào chương trình đăng ký học phần một lớp quản lý
học phần (MangHocPhan) bao gồm các chức năng:
được người dùng nhập từ bàn phím
trong danh sách học phần có sẵn Mỗi lần đăng ký xong, hỏi lại người dùng có tiếp tục không
nào đó Mỗi lần hủy đăng ký xong, hỏi lại người dùng có tiếp tục không
tiếp tục
Bài tập về nhà
Trang 40Lớp nên nằm trong một file riêng (C# không bắt buộc)
Cách tạo lớp, các phần trong lớp gọi là member