Cài đặt lớp CMyString - Phạm Trung Nguyên

CMyString là một lớp gồm có:

- Dữ liệu là m ột con trỏ kiểu char.

-Các hàm thành viên thao tác trên chuỗi có độ dài bất kỳ.

Cài đặt lớp CMyString tạo ra một kiểu dữ liệu mới tương tự như lớp string trong thư

viện “string.h” thực hiện một số thao tác thường thấy khi làm việc với chuỗi.

pdf4 trang | Chuyên mục: Lập Trình Hướng Đối Tượng | Chia sẻ: dkS00TYs | Lượt xem: 2168 | Lượt tải: 2download
Tóm tắt nội dung Cài đặt lớp CMyString - Phạm Trung Nguyên, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
BÁO CÁO ĐỒ ÁN THỰC HÀNH GIỮA KỲ 
 Ngày 15 tháng 11 năm 2009 
/* Sinh viên: Phạm Trung Nguyên 
Mã số sinh viên: 08520259 Lớp: K3C4 
Môn: Lập trình hướng đối tượng Giáo viên: Nguyễn Văn Toàn 
*/ 
1. Lớp CMyString: 
CMyString là một lớp gồm có: 
- Dữ liệu là một con trỏ kiểu char. 
- Các hàm thành viên thao tác trên chuỗi có độ dài bất kỳ. 
Cài đặt lớp CMyString tạo ra một kiểu dữ liệu mới tương tự như lớp string trong thư 
viện “string.h” thực hiện một số thao tác thường thấy khi làm việc với chuỗi. 
2. Các tính năng của chương trình: 
Các thuộc tính và phương thức của CMyString Class được khai báo trong file 
“CMyString.h” và được định nghĩa trong file “CMyString.cpp”, bao gồm: 
a/ Các hàm khởi tạo và hủy: 
- Hàm tạo không đối: cấp phát cho con trỏ kiểu char (thuộc tính của lớp) một vùng 
nhớ 2 byte rồi gán cho nó ký tự ‘\0’. 
- Hàm tạo sao chép. 
- Hàm tạo với đối số char*. 
- Hàm tạo với đối số là char c, int n: khởi tạo 1 chuỗi gồm n ký tự c liên tiếp giống 
nhau, với n mặc định bằng 1. 
- Hàm hủy. 
b/ Các toán tử: 
- Các toán tử so sánh ==, >, < được xây dựng để so sánh hai đối tượng CMyString 
hay 1 đối tượng CMyString và một đối tượng char*. 
- Các toán tử ghép chuỗi: ta xây dựng hai toán tử + và += rồi dùng phương pháp nạp 
chồng toán tử để biểu diễn: 
 CMyString + CMyString. 
 CMyString += CMyString. 
 CMyString + char*. 
 CMyString += char*. 
- Toán tử gán: bao gồm 2 hình thức 
 CMyString = CMyString: gán giá trị của một đối tượng CMyString cho một 
đối tượng CMyString. 
 CMyString = char*: gán giá trị của một đối tượng chuỗi cho một đối tượng 
CMyString. 
- Toán tử [int i]: dùng để lấy giá trị thứ i của chuỗi, có thể dùng để gán một ký tự cho 
ký tự thứ i đó. 
c/ Các phương thức: 
- String as an Array Methods: bao gồm 
  GetLength(): Hàm trả về số ký tự trong chuỗi. 
  IsEmpty(): Hàm kiểm tra xem chuỗi có rỗng hay không. 
  Empty(): Hàm thiết lập chuỗi về rỗng. 
  GetAt(int i): Hàm trả về ký tự tại vị trí thứ i. 
  SetAt(char c,int i): Hàm gán giá trị ký tự c tại vị trí thứ i. 
- Comparison Methods: 
  Compare(const CMyString &s): so sánh hai đối tượng CMyString 
 + Trả về 1 nếu chuỗi thứ nhất lớn hơn. 
 + Trả về 0 nếu hai chuỗi bằng nhau. 
 + Trả về -1 nếu chuỗi thứ nhất bé hơn. 
Chú ý: Phương thức trên và các toán tử so sánh chuỗi: >, <, ==,... là phân biệt hoa 
thường (case - sensitive). 
 CompareNoCase(const CMyString &s): so sánh hai đối tượng CMyString 
giống như phương thức Compare() nhưng không phân biệt hoa thường. 
- Extraction Methods: gồm ba phương thức Mid, Right, Left 
 Mid(int i,int j): phương thức trả về chuỗi con trong chuỗi tính từ vị trí thứ i 
đến vị trí thứ j. Nếu iGetLength() (tức là độ dài của 
chuỗi) thì j=GetLength(), còn nếu i>j thì trả về chuỗi rỗng. 
 Right(int i): phương thức lấy i ký tự cuối cùng của chuỗi. Nếu i<=0 thì trả về 
chuỗi rỗng, nếu i>=GetLength() (tức là độ dài của chuỗi) thì trả về toàn bộ chuỗi. 
 Left(int i): phương thức lấy i ký tự đầu tiên của chuỗi. Nếu i<=0 thì trả về 
chuỗi rỗng, còn nếu i>=GetLength() (độ dài của chuỗi) thì trả về toàn bộ chuỗi. 
- Other Conversion Methods: gồm các phương thức chỉnh sửa dạng chữ, chuẩn hóa chuỗi 
 MakeUpper(): phương thức chuyển đổi tất cả các ký tự trong chuỗi thành ký 
tự hoa. 
 MakeLower(): phương thức chuyển đổi tất cả các ký tự trong chuỗi thành ký 
tự thường. 
 TrimLeft(): cắt các ký tự trắng “ ” đầu chuỗi. 
 TrimRight(): cắt các ký tự trắng “ ” cuối chuỗi. 
- Searching Methods: gồm có 
 Find(): gồm có ba kiểu đối số là CMyString, char* và char. Phương thức này 
trả về vị trí xuất hiện đầu tiên của đối số trong chuỗi đối tượng. 
 ReverseFind(): cũng giống như các phương thức Find(), nhưng phương thức 
này trả về vị trí xuất hiện cuối cùng của đối số trong chuỗi đối tượng. 
- Các toán tử nhập xuất đối tượng CMyString >> và <<. 
3. Hàm main.cpp: 
Menu chính bao gồm: 
01. Initializing and Cleanup. 
 02. Operators. 
 03. String as an Array Methods. 
 04. Comparison Methods. 
 05. Extraction Methods. 
 06. Other Conversion Methods. 
 07. Searching Methods. 
Please choose (0 to out): 
Bạn nhập số từ 1 đến 7 để chọn bài toán cần Demo, nhập 0 để thoát. Với mỗi lựa 
chọn bạn sẽ đến 1 menu con: 
- Chọn 1: thực hiện Demo các hàm khởi tạo và hàm hủy. 
 1.1 Default constructor. 
 1.2 Copy constructor. 
1.3 Constructor called when a string is constructed with a 
char*. 
 1.4 Construction of CMyString from a char and an int. 
 1.5 Destructor. 
 Please choose (0 to out,-1 to back): 
Bạn nhập số từ 1 đến 5 để thực hiện Demo từng chức năng, nhập 0 để thoát hẳn 
chương trình, nhập -1 để lùi lại menu chính. 
Sau khi bạn vừa thực hiện Demo xong 1 chức năng, bạn có thể tiếp tục với menu 
cùng cấp. Ví dụ như tại bước này bạn chọn 1, chương trình sẽ thực hiện Demo Default 
constructor, sau đó bạn có thể chọn tiếp 2, 3, 4…để tiếp tục Demo. Cuối cùng bạn có thể 
nhập -1 để trở về menu chính. 
- Chọn 2: thực hiện Demo các toán tử 
2.1 Compare 2 CMyString object. 
 2.2 Compare a CMyString object and a char* object. 
 2.3 Concatenation of 2 CMyStrings object (+). 
2.4 Concatenation of a CMyStrings object and a char* object 
(+). 
 2.5 Combine 2 CMyString object (+=). 
2.6 Combine a CMyString object and a char* object (+=). 
 2.7 Get the character at a given position ([]). 
2.8 Assignment of a CMyString into another CMyString (=). 
 2.9 Assignment of a char* to a CMyString (=). 
 Please choose (0 to out,-1 to back): 
Bạn nhập số từ 1 đến 9 để thực hiện Demo từng toán tử, bao gồm so sánh hai đối 
tượng CMyString, so sánh 1 đối tượng CMyString và một đối tượng char*, nối hai chuỗi 
CMyString, nối một chuỗi CMyString và một chuỗi char* thành 1 chuỗi CMyString 
mới, thêm vào một chuỗi CMyString một chuỗi CMyString, thêm vào một chuỗi 
CMyString một chuỗi char*, toán tử [], toán tử gán. Nhập 0 để thoát hẳn chương trình, 
nhập -1 để trở lại menu chính. 
- Chọn 3: thực hiện Demo các phương thức xem chuỗi như mảng 
 3.1 Get length of object. 
 3.2 Check if there is empty string or not. 
3.3 Set a CMyString object to Empty. 
 3.4 Get the character at a given position (GetAt()). 
 3.5 Set the character at a given position (SetAt()). 
 Please choose (0 to out,-1 to back): 
Tương tự như các lựa chọn 1 và 2… 
- Chọn 4: thực hiện Demo các phương thức so sánh hai đối tượng CMyString, gồm có 
phương thức so sánh ko phân biệt hoa thường và có phân biệt hoa thường. 
4.1 Compare 2 CMyString object (Noticed upper and lower). 
4.2 Compare 2 CMyString object (Non - noticed upper and 
lower). 
- Chọn 5: thực hiện Demo các phương thức trích xuất chuỗi con trong chuỗi. 
 5.1 Extraction Methods - Mid. 
5.2 Extraction Methods - Right. 
5.3 Extraction Methods - Left. 
- Chọn 6: thực hiện Demo các phương thức khác như chuyển tất cả các ký tự trong chuỗi 
thành ký tự hoa, hoặc chuyển tất cả các ký tự trong chuỗi thành ký tự thường, cắt các ký 
tự trắng bên trái và bên phải chuỗi. 
 6.1 Make upper. 
 6.2 Make lower. 
 6.3 TrimLeft and TrimRight. 
- Chọn 7: thực hiện Demo các phương thức tìm kiếm chuỗi con hay ký tự trong chuỗi. 
 7.1 Find. 
 7.2 ReverseFind. 
4. Ưu và khuyết điểm của chương trình: 
Chương trình chưa thực hiện được việc tự động chuyển đổi kiểu từ một đối tượng 
kiểu char* hay một ký tự kiểu char sang thành một đối tượng CMyString, cho nên đối 
với các toán tử so sánh ==, >, <, các toán tử kết hợp +, += và cả toán tử gán, nó chưa thực 
sự hiệu quả do phải định nghĩa 2 đến 3 toán tử cùng loại và sử dụng cơ chế nạp chồng 
toán tử. 
Đối với phương thức ReverseFind(), thuật toán này cần thiết phải dùng một hàm 
dùng để đảo ngược chuỗi, nhưng chương trình chưa xây dựng được phương thức này, và 
điều này làm code của ReverseFind() không được sáng sủa. 

File đính kèm:

  • pdfCài đặt lớp CMyString - Phạm Trung Nguyên.pdf
  • rarCMyString.rar