Tài liệu miễn phí phục vụ học tập nghiên cứu
Tìm nhiều : Tiếng anh, Photoshop , Lập trình

Hướng Dẫn Lập Trình Hướng Đối Tượng Với C++

  • Loại tài liệu : .pdf
  • Dung lượng:1.17 M
  • Lần download: 187 lần
  • Chi phí: Miễn phí, download free
MINH HỌA
  • Hướng Dẫn Lập Trình Hướng Đối Tượng Với C++
  • Hướng Dẫn Lập Trình Hướng Đối Tượng Với C++
  • Hướng Dẫn Lập Trình Hướng Đối Tượng Với C++
  • Hướng Dẫn Lập Trình Hướng Đối Tượng Với C++
  • Hướng Dẫn Lập Trình Hướng Đối Tượng Với C++

Hướng Dẫn Lập Trình Hướng Đối Tượng Với C++

Loại tài liệu : .pdf Dung lượng:1.17 M Lần download: 187 lần Chi phí: Miễn phí, download free

ThuVienMienPhi.com giới thiệu đến mội người tài liệu Hướng Dẫn Lập Trình Hướng Đối Tượng Với C++ : 1 Hướng dẫn lập trình hướng đối tượng với C++_ first_pace BÀI một, bên cạnh đó SƠ LƯỢC VỀ LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG – OBJECT ORIENTED PROGRAMMING __ ム 少 ___ Tất cả những ngôn ngữ lập trình đều sinh ra để hỗ trợ 1 hoặc 1 số thời trang lập trình hay 1 mô hình lập trình nào ấy (programming paradigm), bên cạnh đó Vì vậy trước khi bắt tay vào học ngôn ngữ ta nên tham khảo qua loa về mô hình lập trình được ngôn ngữ hỗ trợ mà ta dự định viết chương trình theo mô hình ấy, bên cạnh đó Cụ thể, nói “lập trình hướng đối tượng với C++” thì ta phải biết sơ sơ về hướng đối tượng trước khi “ngâm cứu” C++, ngoài ra Vì vậy bài đầu tiên này mình muốn dành

Tất cả các ngôn ngữ lập trình đều sinh ra để hỗ trợ một hoặc một số phong cách lập trình hay một mô hình lập trình nào đó (programming paradigm). Vì vậy trước khi bắt tay vào học ngôn ngữ ta nên tìm hiểu sơ lược về mô hình lập trình được ngôn ngữ hỗ trợ mà ta dự định viết chương trình theo mô hình đó. Cụ thể, nói “lập trình hướng đối tượng với C++” thì ta phải biết sơ sơ về hướng đối tượng trước khi “ngâm cứu” C++.

Tải tài liệu Hướng Dẫn Lập Trình Hướng Đối Tượng Với C++ miễn phí ,tại Thư viện tài liệu miễn phí www.thuvienmienphi.com bạn có thể tải nhiều tài liệu, thư viện hoàn toàn miễn phí,bạn có thể chia sẽ tài liệu Hướng Dẫn Lập Trình Hướng Đối Tượng Với C++ của bạn cho mọi người cùng nghiên cứu học tập tại đây .DOC: là dạng tài liệu đọc bằng thư viện Microsoft Office,PDF là dạng file đọc bằng phần mềm Adobe - Adobe Reader Một số tài liệu tải về mất font không xem được thì do máy tính bạn không hỗ trợ font củ, bạn tải font các font vntime củ về cài sẽ xem được.

BÀI 1. LƯỢC VỀ LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG OBJECT
ORIENTED PROGRAMMING
__ ム 少 ___
Tất cả các ngôn ngữ lập trình đều sinh ra để hỗ trợ một hoặc một số phong cách lập trình
hay một mô hình lập trình nào đó (programming paradigm). Vì vậy trước khi bắt tay vào
học ngôn ngữ ta nên tìm hiểu sơ lược về mô hình lập trình được ngôn ngữ hỗ trợ mà ta d
định viết chương trình theo mô hình đó. Cụ thể, nói “lập trình hướng đối tượng với C++” thì
ta phải biết sơ sơ về hướng đối tượng trước khi “ngâm cứu” C++. Vì vậy bài đầu tiên này
mình muốn dành để nói về lập trình hướng đối tượng là gì, và quan điểm của giới lập trình
về nó như thế nào, tại sao nó lại là một mô hình tiên tiến và bạn sẽ không phải hối hận khi
bỏ thời gian và công sức ra để học nó.
Ngày xửa ngày xưa, khoảng ba chục năm về trước, quy mô các của các dự án phần mềm
còn nhỏ, các lập trình viên gần như có thể viết ngay được chương trình mà không cần suy
nghĩ nhiều (giả sử rằng không có lập trình viên nào bị thiểu năng về trí tuệ. Thời đó lập trình
cấu trúc (structured programming) hay còn gọi lập trình thủ tục (procedural programing) là
kỹ thuật lập trình chủ yếu. Tớ sẽ nói sơ qua một chút về kỹ thuật này (trong phạm vi hiểu
biết). Theo quan điểm của lập trình cấu trúc, người ta xem chương trình là một “công việc
lớn” cần phải xử lý. Để giải quyết “công việc lớn” này, người ta tìm cách chia thành các phần
công việc nhỏ hơn và mỗi phần này sẽ được quẳng cho một hàm đảm nhiệm. Chương trình
chính sẽ gọi đến mỗi hàm vào những thời điểm cần thiết. Trong mỗi hàm, nếu như phần
công việc vẫn còn lớn, thì ta lại chia nhỏ tiếp cho tới khi vấn đề trở nên đủ đơn giản. Và dĩ
nhiên để giải quyết những phần con đó ta cũng phải quẳng chúng cho các hàm tương ứng.
Quá trình này được gọi là “làm mịn” hay “tinh chế từng bước” (stepwise refinement). Việc
trao đổi dữ liệu giữa các hàm được thực hiện thông qua việc truyền đối số hoặc các biến,
mảng toàn cục. Như vậy có thể coi chương trình là một tập hợp các hàm được thiết kế để xử
lý các phần công việc được giao. Các ngôn ngữ lập trình hướng thủ tục thường gặp là C,
Pascal, FORTRAN … và cả C++. Tuy nhiên C++ còn được thiết kế để hỗ trợ cả lập trình
hướng đối tượng nữa. Một chương trình viết theo hướng cấu trúc sẽ tập trung vào quá trình
xử lý. Nghĩa là mỗi câu lệnh chỉ dẫn cho máy tính làm một việc gì đó, kiểu như: nhận 2 số
nguyên từ bàn phím, cộng chúng lại với nhau, rồi đem chia đôi, hiển thị kết quả lên màn
hình. Một chương trình là một tập các chỉ dẫn. Lập trình cấu trúc tỏ ra khá hiệu quả khi quy
mô chương trình còn nhỏ, nhưng khi quy mô chương trình lớn dần lên và phức tạp hơn thì
nó bộc lộ nhiều khiếm khuyết. Có thể nêu ra một số vấn đề sau:
1.
Trọng tâm vào “hành động” hơn “dữ liệu”: thực tế dữ liệu là cái tối thượng
mà chúng ta quan tâm. Mọi chương trình đều nhằm mục đích nhét dữ liệu vào input
rồi chờ đợi kết quả ở output. Rõ ràng mục đích của ta là dữ liệu đầu ra, mặc kệ
chương trình nó muốn xử lý cái gì thì xử lý, ta chỉ quan tâm đến kết quả đầu ra có
đạt yêu cầu hay không. Tuy nhiên lập trình cấu trúc quá chú trọng đến việc thiết kế
các hàm (hành động) mà xem nhẹ dữ liệu, đây là hạn chế thứ nhất.
2.
Tính bảo mật của dữ liệu không cao: (nếu như không muốn nói là không có). D
liệu trong chương trình gần như là của chung, và có thể dễ dàng truy cập hay sửa
đổi một cách vô tội vạ. Những hàm không phận sự cũng có thể tọc mạch vào vùng
dữ liệu mà nó “chằng liên quan” và sửa đổi nó . Điều này làm chương trình rất dễ
phát sinh lỗi đặc biệt là những “lỗi tinh vi” hoặc “lỗi logic”. Và khi có lỗi thì rất khó
debug vì phạm vi khoanh vùng là rất rộng (vì ai cũng có thể tọc mạch vào dữ liệu
nên không biết nghi cho thằng nào). Đây là hạn chế thứ hai.
1
Hướng dẫn lập trình hướng đối tượng với C++_ first_pace
3.
Tách rời dữ liệu với “hành động” liên quan: không phải tất cả các hàm được viết
ra để dùng cho tất cả dữ liệu, và ngược lại. Mỗi nhóm dữ liệu chỉ sử dụng một nhóm
các hàm “dành riêng cho chúng”. Trong lập trình, việc “đóng gói” dữ liệu và hàm liên
quan được gọi là “mô-đun hóa” (modularization). Điều này có hai cái lợi. Thứ nhất,
các hàm và dữ liệu được nhóm lại với nhau nên “gọn gàng” hơn và dễ kiểm soát hơn.
Thứ hai, thông thường chỉ những hàm trong khối mới có thể truy nhập vào dữ liệu
của khối. Do đó hạn chế sự tọc mạch từ bên ngoài, tính bảo mật dữ liệu cao hơn,
hạn chế lỗi và phạm vi khoanh vùng lỗi sẽ được thu hẹp. Tuy nhiên, lập trình cấu
trúc không làm được điều này. Đây là hạn chế thứ ba.
4.
Ph thuộc nặng nề vào cấu trúc dữ liệu và thuật toán: minh chứng cho điều
này là câu nói nổi tiếng của bác Niklaus Wirth (creator of Pascal): Algorithms + Data
Structures = Programs. Cũng xin nói thêm mô hình lập trình hướng cấu trúc được
dựa trên mô hình toán học của Bohm và Guiseppe (nói thật là mình không biết hai
bác này, theo đó, một chương trình máy tính đều có thể viết dựa trên ba cấu trúc là:
tuần tự (sequence), lựa chọn hay rẽ nhánh (selection) và lặp (repetition). Vì vậy một
chương trình được xem là một chuỗi các hành động liên tiếp để đi đến kết quả cuối
cùng. Và việc thiết kế chương trình phụ thuộc nặng nề vào việc dùng giải thuật gì và
tổ chức dữ liệu như thế nào. Điều này làm cho việc thiết kế là rất “không tự nhiên” vì
nó làm cho quá trình thiết kế phụ thuộc vào cài đặt và khi quy mô chương trình lớn
dần lên sẽ rất khó triển khai. Đồng thời khi có thay đổi về cấu trúc dữ liệu hoặc nâng
cấp chương trình gần như ta phải viết lại hầu hết các hàm liên quan và sửa đổi lại
thuật toán vì mỗi cấu trúc dữ liệu chỉ phù hợp với một số thuật toán nhất định. Đây
là hạn chế thứ tư.
5.
Không tận dụng được mã nguồn: mặc dù hàm là một phát minh quan trọng để
tăng cường khả năng sử dụng lại mã nguồn, tuy nhiên trong lập trình cấu trúc điều
này không triệt để. Ta vẫn phải viết lại những đoạn code hao hao giống nhau để
thực hiện những công việc tương tự nhau. Ví dụ: trong C, hàm hàm int min(int x,
int y)có nhiệm vụ tính toán và trả về min trong hai số nguyên được truyền vào,
còn hàm float min(float x, float y)cũng làm nhiệm vụ tương tự nhưng là với
số thực. Rõ ràng nội dung hai hàm này là giống nhau đến 99%, có khác thì chỉ khác
mỗi kiểu int và float, thế nhưng trong C ta vẫn phải viết hai hàm khác nhau. Trong
C++, với định hướng đối tượng ta có thể viết một hàm dùng để dùng cho mọi kiểu
int, float, double. Ngoài ra còn nhiều điểm mạnh khác mà OOP mang lại để tận dụng
tối đa khả năng sử dụng lại mã nguồn như tính kế thừa (inheritance), đa hình
(polymorphism). Đây là hạn chế thứ năm của lập trình cấu trúc.
Nói chung mình chỉ mới bới ra được có thế thôi, ai biết thêm cái nào thì bổ sung nhé. Rõ
ràng với nhiều hạn chế như vậy thì lập trình cấu trúc không phải là giải phải pháp tốt. Và
những nỗ lực để vá những lỗ hổng này dẫn đến sự ra đời của một kỹ thuật lập trình mới lập
trình hướng đối tượng (object oriented programming OOP). Mình cũng nói sơ qua một
chút về OOP. Khác với lập trình cấu trúc, OOP coi chương trình là tập hợp của các đối tượng
có quan hệ nào đó với nhau. Mỗi đối tượng có dữ liệu và phương thức của riêng mình. Ví d
một đối tượng Human sẽ có các dữ liệu như: tên, ngày sinh, tuổi, số chứng minh nhân dân,
nghề nghiệp, … blah blah … và được đóng gói cùng các phương thức đi kèm ví dụ phương
thức set_name() sẽ cho phép nhập tên , get_name() sẽ cho phép lấy tên của đối tượng,
tương tự ta cũng cho các phương thức như set_ID(), get_ID() cho chứng minh nhân dân …
Các đối tượng sử dụng những phương thức này để giao tiếp với bên ngoài. Việc này trước
2
Hướng dẫn lập trình hướng đối tượng với C++_ first_pace
giúp dliệu được quan tâm đúng mức, và an toàn hơn. Mọi truy cập đến dữ liệu đều được
kiểm soát thông qua các phương thức được cung cấp sẵn nên hạn chế được những truy cập
bất hợp pháp. Tức là đã giải quyết được ba hạn chế đầu tiên của lập trình cấu trúc. Thứ hai,
những thay đổi nào đó về dữ liệu chỉ ảnh hưởng đến một số lượng hàm nhất định và thay vì
phải viết lại hầu hết các hàm thì ta chỉ phải viết lại một số hàm có liên quan trực tiếp đến sự
thay đổi đó. Ví dụ thành phần dữ liệu name biểu thị tên của một đối tượng Human vì một lý
do nào đó được đổi thành full_name thì những hàm liên quan trực tiếp đến name như
set_name() hay get_name() mới phải viết lại, còn những hàm như set_ID(), get_ID() hay
thậm chí những hàm gọi hàm set_name() và get_name() thì chẳng việc gì cả. Điều này
thuận lợi cho việc nâng cấp và bảo trì. Tức là hạn chế thứ tư đã được giải quyết. OOP cũng
cung cấp những khái niệm về kế thừa và đa hình giúp tận dụng tối đa khả năng sử dụng lại
mã nguồn để giảm bớt vất vả cho lập trình viên cũng như tăng chất lượng phần mềm. Ví dụ
chúng ta có thể tạo ra một lớp (class) mới là Girl, kế thừa từ lớp Human. Khi đó, một đối
tượng thuộc lớp Girl sẽ có đầy đủ các thuộc tính và phương thức của Human, và ta chỉ cần
bổ sung thêm những phần khác như số đo ba vòng: round_1, round_2, round_3 … Vì th
không phải viết lại toàn bộ code cho lớp Girl. Cụ thể như thế nào thì mình sẽ đề cập trong
những bài post sau. Đây chỉ là bài mở đầu để giúp mọi người so sánh giữa kỹ thuật OOP với
kỹ thuật lập trình cấu trúc truyền thống và có những hình dung cơ bản về OOP, những ưu
điểm mà nó mang lại, và vì sao nó lại là một kỹ thuật được ưa chuộng nhất hiện nay. Trong
những năm gần đây, lập trình đã dịch chuyển từ hướng cấu trúc sang hướng đối tượng vì
những ưu điểm và khả năng mạnh mẽ của nó. Thực tế hiện nay OOP được sử dụng rộng rãi
trong các dự án phần mềm, còn lập trình cấu trúc chỉ chiếm một phần rất nhỏ thường là giải
quyết những vấn đề có quy mô nhỏ hoặc dùng trong giảng dạy để giúp người học bước đầu
làm quen với lập trình. Đấy là mình cũng chỉ nghe thiên hạ nói thế thôi chứ cũng mới học
OOP nên cũng không biết là thực tế doanh nghiệp bây giờ nó viết phần mềm bằng ngôn ngữ
gì cả. Nhưng có điều mình cảm nhận được đúng là OOP lập trình sướng hơn hơn lập trình
cấu trúc nhiều, ít ra là cái khoản thiết kế nó trực quan hơn, rõ ràng hơn, thật hơn. Còn nếu
để ý kỹ thì những cài đặt chi tiết trong hướng đối tượng suy cho cùng vẫn là lập trình cấu
trúc, có điều chúng được tổ chức tốt hơn và được phủ lên một giao diện mang tính hướng
đối tượng mà thôi.
BÀI 2. NHỮNG ĐẶC TRƯNG BẢN CỦA OOP
Chúng ta s xem xét qua một số khái niệm và thành phần chính của OOP nói chung và
của C++ nói riêng
1. Đối tượng (Objects)
Khi thiết kế một chương trình theo tư duy hướng đối tượng người ta sẽ không hỏi “vấn đề
này sẽ được chia thành những hàm nào” mà là “vấn đề này có thể giải quyết bằng cách chia
thành những đối tượng nào”. Tư duy theo hướng đối tượng làm cho việc thiết kế được “tự
nhiên” hơn và trực quan hơn. Điều này xuất phát từ việc các lập trình viên cố gắng tạo ra
một phong cách lập trình càng giống đời thực càng tốt. Nếu ngoài đời có cái công nông thì
3
Hướng dẫn lập trình hướng đối tượng với C++_ first_pace

DOWNLOAD TÀI LIỆU
Bấm nút LIKE +1 để cảm ơn
  
     
SAU ĐÓ BẤM
Download miễn phí

HỎI ĐÁP LIÊN QUAN

Tài liệu tương tự

Nội quy


website trong giai đoạn phát triển và hoạt động thử nghiệm, tài liệu đăng tải được sưu tầm trên internet tu cac website nhu tailieu.vn, 123doc...nham muc dich chia se kien thuc hoc tap, nếu tai lieu nao thuộc bản quyền hoặc phi phạm pháp luật chúng tôi sẽ gở bỏ theo yêu cầu Tài liệu học tập miễn phí