Tải bản đầy đủ (.pdf) (11 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (326.14 KB, 11 trang )

CHƯƠNG 2: LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG TRONG C#
1. Lớp
- Khái niệm về lớp (Class)



Lớp là tập hợp các đối tượng (object) có cùng bản chất
Class = method + properties

- Method:
Là các phương thức trong class (là các Function, procedure). Một phương thức được quy định phạm
vi sử dụng thông qua các từ khóa truy cập (private, public, protecd…). Phương thức còn được gọi là các
hành vi, thể hiện hành động, chức năng của một đối tượng.
- Properties:
Là các thuộc tính (đặc điểm) của một đối tượng còn gọi là các biến thành viên của lớp, một biến được
quy định phạm vi sử dụng thông qua các từ khóa truy cập


Phân loại lớp

+ Lớp được xây dựng sẵn trong trong ngôn ngữ lập trình: Các class này chứa trong các các không gian
tên.
Ví dụ. Lớp Math, string, array


Math: Thư viện chứa các hàm toán học

Sqrt(): trả về căn bậc hai của một số kiểu double
Pow(): hàm mũ
Round(), sin(), cos(), floor()…
Số pi, số e là các thuộc tính hằng số có sẵn.





String: là lớp chứa các hàm xử lý chuỗi
Array: Chứa các hàm xử lý mảng.

+ Lớp do người lập trình xây dựng có cú pháp như sau:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace WindowsFormsApplication1
{
class Class1
{


// Định nghĩa các biến
// Định nghĩa các phương thức

}
}
Ví dụ. Xây dựng class clstong để tính tổng của hai số nguyên
class clstong{
// khai báo các thuộc tính
private int a,b;
// khai báo các phương thức
public int tong(int a,int b)
{

Return a+b;
}
}
Trên đây, hai biến a,b là các biến thành viên của lớp clstong. Hai biến được quy định phạm vi kiểu private
(chỉ các thành phần bên trong class nhìn thấy, nghĩa là sử dụng được chúng và khi đó các đối tượng bên
ngoài không dùng được a và b).
Phương thức tong(a,b) dùng để tính tổng của hai số nguyên và khai báo pham vi public (cho phép các
đối tượng bên ngoài có thể nhìn thấy và sử dụng thông qua cơ chế chuyền thông điệp)

2. Phương thức
- Cú pháp
Access_specifier modifier datatype method_name(parameter_list)
{ //body of method
}
Trong đó:












Access_specifier: Chỉ định truy cập vào phương thức.
Modifier: Cho phép bạn đặt thuộc tính cho phương thức.
Datatype: Kiểu dữ liệu mà phương thức trả về, nếu không có một giá trị nào được trả về, kiểu dữ

liệu có thể là void.
Method_name: Tên của phương thức
Parameter_list: Chứa tên của tham số được sử dụng trong phương thức và kiểu dữ liệu, dấu
phẩy được dùng để phân cách các tham số.
Phương thức khởi tạo của lớp (contructor)
Là phương thức được dùng để khởi tạo giá trị cho các biến thành viên của lớp
Thường được dùng trong khi cần che dấu và kiểm soát(Đóng gói) dữ liệu
Có tên trùng với tên của class chứa nó
Không có giá trị trả về (Kiểu trả về là void)
Được gọi đến khi khởi tạo một INSTANCE của lớp





Trong một lớp có thể chứ nhiều phương thức khởi tạo (hiện tương nạp chồng), tuy nhiên các
phương thức này phải khác nhau về danh sách tham số
Cấu trúc của contructor

Phạm Vi > < Void><Tên lớp>< Danh sách tham số >
{
// Các câu lệnh
}

Ví dụ. tạo contructor cho lớp clstong
class clstong
{
private int a,b;
public void clstong(int oa, int ob)
{

If ((oa>0) &&(ob>b))
a=oa;b=ob;
}
Giải thích:
+ Contructor trên cho phép khởi tạo giá trị cho các biến thành viên a,b với hai tham số truyền vào tương
ứng là oa>0 và ob>0.
+ Trong trường hợp cần che dấu dữ liệu khi đó các biến của lớp cần khai báo pham vi sử dụng là
private và khi đó cần xây dựng các phương thức set(), get() .
Set(): thiết lập giá trị cho các biến của lớp
Get(): lấy giá trị từ bên ngoài vào
- Phương thức thông thường : Được gọi là các hàm thành phần của lớp.
Cấu trúc:
< Phạm vi > <Kiểu trả về> < Tên PT> < [ DSTS])
{
// biến cục bộ
//các câu lệnh
Return bt;
}
Giải thích:
+ < phạm vi>: Cho biết phạm vi sử dụng của phương thức


private: Chỉ cho phép được sử dụng trong class





public: Cho phép đối tương bên ngoài sử dụng (phá vỡ nguyên lý đóng gói encapsulation )
proteced: Không cho phép lớp con thừa kế


+ < Kiểu trả về >: là kiểu dữ liệu cơ sở (double, int, string…)
+ < [DSTS]): Dùng nhận giá trị đầu vào cho phương thức
+ < Tên phương thức >: Do người dùng đặt tuân theo quy tắc đặt tên biến
+ < return bt; >: Câu lệnh trả về giá trị cho hàm
Ví dụ.
public int tonghaiso(int a,int b)
{
// biến cục bộ s
Int s;
// câu lệnh
s=a+b;
return s; // là câu lệnh trả về giá trị cho hàm
}
Nhận xét.
- Có thể dùng hàm thành phần làm phương thức khởi tạo cho các biến thành viên của lớp
Ví dụ.
private void kt(int oa,int ob)
{ a=oa;b=ob;}

3. Thuộc tính
- Thuộc tính của một đối tượng được dùng để mô tả tính chất cho đối tượng đó.
Ví dụ.
Trong đối Diem – các điểm trong không gian hai chiều ta có các thuộc tính là x,y.
Trong một lớp, thuộc tính còn được gọi là các biến thành viên của lớp. Là nguồn dữ liệu sử dụng cho các
phương thức bên trong lớp. Ta cũng có thể truy cập vào các biến của lớp tùy theo phạm vi quy định sử
dụng. của biến


Cú pháp khai báo các thuộc tính:


<PVTC> <KDL> <danh sách biến>;
+ PVTC: Phạm vi truy cập của biến cho biết phạm vi sử dụng của biến




Private: Chỉ cho phép được sử dụng trong class
Public: Cho phép đối tương bên ngoài sử dụng (phá vỡ nguyên lý đóng gói encapsulation)
Proteced: Không cho phép lớp con thừa kế

+ KDL: đây là kiểu trả về của biến


+ Danh sách biến: được ngăn cách nhau bởi dấu phẩy.
Ví dụ. Định nghĩa lớp điểm trong không gian hai chiều:
Class DIEM {
// khai báo biến của lớp
private double x,y;
// định nghĩa hàm thành phần
public double khoang_cach()
{// mã lệnh; }
}

4. Thí dụ về thiết kế lớp
Xây dựng lớp clsmaxmin gồm:





Các biến thành viên a,b
Phương thức khởi tạo cho các biến thành viên a,b
Phương thức timmin(), timmax() để tìm giá trị nhỏ nhất, lớn nhất của a và b.

Mã lệnh:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace WindowsFormsApplication1
{
class clsmaxmin
{
// thuoc tinh a,b
public int a, b;
//phuong thuc khoi tao gia tri a va b
public void clsmaxmin(int oa, int ob)
{
a = oa; b = ob;
}
//phuong thuc timmin()
public int timmin(int a, int b)
{


int min;
if (a > b) min = a;
else
min = b;

return min;
}
//phuong thuc timmax()
public int timmax(int a, int b)
{
int max;
if (a > b) max = a;
else
max = b;
return max;
}

}
}

5. Nạp chồng
Trong một lớp có thể có nhiều phương thức trùng tên nhưng phải khác nhau về danh sách tham số. (hiện
tượng nạp chồng )
Ví dụ: Trong cùng phạm vi một lớp ta xây dưng hai phương thức cùng tên A(a,b), A(a,b,c). hai phương
thức này sẽ cùng tên nhưng khác nhau về danh sách tham số.

6. Thừa kế
- Khái niệm kế thừa .

+ Tính thừa kế cho phép một lớp chia sẻ các thuộc tính và các phương thức
được định nghĩa trong một hoặc nhiều lớp khác.
+ Kế thừa cho phép thừa hưởng các mã lệnh đã có, giảm thiểu công việc của lập trình viên, Đây là một
điểm rất mạnh của lập trình OOP ( lập trình hướng đối tượng)
Thông qua khả năng kế thừa, chương trình sẽ gắn gọn, dễ hiểu, Không phải viết lại mã lệnh khi thực
hiện một công việc có tính chất kế thừa



Khai báo lớp kế thừa:

public class A : B
{
// Các thuộc tính mới
// Các phương thức mới


}
Giải thích:



Trên đây A là một lớp đã được định nghĩa, bên trong nó có chứa các thành phần là các phương
thức và thuộc tính
Ta xây dựng lớp B kế thừa từ lớp A. Khi đó B sẽ thừa kế mọi thành phần trong A. Trong B ta có
thể xây dựng thêm các phương thức và thuộc tính mới tùy theo mục đích kế thừa. A gọi là lớp
cha, B gọi là lớp con.

Ví dụ 1. Xây lớp clsmaxmin như sau:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace WindowsFormsApplication1
{
class clsmaxmin

{
// thuoc tinh a,b
public int a, b;
//phuong thuc khoi tao gia tri a va b
public void khoitao(int oa, int ob)
{
a = oa; b = ob;
}
//phuong thuc timmin()
public int timmin(int a, int b)
{
int min;
if (a > b) min = a;
else
min = b;
return min;
}
//phuong thuc timmax()
public int timmax(int a, int b)


{
int max;
if (a > b) max = a;
else
max = b;
return max;
}

}

}
Sau đó ta xây dựng lớp thừa kế clsmaxminTK bổ sung 2 thuộc tính c,d, phương thức tìm max, min của
bốn số nguyên a,b,c,d. Khi đó lớp clsmaxmin sẽ từa hưởng tất cả các thành phần cs trong lớp
clsmaxmin. Lớp clsmaxminTK được xây dựng như sau:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace WindowsFormsApplication1
{
class clsmaxminTK: clsmaxmin
{
// khai bao thuoc tinh cua lop ke thua
public int c, d;
public void khoitaoTK(int oc, int od)
{

c = oc; d = od;
}
//dinh nghia phuong thuc timmaxTK()
public int timmaxTk(int a, int b, int c, int d)
{
return(timmax(timmax(a,b),timmax(c,d)));
}
public int timminTk(int a, int b, int c, int d)


{
return (timmin(timmin(a, b), timmin(c, d)));

}
}
}
Ví dụ 2. Xây dựng lớp clssinhvien như sau:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace WindowsFormsApplication1
{
class clssinhvien
{
public string hoten;
public string masv;
public string diachi;
public string sdt;
public int cn;
public float dcc;
public float dtx;
public float dgk;
public float dt;
public float diemtrungbinh(float dcc, float dtx, float dgk, float dt)
{
return (dcc * 10 + dtx * 10 + dgk * 20 + dt * 60) / 100;
}
public int chuyencan(int cn)
{
if (cn >= 5)
return 0;

return 1;
}


}
}
Sau đó ta xây dựng lớp thừa kế clsdiem để thực hiện xếp loại theo điểm trung bình của từng môn
học:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace WindowsFormsApplication1
{
class clsdiem:clssinhvien
{
public string monhoc;
public int xeploai(float dcc, float dtx, float dgk, float dt)
{
float dtb = diemtrungbinh(dcc, dtx, dgk, dt);
if (dtb >= 85)
return 0;
else
if (dtb >= 70)
return 1;
else
if (dtb >= 55)
return 2;
else

if (dtb >= 40)
return 3;
return 4;

}
}
}


Tham
khảo
thêm:
/>Tham khảo: />


×