Trang 1
ÔN TÂ
P
LÂ
P TRÌNH HƯNG ĐI TƯỢNG (OOP)
OBJECT (đối tượng) một thực thể trong thế giới thực, chẳng hạn như bàn, quả bóng, con
bò, Lập trình hướng đối tượng một phương pháp để thiết kế một chương trình sử dụng các
lớp các đối tượng. làm đơn giản hóa việc duy trì và phát triển phần mềm bằng việc cung
cấp một số khái niệm:
ĐỐI TƯỢNG: Một thực thể trạng thái hành vi. dụ như xe đạp, bàn, ghế,
LỚP: Một tập hợp các đối tượng. một thực thể logic.
CÁC ĐẶC ĐIỂM CỦA LÂP TRÌNH HƯỚNG ĐỐI TƯỢNG:
Tính đóng gói: Đó gắn kết code dữ liệu cùng với nhau vào trong một đơn vị.
việc che giấu việc thực thi chi tiết cu
a mt đối tượng. Người dùng không phụ thuộc vào
việc sửa đổi sự thực thi bên trong.
dụ: thể bạn đã biết đến viên thuốc con nhộng (hay đơn giản n gói bột giặt),
các viên thuốc (hạt bột giặt) khác nhau được đóng gói.
Lưu ý: Một điểm quan trọng trong giao tiếp giữa các đối tượng một đối tượng sẽ
không được truy xuất trực tiếp vào thành phần dữ liệu cu
a đối tượng khác cũng như
không đưa thành phần dữ liệu cu
a mình cho đối tượng khác một cách trực tiếp.
Tính kế thừa: Các loại đối tượng khác nhau thường chung một số đặc điểm. Tư
những lớp đối tượng đã ta thể đặc tả lớp đối tượng mới, lớp mới sẽ mang đặc tính
cu
a lớp đã có (di truyền) + đặc tính riêng cu
a nó.
Con = Cha + (riêng cu
a con ma
cha không có)
Mục đích: Tiết kiệm công sư
c viết code và test.
Tính đa hình.
CÁC BƯỚC THIẾT KẾ THEO OOP:
Xác định các dạng đối tượng (lớp) cu
a bài toán.
Tìm kiếm các đặc tính chung (dữ liệu chung) trong các dạng đối tượng này, những
chúng cùng nhau chia sẽ.
Xác định lớp sở dựa trên sở các đặc tính chung cu
a các dạng đối ng.
Tư
lớp sở, xây dựng các lớp dẫn xuất chư
a các thành phần, những đặc tính không
chung còn lại cu
a các dạng đối tượng.
Trang 2
Quan hệ giữa các đối tượng (sử dụng hay kế thư
a).
I.
THỪA KẾ (INHERITANCE)
1.
do sử dụng:
Sử dụng lại những đoạn code sẵn
Hoặc phát triển thêm tư
những code sẵn không phải viết lại tư
đầu
2.
Khái niệm:
Lớp cha hay còn gọi lớp sở ( base class)
Lớp con hay còn gọi là lớp dẫn xuất (derived class), có cùng tập thuộc tính và hành
vi tư
lớp sở, cộng thêm tập thuộc tính và hành vi cu
a riêng nó.
3.
hình:
4.
Tạo lớp dẫn xuất:
class Person
{
string Email, Name;
//…
}
class Student : Person
{
public string StudentID;
public Student(string Email,string Name,string studentID): base(Email, Name)
{
this.StudentID = studentID;
}
}
Lưu ý:
Trang 3
Một lớp thể thư
a kế tư
lớp lớp đó lại thư
a kế tư
lớp khác.
Một lớp chỉ kế thư
a tư
một lớp (đơn kế thư
a).
Lớp dẫn xuất sẽ thư
a kế: Fields, Methods, (không phải private).
Lớp dẫn xuất không thừa kế Constructor
Khi lớp dẫn xuất định nghĩa constructor, nó cần gọi một trong những constructor cu
a lớp
cơ sở (sử dụng tư
khóa base).
Mặc định, constructor cu
a lớp dẫn xuất gọi constructor không tham số cu
a lớp sở.
Bất kỳ lớp nào cũng có thể làm lớp sở.
II.
ĐA HÌNH (polymorphism, poly = many, morphism = forms)
khả năng thực hiện khác nhau cho cùng một hành vi (Overloading), kỹ thuật cho phép thay
đổi nội dung cu
a cùng một hành vi trong 2 lớp cha con (Overriding).
1.
Overloading: (nạp chồng) phương thư
c trong cùng một lớp: giữ tên, thay đổi giá trị trả
về và danh sách tham số.
2.
Overriding (ghi đè) phương thư
c trong lớp cha lớp con: giữ nguyên tên, giá trị trả về
và đối số (không thay đổi nguyên mẫu phương thư
c).
Các lớp dẫn xuất cài đặt cùng một phương thư
c cu
a lớp sở, nhưng mỗi lớp dẫn xuất
cách cài đặt khác nhau:
Các bước xây dựng Overriding:
Phương thư
c Move() lớp
public class Car
{
Trang 4
public void Move()
{
//...
}
}
Lớp dẫn xuất (LandRover, Honda, Ford): có thể cung cấp một cách cài đặt khác cu
a
phương thư
c Move() sử dụng tư
khóa Override.
public class LandRover: Car
{
public override void Move()
{
//
}
}
Lưu ý:
Chúng ta không phải bắt buộc phải override tất cả các phương thư
c tư
lớp sở.
Chúng ta có thể gọi phương thư
c Move(). Tùy theo kiểu thực sự mà các cài đặt khác
nhau sẽ được gọi.
Tư
khóa base:
o
Truy cập các constructor cu
a lớp sở
o
Truy cập các thành viên không private tư
lớp sở
public override void Move()
{
base.Move();
//
}
III.
ABSTRACT CLASS, ABSTRACT METHOD
Lớp trừu tượng (Abstract Class) là lớp dùng để định nghĩa những thuộc tính và hành vi chung
cu
a những lớp khác.
Hay nói cách khác: Lớp trừu tượng là lớp dùng để khai báo thuộc tính và phương thư
c cho các
lớp khác sử dụng.
Phương thức trừu tượng:
Chỉ phần khai báo, không phần ca
i đặt.
Được khai báo lớp sở phải được cài đặt lại tất các các lớp kế thư
a.
Cú pháp:
abstract public <Kiểutrảvề> <Tên_PT>(<DSTS>);
Trang 5
Lưu ý:
Lớp trư
u tượng không khởi tạo được đối tượng, nhưng cho phép thư
a kế để tạo ra lớp
con.
Tư
khóa abstract được dùng để định nghĩa một lớp trư
u tượng.
Một lớp chư
a tư
một phương thư
c trư
u tượng thì phải khai báo lớp trư
u tượng.
Một lớp trư
u tượng thể chư
a cả phương thư
c trư
u tượng (không phần cài đặt)
phương thư
c có cài đặt.
Một phương thư
c trư
u tượng không sử dụng từ truy xuất private.
Một phương thư
c trư
u tượng không la
phương thức static.
Trong lớp dẫn xuất kế thư
a tư
lớp trư
u tượng phải định nghĩa các phương thư
c trư
u tượng
tư
lớp cơ sở.
IV.
INTERFACE
Nhận xét:
Inferface giúp định nghĩa cách thư
c người sử dụng giao tiếp vi sự vật/hệ thống
Xác định làm thế nào hệ thống phản hồi (feedback) đến user
Các sự vật cùng interface thì thông thường chư
c năng chúng cung cấp sẽ tương tự
nhau về mặt tổng quan (Ví Dụ: Các loại xe hơi cu
a những hãng sản xuất khác nhau).
Việc định nghĩa Interface cũng chính là viết bản hướng dẫn sử dụng một chư
c năng mà
người dùng đang cần
Interface chỉ chư
a thuộc tính public static final phương thư
c public abstract.
Ví dụ:
public interface Iflyable
{
void Fly();
}
Tất cả các phương thư
c (methods) trên đều không phần hiện thực (không cài đặt).
Mặc định tất cả đều public abstract.
Không khai báo đối tượng cu
a Interface bằng từ khóa new.
C# không hỗ trợ đa kế thư
a (1 class kế thư
a tư
nhiều class) nhưng 1 class có thể thực thi
(kế thư
a) tư
nhiều Interface cùng lúc.
Trang 6
Interface thể kế thư
a tư
nhiều Interface khác nhưng không thể kế thư
a bất kỳ class
nào.
Mục đích sử dụng Interface:
Giải pháp cho đa kế thư
a.
Đưa ra những quy tắc chung bắt buộc các thành phần trong hệ thống phải làm theo
mới trao đổi với nhau được.

Preview text:

ÔN TẬP
LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG (OOP)
OBJECT (đối tượng) là một thực thể trong thế giới thực, chẳng hạn như bàn, quả bóng, con
bò, … Lập trình hướng đối tượng là một phương pháp để thiết kế một chương trình sử dụng các
lớp và các đối tượng. Nó làm đơn giản hóa việc duy trì và phát triển phần mềm bằng việc cung
cấp một số khái niệm:
ĐỐI TƯỢNG: Một thực thể có trạng thái và hành vi. Ví dụ như xe đạp, bàn, ghế, …
LỚP: Một tập hợp các đối tượng. Nó là một thực thể logic.
CÁC ĐẶC ĐIỂM CỦA LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG:
Tính đóng gói: Đó là gắn kết code và dữ liệu cùng với nhau vào trong một đơn vị. Là
việc che giấu việc thực thi chi tiết của một đối tượng. Người dùng không phụ thuộc vào
việc sửa đổi sự thực thi bên trong.
Ví dụ: có thể bạn đã biết đến viên thuốc con nhộng (hay đơn giản hơn là gói bột giặt),
các viên thuốc (hạt bột giặt) khác nhau được đóng gói.
Lưu ý: Một điểm quan trọng trong giao tiếp giữa các đối tượng là một đối tượng sẽ
không được truy xuất trực tiếp vào thành phần dữ liệu của đối tượng khác cũng như
không đưa thành phần dữ liệu của mình cho đối tượng khác một cách trực tiếp.
Tính kế thừa: Các loại đối tượng khác nhau thường có chung một số đặc điểm. Từ
những lớp đối tượng đã có ta có thể đặc tả lớp đối tượng mới, lớp mới sẽ mang đặc tính
của lớp đã có (di truyền) + đặc tính riêng của nó.
Con = Cha + (riêng của con mà cha không có)
Mục đích: Tiết kiệm công sức viết code và test.  Tính đa hình.
CÁC BƯỚC THIẾT KẾ THEO OOP:
 Xác định các dạng đối tượng (lớp) của bài toán.
 Tìm kiếm các đặc tính chung (dữ liệu chung) trong các dạng đối tượng này, những gì chúng cùng nhau chia sẽ.
 Xác định lớp cơ sở dựa trên cơ sở các đặc tính chung của các dạng đối tượng.
 Từ lớp cơ sở, xây dựng các lớp dẫn xuất chứa các thành phần, những đặc tính không
chung còn lại của các dạng đối tượng. Trang 1
 Quan hệ giữa các đối tượng (sử dụng hay kế thừa).
I. THỪA KẾ (INHERITANCE) 1. Lý do sử dụng:
 Sử dụng lại những đoạn code có sẵn
 Hoặc phát triển thêm từ những code có sẵn mà không phải viết lại từ đầu 2. Khái niệm:
 Lớp cha hay còn gọi là lớp cơ sở ( base class)
 Lớp con hay còn gọi là lớp dẫn xuất (derived class), có cùng tập thuộc tính và hành
vi từ lớp cơ sở, cộng thêm tập thuộc tính và hành vi của riêng nó. 3. Mô hình:
4. Tạo lớp dẫn xuất: class Person { string Email, Name; //… } class Student : Person { public string StudentID;
public Student(string Email,string Name,string studentID): base(Email, Name) { this.StudentID = studentID; } }  Lưu ý: Trang 2
 Một lớp có thể thừa kế từ lớp mà lớp đó lại thừa kế từ lớp khác.
 Một lớp chỉ kế thừa từ một lớp (đơn kế thừa).
 Lớp dẫn xuất sẽ thừa kế: Fields, Methods, … (không phải private).
 Lớp dẫn xuất không thừa kế Constructor
 Khi lớp dẫn xuất định nghĩa constructor, nó cần gọi một trong những constructor của lớp
cơ sở (sử dụng từ khóa base).
 Mặc định, constructor của lớp dẫn xuất gọi constructor không tham số của lớp cơ sở.
 Bất kỳ lớp nào cũng có thể làm lớp cơ sở.
II. ĐA HÌNH (polymorphism, poly = many, morphism = forms)
Là khả năng thực hiện khác nhau cho cùng một hành vi (Overloading), là kỹ thuật cho phép thay
đổi nội dung của cùng một hành vi trong 2 lớp cha – con (Overriding).
1. Overloading: (nạp chồng) phương thức trong cùng một lớp: giữ tên, thay đổi giá trị trả
về và danh sách tham số.
2. Overriding (ghi đè) phương thức trong lớp cha – lớp con: giữ nguyên tên, giá trị trả về
và đối số (không thay đổi nguyên mẫu phương thức).
Các lớp dẫn xuất cài đặt cùng một phương thức của lớp cơ sở, nhưng mỗi lớp dẫn xuất có cách cài đặt khác nhau:
Các bước xây dựng Overriding:
 Phương thức Move() ở lớp public class Car { Trang 3 public void Move() { //... } }
 Lớp dẫn xuất (LandRover, Honda, Ford): có thể cung cấp một cách cài đặt khác của
phương thức Move() sử dụng từ khóa Override. public class LandRover: Car {
public override void Move() { // } }  Lưu ý:
 Chúng ta không phải bắt buộc phải override tất cả các phương thức từ lớp cơ sở.
 Chúng ta có thể gọi phương thức Move(). Tùy theo kiểu thực sự mà các cài đặt khác nhau sẽ được gọi.  Từ khóa ‘base’:
o Truy cập các constructor của lớp cơ sở
o Truy cập các thành viên không private từ lớp cơ sở public override void Move() { base.Move(); // }
III. ABSTRACT CLASS, ABSTRACT METHOD
Lớp trừu tượng (Abstract Class) là lớp dùng để định nghĩa những thuộc tính và hành vi chung của những lớp khác.
Hay nói cách khác: Lớp trừu tượng là lớp dùng để khai báo thuộc tính và phương thức cho các lớp khác sử dụng.
Phương thức trừu tượng:
 Chỉ có phần khai báo, không có phần cài đặt.
 Được khai báo ở lớp cơ sở và phải được cài đặt lại ở tất các các lớp kế thừa. Cú pháp:
abstract public <Tên_PT>(); Trang 4  Lưu ý:
 Lớp trừu tượng không khởi tạo được đối tượng, nhưng cho phép thừa kế để tạo ra lớp con.
 Từ khóa abstract được dùng để định nghĩa một lớp trừu tượng.
 Một lớp chứa từ một phương thức trừu tượng thì phải khai báo là lớp trừu tượng.
 Một lớp trừu tượng có thể chứa cả phương thức trừu tượng (không có phần cài đặt) và
phương thức có cài đặt.
 Một phương thức trừu tượng không sử dụng từ truy xuất là private.
 Một phương thức trừu tượng không là phương thức static.
 Trong lớp dẫn xuất kế thừa từ lớp trừu tượng phải định nghĩa các phương thức trừu tượng từ lớp cơ sở. IV. INTERFACE Nhận xét:
 Inferface giúp định nghĩa cách thức người sử dụng giao tiếp với sự vật/hệ thống
 Xác định rõ làm thế nào hệ thống phản hồi (feedback) đến user
 Các sự vật có cùng interface thì thông thường chức năng chúng cung cấp sẽ tương tự
nhau về mặt tổng quan (Ví Dụ: Các loại xe hơi của những hãng sản xuất khác nhau).
 Việc định nghĩa Interface cũng chính là viết bản hướng dẫn sử dụng một chức năng mà người dùng đang cần
 Interface chỉ chứa thuộc tính public static final và phương thức public abstract. Ví dụ:
public interface Iflyable { void Fly(); }
 Tất cả các phương thức (methods) ở trên đều không có phần hiện thực (không cài đặt).
 Mặc định tất cả đều public abstract.
Không khai báo đối tượng của Interface bằng từ khóa new.
 C# không hỗ trợ đa kế thừa (1 class kế thừa từ nhiều class) nhưng 1 class có thể thực thi
(kế thừa) từ nhiều Interface cùng lúc. Trang 5
 Interface có thể kế thừa từ nhiều Interface khác nhưng không thể kế thừa bất kỳ class nào.
Mục đích sử dụng Interface:
 Giải pháp cho đa kế thừa.
 Đưa ra những quy tắc chung mà bắt buộc các thành phần trong hệ thống phải làm theo
mới trao đổi với nhau được. Trang 6
Document Outline

  • CÁC ĐẶC ĐIỂM CỦA LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG:
  • CÁC BƯỚC THIẾT KẾ THEO OOP:
  • I. THỪA KẾ (INHERITANCE)
    • 1. Lý do sử dụng:
    • 2. Khái niệm:
    • 3. Mô hình:
    • II. ĐA HÌNH (polymorphism, poly = many, morphism = forms)
  • III. ABSTRACT CLASS, ABSTRACT METHOD
    • Phương thức trừu tượng:
  • IV. INTERFACE
    • Nhận xét:
    •  Không khai báo đối tượng của Interface bằng từ khóa new.
    • Mục đích sử dụng Interface: