Giáo trình C++ lập trình hướng đối tượng: Phần 2

111 14 0
Giáo trình C++ lập trình hướng đối tượng: Phần 2

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Giáo trình C++ lập trình hướng đối tượng: Phần 2 có các nội dung chính sau: Lập trình hướng đối tượng, namespace, ngoại lệ, làm việc với file, các lớp thư viện. Cuối giáo trình còn cung cấp một số bài tập thực hành và một số thuật ngữ anh-việt tương ứng được sử dụng trong giáo trình này. Mời các bạn cùng tham khảo.

Chương 13 Lập trình hướng đối tượng CHƯƠNG 13 LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG Lịch sử hình thành Trước kĩ thuật lập trình hướng đối tượng đời, người đ~ trải qua thời kì lập trình tuyến tính, lập trình hướng thủ tục Lập trình tuyến tính M|y tính lập trình mã nhị phân, sử dụng cơng tắc khí để nạp chương trình Cùng với xuất thiết bị lưu trữ lớn nhớ m|y tính có dung lượng lớn, nên ngơn ngữ lập trình cấp cao bắt đầu xuất Các ngôn ngữ lập trình n{y thiết kế làm cho cơng việc lập trình trở nên đơn giản C|c chương trình ban đầu chủ yếu liên quan đến tính tốn, chúng tương đối ngắn Chúng chủ yếu chạy theo dòng lệnh cách tuần tự, dòng trước chạy trước, dòng sau chạy sau Nhược điểm: o Nếu ta cần sử dụng đoạn lệnh n{o nhiều lần, ta phải chép nhiều lần o Khơng có khả kiểm sốt phạm vi nhìn thấy biến o Chương trình dài dịng, khó hiểu, khó nâng cấp Lập trình hướng thủ tục Với nhược điểm trên, địi hỏi có ngơn ngữ lập trình thay Đó l{ ngun nh}n đời ngơn ngữ lập trình hướng thủ tục Về chất, chương trình chia nhỏ thành c|c modul (đơn vị chương trình) Mỗi đơn vị chương trình chứa hàm hay thủ tục (nên gọi hướng thủ tục) Tuy tách rời thành modul riêng biệt, ngơn ngữ lập trình hướng thủ tục đảm bảo thông tin thông suốt modul nhờ v{o chế hoạt động h{m, chế truyền theo tham biến tham trị Với lập trình hướng thủ tục, chương trình lớn chia nhỏ Trang | 120 CuuDuongThanCong.com https://fb.com/tailieudientucntt Chương 13 Lập trình hướng đối tượng th{nh c|c modul, để lập trình viên đảm nhận Tiêu biểu số C, Pascal Nhược điểm: o Các hàm thủ tục thường gắn kết với nhau, muốn nâng cấp chương trình, thường phải chỉnh sửa tất hàm thủ tục liên quan o Khơng phù hợp với xu đại khơng mô tả thực thể sống thực Lập trình hướng đối tượng a Giới thiệu Với xu đại, ngơn ngữ lập trình hướng đối tượng đ~ đời Cơ sở lập trình hướng đối tượng l{ đối tượng Đối tượng thể thực thể giới thực Một thực thể giới thực thường có: c|c đặc trưng v{ c|c h{nh động Ví dụ: người giới thực có c|c đặc trưng - tên gọi, tuổi, màu tóc, màu mắt, m{u da… v{ c|c h{nh động – ăn, nói, chạy, nhảy… Cách thức lập trình mơ tả cách xác vật, người giới thực Bây giờ, ta xét vài ví dụ thấy cần thiết lập trình hướng đối tượng Ví dụ Chúng ta điểm qua số tính chương trình soạn thảo văn Word Microsoft Chúng ta thảo luận c|c đối tượng Drawing Word Mỗi đối tượng có thuộc tính: màu viền, dạng đường viền, kích thước viền, màu sắc viền, màu nền, có văn hay khơng đối tượng drawing…Khi biến đổi hình dạng đối T r a n g | 121 CuuDuongThanCong.com https://fb.com/tailieudientucntt C++ Ví dụ Chúng ta muốn xây dựng chương trình quản lý sinh viên Khi đó, ta cần lưu trữ c|c thông tin liên quan đến đối tượng sinh viên này: họ tên sinh viên, mã số sinh viên, ng{y th|ng năm sinh, quê qu|n, điểm môn, điểm tổng kết,… v{ nhiều thông tin khác liên quan Sau kết thúc năm học, sinh viên nhận đ|nh gi| kết học tập Chúng ta cần có phương thức tiếp nhận kết để sinh viên phản ứng lại với mà nhận được, họ phải thực c|c h{nh động học tập, tham gia vào hoạt động trường, khoa… l{ h{nh động mà sinh viên cần thực Chương 13 Lập trình hướng đối tượng tượng: kéo giãn, làm lệch xiêng, quay vịng… cần đưa thơng điệp để c|c đối tượng hình thể n{y thay đổi theo C|c h{nh động thuộc quyền sở hữu đối tượng Tiêu biểu số C++, Java, C#, Delphi, Python… b Phương pháp phân tích thiết kế hướng đối tượng Trước bắt đầu viết chương trình theo hướng đối tượng, ta cần phân tích thiết kế c|c đối tượng Từ sơ đồ cấu trúc nhận được, xây dựng nên chương trình Chi tiết cách thức phân tích thiết kế đối tượng, tìm hiểu kĩ học phần phân tích thiết kế hệ thống thơng tin Trong nội dung giáo trình này, thảo luận phần nhỏ, để giúp bạn xây dựng nên cấu trúc chương trình theo hướng đối tượng Sơ đồ cấu trúc lập trình hướng đối tượng sử dụng phổ biến l{ sơ đồ mô tả ngôn ngữ UML (Unified Modeling Languages) UML ngôn ngữ chuyên dùng để mơ hình T r a n g | 122 CuuDuongThanCong.com https://fb.com/tailieudientucntt C++ Trong hai ví dụ minh họa trên, thấy hướng tiếp cận theo lập trình hướng đối tượng gần gũi với sống thực Chúng ta khơng quan t}m đến khía cạnh không cần thiết đối tượng, tập trung v{o c|c đặc trưng v{ c|c h{nh động đối tượng Kể từ thời điểm trở đi, gọi đặc trưng đối tượng thuộc tính thành viên đối tượng (hoặc liệu thành viên, biến thành viên đối tượng) v{ c|c h{nh động đối tượng l{ c|c phương thức thành viên (hay hàm thành viên) đối tượng Các cách gọi liệu thành viên, thuộc tính thành viên, biến thành viên hay thuộc tính (tương ứng phương thức th{nh viên, h{m th{nh viên, phương thức) phân biệt Tơi đưa nhiều cách gọi kh|c để quen tham khảo giáo trình khác Bởi lẽ, nhiều giáo trình chọn lựa cách gọi khác Các cách gọi n{y tùy thuộc vào ngôn ngữ lập trình (trong C++ thơng thường người ta sử dụng khái niệm liệu thành viên – member data biến thành viên – member variable hàm thành viên – member function, đó, c|c ngơn ngữ Java, Delphi hay C# lại sử dụng khái niệm phương thức – method thuộc tính – property) Khái niệm thành viên áp dụng cho liệu thành viên lẫn hàm thành viên Phương ch}m lập trình hướng thủ tục theo gi|o sư Niklaus Wirth Chương trình = Cấu trúc liệu + Giải thuật Còn phương ch}m lập trình hướng đối tượng Chương trình = Đối tượng + Dữ liệu Chương 13 Lập trình hướng đối tượng hóa c|c đối tượng Nó khơng áp dụng lập trình, m{ cịn sử dụng rộng r~i c|c lĩnh vực khác sống Trong UML có nhiều dạng sơ đồ hoạch định Nhưng phạm trù lập trình hướng đối tượng, sơ đồ lớp mô tả gần gũi Do đó, tơi trình bày cách xây dựng chương trình mơ tả sơ đồ lớp Một số kí hiệu cần lưu ý UML Trước tìm hiểu cách mơ hình hóa tốn UML, cần tìm hiểu số kí hiệu sử dụng UML Các kí hiệu khác nhiều chương trình mơ Những kí hiệu mà tơi sử dụng đ}y l{ kí hiệu dùng Visual Studio 2010 Kí hiệu Ý nghĩa Lớp Thuộc tính phương thức private Thuộc tính phương thức protected Thuộc tính phương thức public Biểu diễn tính kế thừa Mũi tên ln hướng lớp sở Chiều cịn lại ln vào lớp Thuộc tính Phân tích thiết kế mơ hình Việc phân tích thiết kế mơ hình cơng việc địi hỏi nhà thiết kế phải có tư tốt Đối với tốn phân tích thiết kế, khơng phải có mơ hình kết quả, mà có vài, chí nhiều mơ hình khác Tuy nhiên, cơng việc chọn lựa mơ hình tối ưu l{ điều cần thiết Trong nội dung giáo trình này, tơi giới thiệu sơ qua cách hoạch định mơ hình Chúng ta khơng sâu nghiên cứu vấn đề Trong học phần phân tích thiết kế hệ thống thơng tin trình bày chi tiết cụ thể Các bước phân tích thiết kế Để phân tích thiết kế mơ hình hướng đối tượng, cần thực c|c giai đoạn sau đ}y: T r a n g | 123 CuuDuongThanCong.com https://fb.com/tailieudientucntt C++ Phương thức - Bước Mơ tả tốn Một tốn miêu tả dạng ngơn ngữ tự nhiên Nó chủ yếu dựa vào yêu cầu khác hàng trợ giúp khách hàng - Bước Đặc tả yêu cầu Sau phân tích nhân tố tham gia vào mơ hình, ta cần tiến h{nh xem xét c|c t|c nh}n t|c động vào nhân tố Mối quan hệ nhân tố… - Bước Trích chọn đối tượng Sau tổng hợp tác nhân nhân tố mơ hình Chúng ta cần tiến hành lựa chọn chúng Việc loại bỏ nhân tố tác nhân không cần thiết quan trọng Nó giúp cho mơ hình tập trung vào nhân tố quan trọng cần thiết, tránh phân tích thiết kế tràn lan - Bước Mơ hình hóa lớp đối tượng Sau chọn lựa c|c đối tượng cần thiết Chúng ta phân tích đối tượng Khi ph}n tích đối tượng, ta cần lưu ý tập trung vào thứ cốt lõi đối tượng, tr|nh đưa v{o phương thức thuộc tính khơng cần thiết, khơng quan trọng đối tượng – l{ tính trừu tượng hóa liệu Khi phân tích, cần lưu ý đến tính chất chung đối tượng Nếu c|c đối tượng có nhiều tính chất chung, nên xây dựng đối tượng mới, chứa tính chất chung đó, đối tượng lại thừa kế từ đối tượng n{y, để nhận tính chất chung - Bước Thiết kế đối tượng Chúng ta cần đảm bảo rằng, đối tượng phải có c|c phương thức thuộc tính riêng lẫn c|c phương thức thuộc tính chia sẻ C|c phương thức riêng có th}n đối tượng có quyền thay đổi C|c phương thức chia sẻ truy cập đối tượng khác theo mức khác - Bước Xây dựng kiểm thử mơ hình Bắt tay vào xây dựng mơ hình Ở đ}y, sử dụng ngơn ngữ UML để mô tả Sau xây dựng xong mơ hình, cần tiến hành kiểm thử mơ hình Kiểm thử mơ hình tình thực tế cần thiết để đảm bảo mơ hình nhận phù hợp, trước bắt tay vào viết chương trình Trên đ}y, bước đề nghị để có nhìn tổng qt phân tích thiết kế Có thể có nhiều c|ch để phần tích thiết kế mơ hình Nhưng ln đảm bảo rằng, mơ hình thu khơng đạt hiệu cao, m{ đảm bảo phải dễ dàng bảo trì nâng cấp Mỗi có lỗi xuất hiện, cần biết khoanh vùng để thu nhỏ phạm vi phát lỗi Chúng ta lấy ví dụ nhỏ Ph}n tích hướng đối tượng mơ hình quản lý cửa hàng bán xe đạp Trong mơ hình này, ta cần quản lý c|c nhóm đối tượng sau: đối tượng xe đạp, đối tượng chi nhánh bán hàng, đối tượng kh|ch h{ng v{ đối tượng nhân viên bán hàng - Đối tượng xe đạp: cần quản lý mã số xe (mã số gồm hai phần: phần id chi nhánh bán hàng + mã số vạch), loại xe, màu sắc, gi| b|n, nước T r a n g | 124 CuuDuongThanCong.com https://fb.com/tailieudientucntt C++ Chương 13 Lập trình hướng đối tượng Chương 13 Lập trình hướng đối tượng Hình 20 – Minh họa sơ đồ lớp T r a n g | 125 CuuDuongThanCong.com https://fb.com/tailieudientucntt C++ sản xuất (các thuộc tính chung) Đối tượng xe đạp địa hình: số b|nh răng, c|ch lên (bằng tay/tự động), chống sooc Đối tượng xe đạp du lịch: xe đơn/đôi, tự động (hỗ trợ tự chạy điện hay khơng), chiếu sáng (có/khơng) Xe đua thể thao: điều chỉnh độ cao (có/khơng), chế độ đạp (đạp thư giản, đạp tăng tốc, đạp chậm…) - Đối tượng khách hàng nhân viên bán hàng: họ tên, số CMND Đối tượng khách hàng: cách thức toán (tiền mặt/chuyển khoản), cách thức giao hàng (nhận chỗ/ đưa đến tận nh{) Đối tượng nhân viên bán h{ng: id chi nh|nh b|n h{ng, ng{y th|ng năm sinh, quê qu|n, địa chỉ, mã số thuế, lương… - Đối tượng chi nh|nh b|n h{ng: id chi nh|nh b|n h{ng, địa Nếu yêu cầu quản lý nhiều c|c thơng tin đối tượng, ta cần bổ sung thêm thuộc tính tương ứng Đối với c|c phương thức thực thi h{nh động, tương ứng với thuộc tính, ta có hai phương thức để định tiếp nhận Ví dụ, đối tượng nhân viên, có họ v{ tên Tương ứng với thuộc tính n{y, ta có phương thức định để đặt tên cho nh}n viên (đặt tên thiết lập tên gọi phần mềm quản lý) tiếp nhận tên có yêu cầu Đối tượng kh|ch h{ng có phương thức định (quyết định thực giao dịch) Đối tượng nh}n viên b|n h{ng có phương thức tiếp nhận (nhận giao dịch) Đối tượng địa điểm b|n h{ng có phương thức nhận hàng (nếu h{ng cịn đầy khơng tiếp nhận thêm) Theo ph}n tích trên, đối tượng xe đạp l{ đối tượng chung C|c đối tượng xe đạp thể thao, xe đạp du lịch, xe đạp địa hình kế thừa từ lớp xe đạp Đối tượng người để quản lý thông tin chung V{ c|c đối tượng nhân viên khách hàng thừa kế từ lớp người Cuối l{ đối tượng chi nh|nh b|n h{ng Theo c|ch ph}n tích n{y, ta có sơ đồ lớp sau: Chương 13 Lập trình hướng đối tượng Trong sơ đồ n{y, c|c phương thức thuộc tính lớp đối tượng đ~ ph}n tích Để tr|nh rườm r{, c|c phương thức biểu diễn sơ lược Lớp đối tượng Lớp biểu diễn đối tượng lập trình v{ ngược lại đối tượng thể lớp Một đối tượng gồm có: thuộc tính v{ phương thức Chúng ta xem lớp l{ kiểu liệu, đối tượng biến Lớp khai báo nhờ từ khóa class class tên_lớp{ các_thuộc_tính các_phương_thức } [tên_đối_tượng]; tên_lớp: tên lớp tên_đối_tượng: tên đối tượng Khai báo lớp tương đối giống khai báo struct Các thuộc tính khai b|o khai b|o biến C|c phương thức khai b|o khai b|o h{m Chúng định ba từ khóa: private, protected public o private: thành viên (biến thành viên hàm thành viên) lớp từ hàm bạn truy cập o protected: thành viên lớp từ hàm bạn từ lớp dẫn xuất bạn lớp dẫn xuất truy cập Mức truy cập lớn trường hợp bạn lớp dẫn xuất Chúng ta thảo luận thêm phần sau o public: thành viên truy cập lẫn từ lớp Theo mặc định, không định từ khóa, private ấn định C++ class Humans{ string name; int age; public: void setName(string); void setAge(string); string getName(void); int getAge(void); T r a n g | 126 CuuDuongThanCong.com https://fb.com/tailieudientucntt Chương 13 Lập trình hướng đối tượng }man; Humans tên lớp, chứa thuộc tính l{ name v{ age, chúng khơng định từ khóa, nên private sử dụng C|c phương thức setName, setAge, getName getAge định public Trong trường hợp này, man đối tượng thể lớp Humans Chương trình Kết #include The man: Jack, age 21 using namespace std; class Humans{ string name; int age; public: void setName(string); void setAge(int); string getName(void); int getAge(void); }; void Humans::setName(string s){ name = s; } void Humans::setAge (int a){ age = a; } string Humans::getName(void){ return name; } int Humans::getAge(void){ return age; } int main(){ Humans man; man.setName(“Jack”); man.setAge(21); cout

Ngày đăng: 08/06/2021, 08:25

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan