No1 - Lập trình hướng đối tượng với C++

1. Các phương pháp lập trình hỗ trợ trong C++

1.1. Phương pháp lập trình cấu trúc:

- Tư tưởng chính là tổ chức chương trình thành các chương trình con. Trong C++ chỉ có một loại chương trình con là hàm.
- Hàm là một đơn vị chương trình độc lập dùng để thực hiện một phần việc nào đó như: Nhập số liệu, in kết quả hay thực hiện một số tính toán.
- Hàm cần có đối và các biến, mảng cục bộ dùng riêng cho hàm.
Một chương trình cấu trúc gồm các cấu trúc dữ liệu (như biến, mảng, bản ghi) và các hàm, thủ tục.

1.2. Phương pháp lập trình hướng đối tượng
- Lớp:

Có thể xem lớp là sự kết hợp các thành phần dữ liệu và các hàm. Cấu trúc lớp trong C++
class  <tên_lớp>
{
// Khai báo các thành phần dữ liệu
// Khai báo các phương thức
};

- Đối tượng (biến lớp): 

+ Sau khi định nghĩa một lớp, có thể dùng tên lớp để khai báo các biến kiểu lớp hay còn gọi là đối tượng.
+ Mỗi đối tượng sẽ có các thành phần dữ liệu và các phương thức.
+Lời gọi một phương thức cần chứa tên đối tượng để xác định phương thức thực hiện từ đối tượng nào.
+ Một chương trình hướng đối tượng sẽ bao gồm các lớp có quan hệ với nhau.
+ Việc phân tích, thiết kế chương trình theo phương pháp hướng đối tượng nhằm thiết kế, xây dựng các lớp.

2. Thế nào là lập trình hướng đối tượng?

- Định nghĩa:

Đó là thực hiện việc xây dựng ra các chương trình, có khả năng sinh ra các đối tượng hoạt động, và quản lý các đối tượng theo các yêu cầu thực tế

- Công việc:

(1) Xây dựng đoạn chương trình mẫu (lớp): Không hoạt động, chỉ làm nhiệm vụ tạo đối tượng.
(2) Chương trình hoạt động: là tạo đối tượng, hoạt động tương tác với nhau để hình thành chương trình.

- Các đặc trưng trong lập trình hướng đối tượng:

Có 3 tư tưởng, chủ đạo trong việc xây dựng chương trình theo hướng đối tượng. Đó là:
+ Đóng kín:
Xây dựng lớp mẫu (chương trình mẫu) độc lập với bên ngoài, cho phép bảo vệ dữ liệu và chương trình.
+ Kế thừa:
Các lớp mẫu có thể kế thừa để xây dựng tài nguyên.
+ Đa hình:
Lớp mẫu thể hiện việc tạo nhiều loại đối tượng khác nhau.

Ngôn ngữ lập trình C++ không hoàn toàn là hỗ trợ hướng đối tượng, là bộ công cụ lai tạp: lập trình cấu trúc đồng thời lập trình hướng đối tượng.

+ Thực hiện công việc

phần 1: Xây dựng các lớp

class <tên lớp>
{
...//Các thành phần của lớp
};

phần 2: Sinh ra đối tượng và điều khiển hoạt động

Thực hiện trong một hàm, một lớp nào đó
Khai báo đối tượng: <tên lớp> <tên đối tượng>;
Các thành phần lớp: 2 thành phần
- Dữ liệu: Gọi là thuộc tính (property)
- Hàm xử lý: Gọi là các phương thức lớp (Method)
+Ví dụ minh họa
#include "conio.h"
#include "iostream.h"
class lop1
{
public:
int s1,s2;
void nhap()
{
cout<<"\n\t Nhap so thu nhat :";cin>>s1;
cout<<"\n\t Nhap so thu hai :";cin>>s2;
};
void tong()
{
cout<<"\n\t Tong la : "<<s1+s2;
};
void max()
{
int m=s1>s2?s1:s2;
cout<<"\n\t Max la : "<<m;
};
};
void main()
{
lop1          dt1;
lop1          dt2;
lop1         dt3,dt4,dt5,dt6;
dt1.nhap();dt1.tong();
dt2.nhap();dt2.max();
dt4.s1=5;dt4.s2=100;dt4.tong();
}

Nhận xét:

Tạo ra một lớp tên là lop1. Trong nó:
Thuộc tính (dữ liệu): s1,s2, phương thức (xử lý): nhap, max, tong.
Từ lớp lop1 tạo ra 6 đối tượng có khả năng như nhau
Chỉ dùng các đối tượng: dt1,dt2,dt4
lớp 1: chỉ thể hiện tính đóng kín của lập trình hướng đối tượng

3. Cấu trúc của một lớp trong C++:

- Trong lớp chỉ gồm 2 thành phần: dữ liệu(thuộc tính), xử lý( phương thức)

- Khuôn dạng:

class <tên lớp>
{
public:
// tạo dữ liệu và xử lý phần public
protected:
// tạo dữ liệu và xử lý phần protected
private:
// tạo dữ liệu và xử lý phần private
};

- Trong đó:

+ Dữ liệu và xử lý được gọi là tài nguyên lớp.
+ Nếu nó thuộc phạm vi public thì tài nguyên đó có thể:
- Cho phép đối tượng gọi đến thành phần của nó theo cú pháp
+ <tên đối tượng>.<tên tài nguyên>(i)
+ Cho phép thực hiện việc kế thừa (ii)
+ Cho phép dùng trong lớp (iii)

- Chú ý:

+ Nếu nó thuộc phạm vi public thì có đủ các đặc tính (ii),(iii).
+ Nếu nó thuộc phạm vi protected thì chỉ có đặc tính (ii),(iii).
+ Nếu nó thuộc phạm vi private thì chỉ dùng đặc tính (iii)
Trong một lớp có thể đặt qui định phạm vi nhiều lần, nhiều nơi, mỗi khi đặt thì tài nguyên được sử dụng theo các qui định :(i),(ii),(iii)

- BT:

Xây dựng một lớp phanso, được dùng để xử lý phân số. Khai báo:
- private:
+ Khai báo dữ liệu: ts,ms
+ Hàm kiểm tra số: có một đối số, nếu giá trị bằng 0 thì trả về 0 ngược lại trả về 1
- public:
+ Tạo hàm nhập phân số
+ Tạo hàm in phân số
+ Thàm tính tổng phân số và in ra
- Tạo ra hai đối tượng :ps1,ps2 và gọi hàm nhập, in, tổng của hai phân số.

Post a Comment

0 Comments