Đồ án CMyString - Đoàn Duy

 Cài đặt lớp CMyString với các yêu cầu:

- Chuỗi có độ dài bất kì.

- Các hàm tạo:

+ Hàm tạo không đối số.

+ Hàm tạo với đối số CMyString.

+Hàm tạo với đối số char*

+Hàm tạo với đối số là ch, n: khởi tạo chuỗi với n kí tự ch giống nhau, n mặc định là 1.

- Hàm hủy.

- Các toán tử: thực hiện đầy đủ các toán tử trên chuỗi ( sẽ trình bày đầy đủ trong phần sau).

- Các phương thức:

+ String as An Array Methods.

+ Comparison Methods.

+ Extraction Methods.

+ Conversion Methods.

+ Searching Methods.

 

docx3 trang | Chuyên mục: Lập Trình Hướng Đối Tượng | Chia sẻ: dkS00TYs | Lượt xem: 1732 | Lượt tải: 1download
Tóm tắt nội dung Đồ án CMyString - Đoàn Duy, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
Tên: Đoàn Duy
MSSV:08520070
Lớp:K3C4
BÁO CÁO ĐỒ ÁN THỰC HÀNH SỐ 1
I.Nội dung:
 Cài đặt lớp CMyString với các yêu cầu:
Chuỗi có độ dài bất kì.
Các hàm tạo:
+ Hàm tạo không đối số.
+ Hàm tạo với đối số CMyString.
+Hàm tạo với đối số char*
+Hàm tạo với đối số là ch, n: khởi tạo chuỗi với n kí tự ch giống nhau, n mặc định là 1.
Hàm hủy.
Các toán tử: thực hiện đầy đủ các toán tử trên chuỗi ( sẽ trình bày đầy đủ trong phần sau).
Các phương thức:
+ String as An Array Methods.
+ Comparison Methods.
+ Extraction Methods.
+ Conversion Methods.
+ Searching Methods.
II.Mục đích:
Kiểm tra khả năng hiểu các vấn đề cơ bản về lớp, đối tượng, toán tử và phương thức.
Kiểm tra kĩ năng lập trình hướng đối tượng.
III.Nhận xét và đánh giá chương trình:
Chương trình sử dụng một lớp đối tượng:
Class CMyString
{
	Private:
	Char* 	Str;
	Public:
	//các thao tác 
};
1.Các hàm khởi tạo:
Có tất cả 4 hàm khởi tạo, trong mõi hàm, trước tiên ta phải cấp phát cho Str vùng nhớ tương ứng, có phần kiểm tra việc cấp phát có thành công không, nếu không thì thoát khỏi chương trình, sau đó là copy chuỗi tương ứng cho Str.
Riêng trong hàm khởi tạo với n kí tự ch, sau khi copy nội dung cho Str ta thực hiện câu lệnh:
Str[n]=’\0’; 
nhằm gán giá trị NULL cho Str[n], nếu không khi xuất chuổi Str ra màn hình sẽ gặp lỗi:
	azzzzzzzz , giả sử kí tự là a,lỗi này là do vùng nhớ được cấp phát cho Str[n] là dư.
2.Hàm hủy : hủy đi các đối tượng vừa tạo đồng thời giải phóng vùng nhớ đã được cấp phát cho Str.
3.Hàm INPUT và OUTPUT:
Các hàm này giúp việc nhập xuất một đối tượng dạng CMyString. Trong hàm xuất ta truyền vào một đối tượng kiểu hằng:
Ostream& operator <<(ostream &os,const CMyString &a);
Mục đích của việc này là để tránh việc gọi lại hàm khởi tạo với đối số là một CMyString.
Vì thông thường khi gọi hàm operator <<, trình biên dịch sẻ tạo một đối tượng CMyString “tạm”, sau đó sẽ copy nội dung của a cho đối tượng tạm này để xuất ra.
Do đó với việc truyền đối tượng kiểu hằng sẽ tránh được điều này.
4.Các hàm toán tử: operator
Các hàm ==, chỉ đơn giản kiểm tra việc so sánh hai đối tượng CMyString ( hoặc với một chuỗi) với hai giá trị trả về là true hoặc false.
Các hàm +,+= có tác dụng nối một chuỗi của một đối tượng CMyString (hoặc một chuỗi dạng char*) vào chuỗi của đối tượng gọi hàm.
Các hàm gán = gán một đối tượng CMyString (hoặc chuỗi char*) cho đối tượng gọi hàm.
Ở đây tất cả các đối số truyền vào điều là truyền địa chỉ hằng, nguyên nhân là để tránh việc gọi lại hàm khởi tạo với đối số CMyString. Như đã nói ở trên, khi gọi hàm thì trình biên dịch sẽ tạo ra một đối tương CMyString tạm có nội dung giống đối tượng a để truyền vào hàm. 
Tất cả các hàm về sau khi có đối số là một CMyString thì đều được truyền vào bằng địa chỉ hằng với cùng mục đích trên. Do đó sẽ không nhắt lại.
Các hàm có giá trị trả về CMyString ( tương tự cho các hàm trong các phần sau): giá trị trả về là địa chỉ của đối tượng dạng CMyString&. Điều này cũng có ý nghĩa tương tự việc truyền địa chỉ hằng cho hàm là để tránh việc gọi hàm khởi tạo. Để trả về giá trị CMyString, trình biên dịch cũng tạo ra một đối tượng CMyString tạm để trả về.
Riêng hàm
 char& operator [](int i);
có giá trị trả về là char& để ta có thể vừa lấy được giá trị của kí tự vừa có thể gán giá trị cho kí tự.
5.Hàm Array Methods:
Hàm int GetLength(): trả về chiều dài của chuỗi Str trong đối tượng gọi hàm, không tính kí tự NULL cuối chuỗi.
Hàm bool IsEmpty(): kiểm tra xem chuỗi Str của đối tượng CMyString có rỗng không, trả về true nếu rỗng và false nếu khác rỗng.
Hàm CMyString& Empty() Set chuỗi kí tự Str thành rỗng.
Hàm 	char GetAt(int i);
	char SetAt(int i,char a);
lấy kí tự Str[i] và gán lại kí tự Str[i] bằng kí tự a.
 6.Hàm Comparison Methods:
Các hàm 	int Compare(const CMyString &a) // phân biệt hoa thường
	int CompareNoCase(const CMyString &a) //không phân biệt hoa thường
so sánh hai đối tượng CMyString, hàm trả về:
 -1 nếu chuỗi của đối tượng gọi hàm nhỏ hơn chuỗi của đối tượng truyền vào.
0 nếu chuỗi của đối tượng gọi hàm bằng chuỗi của đối tượng truyền vào.
nếu chuỗi của đối tượng gọi hàm lớn hơn chuỗi của đối tượng truyền vào.
7.Hàm Extraction Methods:
Hàm void Left(int sl) //xuất ra n=sl kí tự đầu tiên của chuỗi Str.
Hàm void Right(int sl) //kí tự cuối cùng của chuỗi Str.
Hàm void Mid(int vtri,int sl) //xuất ra n=sl kí tự bắt đầu từ vị trí vtri của chuỗi Str.
8.Hàm Converse Methods:
Hàm	void MakeUpper(); //Chuyển chuỗi Str về dạng chữ hoa.
	void MakeLower(); // Chuyển chuỗi Str về dạng chữ thường.
Hàm 	void TrimLeft(); // Xóa kí tự trắng đầu chuỗi
	void TrimRight(); // Xóa kí tự trắng cuối chuỗi
	void TrimMid(); // Xóa kí tự trắng giữa chuỗi, đảm bảo khoảng cách giữa hai từ trong chuỗi là một khoảng trắng.
9.Hàm Searching Methods:
Hàm	 bool Find(char* SStr);// kiểm tra xem chuỗi SStr có nằm trong chuỗi Str của đối tượng không, trả về true nếu tìm thấy, false nếu không. Hàm sẽ in hoa vị trí xuất hiện đầu tiên của SStr trong Str.
	bool ReverseFind(char* SStr);//Tương tự như hàm Find(). Chỉ khác là hàm sẽ in hoa vị trí xuất hiện cuối cùng của SStr trong Str.
Trong hai hàm này ta hoàn toàn có thể trả về giá trị char* là con trỏ trỏ tới vị trí xuất hiện của SStr trong Str. Tuy nhiên người dùng có thể dựa vào đó để truy xuất đến chuỗi Str của đối tượng CMyString. Điều này không đảm bảo tính an toàn trong lập trình.
Khi trả về giá trị bool thi ta có thể dùng lại hàm trong việc kiểm tra khi muốn thêm một chuỗi vào một chuỗi của một đối tượng CMyString. Trước khi thêm vào ta phải kiểm tra xem chuỗi mới đã có trong chuỗi của đối tương chưa rồi mới thêm vào.
Trong phần ví dụ trong hàm main() của phần này thông thường ta không được xuất các chuỗi Str ra màn hình, nhưng ở đây ta xuất ra là để tiện cho việc kiểm tra.
IV. Tổng kết:
Với cấu trúc của CMyString trên ta có thể thực hiện được những thao tác thông thường trên một chuỗi.Chúng ta có thể sửa đổi các giá trị trả về của các hàm trên tùy thuộc vào mục đích của việc dùng đối tượng.

File đính kèm:

  • docxĐồ án CMyString - Đoàn Duy.docx
  • rarCMyString.rar