Giáo trình lập trình hướng đối tượng

256 195 0
Giáo trình lập trình hướng đối tượng

Đ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 VỀ LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG Biên tập bởi: GIÁO TRÌNH VỀ LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG Biên tập bởi: Các tác giả: Thanh Hiền Vũ Phiên trực tuyến: http://voer.edu.vn/c/329e7f11 MỤC LỤC Thế lập trình hướng đối tượng (OPP) Một số khái niệm lập trình hướng đối tượng Các ngôn ngữ vài ứng dụng OPP Quá trình phát triển C++ Các mở rộng cử C++ Các mở rộng C++ - Toán tử new delete Các mở rộng C++ - Các giá trị tham số mặc định Bài tâp Lớp đối tượng-dẫn nhập 10 Lớp đối tượng-các hàm truy cập hàm tiện ích 11 Lớp đối tượng-trả tham chiếu 12 Lớp đối tượng-các hàm lớp friend 13 Bài tập chương 14 Đa hóa toán tử-dẫn nhập 15 Đa hóa toán tử 16 Đa hóa toán tử-toán tử dấu phẩy 17 Đa hóa toán tử-các toán tử chèn dòng 18 Bài tập chương 19 Tính kế thừa-Dẫn nhập 20 Tính kế thừa-2 21 Tính kế thừa-3 22 Tính kế thừa-4 23 Bài tập chương 24 Tính đa hình-Dẫn Nhập 25 Tính đa hình-các thành viên ảo lớp 26 Bài tập chương 27 Thiết kế chương trình theo hướng đối tượng 28 Thiết kế chương trình theo hướng đối tượng-các ví dụ 29 Bài tập chương 30 Các dạng nhập-xuất-Dẫn nhập 31 Các dạng nhập-xuất không định dạng 32 Các dạng nhập-xuất kiểu người dùng định nghĩa 33 Bài tập chương 1/254 34 Template and Exception 35 Template and exception-xử lý Exception 36 Bài tập chương Tham gia đóng góp 2/254 Thế lập trình hướng đối tượng (OPP) LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG (oop) Là ? Lập trình hướng đối tượng (Object-Oriented Programming, viết tắt OOP) phương pháp bước đường tiến hóa việc lập trình máy tính, nhằm làm cho chương trình trở nên linh hoạt, tin cậy dễ phát triển Tuy nhiên để hiểu OOP gì, lịch sử trình lập trình – xem xét OOP tiến hóa 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ắt 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 đưa vào sử dụng Thay phải suy nghĩ dãy bit byte, lập trình viên viết loạt lệnh gần với tiếng Anh sau chương trình dịch thành ngôn ngữ máy Các ngôn ngữ lập trình cấp cao thiết kế để lập chương trình làm công việc tương đối đơn giản tính toán Các chương trình ban đầu chủ yếu liên quan đến tính toán không đòi hỏi nhiều ngôn ngữ lập trình Hơn phần lớn chương trình tương đối ngắn, thường 100 dòng Khi khả máy tính tăng lên khả để triển khai chương trình phức tạp tăng lên Các ngôn ngữ lập trình ngày trước không thích hợp việc lập trình đòi hỏi cao Các phương tiện cần thiết để sử dụng lại phần mã chương trình viết ngôn ngữ lập trình tuyến tính Thật ra, đoạn lệnh thường phải chép lặp lại dùng nhiều chương trình chương trình dài dòng, logic chương trình khó hiểu Chương trình điều khiển để nhảy đến nhiều chỗ mà thường giải thích rõ ràng, làm để chương trình đến chỗ cần thiết Ngôn ngữ lập trình tuyến tính khả kiểm soát phạm vi nhìn thấy liệu Mọi liệu chương trình liệu toàn cục nghĩa chúng bị sửa đổi phần chương trình Việc dò tìm thay đổi không mong muốn phần tử liệu dãy mã lệnh dài vòng làm cho lập trình viên thời gian 3/254 Lập trình cấu trúc: Rõ ràng ngôn ngữ với tính cần phải phát triển để tạo ứng dụng tinh vi Vào cuối năm 1960 1970, ngôn ngữ lập trình có cấu trúc đời Các chương trình có cấu trúc tổ chức theo công việc mà chúng thực Về chất, chương trình chia nhỏ thành chương trình riêng rẽ (còn gọi hàm hay thủ tục) thực công việc rời rạc trình lớn hơn, phức tạp Các hàm giữ độc lập với nhiều tốt, hàm có liệu logic riêng.Thông tin chuyển giao hàm thông qua tham số, hàm có biến cục mà không nằm bên phạm vi hàm lại truy xuất chúng Như vậy, hàm xem chương trình đặt chung với để xây dựng nên ứng dụng Mục tiêu cho việc triển khai phần mềm dễ dàng lập trình viên mà cải thiện tính tin cậy dễ bảo quản chương trình Một chương trình có cấu trúc hình thành cách bẻ gãy chức chương trình thành mảnh nhỏ mà sau trở thành hàm Bằng cách cô lập công việc vào hàm, chương trình có cấu trúc làm giảm khả hàm ảnh hưởng đến hàm khác Việc làm cho việc tách vấn đề trở nên dễ dàng Sự gói gọn cho phép viết chương trình sáng sủa giữ điều khiển hàm Các biến toàn cục không thay tham số biến cục có phạm vi nhỏ dễ kiểm soát Cách tổ chức tốt nói lên có khả quản lý logic cấu trúc chương trình, làm cho việc triển khai bảo dưỡng chương trình nhanh hữu hiệu Một khái niệm lớn đưa lập trình có cấu trúc trừu tượng hóa (Abstraction) Sự trừu tượng hóa xem khả quan sát việc mà không cần xem xét đến chi tiết bên Trong chương trình có cấu trúc, cần biết hàm cho làm công việc cụ thể đủ Còn làm mà công việc lại thực không quan trọng, chừng hàm tin cậy dùng mà không cần phải biết thực đắn chức Điều gọi trừu tượng hóa theo chức (Functional abstraction) tảng lập trình có cấu trúc Ngày nay, kỹ thuật thiết kế lập trình có cấu trúc sử rộng rãi Gần ngôn ngữ lập trình có phương tiện cần thiết phép lập trình có cấu trúc Chương trình có cấu trúc dễ viết, dễ bảo dưỡng chương trình không cấu trúc Sự nâng cấp cho kiểu liệu ứng dụng mà lập trình viên viết tiếp tục diễn Khi độ phức tạp chương trình tăng lên, phụ 4/254 thuộc vào kiểu liệu mà xử lý tăng theo Vấn đề trở rõ ràng cấu trúc liệu chương trình quan trọng chẳng phép toán thực chúng Điều trở rõ ràng kích thước chương trình tăng Các kiểu liệu xử lý nhiều hàm khác bên chương trình có cấu trúc Khi có thay đổi liệu cần phải thực thay đổi nơi có thao tác tác động chúng Đây công việc tốn thời gian hiệu chương trình có hàng ngàn dòng lệnh hàng trăm hàm trở lên Một yếu điểm việc lập trình có cấu trúc có nhiều lập trình viên làm việc theo nhóm ứng dụng Trong chương trình có cấu trúc, lập trình viên phân công viết tập hợp hàm kiểu liệu Vì có nhiều lập trình viên khác quản lý hàm riêng, có liên quan đến kiểu liệu dùng chung nên thay đổi mà lập trình viên tạo phần tử liệu làm ảnh hưởng đến công việc tất người lại nhóm Mặc dù bối cảnh làm việc theo nhóm, việc viết chương trình có cấu trúc dễ dàng sai sót việc trao đổi thông tin thành viên nhóm dẫn tới hậu nhiều thời gian để sửa chữa chương trình Sự trừu tượng hóa liệu: Sự trừu tượng hóa liệu (Data abstraction) tác động liệu tương tự trừu tượng hóa theo chức Khi có trừu tượng hóa liệu, cấu trúc liệu phần tử sử dụng mà không cần bận tâm đến chi tiết cụ thể Chẳng hạn số dấu chấm động trừu tượng hóa tất ngôn ngữ lập trình, Chúng ta không cần quan tâm cách biểu diễn nhị phân xác cho số dấu chấm động gán giá trị, không cần biết tính bất thường phép nhân nhị phân nhân giá trị dấu chấm động Điều quan trọng số dấu chấm động hoạt động đắn hiểu Sự trừu tượng hóa liệu giúp bận tâm chi tiết không cần thiết Nếu lập trình viên phải hiểu biết tất khía cạnh vấn đề, lúc tất hàm chương trình hàm viết ra, may mắn thay trừu tượng hóa theo liệu tồn sẵn ngôn ngữ lập trình liệu phức tạp số dấu chấm động Tuy nhiên gần đây, người ta phát triển ngôn ngữ cho phép định nghĩa kiểu liệu trừu tượng riêng Lập trình hướng đối tượng: Khái niệm hướng đối tượng xây dựng tảng khái niệm lập trình có cấu trúc trừu tượng hóa liệu Sự thay đổi chỗ, chương trình hướng đối tượng thiết kế xoay quanh liệu mà làm việc đó, theo thân chức chương trình Điều hoàn toàn tự nhiên chúng 5/254 ta hiểu mục tiêu chương trình xử lý liệu Suy cho cùng, công việc mà máy tính thực thường gọi xử lý liệu Dữ liệu thao tác liên kết với mức (còn gọi mức thấp), thứ đòi hỏi thứ có mục tiêu cụ thể, chương trình hướng đối tượng làm tường minh mối quan hệ Lập trình hướng đối tượng liên kết cấu trúc liệu với thao tác, theo cách mà tất thường nghĩ giới quanh Chúng ta thường gắn số hoạt động cụ thể với loại hoạt động đặt giả thiết quan hệ Ví dụ1.1: Chúng ta biết xe có bánh xe, di chuyển đổi hướng cách quẹo tay lái Tương tự thế, một loại thực vật có thân gỗ Một xe cây, mà xe, giả thiết mà làm với xe làm với Chẳng hạn, thật vô nghĩa muốn lái cây, xe lại chẳng lớn thêm tưới nước cho Lập trình hướng đối tượng cho phép sử dụng trình suy nghĩ với khái niệm trừu tượng sử dụng chương trình máy tính Một mẫu tin (record) nhân đọc ra, thay đổi lưu trữ lại; số phức dùng tính toán Tuy lại viết số phức vào tập tin làm mẫu tin nhân ngược lại hai mẫu tin nhân lại cộng với Một chương trình hướng đối tượng xác định đặc điểm hành vi cụ thể kiểu liệu, điều cho phép biết cách xác có kiểu liệu khác Chúng ta tạo quan hệ kiểu liệu tương tự khác chương trình hướng đối tượng Người ta thường tự nhiên phân loại thứ, thường đặt mối liên hệ khái niệm với khái niệm có, thường thực suy diễn chúng quan hệ Hãy quan niệm giới theo kiểu cấu trúc cây, với mức xây dựng chi tiết cho hệ sau so với hệ trước Đây phương pháp hiệu để tổ chức giới quanh Các chương trình hướng đối tượng làm việc theo phương thức tương tự, chúng cho phép xây dựng các cấu liệu thao tác dựa cấu có sẵn, mang theo tính cấu mà chúng dựa đó, thêm vào tính Lập trình hướng đối tượng cho phép tổ chức liệu chương trình theo cách tương tự nhà sinh học tổ chức loại thực vật khác Theo cách nói lập trình đối tượng, xe hơi, cối, số phức, sách gọi lớp (Class) Một lớp mẫu mô tả thông tin cấu trúc liệu, lẫn thao tác hợp lệ phần tử liệu Khi phần tử liệu khai báo phần tử lớp 6/254 gọi đối tượng (Object) Các hàm định nghĩa hợp lệ lớp gọi phương thức (Method) chúng hàm xử lý liệu đối tượng lớp Một thực thể (Instance) vật thể có thực bên nhớ, thực chất đối tượng (nghĩa đối tượng cấp phát vùng nhớ) Mỗi đối tượng có riêng cho phần tử liệu lớp gọi biến thực thể (Instance variable) Các phương thức định nghĩa lớp gọi đối tượng lớp Điều gọi gửi thông điệp (Message) cho đối tượng Các thông điệp phụ thuộc vào đối tượng, đối tượng nhận thông điệp phải làm việc theo thông điệp Các đối tượng độc lập với thay đổi biến thể đối tượng không ảnh hưởng biến thể đối tượng khác việc gửi thông điệp cho đối tượng không ảnh hưởng đến đối tượng khác 7/254 Một số khái niệm lập trình hướng đối tượng Trong phần này, tìm hiểu khái niệm đóng gói, tính kế thừa tính đa hình Đây khái niệm bản, tảng tư tưởng lập trình hướng đối tượng Hiểu khái niệm này, bước đầu tiếp cận với phong cách lập trình mới, phong cách lập trình dựa vào đối tượng làm tảng mà quan điểm che dấu thông tin thông qua sư đóng gói quan điểm trung tâm vấn đề Sự đóng gói (Encapsulation) Sự đóng gói chế ràng buộc liệu thao tác liệu thành thể thống nhất, tránh tác động bất ngờ từ bên Thể thống gọi đối tượng Trong đối tượng, liệu hay thao tác hay hai riêng (private) chung (public) đối tượng Thao tác hay liệu riêng thuộc đối tượng truy cập thành phần đối tượng, điều nghĩa thao tác hay liệu riêng truy cập phần khác chương trình tồn đối tượng Khi thao tác hay liệu chung, phần khác chương trình truy cập nó định nghĩa đối tượng Các thành phần chung đối tượng dùng để cung cấp giao diện có điều khiển cho thành thành riêng đối tượng Cơ chế đóng gói phương thức tốt để thực chế che dấu thông tin so với ngôn ngữ lập trình cấu trúc Tính kế thừa (Inheritance) Chúng ta xây dựng lớp từ lớp cũ thông qua kế thừa Một lớp gọi lớp dẫn xuất (derived class), thừa hưởng liệu phương thức lớp sở (base class) ban đầu Trong lớp này, bổ sung thành phần liệu phương thức vào thành phần liệu phương thức mà thừa hưởng từ lớp sở Mỗi lớp (kể lớp dẫn xuất) có số lượng lớp dẫn xuất Qua cấu kế thừa này, dạng hình lớp hình thành Dạng lớp trông giống gia phả lớp sở gọi lớp cha (parent class) lớp dẫn xuất gọi lớp (child class) Ví dụ 1.2: Chúng ta xây dựng tập lớp mô tả cho thư viện ấn phẩm Có hai kiểu ấn phẩm: tạp chí sách Chúng ta tạo ấn phẩm tổng quát cách định nghĩa thành phần liệu tương ứng với số trang, mã số tra cứu, ngày tháng 8/254 CT9_7.CPP 1: //Chương trình 9.72: #include 3:4: void MyTest(int Test)5: {6: cout[...]... Programming Language" của Bjarne Stroustrup xuất hiện đánh dấu sự hiện diện thực sự của C++, người lập tình chuyên nghiệp từ đây đã có một ngôn ngữ đủ mạnh cho các dữ án thực tiễn của mình Về thực chất C++ giống như C nhưng bổ sung thêm một số mở rộng quan trọng, đặc biệt là ý tưởng về đối tượng, lập trình định hướng đối tượng. Thật ra các ý tưởng về cấu trúc trong C++ đã xuất phát vào các năm 1970 từ Simula 70... thường các lập trình viên C phải sử dụng cách chép lập lại các đoạn chương trình nếu muốn tăng hiệu quả Để tránh khỏi phải xử lý điểm vào, C++ trang bị thêm từ khóa inline để loại việc gọi hàm Khi đó trình biên dịch sẽ không biên dịch hàm này như một đoạn chương trình riêng biệt mà nó sẽ được chèn thẳng vào các chỗ mà hàm này được gọi Điều này làm giảm việc xử lý điểm vào mà vẫn cho phép một chương trình. .. bar, scroll bar, button, minimize box, maximize box, … sẽ đáp ứng công việc tùy theo đặc tính của đối tượng Turbo Vision của hãng Borland là một ứng dụng OOP tuyệt vời, giúp lập trình viên không quan tâm đến chi tiết của chương trình gia diện mà chỉ cần thực hiện các nội dung chính của vấn đề 12/254 Quá trình phát triển của C++ LỊCH SỬ CỦA C++ Vào những năm đầu thập niên 1980, người dùng biết C++ với... Chính XEROR trên cơ sở ngôn ngữ OOP đã đề ra tư tưởng giao diện biểu tượng trên màn hình (icon base screen interface), kể từ đó Apple Macintosh cũng như Microsoft Windows phát triển giao diện đồ họa như ngày nay Trong Microsoft Windows, tư tưởng OOP được thể hiện một cách rõ nét nhất đó là "chúng ta click vào đối tượng" , mỗi đối tượng có thể là control menu, control menu box, menu bar, scroll bar,... trong C Các chương trình bằng C nào sử dụng các tên trùng với các từ khóa cần phải thay đổi trước khi chương trình được dịch lại bằng C++ Các từ khóa mới này là : asm catch class delete friend inline new operator private protected public template this throw try virtual Cách ghi chú thích C++ chấp nhận hai kiểu chú thích Các lập trình viên bằng C đã quen với cách chú thích bằng /*…*/ Trình biên dịch sẽ... Evolution" Trong công trình này, tác giả đã đề xuất khái niệm lớp, bổ sung việc kiểm tra kiểu tham số của hàm, các chuyển đổi kiểu và một số mở rộng khác vào ngôn ngữ C Bjarne Stroustrup nghiên cứu mở rộng ngôn ngữ C nhằm đạt đến một ngôn ngữ mô phỏng (simulation language) với những tính năng hướng đối tượng Trong năm 1983, 1984, ngôn ngữ "C with Classes" được thiết kế lại, mở rộng hơn rồi một trình biên dịch... sẽ bỏ qua mọi thứ nằm giữa /*…*/ Ví dụ 2.1: Trong chương trình sau : CT2_1.CPP 1: /*2: Chương trình in các số từ 0 đến 9.3: */4: #include 5: int main()6: {7: int I;8: for(I = 0; I < 10 ; ++ I)// 0 - 99: cout

Ngày đăng: 08/06/2016, 18:31

Mục lục

    Thế nào là lập trình hướng đối tượng (OPP)

    Một số khái niệm mới về lập trình hướng đối tượng

    Các ngôn ngữ và vài ứng dụng của OPP

    Quá trình phát triển của C++

    Các mở rộng cử C++

    Các mở rộng của C++ - Toán tử new và delete

    Các mở rộng của C++ - Các giá trị tham số mặc định

    Lớp và đối tượng-dẫn nhập

    Lớp và đối tượng-các hàm truy cập và hàm tiện ích

    Lớp và đối tượng-trả về một tham chiếu

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

Tài liệu liên quan