Click to edit
Master subtitle
CHƯƠNG
2: 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
1
NỘI DUNG
Tạo Lớp
Thêm Field
Thêm Constructor
Thêm Phương thức (method/function)
Tạo đối tượng
Từ khóa ‘static’
Mảng đối tượng
2
3 nguyên tắc
lập trình hướng đối tượng
3 ngun tắc lập trình hướng đối tượng
Đóng gói (Encapsulation) và Giao diện (Interface)
Ẩn chi tiết của lớp (Đóng gói), chỉ cung cấp các phương thức
cần thiết để dùng (Giao diện)
Thừa kế (Inheritance)
Tạo lớp mới thừa kế lớp đã có
Đa hình (Polymorphism)
Khả năng tạo ra các lớp dẫn xuất, cài đặt cùng một method
của lớp cơ sở theo những cách khác nhau (tùy từng lớp dẫn
xuất)
4
TẠO LỚP
Tạo lớp
Lớ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
Lớp (class) gồm có:
Dữ liệu (dùng biến)
(fields)
Phương thức
(methods)
Cách tạo đối tượng (constructors)
6
Tạo lớp
Cú pháp:
[access modifier] class <ClassName>[:BaseClassName]
{
// Khai báo biến (Fields)
[access modifier] <type> VarName;
// Constructors
[public] ClassName([Parameters])
{}
}
// Phương thức (Methods)
[access modifier] <type> MethodName([Parameters])
{}
7
Tạo lớp
Ví dụ: Tạo lớp Book để mơ hình quyển sách
Trong Visual Studio
Click phải lên tên Project
Chọn Add Class …
Nhập tên lớp: Book
8
Tạo lớp
9
Tạo lớp
10
Tạo lớp
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CreatingClass
{
class Book
{
}
}
11
Thêm instance variable (field)
Bướ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
giả, số trang, số từ
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CreatingClass
{
class Book
{
private string title;
private string author;
private int pages;
private int wordCount;
}
}
12
Thêm instance variable (field)
Giả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, ngồ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
13
Thêm các constructors
Bướ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?
14
Thêm các constructors
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CreatingClass
{
class Book
{
private string title;
private string author;
private int pages;
private int wordCount;
}
}
public Book(string title)
{
this.title = title;
}
15
Thêm các constructors
Giải thích:
public access modifier: Muốn người ngồ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)
• Khơng có kiểu trả về
Nếu khơng viết constructor thì trình biên dịch sẽ
tạo cho chúng ta constructor không tham số
public Book()
{
}
16
Từ 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;
}
17
Từ khóa ‘this’
Phạ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
18
Từ khóa ‘this’
Name hiding
class Book
{
private string title;
private string author;
private int pages;
private int wordCount;
}
public Book(string title)
{
Console.Write(title);
}
19
Từ khóa ‘this’
Giả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
20
Từ khóa ‘this’
Từ khóa ‘this’
this tham chiếu đến đối tượng hiện tại mà chúng ta
đang ở trong đó
Khi ở trong lớp, có thể truy cập mọi thành viên
(field và method) của lớp thơng qua this
• Ví dụ: this.title, this.MethodName()
Cách dùng this
• 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
21
class Book
{
private string title;
private string author;
private int pages;
private int wordCount;
public Book(string title)
{
this.title = title;
}
public Book(string title, string author)
{
this.title = title;
this.author = author;
}
}
public Book(string title, string author, int pages, int wordCount)
{
this.title = title;
this.author = author;
this.pages = pages;
this.wordCount = wordCount;
}
22
Thêm Methods
Bướ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?
Gán số từ cho Book dựa trên nội dung cung cấp, …?
23
Thêm Methods
class Book
{
private string title;
private string author;
private int pages;
private int wordCount;
…
public string GetTitle()
{
return title;
}
public void SetTittle(string title)
{
this.title = title;
}
}
public void SetWordCoutFromText(string text)
{
wordCount = text.Split(' ').Length;
}
24
Thêm Methods
Giải thích:
Access Modifier của method:
• public: người dùng ở ngồ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)
25