Lập trình hướng đối tượng

Một phần của tài liệu Lập Trình C++ (Trang 28 - 31)

TểM TẮT CHƯƠNG II : C++/CLI HƯỚNG ĐỐI TƯỢNG

2) Lập trình hướng đối tượng

Lập trình hướng đối tượng (gọi tắt là OOP, từ chữ Anh ngữ object-oriented programming), hay còn gọi là lập trìnhđịnh hướng đối tượng, là kĩ thuật lập trình hỗ trợcông nghệ đối tượng. Một cách giản lược, đây là khái niệm và là một nỗ lực nhằm giảm nhẹ các thao tác viết mã cho người lập trình, cho phép họ tạo ra cácứng dụng mà các yếu tố bên ngoài có thể tương tác với các chương trìnhđó gi ống như là tương tác với các đối tượng vật lý.

Những đối tượng trong một ngôn ngữ OOP là các kết hợp giữa mã và dữ liệu mà chúng được nhìn nhận như là một đơn vị duy nhất. Mỗi đối tượng có một tên riêng biệt và tất cả các tham chiếu đến đối tượng đó được tiến hành qua tên của nó. Như vậy, mỗi đối tượng có khả năng nhận vào các thông báo, xửlý dữ liệu (bên trong của nó), và gửi ra hay trảlời đến các đối tượng khác hay đến môi trường.

a) Các tính cht :

Đối tượng (object): Các dữliệu và mã lệnh được kết hợp vào một đơn vị đầy đủ tạo nên một đối tượng. Đơn vị này tương đương với một chương trình con và vì thế các đối tượng sẽ được chia thành hai bộphận chính: phần cácphương thức (method) và phần các thuộc tính (attribute).

Trong thực tế, cácphương thức của đối tượng là các hàm và các thuộc tính của nó là các biến, các tham số hay hằng nội tại của một đối tượng (hay nói cách khác tập hợp các dữliệu nội tại tạo thành thuộc tính của đối tượng). Cácphương thứclà phương tiện đểsửdụng một đối tượng trong khi các thuộc tính sẽ mô tả đối tượng có những tính chất gì. Các phương thức và các thuộc tính thường gắn chặt với thực tế các đặc tính và sửdụng của một đối tượng.

VD : Trong bài toán quản lí Sinh viênở trường Đại học thì mỗi Sinh viên có thể được xem là một đối tượng. Các Sinh viên sẽ được phân biệt với nhau thông qua Họ tên. Mỗi Sinh viên lại được mô tảbởi Ngày sinh, Nơi sinh, MSSV, Ngành học, Điểm số … ; đây chính là cácthuc tính của đối tượng Sinh viên. Người quản lí muốntác động đến thông tin của một Sinh viên nào đó thì phải thông qua các phương thức của đối tượng Sinh viên như : Xem ngày sinh, Xem nơi sinh, Nhập điểm số, Xem điểm số, Sửa điểm số …

Trong thực tế, các đối tượng thường được trừu tượng hóa qua việc định nghĩa của các lớp (class). Tập hợp các giá trị hiện có của các thuộc tính tạo nên trạng thái của một đối tượng.

Mỗiphương thức hay mỗi dữliệu nội tại cùng với các tính chất được định nghĩa (bởi người lập trình)được xem là một đặc tính riêng của đối tượng. Nếu không có gì lầm lẫn thì tập hợp các đặc tính này gọi chung là đặc tính của đối tượng.

Tính đóng gói(Encapsulation) :

thuộc tính chung nhất của các đối tượng sẽ được giữlại và các thuộc tính chung này sẽtrởthành các thuộc tính của lớp.

VD : trong nhóm các đối tượng là phương tiện giao thông, nếu chúng ta nhóm các đối tượng có chung thuộc tính là : 2 bánh, có động cơ … thì chúng ta sẽcó nhóm xe máy. Nếu chúng ta nhóm các đối tượng có chung thuộc tính là : có 4 bánh, có động cơ … thì chúng ta sẽcó nhóm xe ôtô.

Trong nhóm xe máy, có xe có gương chiếu hậu, có xe không có, như vậy gương chiếu hậu không phải là thuộc tính chung và không được xem là thuộc tính của nhóm.

Việc truy xuất đến các dữ liệu được thực hiện thông qua các phương thức được trang bị cho nhóm. Nếu người sử dụng muốn thay đổi các thay đổi trạng thái của đối tượng thì bắt buộc phải thông qua các phương thức này. Việc cho phép môi trường bên ngoài tác động lên các dữ liệu nội tại của một đối tượng theo cách nào là hoàn toàn tùy thuộc vào người viết mã. Tính chất này không cho phép người sửdụng các đối tượng thay đổi trạng thái nội tại của một đối tượng.

Tính thừa kế(Inheritance) :

Các lớp được tổ chức theo sơ đồ cây phân cấp. Lớp cơ sở đầu tiên được gọi là lớp gốc (Root Class). Lớp phía trên được gọi là lớp cha hay lớp cơ sở. Lớp phía dưới được gọi là lớp con hay lớp dẫn xuất.

Lớp con có khả năng kếthừa các thuộc tính và phương thức của lớp cha.Như vậy, khi định nghĩa một lớp mới là lớp con của một lớp cơ sở, ta không phải định nghĩa và xây dựng lại các thuộc tính và phương thức đã xây dựng cho lớp cơ sởthay vì phải xây dựng lại (đây chính là khả năng sửdụng lại mã nguồn).

VD : trong lớp các xe gắn máy, có thể chia ra hai lớp con là lớp xe tay ga và lớp xe số.

Trong lớp xe gắn máy có các thuộc tính như màu sơn, nhãn hiệu … thì lớp xe tay ga có quyền kế thừa các thuộc tính này của lớp cha.

Tính đa hình (Polymorphism) :

Các lớp dẫn xuất có cùng một lớp cơ sở nhưng cũng có những thuộc tính khác hẳn nhau.

Trong cùng một lớp cha, nếu ta gọi ra một phương thức nhưng nếu là từ các đối tượng thuộc các lớp con khác nhau thì sẽ được các kết quảkhác nhau.

VD : lớp cơ sở Human có hai lớp con là Student và Public Servant. Trong lớp cơ sở định nghĩa một phương thức là Show().

Nếu sử dụng phương thức này đối với đối tượng thuộc lớp Human sẽ cho biết số CMND của đối tượng.

Nếu sửdụng phương thức này đối với đối tượng thuộc Student sẽcho biết MSSV.

Nếu sử dụng phương thức này đối với đối tượng thuộc lớp Public Servant sẽ cho biết Mã sốcông chức.

Lớp (Class) :

Một lớp có thể được hiểu là khuôn mẫu để tạo ra các đối tượng. Trong một lớp, người ta thường dùng các biến để mô tả các thuộc tính và các hàm để mô tả các phương thức của đối tượng. Khi đãđ ịnh nghĩa được lớp, ta có thể tạo ra các đối tượng từ lớp này. Để việc sử dụng được dễ dàng, thông qua hệ thống hàm tạo (constructor), người ta dùng lớp như một kiểu dữliệu để tạo ra các đối tượng. Nói tóm lại, lớp luôn luôn được đặc trưng bởi các thuộc tính và phương thức.

Lớp con (subclass)

Lớp con là một lớp thông thường nhưng có thêm tính chất kế thừa một phần hay toàn bộ các đặc tính của một lớp khác. Lớp mà có các tính chất được lớp con kế thừa gọi là Lớp cha (parent class).

Lớp trừu tượng (abstract class)

Lớp trừu tượng là lớp mà ta không thểthực thể hóa thành đối tượng (tạo ra đối tượng).

Thuộc tính (attribute)

Thuộc tính của một lớp bao gồm các biến, các hằng, hay tham sốnội tại của lớp đó. Ở đây, vai trò quan trọng nhất của các thuộc tính là các biến vì chúng sẽcó thểbị thay đổi trong suốt quá trình hoạt động của một đối tượng. Các thuộc tính có thể được xác định kiểu và kiểu của chúng có thểlà các kiểu dữliệu cổ điển hay đó là một lớp đãđịnh nghĩa từ trước.

Phương thức (method)

Phương thức của một lớp thường được dùng để mô tả các hành vi của đối tượng (hoặc của lớp). Mỗi phương thức thường được định nghĩa là một hàm, các thao tác để thực hiện hành vi đó được viết tại nội dung của hàm.

Người ta cònđịnh nghĩa thêm vài loại phương thức đặc biệt:

 Hàm tạo (constructor) là hàm được dùng để tạo ra một đối tượng, cài đặt các giá trị ban đầu cho các thuộc tính của đối tượng đó.

 Hàm hủy (destructor) là hàm dùng vào việc làm sạch bộ nhớ đã dùng để lưu đối tượng và hủy bỏ tên của một đối tượng sau kh i đã dùng xong, trong đó có thể bao gồm cả việc xóa các con trỏ nội tại và trả về các phần bộ nhớ mà đối tượng đã dùng.

Lớp trong C++/CLI cũng được đặc trưng bởi các thuộc tính và phương thức.

Để bảo vệ tránh việc bị truy xuất tự do từbên ngoài, các thuộc tính và phương thức trong lớp có sửdụng các từ khóa để qui định phạm vi truy xuất.

private : từkhóa cho biết chỉcho phép truy xuất trong nội bộ lớp, không chia sẻ với các lớp khác.

protected : từkhóa cho biết được truy xuất hạn chế, chỉcho phép truy xuất trong nội bộ lớp và các lớp con của lớp.

public : từkhóa cho biết được truy xuất tựdo, cho phép truy xuất từbên trong hoặc bên ngoài lớp.

Đối với ref class, nếu ta không khai báo từ khóa qui định pham vi truy xuất, cách thức truy cập mặc định là private

Một phần của tài liệu Lập Trình C++ (Trang 28 - 31)

Tải bản đầy đủ (PDF)

(72 trang)