Tổng quan về giáo trình

Giáo trình Kỹ thuật lập trình hướng đối tượng được biên soạn bởi tập thể giảng viên Trường Đại học Hùng Vương, do TS. Phạm Thế Quế làm chủ biên cùng các đồng tác giả: ThS. Đinh Thái Sơn, ThS. Nguyễn Đình Như, ThS. Vũ Thị Thu Minh và ThS. Nông Thị Lý (Bộ môn Công nghệ phần mềm – Khoa Kỹ thuật công nghệ). Giáo trình do Nhà xuất bản Đại học Thái Nguyên xuất bản và phát hành năm 2017 theo số đăng ký xuất bản 02-49 ĐHTN-2017.

Trong chương trình đào tạo bậc đại học khối ngành Công nghệ thông tin và Kỹ thuật công nghệ, giáo trình được thiết kế phục vụ trực tiếp cho học phần Lập trình hướng đối tượng với định mức thời lượng 3 tín chỉ. Môn học giữ vị trí cầu nối quan trọng, giúp người học chuyển tiếp từ tư duy lập trình cấu trúc sang phương pháp luận hướng đối tượng hiện đại.

Mục tiêu học tập của giáo trình là cung cấp hệ thống tri thức hoàn chỉnh về lập trình hướng đối tượng (Object-Oriented Programming - OOP), đồng thời rèn luyện kỹ năng thực hành xây dựng ứng dụng phần mềm thông qua ngôn ngữ lập trình C++. Kết thúc học phần, người học có khả năng phân tích bài toán thực tế thành hệ thống các lớp đối tượng, vận dụng thành thạo các cơ chế bao gói, kế thừa, đa hình và quản trị tài nguyên bộ nhớ.

Về cấu trúc và phương pháp tiếp cận, tài liệu được triển khai theo mô hình từ dưới lên (bottom-up). Nội dung bắt đầu từ việc so sánh các hạn chế của lập trình hướng thủ tục với các đặc tính của hướng đối tượng, đi qua các mở rộng cú pháp của C++, sau đó đi sâu vào cấu trúc lớp, cơ chế nạp chồng, tính kế thừa, hàm ảo, khuôn hình (template) và kỹ thuật xử lý luồng xuất nhập dữ liệu. Điểm đặc sắc của giáo trình là sự kết hợp chặt chẽ giữa các mô hình phân loại trừu tượng và các ví dụ mã nguồn C++ hoàn chỉnh, có tính ứng dụng cụ thể.


Nội dung kiến thức cốt lõi

Các chương/chủ đề chính

Cấu trúc nội dung của giáo trình bao gồm 5 chương lý thuyết và thực hành chuyên sâu, đi kèm các phụ lục tra cứu:

  1. Chương 1: Các khái niệm cơ sở của lập trình hướng đối tượng Nội dung tập trung phân tích sự khác biệt bản chất giữa lập trình hướng thủ tục (LTHTT) và lập trình hướng đối tượng (LTHĐT). Chương này định nghĩa chính xác 7 khái niệm nền tảng: Đối tượng, Lớp, Trừu tượng hóa dữ liệu & bao gói thông tin, Kế thừa, Tương ứng bội (Đa hình), Liên kết động và Truyền thông báo. Đồng thời, chương 1 giới thiệu các bước thiết kế hệ thống hướng đối tượng, phân định giữa ngôn ngữ dựa trên đối tượng (như Ada) và ngôn ngữ hướng đối tượng hoàn chỉnh (như C++, Smalltalk, Object Pascal), cùng các lĩnh vực ứng dụng điển hình như hệ điều hành Windows, hệ thống thời gian thực, cơ sở dữ liệu hướng đối tượng và trí tuệ nhân tạo.

  2. Chương 2: Các mở rộng của ngôn ngữ C++ Trình bày các bổ sung kỹ thuật của ngôn ngữ C++ (phát triển bởi B. Stroustrup từ 1980/1983) so với ngôn ngữ C chuẩn: kiểu chú thích dòng đơn //, vị trí khai báo biến linh hoạt, cú pháp chuyển kiểu hàm kieu(bieu thuc), kỹ thuật lấy địa chỉ mảng 2 chiều bằng toán tử &, vào ra dữ liệu qua các đối tượng dòng cin/cout thuộc thư viện <iostream>, các hàm định dạng hiển thị setw(), setprecision(), setiosflags(ios::showpoint), cơ chế cấp phát và giải phóng vùng nhớ động qua toán tử new và delete, khái niệm biến tham chiếu, hằng tham chiếu const, truyền tham số theo tham chiếu, hàm trả về giá trị tham chiếu, hàm có tham số mặc định và hàm nội tuyến (inline).

  3. Chương 3: Lớp và Đối tượng Hướng dẫn chi tiết cú pháp định nghĩa lớp, cơ chế tạo lập và hủy đối tượng, phạm vi truy cập các thành phần (private, public, protected), thao tác qua con trỏ đối tượng và con trỏ ngầm định this. Chương cũng giải quyết các kỹ thuật chuyên sâu về thành phần tĩnh (biến tĩnh static data, hàm tĩnh static method), cơ chế hoạt động của hàm tạo (constructor), hàm hủy (destructor) và hàm tạo sao chép (copy constructor).

  4. Chương 4: Toán tử tải bội, Kế thừa, Hàm ảo và Khuôn hình Trình bày kỹ thuật nạp chồng toán tử (operator overloading) với các toán tử ++, --, <<, >>. Khai triển toàn diện nguyên lý kế thừa từ lớp cơ sở đến lớp dẫn xuất (đơn kế thừa, đa kế thừa, dẫn xuất protected). Cung cấp cơ chế đa hình thông qua hàm ảo (virtual function), quy tắc gán con trỏ lớp cơ sở cho địa chỉ lớp dẫn xuất, kỹ thuật thiết lập lớp cơ sở ảo (virtual base class). Sau cùng, chương trình bày cơ chế lập trình tổng quát với khuôn hình hàm (function template) và khuôn hình lớp (class template).

  5. Chương 5 và Phụ lục: Các dòng xuất nhập và Thứ tự ưu tiên phép toán Khảo sát chi tiết phương thức làm việc của dòng cin và toán tử trích >> (các dạng của hàm get(), getline(), ignore()), dòng cout và toán tử chèn << cùng hệ thống cờ định dạng ios. Phụ lục cung cấp bảng tra cứu thứ tự ưu tiên của toàn bộ các phép toán trong C++ và danh mục tài liệu tham khảo học thuật.

Kiến thức nền tảng được xây dựng

Giáo trình xây dựng nền tảng lý thuyết vững chắc xoay quanh ba trục nguyên lý:

  • Nguyên lý bao gói và che giấu thông tin: Dữ liệu và phương thức xử lý được đóng gói chặt chẽ trong cấu trúc lớp; dữ liệu được bảo vệ khỏi việc truy cập tự do từ bên ngoài nhằm tăng tính an toàn cho hệ thống phần mềm.
  • Nguyên lý trừu tượng hóa và phân cấp kế thừa: Mô hình hóa các thực thể thực tế thông qua các thuộc tính và hành vi đại diện; thiết lập cấu trúc phân cấp để tái sử dụng mã nguồn và mở rộng chức năng (điển hình qua mô hình lớp cơ sở trừu tượng Ấn phẩm dẫn xuất thành lớp Sách và Tạp chí).
  • Nguyên lý đa hình và liên kết động: Khả năng cùng một lời gọi phương thức hoặc một phép toán nhưng có hành vi xử lý khác nhau tùy thuộc vào kiểu đối tượng cụ thể tại thời điểm thực thi.
       [ Lớp cơ sở: Ấn phẩm ]
       - Thuộc tính: Số trang, Mã tra cứu, Ngày XB, Bản quyền, NXB
       - Phương thức: Lấy ra(), Cất đi(), Đọc()
                   |
         +---------+---------+
         |                   |
         v                   v
[ Lớp dẫn xuất: Tạp chí ]  [ Lớp dẫn xuất: Sách ]
- Thuộc tính: Tên, Số kỳ,  - Thuộc tính: Tên tác giả,
  Các bài viết               Loại bìa, ISBN
- Phương thức: Đặt mua()

Kỹ năng phát triển

Thông qua nội dung giảng dạy, người học hình thành các nhóm kỹ năng cụ thể:

  • Kỹ năng kỹ thuật: Cài đặt thành thạo cú pháp C++, quản trị bộ nhớ động an toàn bằng new/delete, sử dụng biến tham chiếu để tối ưu hiệu năng truyền đối số, cấu hình hàm nội tuyến và xây dựng các hàm/lớp mẫu tổng quát.
  • Kỹ năng phân tích thiết kế: Nhận diện và trừu tượng hóa các thực thể trong thế giới thực thành các lớp phần mềm; xây dựng mối quan hệ kết hợp, phụ thuộc và kế thừa giữa các lớp theo quy trình thiết kế hướng đối tượng.
  • Kỹ năng gỡ lỗi và kiểm soát phần mềm: Khắc phục tình trạng xung đột định danh, kiểm soát bộ đệm xuất nhập console, xử lý lỗi tràn bộ nhớ và quản trị hành vi của các đối tượng trong suốt vòng đời tồn tại.

Phương pháp giảng dạy và học tập

Giáo trình triển khai phương pháp tiếp cận sư phạm mang tính quy nạp và đối sánh. Thay vì đưa ra các định nghĩa trừu tượng một cách đơn thuần, tài liệu liên tục đặt phương pháp lập trình hướng đối tượng trong thế đối chiếu với lập trình hướng thủ tục cổ điển. Việc chỉ rõ những nhược điểm cố hữu của lập trình truyền thống (sự phân rã chức năng từ trên xuống làm dữ liệu toàn cục chuyển động tự do, khó kiểm soát khi nâng cấp) giúp người học hiểu rõ nguyên nhân ra đời và tính ưu việt của mô hình lớp đối tượng.

Hệ thống bài tập và nghiên cứu tình huống (case studies) trong giáo trình được xây dựng sát với các bài toán quản lý và hình học thực tế:

  • Mô hình lớp hình học: Phân tích lớp HINH_CN với các thuộc tính tọa độ (x1, y1), chiều dài d, chiều rộng r cùng các phương thức Nhap_sl, Dien tich, Chu vi, Hien thi.
  • Bài toán quản lý cấu trúc: Cài đặt cấu trúc thí sinh struct TS (char ht[20], long sobd, float td), thực hiện cấp phát động vùng nhớ mảng thí sinh, sắp xếp và in danh sách theo tổng điểm giảm dần.
  • Bài toán xử lý ma trận: Nhập và tìm kiếm phần tử cực trị (max, min) trên ma trận số thực hai chiều cấp 20x20 và 50x50 kết hợp sử dụng con trỏ và biến tham chiếu.
  • Mô hình kế thừa phân cấp: Xây dựng hệ thống quản lý thư viện ấn phẩm nhằm minh họa trực quan cơ chế tái sử dụng thuộc tính và phương thức từ lớp cha sang các lớp con.

Về phương pháp đánh giá và tự học, giáo trình yêu cầu người học phải biên dịch, chạy thử nghiệm trực tiếp các khối mã nguồn mẫu được cung cấp trong từng chương. Người học cần tuân thủ lộ trình tự học tuần tự: thực hành thành thạo các mở rộng của C++ trước khi xây dựng cấu trúc Lớp, sau đó tiến hành hiện thực hóa các mối quan hệ kế thừa và hàm ảo phức tạp.


Điểm nổi bật và cập nhật

Giáo trình Kỹ thuật lập trình hướng đối tượng tích hợp nhiều điểm cập nhật kỹ thuật quan trọng:

  • Chuẩn hóa quá trình chuyển dịch công nghệ: Giáo trình phản ánh quá trình phát triển từ ngôn ngữ C (1973) lên ngôn ngữ lai C++ (B. Stroustrup, 1980/1983). Tài liệu làm rõ cách C++ dung hợp cả hai mô hình lập trình hướng cấu trúc và hướng đối tượng, khắc phục triệt để các hạn chế cú pháp của ngôn ngữ C cũ (như cho phép khai báo biến trực tiếp tại nơi sử dụng, hỗ trợ truyền tham chiếu thay vì hoàn toàn phụ thuộc vào biến con trỏ).
  • Hiện đại hóa cơ chế quản lý bộ nhớ và dữ liệu: Thay thế các hàm cấp phát truyền thống malloc(), calloc() và free() vốn phức tạp và dễ phát sinh lỗi bằng cặp toán tử new và delete. Bổ sung cơ chế biến tham chiếu và hằng tham chiếu (const &), giúp chương trình thao tác trực tiếp trên vùng nhớ của biến gốc mà không phải tạo bản sao trung gian, từ đó tiết kiệm tài nguyên máy tính và thời gian thực thi.
  • Tích hợp các xu hướng phần mềm hiện đại: Tài liệu cập nhật các khái niệm lập trình dựa trên mẫu (Templates) và đa hình động (Virtual Base Class, Virtual Methods) – những nền tảng then chốt phục vụ công nghiệp lắp ráp phần mềm hiện đại dựa trên các thư viện thành phần có sẵn. Đồng thời, giáo trình liên hệ trực tiếp phương pháp luận OOP với các hệ điều hành tiên tiến (như Windows của Microsoft) và các hệ thống phân tán thời gian thực.

Đối tượng sử dụng giáo trình

Giáo trình được biên soạn phục vụ các nhóm đối tượng học thuật cụ thể:

  • Sinh viên bậc đại học: Là tài liệu học tập bắt buộc cho sinh viên năm thứ 2 và năm thứ 3 thuộc các ngành Công nghệ thông tin, Kỹ thuật phần mềm, Hệ thống thông tin và các ngành Kỹ thuật công nghệ đang theo học học phần Lập trình hướng đối tượng (3 tín chỉ).
  • Yêu cầu kiến thức tiên quyết (Prerequisites): Người học cần hoàn thành học phần cơ sở về Tin học đại cương hoặc Cơ sở lập trình; nắm vững các kiến thức nền tảng về thuật toán, cấu trúc dữ liệu nguyên thủy, mảng, biến con trỏ và kỹ thuật phân chia chương trình thành hàm/thủ tục trong các ngôn ngữ lập trình cấu trúc như C hoặc Pascal.
  • Giảng viên và cán bộ nghiên cứu: Tài liệu đóng vai trò là khung đề cương chuẩn hóa cho việc biên soạn giáo án giảng dạy lý thuyết, hướng dẫn thực hành phòng máy và xây dựng ngân hàng đề thi đánh giá kết quả học tập.
  • Người tự học và lập trình viên: Cung cấp tài liệu tham khảo có cấu trúc khoa học cho các kỹ sư, kỹ thuật viên muốn củng cố nền tảng tư duy thiết kế phần mềm hướng đối tượng và chuẩn hóa kỹ năng lập trình hệ thống bằng C++.

Câu hỏi thường gặp

1. Giáo trình này phù hợp với ai?

Giáo trình được thiết kế chuẩn mực cho sinh viên đại học năm thứ 2 và năm thứ 3 thuộc các khối ngành Công nghệ thông tin và Kỹ thuật công nghệ của Trường Đại học Hùng Vương cũng như các trường đại học kỹ thuật, đồng thời phục vụ cho giảng viên và kỹ sư phần mềm cần tài liệu tra cứu có hệ thống.

2. Cần kiến thức nền nào để học?

Người học bắt buộc phải có kiến thức nền tảng về lập trình cấu trúc (đã từng làm việc với các ngôn ngữ như C, Pascal hoặc Foxpro), hiểu rõ các cấu trúc điều khiển, kiểu dữ liệu cơ bản, mảng, biến con trỏ và cách xây dựng các hàm/thủ tục xử lý dữ liệu.

3. Điểm khác biệt với giáo trình khác?

Khác với các tài liệu chỉ thuần túy liệt kê cú pháp ngôn ngữ C++, giáo trình này đặt trọng tâm vào phương pháp luận thiết kế hướng đối tượng (cách tiếp cận bottom-up, bao gói dữ liệu, phân cấp kế thừa). Tài liệu phân biệt tường minh giữa "ngôn ngữ dựa trên đối tượng" và "ngôn ngữ hướng đối tượng", đồng thời cung cấp đầy đủ các ví dụ mã nguồn minh họa giải quyết trực tiếp các bài toán thực tế.

4. Làm sao để tự học hiệu quả?

Người học nên học tuần tự theo cấu trúc từng chương: bắt đầu từ việc nắm vững các cú pháp mở rộng của C++ ở Chương 2, sau đó thực hành xây dựng các lớp đơn lẻ ở Chương 3, trước khi chuyển sang các kỹ thuật phức tạp như nạp chồng toán tử, kế thừa và hàm ảo ở Chương 4. Cần gõ và biên dịch trực tiếp toàn bộ các chương trình mẫu trong giáo trình.

5. Có tài liệu bổ trợ nào kèm theo?

Giáo trình cung cấp hệ thống phụ lục tra cứu bảng thứ tự ưu tiên của các phép toán C++, danh mục các phương thức định dạng dòng xuất nhập <iostream> và thư mục tài liệu tham khảo học thuật chuyên ngành ở cuối sách.


Kết luận

Giáo trình Kỹ thuật lập trình hướng đối tượng do TS. Phạm Thế Quế chủ biên là tài liệu học thuật hoàn chỉnh, đáp ứng đầy đủ yêu cầu giảng dạy và học tập học phần Lập trình hướng đối tượng 3 tín chỉ. Giá trị cốt lõi của giáo trình thể hiện ở việc hệ thống hóa toàn diện các nguyên lý hướng đối tượng chuẩn mực đi kèm các giải pháp kỹ thuật cụ thể trên ngôn ngữ C++.

Lộ trình học tập đề xuất cho người học là tiếp cận tuần tự: nắm vững các mở rộng cú pháp của C++ $\rightarrow$ xây dựng cấu trúc lớp và bao gói thông tin $\rightarrow$ làm chủ cơ chế kế thừa, đa hình và hàm ảo $\rightarrow$ ứng dụng lập trình tổng quát với khuôn hình template và dòng xuất nhập dữ liệu. Đây là tài liệu học tập và nghiên cứu chuẩn hóa dành cho sinh viên và người làm công tác phát triển phần mềm.