ươ Chương Chương Lập trình hướng đối tượng trì ướng đối ượng ươ phương phá giả quyế phương pháp giải toán toá Phương pháp lập trình Phươ ương phá trì Từ nhiều năm đà nghe nhiều đến thuật ngữ Lập trình hướng ®èi tỵng” (OOP - Object Oriented Programming) VËy thùc chÊt gì? Để hiểu vấn đề bắt đầu nhìn lại chút lịch sử phát triển phương pháp lập trình Vào ngày đầu phát triển máy tính, phần mềm đơn giản cỡ vài chục dòng lệnh, chương trình viết với câu lệnh thực từ đầu đến cuối Cách viết chương trình gọi phương pháp lập trình tuyến tính Khoa học máy tính ngày phát triển, phần mềm trì tuyế nh đòi hỏi ngày phức tạp lớn nhiều Đến lúc phương pháp lập trình tuyến tính tỏ hiệu có trường hợp người lập trình kiểm soát chương trình Thế phương pháp lập trình cấu trúc (LTCT) đời trì trú Theo cách tiếp cận này, chương trình tổ chức thành chương trình Mỗi chương trình đảm nhận xử lý công việc nhỏ toàn hệ thống Mỗi chương trình lại chia nhỏ thành chương trình nhỏ Quá trình phân chia tiếp tục diễn chương trình nhỏ nhận đủ đơn giản Người ta gọi trình làm mịn dần Các chương trình tương đối độc lập với nhau, phân công cho nhóm đảm nhận viết chương trình khác Ngôn ngữ lập trình thể rõ nét phương pháp lập trình cấu trúc Pascal Tuy nhiên, sử dụng phương pháp lập trình gặp khó khăn lớn tổ chức liệu hệ thống máy tính Bởi theo quan điểm LTCT Chương trình = Cấu trúc liệu + Giải thuật Để làm việc đòi hỏi người lập trình phải có kiến vững cấu trúc liệu Một khó khăn gặp phải giải thuật chương trình phụ thuộc chặt chẽ vào cấu trúc liệu, cần thay đổi nhỏ cấu trúc liệu làm thay đổi giải thuật phải viết lại chương trình Điều rõ ràng thích hợp phải xây dựng dự án phần mềm lớn Một phương pháp lập trình đời để khắc phục nhược điểm phương pháp lập trình hướng đối tượng (LTHĐT) Điểm trì ướng đối ượng phương pháp thiết kế chương trình xoay quanh liệu hệ thống Nghĩa lúc thao tác xử lý hệ thống gắn liền với liệu thay đổi nhỏ liệu ảnh hưởng đến số nhỏ hàm xử lý liên quan Sự gắn kết liệu hàm xử lý chúng tạo đối tượng Một ưu điểm có phương pháp LTHĐT cách tiếp cận toán trở nên gần gũi với thực tế Để hiểu rõ phương pháp lập trình này, không tốt vào toán cụ thể, chẳng hạn toán quan hệ gia đình yêu -1- Ngôn ngữ C++ cầu làm để thể mối quan hệ thành viên gia đình máy tính trả lời câu hỏi dạng tổng quát: “A vµ B cã quan hƯ nh thÕ nµo gia đình ? với A B hai cá thể Chúng ta phân tích xem cách giải toán Bài toán quan hệ gia đình toá đình Trong xà hội, người có gia đình, tồn nhiều mối quan hệ gia đình phức tạp ông, bà, cha, mẹ, cô, chú, bác, v.v Thông thường, để thể mối quan hệ người ta biểu diễn sơ đồ quan hệ Dưới ví dụ biểu diễn gia đình ba hệ hình 1.1 Mr Thắng Thắ Mr Quang Mr Hng Ms Nga Ms V©n Mr TuÊn Tuấ Miss Trang Hình 1.1 Ms Hằng Miss Mai Cây quan hệ gia đình Để giải toán theo phương pháp LTCT, công việc phải xây dựng cấu trúc liệu thể quan hệ Trông qua đơn giản thử làm xem thấy không đơn giản chút nào, chí khó Bởi đòi hỏi người lập trình phải thành thạo sử dụng trỏ, phải xây dựng giải thuật cập nhật thông tin quan hệ Các giải thuật tương đối phức tạp cấu trúc liệu toán Yêu cầu toán trả lời câu hỏi dạng nh “Hng vµ Mai cã quan hƯ nh thÕ nµo ? Câu trả lời chương trình phải Hưng anh họ Mai Để thực vậy, rõ ràng phải xây dựng giải thuật tìm mối quan hệ hai nút quan hệ Một vấn đề phức tạp tế nhị tên gọi cho mối quan hệ gia đình Việt nam phong phú! Một khó khăn phải vét cạn hết mối quan hệ có quan hệ Một khó khăn gặp phải cần phát triển, chương trình phải quản lý nhiều gia đình lúc gia đình có mối quan hệ thông gia với Hình 1.2 sơ đồ quan hệ phát triển từ sơ đồ ví dụ minh hoạ cho vấn đề -2- Lập trình hướng đối tượng - - - - Mr Thắng Thắ Ms Nga Mr Thành Thà - - - Mr Quang Mr Hng Ms V©n Mr TuÊn TuÊ Miss Trang H×nh 1.2 Ms H»ng Ms Lan - - - - - - Miss Mai Mở rộng quan hệ gia đình Một câu hỏi đặt ra: Liệu với cấu trúc liệu cũ có đảm bảo giải vấn đề không ? Rõ ràng câu trả lời không Sơ đồ quan hệ hình vẽ phải mô tả quan hệ gia đình Chỉ với chút thay đổi cấu trúc liệu dẫn đến loạt vấn đề đòi hỏi phải viết lại giải thuật chương trình Phương pháp lập trình hướng đối tượng cho phép khắc phục vấn đề đà nêu Trong suốt trình bày sách cố gắng nêu bật cách giải vấn đề nhờ LTHĐT Theo cách tiếp cận LTHĐT, toán quan hệ gia đình xem xét góc ườ độ quản lý tập đối tượng Con người Để biết mối quan hệ gia đình cá người thể, cần thể số quan hệ cha, mẹ, anh em, cái, vợ chồng cá thể Như vậy, đối tượng người toán có thuộc tính riêng, nói lên cha mĐ, anh em, v.v cđa hä lµ Ngoµi cần có thuộc tính cho biết tên cá thể Có thể mô tả lớp đối tượng người hình 1.3 Con ngêi ngê êi Tªn ? Cha ? MĐ ? Anh em ? Con ? Vợ / Chồng ? Hình 1.3 Mô tả lớp đối tượng người Nếu có chẳng khác cấu trúc hay ghi cấu trúc diệu sử dụng phương pháp LTCT Vấn đề phương pháp LTHĐT xem mối quan hệ gia đình hình thành cách tự nhiên kiện cụ thể sống tạo nên Ví dụ, người phụ nữ sinh con, đứa cô -3- Ngôn ngữ C++ ta sinh có mẹ cô ta cha chồng cô ta, đồng thời anh chồng phải cập nhật để có thêm đứa Những đứa trước cô ta có thêm đứa em đứa bé có thêm người anh người chị Dễ dàng thấy có hai kiện tác động đến mối quan hệ gia đình sinh người phụ nữ hôn nhân hai c¸ thĨ kh¸c giíi x· héi C¸c sù kiƯn gắn liền với người toán Điều có nghĩa nói đến kiện phải phát sinh bëi ngêi nµo VÝ dơ, nãi sù kiƯn sinh phải biết người sinh Khi kiện người xảy (ví dụ sinh con) thuộc tính bị thay đổi, đồng thời thuộc tính số đối tượng liên quan thay đổi theo Quá trình đóng gói kiện thuộc tính tạo Đối tượng, khái niệm phương pháp Đối ượng, LTHĐT Một mô tả chung cho đối tượng người toán gọi Lớp Hình 1.4 minh hoạ lớp Con người có thêm kiện toán Con người ngườ ười Tên ? Cha ? Mẹ ? Anh em ? Con ? Vợ / Chồng ? Sinh Cưới Hình 1.4 Các kiện bổ sung gắn với người Sau đà gắn kết kiện vào đối tượng trên, vấn đề tạo sơ đồ quan hệ gia đình Dưới ví dụ minh hoạ việc tạo quan hệ gia đình dựa kiện sống Giả thiết đà có hai đối tượng ông Thắng bà Mai Mr Th¾ng Th¾ Ms Mai Miss Nga Mr TuÊn Tuấ -4- Lập trình hướng đối tượng Các kiện để tạo quan hệ viết theo trật tự sau: Thắng.Cưới (Mai) Mai.Sinh (gái, Nga) Mai.Sinh (trai,Tuấn) Đối tượng tạo kiện Sù kiƯn ( th«ng sè kÌm theo sù kiƯn ) C¸c sù kiƯn viÕt theo có ph¸p: Nh vËy c¸c bạn đà thấy không cần phải quan tâm đến cách tạo cấu trúc quan hệ bên liệu chương trình mà cung cấp liệu toán cho chương trình thông qua kiện Chúng ta quay lại vấn đề toán trả lời câu hỏi mối quan hệ gia đình tiếp cận toán theo phương pháp Để trả lời câu hỏi tổng quát X Y có quan hệ gia đình ? ta cần phải trả lời câu hỏi nhỏ X có phải anh Y không ?, X có phải ông nội Y không ?, v.v Câu hỏi nhìn từ góc độ đối tượng X : Đối tượng có phải anh Y không ?, có phải «ng néi cđa Y kh«ng ?”, v.v Nh vËy c©u hỏi lúc đà giao cho đối tượng để trả lời Các đối tượng lúc cần phải có phương thức để trả lời câu hỏi Và lớp đối tượng Con người minh hoạ hình 1.5 Con người ngườ ười Tªn ? Cha ? MĐ ? Anh em ? Con ? Vợ / Chồng ? Sinh Cưới Là anh Là ông nội Hình 1.5 Thêm phương thức trả lời câu hỏi Ta xem xét đối tượng trả lời câu hỏi nào? Chẳng hạn X trả lời câu hỏi Đối tượng có phải anh Y không ? hoàn toàn đơn giản Nó cần kiểm tra xem Y có phải anh em mà thuộc tính lưu giữ không Hoàn -5- Ngôn ngữ C++ toàn tương tự câu hỏi quan hệ gần em, chị, bố, mẹ, Còn câu hỏi Đối tượng có phải ông nội Y không ? phức tạp chút Để trả lời câu hỏi có quan hệ xa ta phải dựa vào kết trả lời câu hỏi quan hệ gần gũi Để biết X ông nội Y phải người Z mà X lµ bè cđa Z vµ Z lµ bè cđa Y Nếu không Z X ông nội Y Việc tìm kiếm Z hoàn toàn đơn giản chương trình quản lý tập đối tượng người HÃy tìm Z tập đối tượng Con người Có thể thấy câu hỏi ban đầu đà phân chia thành hai câu hỏi đơn giản với chúng mà đà có cách trả lời Tóm lại, vấn đề toán đà giải tiếp cận theo phương pháp LTHĐT Một lợi điểm thấy toán phân tích gần với thực tế tự nhiên Trên phân tích sơ khai toán dựa theo phương pháp LTHĐT Để làm hoàn chỉnh toán cần số kĩ thuật LTHĐT tính kế thừa, tính đa hình, Chúng hy vọng qua phân tích toán nhỏ đà chứng tỏ lợi ích phương pháp LTHĐT Trong mục tóm tắt đưa tổng quan sơ LTHĐT Lập trình hướng đối tượng trì ướng đối ượng Lập trình hướng đối tượng đặt trọng tâm vào đối tượng, yếu tố quan trọng trình phát triển chương trình không cho phép liệu biến động tự hệ thống Dữ liệu gắn chặt với hàm thành vùng riêng mà có hàm tác động lên cấm hàm bên truy nhập tới cách tuỳ tiện LTHĐT cho phép phân tích toán thành thực thể gọi đối tượng sau xây dựng liệu hàm xung quanh đối tượng Các đối tượng tác động, trao đổi thông tin với thông qua chế thông báo (message) Tổ chức chương trình hướng đối tượng mô tả hình 1.6 Đối ượng Đối tượng A message Dữ liệu Đối ượng Đối tượng B Dữ liệu Hàm Hàm Đối ượng Đối tượng C Dữ liệu Hình 1.6 Hàm Các đối tượng trao đổi qua thông báo LTHĐT có đặc tính chủ yếu sau: Tập trung vào liệu thay cho hàm -6- Lập trình hướng đối tượng Chương trình chia thành đối tượng Các cấu trúc liệu thiết kế cho đặc tả đối tượng Các hàm thao tác vùng liệu đối tượng gắn với cấu trúc liệu Dữ liệu đóng gói lại, che giấu không cho phép hàm ngoại lai truy nhập tự Các đối tượng tác động trao đổi thông tin với qua hàm Có thể dễ dàng bổ sung liệu hàm vào đối tượng cần thiết Chương trình thiết kế theo cách tiếp cận từ lên (bottom-up) Sau số khái niệm sử dụng LTHĐT 3.1 Một số khái niệm niệ Đối ượng Đối tượng (object) Đối tượng kết hợp liệu thủ tục (hay gọi phương thức - method) thao tác liệu Có thể đưa công thức phản ánh chất kỹ thuật LTHĐT sau: Đối tượng = Dữ liệu + Phương thức Đối ượng liệ Phươ thứ ương Lớp (class) Lớp khái niệm LTHĐT so với kỹ thuật lập trình khác Đó tập đối tượng có cấu trúc liệu phương thức giống (hay nói cách khác tập đối tượng loại) Như vËy cã mét líp th× chóng ta sÏ biÕt mô tả cấu trúc liệu phương thức đối tượng thuộc lớp Mỗi đối tượng thể cụ thể (instance) lớp Trong lập trình, coi lớp kiểu, đối tượng biến có kiểu lớp Nguyê Nguyên tắc đóng gói liệu đóng liệ Trong LTCT ta đà thấy hàm hay thủ tục sử dụng mà không cần biết đến nội dung cụ thể Người sử dụng cần biết chức hàm tham số cần truyền vào để gọi hàm chạy mà không cần quan tâm đến lệnh cụ thể bên Người ta gọi đóng gói chức Trong LTHĐT, chức đóng gói mà liệu Với đối tượng người ta truy nhập trực tiếp vào thành phần liệu cảu mà phải thông qua thành phần chức (các phương thức) để làm việc ®ã Chóng ta sÏ thÊy sù ®ãng gãi thùc sù liệu có ngôn ngữ LTHĐT khiết (pure) theo nghĩa ngôn ngữ thiết kế từ đầu -7- Ngôn ngữ C++ cho LTHĐT Còn ngôn ngữ lai (hybrid) xây dựng ngôn ngữ khác ban đầu chưa phải HĐT C++ nói đến sách này, có ngoại lệ định vi phạm nguyên tắc đóng gói liệu Tính kế thừa (inheritance) thừ Một khái niệm quan trọng LTHĐT sù kÕ thõa Sù kÕ thõa cho phÐp chóng ta định nghĩa lớp sở lớp đà tồn tại, tất nhiên có bổ sung phương thức hay thành phần liệu Khả kÕ thõa cho phÐp chóng ta sư dơng l¹i mét cách dễ dàng module chương trình mà không cần thay đổi module Rõ ràng điểm mạnh LTHĐT so với LTCT Tính đa hình (polymorphime) Tính đa hình xuất có khái niƯm kÕ thõa Gi¶ sư chóng ta cã mét kÕ thừa lớp hình tứ giác lớp hình tam giác kế thừa từ lớp hình đa giác (hình tam giác tứ giác có đầy đủ thuộc tính tính chất hình đa giác) Lúc đối tượng thuộc lớp hình tam giác hay tứ giác hiểu hình đa giác Mặt khác với đa giác ta có thĨ tÝnh diƯn tÝch cđa nã Nh vËy lµm thÕ mà đa giác sử dụng công thức để tính diện tích phù hợp với hình tam giác hay tứ giác Ta gọi tính đa hình 3.2 Các ưu điểm LTHĐT LTHĐ LTHĐT đem lại số lợi cho người thiết kế lẫn người lập trình Cách tiếp cận hướng đối tượng giải nhiều vấn đề tồn trình phát triển phần mềm tạo phần mềm có độ phức tạp chất lượng cao Phương pháp mở triển vọng to lớn cho người lập trình Những ưu điểm LTHĐT là: Thông qua nguyên lý kế thừa, loại bỏ đoạn chương trình lặp lại trình mô tả lớp mở rộng khả sử dụng lớp đà xây dựng mà không cần phải viết lại Chương trình xây dựng từ đơn thể (đối tượng) trao đổi với nên việc thiết kế lập trình thực theo quy trình định dựa vào kinh nghiệm kỹ thuật trước Điều đảm bảo rút ngắn thời gian xây dựng hệ thống tăng suất lao động Nguyên lý đóng gói hay che giấu thông tin giúp người lập trình tạo chương trình an toàn không bị thay đổi đoạn chương trình khác Có thể xây dựng ánh xạ đối tượng toán vào đối tượng chương trình Cách tiếp cận thiết kế đặt trọng tâm vào liệu, giúp xây dựng mô hình chi tiết dễ dàng cài đặt -8- Lập trình hướng đối tượng Các hệ thống hướng đối tượng dễ mở rộng, nâng cấp thành hệ lớn Kỹ thuật truyền thông báo việc trao đổi thông tin đối tượng làm cho việc mô tả giao diện với hệ thống bên trở nên đơn giản Có thể quản lý độ phức tạp sản phẩm phần mềm 3.3 Nhữ Những ứng dụng LTHĐT LTHĐ LTHĐT thuật ngữ nhắc đến nhiều công nghệ phần mềm ứng dụng để phát triển phần mềm nhiều lĩnh vực khác Trong số đó, ứng dụng quan trọng tiếng hiƯn lµ thiÕt kÕ giao diƯn víi ngêi sư dụng, kiểu Windows Các hệ thông tin quản lý thực tế thường phức tạp, chứa nhiều đối tượng với thuộc tính hàm phức tạp Để giải hệ thông tin phức tạp thế, LTHĐT tỏ hiệu Các lĩnh vực ứng dụng phù hợp với kỹ thuật LTHĐT liệt kê đây: *Các hệ thống làm việc theo thời gian thực *Các hệ mô hình hoá mô trình *Các hệ sở liệu hướng đối tượng *Các hệ siêu văn (hypertext), đa phương tiện (multimedia) *Các hệ thống trí tuệ nhân tạo hệ chuyên gia *Các hệ thống song song mạng nơ-ron *Các hệ tự động hoá văn phòng trợ giúp định *Các hệ CAD/CAM Với nhiều đặc tính phong phú LTHĐT nói riêng, phương pháp phân tích thiết kế phát triển hướng đối tượng nói chung hy vọng công nghiệp phần mềm có cải tiến nhảy vọt chất lượng, mà gia tăng nhanh số lượng tương lai Các ngôn ngữ lập trình hướng đối tượng ngô ngữ trì ướng đối ượng LTHĐT đặc quyền ngôn ngữ đặc biệt Cũng giống kỹ thuật lập trình có cấu trúc, khái niệm LTHĐT thể nhiều ngôn ngữ lập trình khác Những ngôn ngữ cung cấp khả LTHĐT gọi ngôn ngữ lập trình hướng đối tượng Tuy có ngôn ngữ cung cấp khả tạo lớp đối tượng mà không cho phép kế thừa, hạn chế khả LTHĐT Hình 1.7 cho nhìn tổng quan phát triển ngôn ngữ LTHĐT -9- Ngôn ngữ C++ SIMULA (66) SMALLTALK (71) SMALLTALK (80) ADA (83) C++ (86) EIFFEL (90) ADA (95) JAVA (95) Hình 1.7 Sự phát triển ngôn ngữ LTHĐT Các ngôn ngữ SIMULA, SMALLTALK, JAVA thuộc họ ngôn ngữ LTHĐT khiết, nghĩa không cho phép phát triển chương trình cấu trúc ngôn ngữ loại Còn ngôn ngữ C++ thuộc loại ngôn ngữ lai phát triển từ ngôn ngữ C Do C++ sử dụng tính cấu trúc đối tượng chương trình Điều tỏ phù hợp bắt đầu học ngôn ngữ lập trình Đó lý mà sử dụng ngôn ngữ C++ để giới thiệu phương pháp LTHĐT sách Một lý khác C++ sử dụng cú pháp ngôn ngữ C ngôn ngữ thông dụng lập trình chuyên nghiệp Ngôn ngữ lập trình C++ Ngô ngữ trì Vào năm 1983, giáo sư Bjarne Stroustrap bắt đầu nghiên cứu phát triển việc cài đặt khả LTHĐT vào ngôn ngữ C tạo ngôn ngữ gọi C++ Tên gọi phân tích ý nghĩa ngôn ngữ C mà có hai đặc điểm tương ứng với hai dấu cộng Đặc điểm thứ số khả më réng so víi C nh tham chiÕu, chång hµm, tham số mặc định Đặc điểm thứ hai khả LTHĐT Hiện C++ chưa phải ngôn ngữ hoàn toàn ổn định Kể từ phiên đời vào năm 1986 đà có nhiều thay đổi phiên C++ khác nhau: 1.1 đời vào năm 1986, 2.0 vào năm 1989 3.0 vào năm 1991 Phiên 3.0 sử dụng để làm sở cho việc định nghĩa ngôn ngữ C++ chuẩn (kiểu Ansi C) -10- Lập trình hướng đối tượng Trên thực tế tất chương trình dịch C++ tương thích với phiên 3.0 Vì C++ không gây khó khăn chuyển đổi từ môi trường sang môi trường khác, đà biết C++ bổ sung khả LTHĐT vào ngôn ngữ C Sẽ có nhiều người nghĩ ngôn ngữ C nói C theo chuẩn ANSI Thực hoàn toàn Tên thực tế tồn vài điểm không tương thích ANSI C C++ Mặt khác cần thấy më réng cã C++ so víi Ansi C kh«ng để phục vụ cho mục đích tạo cho ngôn ngữ khả LTHĐT Có thay đổi với mục đích đơn tăng sức mạnh cho ngôn ngữ C thời Ngoài có vài thay ®ỉi nhá ë C++ so víi ANSI C nh sau: * trả lại Định nghĩa hàm: khai báo, truyền tham số giá trị * Sự tương thích trỏ * Tính linh hoạt (const) Các đặc điểm mở rộng C++ đặc Như đà đề cập C++ chứa mở rộng so với C mà không liên quan đến kỹ thuật hướng đối tượng Những mở rộng mô tả cụ thể chương sau, tóm tắt lại vài điểm * Khả viết dòng thích * Khả khai báo linh hoạt * Khả định nghĩa lại hàm: hàm tên thực theo thao tác khác Các lêi gäi hµm sÏ dïng kiĨu vµ sè tham sè để xác định hàm cần thực * delete Có thêm toán tử định nghĩa nhớ động mới: new Khả định nghĩa hàm inline để tăng tốc độ thực * chương trình * Tạo biến tham chiếu đến biến khác LTHĐ LTHĐT C++ C++ chứa đựng khái niệm lớp Một lớp bao gồm thành phần liệu thuộc tính phương thức hàm thành phần Từ lớp ta tạo đối tượng cách khai báo thông thường biến có kiểu lớp cách cấp phát nhớ động nhờ sử dụng toán tử new C++ cho phép đóng gói liệu không bắt buộc thực điều Đây nhược điểm C++ Tuy nhiên cần thấy thân C++ mở rộng C nên ngôn ngữ LTHĐT khiết -11- Ngôn ngữ C++ C++ cho phép ta định nghĩa hàm thiết lập (constructor) cho lớp Hàm thiết lập phương thức đặc biệt gọi đến thời điểm đối tượng lớp tạo hàm thiết lập có nhiệm vụ khởi tạo đối tượng: cấp phát nhớ, gán giá trị cho thành phần liệu việc chuẩn bị chỗ cho ®èi tỵng míi Mét líp cã thĨ cã mét hay nhiều hàm thiết lập Để xác định hàm thiết lập cần gọi đến, chương trình biên dịch so sánh đối số với tham số truyền vào Tương tự hàm thiết lập, lớp có hàm huỷ bỏ (destructor), phương thức đặc biệt gọi đến đối tượng giải phóng khái bé nhí Líp C++ thùc chÊt lµ mét kiểu liệu người sử dụng định nghĩa Khái niệm định nghĩa chồng toán tử cho phép định nghĩa phép toán lớp giống kiểu d÷ liƯu chn cđa C VÝ dơ ta cã thĨ định nghĩa lớp số phức với phép toán céng, trõ, nh©n, chia Cịng gièng nh C, C++ cã khả chuyển đổi kiểu Không thế, C++ cho phép mở rộng chuyển đổi sang kiểu người sử dụng tự định nghĩa (các lớp) VÝ dơ, ta cã thĨ chun ®ỉi tõ kiĨu chn int C sang kiểu số phức mà ta định nghĩa chẳng hạn C++ cho phép thực kế thừa lớp đà xây dựng Từ phiên 2.0 trở ®i, C++ cßn cho phÐp mét líp kÕ thõa cïng lúc từ nhiều nhiều lớp khác (gọi đa kế thừa) Cuối C++ cung cấp thao tác vào dựa sở khái niệm luồng liệu (flow) Sự ưu việt thao tác chỗ: * Sử dụng đơn giản * Kích thước nhớ rút gọn * Khả áp dụng kiểu người sử dụng định nghĩa cách sử dụng chế định nghĩa chồng toán tử -12- Lập trình hướng đối tượng 1.Phương pháp lập trình 2.Bài toán quan hệ gia ®×nh 3.Lập trình hướng đối tượng .6 3.1Mét sè kh¸i niƯm 3.2Các ưu điểm LTHĐT 3.3Nh÷ng øng dơng cđa LTH§T 4.Các ngôn ngữ lập trình hướng đối tượng .9 5.Ngôn ngữ lập trình C++ 10 -13- ... hướng đối tượng - - - - Mr Thắng Thắ Ms Nga Mr Thµnh Thµ - - - Mr Quang Mr Hưng Ms Vân Mr Tuấn Tuấ Miss Trang Hình 1.2 Ms H»ng Ms Lan - - - - - - Miss Mai Mở rộng quan hệ gia đình Một câu hỏi đặt... chương trình phải quản lý nhiều gia đình lúc gia đình có mối quan hệ thông gia với Hình 1.2 sơ đồ quan hệ phát triển từ sơ đồ ví dụ minh hoạ cho vấn đề -2 - Lập trình hướng đối tượng - - - - Mr... làm sở cho việc định nghĩa ngôn ngữ C++ chuẩn (kiểu Ansi C) -1 0- Lập trình hướng đối tượng Trên thực tế tất chương trình dịch C++ tương thích với phiên 3.0 Vì C++ không gây khó khăn chuyển đổi