HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG KHOA CÔNG NGHỆ ĐA PHƯƠNG TIỆN BÁO CÁO MÔN LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG C++ Contents I MỞ ĐẦU 3 II MÔ HÌNH LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG 4 1 GIỚI THIỆU VỀ LẬP TRÌNH HƯỚ.
HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG KHOA CƠNG NGHỆ ĐA PHƯƠNG TIỆN BÁO CÁO MƠN LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG C++ Contents I MỞ ĐẦU II MƠ HÌNH LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG GIỚI THIỆU VỀ LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG NHỮNG KHÁI NIỆM CƠ BẢN VỀ LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG 2.1 Đối tượng 2.2 Lớp (class) 2.3 Lớp (subclass) 2.5 Phương Thức (method) 2.6 Thuộc tính (attribute) 2.7 Thực thể (instance) 2.10 Bảo tồn (protected) 2.11 Đa kế thừa (muliple inheritance) III GIỚI THIỆU TỔNG QUAN VỀ GAME BẮN BÓNG Giai đoạn tiền sản xuất Game 1.1 Game Idea 1.2 Concept 1.3 Game Design Document 1.4 Pitch Tuổi số ESRB Nền tảng vận hành & yêu cầu phần cứng: 1.5 Điều Khiển đặc tính nhân vật 1.6 Storyboard Phương pháp tiếp cận giải vấn đề 10 2.1 Phương pháp tiếp cận giải vấn đề 10 2.2 Mơ hình tổng quan hệ thống 10 2.4 Kỹ Thuật Điều Khiển Vịng Lặp Chính 13 2.5 Kiến Trúc Actor Component Game 13 2.6 Quản lý kiện 14 2.7 Xử Lý Âm Thanh 14 2.8 Xử lý hình ảnh 14 2.9 Xử Lý Nhập Xuất Trong Game 14 2.10 Lập trình giao diện 14 2.11 Biểu đồ lớp 15 IV TÍNH HƯỚNG ĐỐI TƯỢNG CỦA GAME BẮN BÓNG 16 Tính đóng gói 16 1.1 Khái niệm 16 1.2 Demo Project 16 Tính kế thừa 18 2.1 Khái Niệm 18 2.2 Demo Project 18 Tính đa hình 18 3.1 Khái Niệm 19 3.2 Demo Project 19 V Kết luận 19 LỜI CẢM ƠN 20 I MỞ ĐẦU Trong thời đại CNTT phát triển nay, nhà lập trình ln phải suy nghĩ xem làm để tạo chương trình hay, tiện ích Vàmột thứ hỗ trợ người lập trình ngơn ngữ lập trình Có số phương pháp lập trình truyền thống lập trình tuyến tính, lập trình cấu trúc Với lập trình tuyến tính số ứng dụng phức tạp khơng thể thực Trong với lập trình cấu trúc, không quản lý thay đổi liệu có nhiều chương trình sử dụng biến chung, không tiết kiệm tài nguyên Để khắc phục số hạn chế trên, người ta xây dựng số mơ hình lập trình tiên tiến như: Lập trình hàm, lập trình logic, lập trình trực quan, lập trình tương tranh, lập trình phân tán, lập trình hướng đối tượng II MƠ HÌNH LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG GIỚI THIỆU VỀ LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG Lập trình hướng đối tượng (Object Oriented Programming - gọi tắt OOP) hay chi tiết Lập trình định hướng đối tượng, phương pháp lập trình lấy đối tượng làm tảng để xây dựng thuật giải, xây dựng chương trình Thực chất phương pháp mà cách nhìn việc lập trình Để phân biệt, với phương pháp lập trình theo kiểu cấu trúc mà quen thuộc trước đây, hay gọi phương pháp lập trình hướng thủ tục (Procedure-Oriented Programming), người lập trình phân tích nhiệm vụ lớn thành nhiều cơng việc nhỏ hơn, sau chi tiết, cụ thể hoá để vấn đề đơn giản, để tìm cách giải vấn đề dạng thuật giải cụ thể rõ ràng qua dễ dàng minh hoạ ngôn ngữ giải thuật (hay cịn gọi thuật giải chương trình con) Cách thức phân tích thiết kế gọi nguyên lý lập trình từ xuống (top-down), để thể trình suy diễn từ chung cụ thể NHỮNG KHÁI NIỆM CƠ BẢN VỀ LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG 2.1 Đối tượng Đối tượng (object): Các liệu thị kết hợp vào đơn vị đầy đủ tạo nên đối tượng Đơn vị tương đương với chương trình đối tượng chia thành hai phận chính: phần phương thức (method) phần thuộc tính (property) Trong thực tế, phương thức đối tượng hàm thuộc tính biến, tham số hay nội đối tượng (hay nói cách khác tập hợp liệu nội tạo thành thuộc tính đối tượng) Các phương thức phương tiện để sử dụng đối tượng thuộc tính mơ tả đối tượng có tính chất 2.2 Lớp (class) Một lớp hiểu kiểu liệu bao gồm thuộc tính phương thức định nghĩa từ trước Đây trừu tượng hóa đối tượng Một đối tượng xác lập thực thể hóa từ lớp Khác với kiểu liệu thông thường, lớp đơn vị (trừu tượng) bao gồm kết hợp phương thức thuộc tính Để có đối tượng (mà xem biến) hoạt động việc thực thể hóa bao gồm việc cài đặt giá trị ban đầu thuộc tính việc đăng kí nhớ, mà công việc thường giao cho phương thức gọi “máy kết cấu” (constructor) hay hàm dựng Ngược lại đối tượng thuộc lớp khơng cịn sử dụng có phương thức để xử lý gọi “máy hủy diệt” (destructor) hay hàm hủy Như vậy, để có đối tượng người lập trình OOP cần phải thiết kế lớp đối tượng cách xây dựng thuộc tính phương thức có đặc tính riêng Mỗi phương thức hay thuộc tính đầy đủ lớp cịn gọi tên thành viên (member) lớp 2.3 Lớp (subclass) Lớp lớp thơng thường có thêm tính chất kế thừa phần hay tồn đặc tính lớp khác Lớp mà chia kế thừa gọi lớp phụ mẫu (parent class) 2.4 Lớp trừu tượng hay lớp sở trừu tượng (abstract class) Lớp trừu tượng lớp mà khơng thể thực thể hóa thành đối tượng thực dụng Lớp thiết kế nhằm tạo lớp có đặc tính tổng qt thân lớp chưa có ý nghĩa (hay khơng đủ ý nghĩa) để tiến hành viết mã cho việc thực thể hóa (xem thí dụ) Thí dụ: Lớp “hinh_phang” định nghĩa khơng có liệu nội có phương thức (hàm nội tại) “tinh_chu_vi”, “tinh_dien_tich” Nhưng lớp hình_phẳng chưa xác định đầy đủ đặc tính (cụ thể biến nội tọa độ đỉnh đa giác, đường bán kính toạ độ tâm hình trịn, …) nên viết thành lớp trừu tượng Sau đó, người lập trình tạo lớp chẳng hạn lớp “tam_giac”, lớp “hinh_tron”, lớp “tu_giac”,… Và lớp người viết mã cung cấp liệu nội (như biến nội r làm bán kính số nội Pi cho lớp “hinh_tron” sau viết mã cụ thể cho phương thức “tinh_chu_vi” “tinh_dien_tich”) 2.5 Phương Thức (method) Là hàm nội lớp (hay đối tượng) Tùy theo đặc tính mà người lập trình gán cho, phương pháp gọi bên hàm khác lớp đó, cho phép câu lệnh bên ngồi lớp gọi tới nó, hay cho phép lớp có quan hệ đặc biệt quan hệ lớp con, quan hệ bạn bè (friend) phép gọi tới Mỗi phương pháp có kiểu trả về, chúng trả kiểu liệu cổ điển hay trả kiểu lớp định nghĩa từ trước Một tên gọi khác phương pháp lớp hàm thành viên Người ta định nghĩa thêm vài loại phương pháp đặc biệt: - Hàm dựng (constructor) hàm dùng để cài đặt giá tri ban đầu cho biến nội đơi cịn dùng để khai báo việc xử dụng nhớ Hàm hủy (destructor) hàm dùng vào việc làm nhớ hủy bỏ tên đối tượng sau dùng xong, bao gồm việc xóa trỏ nội trả phần nhớ mà đối tượng dùng Trong số trường hợp hàm hủy hay hàm dựng tự động hóa ngơn ngữ OOP trường hợp Visual C++, C# - Tiện ích (utility) hàm họat động bên lớp mà không cho phép môi trường bên ngồi gọi tới Các hàm tính tốn trung gian nội đối tượng mà xét thấy không cần thiết phải cho giới bên ngồi đối tượng biết 2.6 Thuộc tính (attribute) Thuộc tính lớp bao gồm biến, hằng, hay tham số nội lớp Ở đây, vai trị quan trọng thuộc tính biến chúng bị thay đổi suốt q trình hoạt động đối tượng Các thuộc tính xác định kiểu kiểu chúng kiểu liệu cổ điển lớp định nghĩa từ trước Như ghi, lớp thực thể hoá thành đối tượng cụ thể tập họp giá trị biến nội làm thành trạng thái đối tượng Giống trường hợp phương pháp, tùy theo người viết mã, biến nội dùng bên phương pháp lớp đó, cho phép câu lệnh bên ngồi lớp, hay cho phép lớp có quan hệ đặc biệt quan hệ lớp con, (và quan hệ bạn bè (friend) C++) phép dùng tới (hay thay đổi giá trị nó) Mỗi thuộc tính lớp gọi thành viên liệu lớp 2.7 Thực thể (instance) Thực thể hóa (instantiate) q trình khai báo để có tên (có thể xem biến) trở thành đối tượng từ lớp Một lớp sau tiến hành thực thể hóa để có đối tượng cụ thể gọi thực thể Hay nói ngược lại thực thể đối tượng riêng lẽ lớp định trước Như biến thông thường, hai thực thể lớp có trạng thái nội khác (xác định giá trị có biến nội tại) hồn tồn độc lập khơng có u cầu đặc biệt từ người lập trình 2.8 Cơng cộng (public) Cơng cộng tính chất dùng để gán cho phương pháp, biến nội tại, hay lớp mà khai báo người lập trình cho phép câu lệnh bên đối tượng khác phép dùng đến Thí dụ: Trong C++ khai báo public: int my_var; biến my_var có hai tính chất tính cơng cộng integer hai tính chất hợp thành đặc tính biến my_var khiến xử dụng hay thay đổi giá trị (bởi câu lệnh) nơi bên lẫn bên lớp 2.9 Riêng tư (private) lớp) Khi dùng tính chất gán cho biến, phương pháp biến hay phương pháp sử dụng bên lớp mà chúng định nghĩa.Mọi nỗ lực dùng đến chúng từ bên qua câu lệnh hay từ lớp bị phủ nhận hay bị lỗi 2.10 Bảo tồn (protected) Tùy theo ngôn ngữ, có vài điểm nhỏ khác cách hiểu tính chất Nhìn chung tính chất mà mà dùng để áp dụng cho phương pháp, biến nội tại, hay lớp có nội lớp hay lớp (hay nội gói Java) phép gọi đến hay dùng đến phương pháp, biến hay lớp So với tính chất riêng tư tính bảo tồn rộng rãi nghĩa chia sẻ liệu hay chức Nó cho phép số trường hợp dùng tới đặc tính lớp (từ lớp chẳng hạn) 2.11 Đa kế thừa (muliple inheritance) Đây tính chất cho phép lớp có khả kế thừa trực tiếp lúc nhiều lớp khác Vài điểm cần lưu ý viết mã dùng tính chất đa kế thừa: Khi muốn có kế thừa từ nhiều lớp phụ mẫu lớp cần phải độc lập đặc biệt tên liệu hay hàm cho phép kế thừa phải có tên khác để tránh lỗi “ambiguilty” Bởi lúc phần mềm chuyển dịch xác định lớp thừa kế tên lớp phụ mẫu Không phải ngôn ngữ OOP loại phân lớp hỗ trợ cho tính chất Ngồi khái niệm trên, tùy theo ngơn ngữ, có chức OOP riêng biệt cấp thêm vào III GIỚI THIỆU TỔNG QUAN VỀ GAME BẮN BÓNG Giai đoạn tiền sản xuất Game 1.1 Game Idea Ý tưởng: Xây dựng game bắn súng với góc nhìn từ xuống Game dành cho người chơi, người chơi làm điều khiển bóng có kỹ di chuyển bắn Nhiệm vụ người chơi khám phá giới đến mục tiêu nhanh nhất, đống thời phải tiêu diệt kẻ địch để bảo vệ thân 1.2 Concept Target: Game Top-Down Shooter Concept art: Đồ họa 2D Màu tối giản 1.3 Game Design Document Player Control: Người chơi điều khiển hình trịn Di chuyển chuột để thay đổi hướng nhìn camera nhân vật Di chuyển WASD phím mũi tên Ấn chuột trái để bắn đạn Gameplay Trong trình chơi, hình trịn màu hồng khác liên tục sinh ra, tìm mục tiêu để tiêu diệt Nhiệm vụ người chơi bắn hình trịn màu hồng, đồng thời di chuyển đến đích Challenge: Người chơi phải liên tục di chuyển qua lại tiêu diệt kẻ thù, đống thời phải tới đích Sound&Effect: Trị chơi xun suốt có nhạc Khi người chơi bán đạn, có sound effect particle effect bật lên Khi người chơi bắn trúng mục tiêu, có sound effect thơng báo trúng đạn Khi đạn trúng tường, có sound effect particle effect bật lên 1.4 Pitch Tên game : Bắn bóng Thể loại: Game người chơi, 2D, góc nhìn xuống Câu chuyện : bóng khám phá giới , đến mục tiêu nhanh nhất, đống thời phải tiêu diệt kẻ địch để bảo vệ thân Gameplay: Trò chơi dành cho người chơi, Góc nhìn xuống Cơ chế lần chơi qua màn, bắn phá mục tiêu di chuyển Di chuyển chuột bàn phím để di chuyển bắn mục tiêu Tuổi số ESRB Tuổi : – 45 Chỉ số ESRB dự kiến : E (Everyone) Chứa hình ảnh, hoạt cảnh, ngơn ngữ bạo lực trị chơi nhẹ nhàng Nền tảng vận hành & yêu cầu phần cứng: Nền tảng vận hành : Window 7,8,10 Yêu cầu phần cứng : Máy tính laptop RAM 100mb trở lên Ngày phát hành dự kiến : 15/12/2021 1.5 Điều Khiển đặc tính nhân vật Người chơi dùng nút A, S, W, D để di chuyển chuột trái để bắn 1.6 Storyboard - Màn Hình Game Phương pháp tiếp cận giải vấn đề 2.1 Phương pháp tiếp cận giải vấn đề Phương pháp hướng đối tượng Sử dụng Game Engine : Unity Ngôn ngữ lập trình C# 2.2 Mơ hình tổng quan hệ thống - Nguyễn lí hoạt động Quy trình phát triển game 2.3 Kiến trúc phần mềm lớp - Game application Phụ trách quản lý làm việc với input device (đọc liệu đầu vào từ thiết bị tay cầm, bàn phím) , khởi tạo điều khiển vịng lặp Game, hệ điều hành , vòng đời game Tạo tải game logic, game view Gửi yêu cầu đến game logic để thể trạng thái game view (thắng, thua,….) - Game logic Quản lý trạng thái kiện như: người chơi bị chết, , người chơi qua màn, người chơi đích Dữ liệu đối tượng game Game Logic xử lý, VD điểm số, xếp hạng trả lớp giao diện Quản lý kiện vật lý đối tượng: viên đạn trúng người chơi, trúng địch, trúng tường, tốc độ thay đổi - Game logic xử lý logic để thể trạng thái game view Game view Human: trạng thái, kiện Game hiển thị, gồm hình ảnh giao diện điều khiển, đối tượng người chơi, viên đạn,kẻ địch,…Âm môi trường hiển thị AI: Tương tác với game logic để cập nhật thay đổi hành vi lên giao diện 2.4 Kỹ Thuật Điều Khiển Vịng Lặp Chính + PlayController : nhận Input từ bàn phím để di chuyển , nhận Input tọa độ chuột để thay đổi góc nhìn , nhận click chuột trái để bắn + Game Manager : Điều khiển vòng lặp game , kiểm tra trạng thái player , thay đổi trạng thái game , qua + Enemy Controller : Điểu khiển logic đuổi theo người chơi 2.5 Kiến Trúc Actor Component Game + GameObject Player : Sprite render , Rigibody , Colider, Play Controller ( Script nhận Input điều khiển người chơi , Input thao tác + Gameobject Enemy : Sprite Render , Rigibody , Colider , Enemy Controller ( Scirpt logic đuổi theo người chơi , hành động AI , + Gameobject GameController : Game Controller ( Script quản lý vịng lặp game ) +Gameobject SoundManager : AudioSource , SoundManager ( Scirpt quản lý âm , phát âm cho game ) + Gameobject SpawnEnemy : Sprite Render , RigiBody , SpawnEnemy ( Script để gọi kẻ thù truy đuổi người chơi + Gameobject Bullet : Sprite Render , Rigibody , Colider , Trial Renderer , Bullet ( Logic viên đạn bay ) 2.6 Quản lý kiện Event : Các Physics Event gọi OnTriggerEnter2D dùng để xử lí va chạm vật lý Initiazation Events: Hàm Update() gọi gameplay, hàm Start() gọi trước frame hay lần cập nhật thành phần vật lý đầu tiên, hàm Awake() gọi cho Object scence thời điểm scence load Fixed Update() gọi trước thành phần vật lý update Vì việc update thành phần vật lý frame diễn với tần suất khác nên ta nhận kết xác từ physics code ta đặt hàm Fixed Update, việc đặt hàm Update Hàm OnCollisionEnter2D dùng để kiểm tra có phải người chơi khơng 2.7 Xử Lý Âm Thanh - Sử dụng Audio Listener Component Unity hỗ trợ sẵn tự tạo script để thiết lập âm hiệu ứng - Sử dụng Audio Source Component - Trong script: sử dụng hàm OnTriggerEnter2D để thiết lập âm va chạm xảy 2.8 Xử lý hình ảnh - Sử dụng kỹ thuật key frame tạo animation tham khảo số animation có sẵn - Cụ thể Sprite Editor Sprite Editor giúp cắt sprite thành nhiều phần nhỏ gọi keyframe Từ đó, thay đổi keyframe để animation 2.9 Xử Lý Nhập Xuất Trong Game - Sử dụng phương án: Gọi lại thông báo (Callbacks or Message) để nắm bắt giá trị người dùng truyền vào di chuyển trái, phải … để di chuyển gameObject theo ý muốn người dùng - Cụ thể: Hàm GetAxis để nhận action từ nút người dùng bấm Dùng hàm GetAxis để lấy giá trị từ action người dùng sau xử lý logic cho nhân vật chuyển 2.10 Lập trình giao diện - Sử dụng hình ảnh có sẵn từ Asset Store Unity - Thiết kế UI sử dụng Canvas, Text, Image, Button, Trong Canvas: thiết lập thành phần: Image: Backgound Image, Player, Chest, Coin, Chest, Cloud, trees, stones … Button: Play Game Button, Option Button, Quit Button Text: Chest Text, Coin Text, … - Hiển thị giao diện: Canvas thiết lập Render Mode chế độ Screen SpaceOverlay 2.11 Biểu đồ lớp Theo phương pháp trích xuất danh từ - Tìm lớp dự kiến: user, bóng, viên đạn, kẻ địch, map, chương trình, giao diện, hình - Trích chọn danh từ tìm class: bóng, viên đạn, kẻ địch IV TÍNH HƯỚNG ĐỐI TƯỢNG CỦA GAME BẮN BĨNG Tính đóng gói 1.1 Khái niệm : Tính đóng gói cho phép che giấu thơng tin tính chất xử lý bên đối tượng Các đối tượng khác tác động trực tiếp đến liệu bên làm thay đổi trạng thái đối tượng mà bắt buộc phải thông qua phương thức cơng khai đối tượng cung cấp Tính chất giúp tăng tính bảo mật cho đối tượng tránh tình trạng liệu bị hư hỏng ý muốn 1.2 Demo Project - Bullet OncollisionEnter2D tính chất đối tượng class Bullet Như đối tượng khác tác động trực tiếp làm thay đổi trạng thái tác động thông qua method Bullet - CameraCinemachineTrack Awake , Start update tính chất (properties ) đối tượng class CameraCinemachineTrack Update () method public nhằm mục đích tương tác với đối tượng khác Tạo class Program với method static để run, xem cách tương tác thay đổi tính chất đối tượng thơng qua method public Tính kế thừa 2.1 Khái Niệm Tính kế thừa cho phép xây dựng lớp dựa định nghĩa lớp có Lớp cha tạo ra, lớp thừa hưởng phương thức từ lớp cha thể nhận liệu mà lớp cha chia sẻ Lớp khơng cần định nghĩa lại, mà mở rộng thành phần kế thừa bổ sung thêm thành phần 2.2 Demo Project Tính kế thừa thể class “ Bullet” class “EnemyController” Class “Bullet” có thuộc tính OncollisionEnter2D gọi lớp cha Lớp “EnemyController” kế thừa lại lớp cha thuộc tính OncollisionEnter2D Tính đa hình 3.1 Khái Niệm Tính đa hình hành động thực nhiều cách khác Hiểu đơn giản đa hình khái niệm mà hai nhiều lớp có phương thức giống thực thi cách khác 3.2 Demo Project Ta thấy tính đa hình lớp Bullet cụ thể phương thức IsTouchingLayers phương thức cách dùng lại khác V Kết luận Thơng qua tính chất “ Tính đa hình , tính đóng gói , tính kế thừa “ lập trình hướng đối tượng giúp ích nhiều việc làm game bắn bóng - Tính đóng gói cho phép che giấu thơng tin tính chất xử lý bên đối tượng Các đối tượng khác tác động trực tiếp đến liệu bên làm thay đổi trạng thái đối tượng mà bắt buộc phải thông qua phương thức cơng khai đối tượng cung cấp Tính chất giúp tăng tính bảo mật cho đối tượng tránh tình trạng liệu bị hư hỏng ngồi ý muốn - Tính đa hình : Tính đa hình lập trình OOP cho phép đối tượng khác thực thi chức giống theo cách khác - Tính kế thừa : Đây tính chất sử dụng nhiều Tính kế thừa cho phép xây dựng lớp (lớp Con), kế thừa tái sử dụng thuộc tính, phương thức dựa lớp cũ (lớp Cha) có trước Các lớp Con kế thừa tồn thành phần lớp Cha không cần phải định nghĩa lại Lớp Con mở rộng thành phần kế thừa bổ sung thành phần Nó giúp việc lập trình em trở nên dễ dàng , lặp lại code khiến tư lập trình tốt Nếu khơng sử dụng lập trình hướng đối tượng thời gian lập trình lâu bị rối lập trình project lớn LỜI CẢM ƠN Em xin cảm ơn thầy cô khoa đa phương tiện ban giám hiệu nhà trường tổ chức cho em học mơn “Lập trình hướng đối tượng C++ ” Đây môn học bổ ích với em trường làm bổ trợ cho em nhiều kiến thức Em xin cảm ơn thầy Tạ Chí Hiếu giảng dạy cho em học hay , thầy kèm cặp sát em dạy chỗ em chưa hiểu Trên báo cáo cuối kì em mơn học “Lập Trình Hướng Đối Tượng C++ ” Báo cáo có sai xót khơng tránh khỏi em mong thầy dẫn hướng dẫn để em hồn thành báo cáo cách tốt Em xin trân thành cảm ơn Sinh viên thực Hùng Hoàng Phi Hùng ... hình lập trình tiên tiến như: Lập trình hàm, lập trình logic, lập trình trực quan, lập trình tương tranh, lập trình phân tán, lập trình hướng đối tượng II MƠ HÌNH LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG... GIỚI THIỆU VỀ LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG Lập trình hướng đối tượng (Object Oriented Programming - gọi tắt OOP) hay chi tiết Lập trình định hướng đối tượng, phương pháp lập trình lấy đối tượng làm... II MƠ HÌNH LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG GIỚI THIỆU VỀ LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG NHỮNG KHÁI NIỆM CƠ BẢN VỀ LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG 2.1 Đối tượng