Chương 1. GIỚI THIỆU VỀ PHƯƠNG PHÁP LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG 6 1.1| Khái niệm lập trình Hướng đối tượng .2| So sánh lập trình Hướng đối tượng và lập trình theo kiểu cấu trúc .1| Phương pháp lập trình kiểu cấu trúc .2| Phương pháp lập trình Hướng đối tượng .3| Mục tiêu của lập trình hướng đối tượng .4| Các đặc điểm của lập trình Hướng đối tượng .5| Lớp và Đối tượng .1| Khái niệm Đối tượng (Objects) .2| Khái niệm lớp .3| Thuộc tính, phương thức.4| Phân biệt Lớp và Đối tượng.7| Một số ngôn ngữ hỗ trợ lập trình Hướng đối tượng .8| Bài tập áp dụng. XÂY DỰNG LỚP ĐỐI TƯỢNG .1| Định nghĩa lớp .1| Bổ từ truy xuất .2| Phân loại lớp .3| Trường, Thuộc tính .4| Cài đặt các phương thức thành viên (Methods) .1| Phương thức khởi tạo (constructors) .2| Phương thức hủy đối tượng (destructors / Finalizers) .3| Con trỏ this.2| Từ khóa Static .3| Sử dụng đối tượng làm tham số cho phương thức .1| Truyền đối tượng dạng tham chiếu .2| Truyền tham số dùng từ khóa params .4| Mảng đối tượng.5| Biểu diễn mối quan hệ giữa các lớp .6| Bài tập áp dụng. TÍNH KẾ THỪA.1| Quan hệ giữa các lớp đối tượng .2| Tổng quát hóa, đặc biệt hóa .3| Khái niệm kế thừa .4| Lợi ích của kế thừa .5| Cú pháp khai báo kế thừa .6| Tầm vực trong kế thừa.
64 Tài liệu giảng dạy Lập trình Hướng đối tượng Trang 3 3.7| Phân loại kế thừa.8| Một số mô hình kế thừa .9| Bài tập áp dụng .1| Khái niệm Đa hình .2| Phân loại Đa hình .3| Đa hình tĩnh - Static Polymorphism .1| Nạp chồng phương thức.2| Nạp chồng toán tử .4| Đa hình động - Dynamic Polymorphism .5| Abstract class và Abstract methods .6| Từ khóa virtual .7| Từ khóa sealed .8| Kiểu dữ liệu Object .9| Bài tập áp dụng .1| Khái niệm Interface .3| Cài đặt Interface .4| Truy xuất phương thức của giao diện .5| Một số trường hợp sử dụng interface.6| Bài tập áp dụng. LẬP TRÌNH KHÁI QUÁT .1| Khái niệm Generic .2| Một số đặc điểm của generic trong C# .3| Generic được áp dụng cho các đối tượng nào trong C#? .6| Generic class trong C# .7| Bài tập áp dụng. 131 Tài liệu giảng dạy Lập trình Hướng đối tượng Trang 4 GIÁO TRÌNH HỌC PHẦN Tên học phần: Lập trình Hướng đối tượng Mã học phần: CSC106320 Vị trí, tính chất, ý nghĩa và vai trò của học phần: - Vị trí: Học phần này thuộc khối kiến thức cơ sở, được tổ chức giảng dạy cho sinh viên ở học kỳ 2 năm thứ nhất. - Tính chất: Học phần nhằm trang bị cho sinh viên chuyên ngành Công nghệ thông tin các kiến thức và kỹ năng để giải quyết một số bài toán bằng phương pháp lập trình hướng đối tượng.
Ngoài ra, sinh viên còn có thể thiết kế, cài đặt sơ đồ lớp cho một số bài toán cơ bản sử dụng ngôn ngữ lập trình C#. Thông qua các hoạt động học tập, sinh viên có thể hình thành thói quen tư duy hệ thống, luôn viết code theo chuẩn và thói quen tuân thủ các quy định làm việc trong môi trường chuyên nghiệp. Mục tiêu của học phần : - Về kiến thức: + Trình bày các đặc điểm của lập trình hướng đối tượng. - Về kỹ năng: + Phân tích, thiết kế và cài đặt thành thạo sơ đồ lớp cho các chương trình vừa và nhỏ; + Sử dụng thành thạo cơ chế kế thừa và đa hình để giải quyết một số bài toán vừa và nhỏ.
+ Sử dụng được lập trình khái quát để giải quyết một số bài toán vừa và nhỏ. + Sử dụng thành thạo Visual Studio và Debug chương trình. - Về năng lực tự chủ và trách nhiệm: + Viết code theo chuẩn + Học tập chủ động và tích cực. Làm bài tập theo yêu cầu của Giảng viên và nộp bài đúng quy định.
Nội dung của học phần: Tài liệu giảng dạy Lập trình Hướng đối tượng Trang 5 1. GIỚI THIỆU VỀ PHƯƠNG PHÁP LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG Chương này nhằm giới thiệu cho sinh viên các khái niệm, các đặc điểm của phương pháp lập trình Hướng đối tượng, phân biệt phương pháp hướng cấu trúc và hướng đối tượng. Tài liệu giảng dạy Lập trình Hướng đối tượng Trang 6 1.1| Khái niệm lập trình Hướng đối tượng Lập trình Hướng đối tượng có tên tiếng Anh là Object-Oriented Programming Languages, được viết tắt là OOP. Đây là một phương pháp lập trình sử dụng các đối tượng làm vai trò trung tâm để xây dựng chương trình.
Lập trình hướng đối tượng giúp cho lập trình viên có thể tổ chức một chương trình lớn thành những đối tượng rời rạc, độc lập, ít phụ thuộc lẫn nhau, nhờ đó có thể dễ dàng kiểm soát, hiệu chỉnh, nâng cấp chương trình mà không ảnh hưởng đến các thành phần khác của chương trình. Trong lập trình hướng đối tượng, một đối tượng được định nghĩa bao gồm hai thành phần chính là: • Tập các thuộc tính dữ liệu (attributes): là những thông tin, đặc điểm của đối tượng. Ví dụ một người có những đặc điểm như họ tên, ngày sinh, giới tính nghề nghiệp, màu mắt, màu tóc, … • Tập các phương thức (methods) là những thao tác, hành động mà đối tượng đó có thể thực hiện. Ví dụ một người sẽ có thể thực hiện các hành động như nói, đi, làm việc, ăn, uống, … Tên Ngày sinh Thuộc tính Giới tính .
Nói Đi Hành động Làm việc. Ví dụ về thuộc tính và hành động của đối tượng Người Tài liệu giảng dạy Lập trình Hướng đối tượng Trang 7 1.2| So sánh lập trình Hướng đối tượng và lập trình theo kiểu cấu trúc 1.1| Phương pháp lập trình kiểu cấu trúc Phương pháp lập trình có cấu trúc (structured programming) hay còn gọi phương pháp lập trình hướng thủ tục (Procedure-Oriented Programming -POP) là phương pháp phân tích một nhiệm vụ lớn thành nhiều công việc nhỏ hơn – chia để trị. Cách thức phân tích và thiết kế theo nguyên lý lập trình từ trên xuống (top-down). Phương pháp này thể hiện quá trình suy diễn từ cái chung cho đến cái cụ thể, từ một chương trình lớn thành các chương trình con nhỏ hơn có chức năng độc lập.
Chương trình con đóng vai trò trung tâm của việc lập trình hay còn gọi phương pháp Lập trình hướng thủ tục. Chương trình có cấu trúc được tổ chức thành các chương trình con riêng lẻ (còn gọi là các module hay phương thức), sử dụng các cấu trúc tuần tự, cấu trúc rẽ nhánh và cấu trúc lặp. Mỗi chương trình con đảm nhận xử lý một công việc nhỏ trong toàn bộ hệ thống. Chức năng chính Chức năng 1 Chức năng 2 Chức Chức Chức Chức năng năng.
Mô hình phân rã chức năng theo phương pháp lập trình có cấu trúc Trong lập trình hướng cấu trúc thường quan tâm đến việc phát triển các phương thức mà ít quan tâm tới dữ liệu, điều này khiến cho dữ liệu khó kiểm soát. Để liên kết giữa các phương thức với nhau, thường dùng biến toàn cục hoặc con trỏ. Tài liệu giảng dạy Lập trình Hướng đối tượng Trang 8 Ưu điểm của phương pháp lập trình hướng thủ tục: triển khai các phần mềm dễ dàng, chương trình dễ hiểu và dễ bảo trì. Các nhược điểm của phương pháp lập trình hướng thủ tục như sau: • Không thích hợp khi xây dựng các chương trình lớn và phức tạp.
• Phần lớn các phương thức sử dụng dữ liệu chung nên khi có một sự thay đổi dữ liệu phải thực hiện thay đổi ở tất cả phương thức liên quan đến dữ liệu đó. Đây là công việc tốn thời gian và kém hiệu quả. • Bảo mật dữ liệu kém • Cách tiếp cận đôi khi không phù hợp với thực tế, khó mô tả được các hoạt động của thế giới thực. Để khắc phục các nhược điểm trên phương pháp lập trình hướng đối tượng ra đời.2| Phương pháp lập trình Hướng đối tượng Lập trình hướng đối tượng (Object Oriented Programming – OOP) là phương pháp lập trình lấy đối tượng làm nền tảng để xây dựng các phương thức và xây dựng chương trình.
Theo mô hình đối tượng, chương trình có cấu trúc là một tập các đối tượng độc lập, tương tác với nhau khi cần thiết để hoàn thành nhiệm vụ của chương trình. Trong phương pháp lập trình hướng đối tượng thì ta thường tư duy theo hướng thực hiện thao tác gì với các đối tượng đã có để giải quyết bài toán đặt ra. Với cách tư duy này, đối tượng là trung tâm của việc lập trình, người ta gọi là nguyên lý lập trình từ dưới lên (Bottom-up). Ưu điểm của chương trình hướng đối tượng là cấu trúc thuần nhất chỉ chứa một loại thành phần là đối tượng nên dễ dàng quản lý code hơn khi có sự thay đổi chương trình, dễ mở rộng chương trình, có tính bảo mật dữ liệu cao và có tính tái sử dụng lại phần mềm.
Nhược điểm của chương trình hướng đối tượng là không phù hợp với mọi loại chương trình, một số chương trình có thể sử dụng nhiều bộ nhớ hơn và thực thi nhiều lệnh hơn so với lựa chọn phương pháp lập trình hướng thủ tục. Tài liệu giảng dạy Lập trình Hướng đối tượng Trang 9 POP OOP (Lập trình hướng thủ tục) (Lập trình hướng đối tượng) Hướng thiết kế Từ trên xuống (Top-down) Từ dưới lên (Bottom-up) chương trình Cách phân chia Chia nhỏ theo các chức năng Chia nhỏ theo các đối tượng chương trình (functions). Một phương thức có thể Một đối tượng chỉ điều chứa nhiều dữ liệu khác khiển dữ liệu của nó nhau Thiết kế thuật Tập trung xây dựng các Tập trung vào bảo mật dữ toán thuật toán theo cách có hệ liệu, không phân biệt các thống thuật toán Tính bảo mật Rất khó để che dấu dữ liệu Dễ dàng cho phép hoặc giới dữ liệu hạn quyền truy cập đến các dữ liệu bằng các từ khóa: public, protected, private Khả năng mở Rất khó chỉnh sửa, mở rộng Dễ dàng chỉnh sửa, mở rộng rộng chương khi chương trình có sự thay khi chương trình có sự thay trình đổi về dữ liệu. đổi về dữ liệu.
Tính tái sử dụng thấp Tính tái sử dụng cao Tính kế thừa Không cho phép kế thừa Cho phép kế thừa các ( tái sử dụng) phương thức và thuộc tính có sẵn Đa năng hóa Không cho phép Các toán tử, phương thức có các toán tử, thể thực hiện với nhiều kiểu phương thức dữ liệu khác nhau, theo nhiều cách khác nhau Bảng so sánh POP và OOP Tài liệu giảng dạy Lập trình Hướng đối tượng Trang 10 1.3| Mục tiêu của lập trình hướng đối tượng Lập trình hướng đối tượng được thực hiện thông qua các ngôn ngữ lập trình hướng đối tượng để đạt được các mục tiêu sau: • Tính mạnh mẽ: - Cho phép các chương trình phức tạp có thể hoạt động chính xác.