# GÓC SÁNG TẠO > Khu vực lập trình > Java >  Khái quát về OOP - Object Oriented Programming

## bao245

Chúng ta sắp học Java - Một ngôn ngữ lập trình hướng đối tượng.Vậy trước khi tìm hiểu về Java ,về sức mạnh và khả năng của nó,chúng ta hãy cùng tìm hiểu một cách khái quát ->Thế nào là một ngôn ngữ lập trình hướng đối tượng (OOP).Đây cũng là những kiến thức mà Ben đã được học cùng với những tài liệu sưu tầm được ,muốn chia sẻ với các bạn chưa học và sắp học.Mong rằng nó sẽ giúp ích cho các bạn phần nào.
Và bây giờ chúng ta bắt đầu tìm hiểu thế nào là ngôn ngữ lập trình hướng đối tượng.
----------------------------------------------------------------------------------
*Bài I)_ OOP - Ngông ngữ lập trình hướng đối tượng.* 
+OOP - Object Oriented Programming là một phương pháp mới để giải quyết vấn đề với máy vi tính.Với OOP ,thay vì nỗ lực đưa vấn đề vào trong khuôn khổ quen thuộc với máy vi tính,các lập trình viên sử dụng phương pháp hướng đối tượng nhằm tìm kiếm một giải pháp toàn vẹn cho một vấn đề.(Chúng ta sẽ được hiểu kỹ hơn về tính hướng đối tượng ở các ví dụ trong phần sau.)
+ Những ngôn ngữ OOP bao gồm cú pháp và một trình biên dịch (compiler) thêm nữa là có một môi trường phát triển toàn diện. Môi trường này bao gồm một thư viện được thiết kế tốt, thuận lợi cho việc sử dụng các đối tượng.
Chúng ta hãy xem một ví dụ sau.Giả sử Ben phụ trách quản lý việc bán hàng cho một công ty máy vi tính nào đó và để dễ dàng hơn cho việc quản lý Ben đã triển khai công việc thành một hệ thống trên máy vi tính.Vậy,vấn đề vi tính hoá việc mua bán máy tính bao gồm những gì ?
+Những yếu tố rõ ràng nhất liên quan đến việc mua bán máy tính là:
1) Các loại máy tính(model).
2) Nhân viên bán hàng.
3) Khách hàng.
+Những hoạt động liên quan đến việc mua bán máy tính là:
1) Nhân viên bán hàng đưa khách hàng tham quan phòng trưng bày.
2) Khách hàng chọn lựa một loại máy tính nào đó.
3) Khách hàng đặt hóa đơn.
4) Khách hàng trả tiền.
5) Máy tính được trao cho khách hàng.

*Mỗi vấn đề được chia ra thành nhiều yếu tố -> được gọi là các Đối tượng (Objects) hoặc các Thực thể (Entities). Chẳng hạn như ở ví dụ trên, khách hàng, máy tính và nhân viên bán hàng là những đối tượng hoặc thực thể.
*Lập trình viên luôn luôn cố gắng tạo ra những kịch bản (scenarios) thật quen thuộc với những tình huống đời sống thực. Bước thứ nhất trong đường hướng này là làm cho máy tính liên kết với những đối tượng thế giới thực.
*Tuy nhiên, máy tính chỉ là một cỗ máy. Nó chỉ thực hiện những công việc được lập trình mà thôi. Vì thế, trách nhiệm của lập trình viên là cung cấp cho máy tính những thông tin theo cách thức mà nó cũng nhận thức được cùng những thực thể như chúng ta nhận thức.

==>Đó chính là lãnh vực của kỹ thuật hướng đối tượng. Chúng ta sử dụng kỹ thuật hướng đối tượng để ánh xạ những thực thể chúng ta gặp phải trong đời sống thực thành những thực thể tương tự trong máy tính.

----------


## iwinonline365

Bai II- Một số khái niệm trong OOP

*1-SỰ TRỪU TƯỢNG HOÁ DỮ LIỆU*  
* Khi một lập trình viên phải phát triển một chương trình ứng dụng thì không có nghĩa là người ấy lập tức viết mã cho ứng dụng ấy. Trước hết, người ấy phải nghiên cứu ứng dụng và xác định những thành phần tạo nên ứng dụng. Kế tiếp, người ấy phải xác định những thông tin cần thiết về mỗi thành phần.

Hãy khảo sát chương trình ứng dụng cho việc mua bán máy tính ở bài I. Chương trình phải xuất hóa đơn cho những máy tính đã bán cho khách hàng. Để xuất một hóa đơn, chúng ta cần những thông tin chi tiết về khách hàng. Vậy bước thứ nhất là xác định những đặc tính của khách hàng.

Một vài đặc tính gắn kết với khách hàng là:

+ Tên.
+ Địa chỉ.
+ Tuổi.
+ Chiều cao.
+ Màu tóc.

Từ danh sách kể trên, chúng ta xác định những đặc tính thiết yếu đối với ứng dụng. Bởi vì chúng ta đang đề cập đến những khách hàng mua xe, vì thế những chi tiết thiết yếu là:

+ Tên.
+ Địa chỉ.

Còn những chi tiết khác (chiều cao, màu tóc …) là không quan trọng đối với ứng dụng. Tuy nhiên, nếu chúng ta phát triển một ứng dụng hỗ trợ cho việc điều tra tội phạm thì những thông tin chẳng hạn như màu tóc là thiết yếu.

Bên cạnh những chi tiết về khách hàng, những thông tin sau cũng cần thiết:

+ Loại máy được bán.
+ Nhân viên nào bán máy.

Bên cạnh những đặc tính của khách hàng, máy tính và nhân viên bán hàng, chúng ta cũng cần liệt kê những hành động được thực hiện.

Công việc xuất hóa đơn đòi hỏi những hành động sau:

+ Nhập tên của khách hàng.
+ Nhập địa chỉ của khách hàng.
+ Nhập loại máy tính.
+ Nhập tên của nhân viên bán máy.
+ Xuất hóa đơn với định dạng đòi hỏi.

Thông tin bên dưới cho thấy những thuộc tính và những hành động liên quan đến một hóa đơn:

_Các thuộc tính_
Tên của khách hàng
Địa chỉ của khách hàng
Kiểu máy tính bán
Nhân viên bán máy

_Các hành động_
Nhập tên
Nhập địa chỉ
Nhập loại máy
Nhập tên nhân viên bán máy
Xuất hóa đơn

====>Sự trừu tượng hóa dữ liệu là tiến trình xác định và nhóm các thuộc tính và các hành động liên quan đến một thực thể đặc thù, xét trong mối tương quan với ứng dụng đang phát triển.

**Những thuận lợi của việc Trừu tượng hóa là:

+ Tập trung vào vấn đề.
+ Xác định những đặc tính thiết yếu và những hành động đòi hỏi.
+ Giảm thiểu những chi tiết không cần thiết.

Việc trừu tượng hóa dữ liệu là cần thiết, bởi vì không thể mô phỏng tất cả các hành động và các thuộc tính của một thực thể. Vấn đề mấu chốt là tập trung đến những hành vi cốt yếu và áp dụng chúng trong ứng dụng.

Chẳng hạn như khách hàng hoặc nhân viên bán hàng cũng có thể thực hiện những hành động sau:

+ Người ấy đi lại.
+ Người ấy nói chuyện.

Tuy nhiên, những hành động này không liên quan đến ứng dụng. Việc trừu tượng hóa dữ liệu sẽ loại bỏ chúng.

----------


## shopnmm

*II - LỚP (CLASS)*  

Trong ứng dụng mua bán máy tính, chúng ta đã xác định các thuộc tính và các hành động cần có để xuất một hóa đơn cho một khách hàng.

Các hành động và các thuộc tính này là chung cho mọi khách hàng mua máy. Ví thể, chúng có thể được nhóm lại trong một thực thể đơn nhất gọi là một ‘lớp’.

Hãy khảo sát lớp có tên là ‘khách hàng’ dưới đây. Lớp này bao gồm mọi thuộc tính và hành động đòi hỏi đối với một khách hàng.

_Lớp Khách hàng_
Tên khách hàng
Địa chỉ khách hàng
Kiểu máy được bán
Nhân viên bán máy
Nhập tên
Nhập địa chỉ
Nhập kiểu máy được bán
Nhập tên nhân viên bán máy
Xuất hóa đơn

==>Định nghĩa

_Một lớp định nghĩa một thực thể theo những thuộc tính và những hành động chung. Hoặc
Những thuộc tính và những hành động chung của một thực thể được nhóm lại để tạo nên một đơn vị duy nhất gọi là một lớp. Hoặc
Một lớp là một sự xác định cấp chủng loại của các thực thể giống nhau._ 
Một lớp là một mô hình khái niệm về một thực thể. Nó mang tính cách tổng quát chứ không mang tính cách đặc thù.

Khi định nghĩa một lớp, chúng ta muốn phát biểu rằng một lớp sẽ phải có một tập hợp các thuộc tính và các hành động riêng. Chẳng hạn như một định nghĩa lớp dưới đây:

_Lớp Con người_Tên
Chiều cao
Màu tóc
Viết
Nói

Lớp này định nghĩa thực thể ‘Con người’. Mọi thực thể thuộc kiểu ‘Con người’ sẽ đều có những đặc tính và những hành động như đã được định nghĩa.

Một khi một lớp đã được định nghĩa, chúng ta biết được những thuộc tính và những hành động của những thực thể ‘trông giống’ như lớp này. Vì thế, tự bản chất một lớp là một nguyên mẫu (prototype).

Một ví dụ khác về một lớp liên quan đến việc mua bán máy tính như sau:
_
Lớp Nhân viên bán hàng_
Tên
Số lượng máy bán được
Tiền hoa hồng
Nhập tên
Nhập số lượng máy bán được
Tính tiền hoa hồng

Lớp trên định nghĩa các thuộc tính và các hành động đặc trưng cho mọi nhân viên bán máy tính.

----------


## khuongtrungkt1

*IV - THUỘC TÍNH*  
Chúng ta xác định các thuộc tính và các hành động để định nghĩa một lớp.

Một khi các thuộc tính được gán cho các giá trị, chúng mô tả một đối tượng. Hãy khảo sát lớp sau:

Các thuộc tính của lớp Khách hàng
Tên của khách hàng
Địa chỉ của khách hàng
Loại máy được bán
Nhân viên đã bán máy

Khi thuộc tính ‘Tên’ được gán cho giá trị ‘Mark’ thì nó mô tả một đối tượng xác định được tạo từ lớp ‘Khách hàng’.

Định nghĩa

+Một thuộc tính là một đặc tính mô tả một đối tượng.

==>Như thế, các thuộc tính nắm giữ các giá trị dữ liệu trong một đối tượng, chúng định nghĩa một đối tượng đặc thù.

+Bởi vì một lớp là một nguyên mẫu cho nên các thuộc tính trong một lớp không thể nắm giữ các giá trị. 
+Một thuộc tính có thể được gán một giá trị chỉ sau khi một đối tượng dựa trên lớp ấy được tạo ra.

+Để có thể lưu giữ những chi tiết của một khách hàng, một trường hợp (đối tượng) của lớp ‘Khách hàng’ phải được tạo ra. Các thuộc tính của một đối tượng hiện hữu chỉ khi đối tượng ấy được tạo ra.

+Mọi đối tượng của một lớp phải có cùng các thuộc tính.
==> Xem qua ví dụ sau :
_Các thuộc tính của lớp Con người_
Tên
Tuổi
Chiều cao
Màu tóc
_Tương đương với các đối tượng được tạo ra là_
+Ben (cái này cho thuộc tính "Tên")
-->tương tự
+22 tuổi
+1.74m
+Đen

----------


## benjamin239

*VI - SỰ KIỆN (Event)*  
+Một sự kiện là một sự việc xảy ra cho một đối tượng tại một thời điểm. Để đáp ứng lại sự kiện ấy, đối tượng sẽ thực hiện một hoặc nhiều phương thức.

+Nói cách khác, một sự kiện là một tác nhân mà đối tượng này gây ra cho một đối tượng khác. Chẳng hạn như click chuột trái trên một nút.

+Để hiểu rõ hơn các sự kiện, hãy khảo sát ví dụ sau từ đời thực:

_Một người sẽ *thét lên* khi *bị thọc* bằng một vật nhọn.

*Thọc*  là sự kiện gây ra sự phản ứng là _thét lên._

+Trong máy tính, một người sử dụng nhấn một nút trên bàn phím là một sự kiện chung. Sự phản hồi đối với sự kiện này là việc hiển thị ký tự tương ứng trên màn hình.

*VII - THIẾT LẬP (Contrucion) VÀ HỦY (Destruction)*  

*A / THIẾT LẬP (Contruction)* 

+Một lớp chỉ cung cấp những định nghĩa về các thuộc tính và các phương thức khả thi. Các thuộc tính và các phương thức có thể được truy cập chỉ khi một đối tượng dựa trên một lớp được tạo ra.

+Khi một đối tượng mới được tạo, các thuộc tính của nó trở nên hiện thực và có thể được gán giá trị. Tương tự, các phương thức được định nghĩa cũng được áp dụng.

[*i]Định nghĩa*
_Thiết lập là một tiến trình hiện thực hóa một đối tượng._
+ Hàm thiết lập là một phương thức đặc biệt phải được gọi trước khi sử dụng bất kỳ phương thức nào trong một lớp. Hàm Thiết lập khởi tạo các thuộc tính, và cấp phát bộ nhớ trong máy tính khi cần thiết.

_Mỗi một lớp có một hàm thiết lập._ 
+Khảo sát lại trường hợp cửa hàng bán Máy tính. Ngay từ lúc đầu chỉ định nghĩa các lớp. Cho đến khi một khách hàng mua một máy tính tại cửa hàng thì một đối tượng mới giống như lớp ‘Khách hàng’ mới được tạo.

+Khi đối tượng này được tạo, một số khoảng trống bộ nhớ được cấp phát cho những thuộc tính của nó để lưu trữ các giá trị được gán cho các thuộc tính ấy (‘Tên’, ‘Địa chỉ’ …). Hàm thiết lập thực hiện việc cấp phát này. Vào lúc này, mọi thuộc tính và phương thức của đối tượng sẵn sàng để sử dụng.

+Tương tự như trường hợp một học sinh nhập học tại một trường học. Khi một học sinh nhập học, một vài hành động được thực hiện để nhận học sinh ấy vào trường. Đó là:

+ Xếp lớp cho học sinh ấy.
+ Ghi tên học sinh ấy vào danh sách.
+ Xếp chỗ ngồi.

+Đây là những hành động đồng loạt được thực hiện ngay lúc bắt nhập học. Chúng tương tự với những hành động mà hàm thiết lập của một đối tượng thực hiện.
*
B / HỦY (Destruction)* 

Khi một đối tượng không còn cần thiết nữa thì nó sẽ bị hủy bỏ.

Sẽ lãng phí tài nguyên, chẳng hạn như bộ nhớ, nếu như tiếp tục để cho một đối tượng tồn tại một khi nó không còn cần thiết.

Định nghĩa

_Hàm Hủy là một phương thức đặc biệt được dùng để hủy bỏ một đối tượng._ 
+_Tiến trình Hủy tiêu hủy một đối tượng và giải phóng khoảng trống bộ nhớ mà hàm thiết lập đã cấp phát cho nó. Hàm Hủy cũng triệt tiêu khả năng truy cập đến đối tượng ấy._
+Một khi một đối tượng bị hủy thì các thuộc tính của nó không thể được truy cập, cũng như không một phương thức nào có thể được thực thi.
+Chẳng hạn, trong trường hợp bán máy tính, một khi nhân viên bán hàng bỏ nghề, những chi tiết của người ấy không còn liên hệ. Vì thế, đối tượng tương ứng sẽ bị hủy. Điều này giải phóng bộ nhớ đã cấp phát cho nhân viên bán hàng ấy. Khoảng trống này giờ đây có thể được tái sử dụng.

+Hãy xem xét ví dụ về trường học trên đây. Khi một học sinh thôi học, tên của học sinh ấy bị loại ra khỏi danh sách, và khoảng trống được giải phóng có thể được tái cấp phát.

_* Các hành động đồng loạt này tương tự với công việc của hàm hủy đối với một đối tượng._

----------


## Lpthuylieu

*VIII
A / TÍNH BỀN VỮNG (Persistence)* 
+Định nghĩa
_Tính Bền vững là khả năng lưu trữ dữ liệu của một đối tượng ngay cả khi đối tượng ấy không còn tồn tại._ 

+Cửa hàng máy tính lưu trữ chi tiết khách hàng vào một file. Những chi tiết này sẽ tồn tại trong file cho đến khi chúng bị hủy, hoặc bản thân file bị hủy.

+Chúng ta đụng chạm tính bền vững mỗi ngày. Hãy xem việc sáng tác một bài thơ. Bài thơ là dữ liệu tồn tại trong tâm trí của nhà thơ. Bao lâu nhà thơ còn tồn tại thì bấy lâu bài thơ còn tồn tại. Nếu bài thơ muốn tồn tại ngay cả sau khi nhà thơ qua đời thì nó phải được viết ra giấy.

+Bài thơ được viết ra giấy tạo nên sự bền vững. Bài thơ sẽ tồn tại bao lâu văn bản ấy còn được duy trì. Bài thơ ấy không còn tồn tại
khi tờ giấy ấy bị xé rách, hoặc chữ nghĩa bị xóa đi.
*
B / TÍNH ĐÓNG GÓI DỮ LIỆU (Encapsulation)* 
+Tiến trình trừu tượng hóa dữ liệu hỗ trợ cho việc xác định những thuộc tính và những phương thức thiết yếu.

+Thông thường, các đối tượng sử dụng những thuộc tính và những phương thức không được đòi hỏi bởi người sử dụng đối tượng.

+Chẳng hạn như trong trường hợp lớp ‘Khách hàng’. Lớp ấy có một phương thức xuất hóa đơn. Giả sử rằng khi hóa đơn được xuất, một trong những chi tiết được in ra trên hóa đơn là ngày phân phối. Tuy nhiên chúng ta không biết thuộc tính nào qua đó chúng ta có thể xác định thông tin này.

+Ngày phân phối được phát sinh bên trong đối tượng, và được hiển thị trên hóa đơn. Như thế người sử dụng không nhận thức về cách thức mà ngày phân phối được hiển thị.

+Ngày phân phối có thể được xử lý theo một trong những cách sau:

+ Đó là một giá trị được tính toán - Chẳng hạn, 15 ngày kể từ ngày đặt hàng.
+ Đó là một giá trị cố định – Máy tính được phân phối vào ngày mùng 2 mỗi tháng.

+Đối tượng sử dụng những thuộc tính và những phương thức mang tính nội bộ. Bởi vì những thuộc tính và những phương thức có thể được che khuất khỏi tầm nhìn. 
+Các đối tượng khác và những người sử dụng không nhận thức được các thuộc tính và / hoặc các phương thức như thế có tồn tại hay không. 
+Tiến trình che giấu các thuộc tính, các phương thức, hoặc các chi tiết của việc thi hành được gọi là ‘đóng gói’ (encapsulation).

_* Đóng gói là tiến trình che giấu việc thực thi những chi tiết của một đối tượng đối với người sử dụng đối tượng ấy._ 

*Những thuận lợi của việc đóng gói dữ liệu
+Phân tách những khía cạnh có thể truy cập từ bên ngoài với những khía cạnh chỉ được sử dụng trong nội bộ của đối tượng.

+Tạo ra bất kỳ thuộc tính hay phương thức cần thiết để đáp ứng đòi hỏi công việc khi xây dựng một lớp. Mặt khác, chỉ những thuộc tính và / hoặc những phương thức có thể được truy cập từ bên ngoài lớp là trông thấy.

*Một ví dụ khác về việc đóng gói là lớp ‘Nhân viên bán hàng’ đã được định nghĩa ở trên. Khi phương thức tính tiền hoa hồng được thực thi, người sử dụng không biết chi tiết của việc tính toán. Tất cả những gì họ biết chỉ là tổng số tiền hoa hồng mà họ phải trả cho nhân viên bán hàng.

*Ví dụ :Một trường hợp về đóng gói mà chúng ta gặp trong đời sống hằng ngày là việc giao dịch kinh doanh ở một cửa hàng. Khách hàng yêu cầu sản phẩm X. Họ được trao cho sản phẩm X, và họ phải trả tiền cho sản phẩm ấy. Sau khi khách hàng yêu cầu sản phẩm, người bán hàng thực hiện những hành động sau:

+ Kiểm tra mặt hàng trên kệ hàng.
+ Giảm số lượng mặt hàng trong bảng kiểm kê sau khi bán.

Tuy nhiên, khách hàng không được biết những chi tiết này.

----------


## tuyetbanggia

*C / TÍNH THỪA KẾ*   Hãy khảo sát các lớp sau


+Trong tất cả ba lớp, chúng ta thấy có một vài thuộc tính và hoạt động chung. Chúng ta muốn nhóm những thuộc tính và những hoạt động ấy lại, và định nghĩa chúng trong một lớp ‘Người’.
*
Lớp Người*
+Tên
+Địa chỉ
+Nhập tên
+Nhập địa chỉ

+Ba lớp ‘Sinh viên’, ‘Nhân viên’ và ‘Khách hàng’ tạo nên lớp ‘Người’. Nói cách khác, ba lớp ấy có tất cả các thuộc tính và các phương thức của lớp ‘Người’, ngoài ra chúng còn có những thuộc tính và những phương thức riêng.

+Chúng ta cần phải định nghĩa lớp ‘Người’ và sử dụng nó trong khi định nghĩa các lớp ‘Sinh viên’, ‘Nhân viên’ và ‘Khách hàng’.

+Chúng ta xây dựng một lớp ‘Người’ với những thuộc tính và những hoạt động như đã trình bày ở hình trên. Kế tiếp, chúng ta xây dựng lớp ‘Khách hàng’ bao gồm lớp ‘Người’ cộng với những thuộc tính và những phương thức riêng.

+Chúng ta có thể định nghĩa các lớp ‘Sinh viên’ và ‘Nhân viên’ theo cùng cách thức trên. Như thế, cả ba lớp ‘Khách hàng’, ‘Sinh viên’ và ‘Nhân viên’ đều chia sẻ những thuộc tính và những phương thức mà lớp ‘Người’ cung cấp.

=>Theo ngôn ngữ hướng đối tượng, lớp ‘Khách hàng’ được gọi là thừa kế lớp ‘Người’.

Định nghĩa
_Tính thừa kế cho phép một lớp chia sẻ các thuộc tính và các phương thức được định nghĩa trong một hoặc nhiều lớp khác._

+Có hai khái niệm quan trọng khác liên kết với tính thừa kế. Lớp ‘Khách hàng’ là lớp ‘Người’ cộng thêm cái khác. Như thế, lớp ‘Khách hàng’ có tất cả các thuộc tính và các phương thức được định nghĩa trong lớp ‘Người’ cộng với các thuộc tính và các hoạt động của riêng nó.

Trong ví dụ này, lớp ‘Khách hàng’ được gọi là ‘lớp con’ (subclass).

Định nghĩa: ._Lớp thừa hưởng từ một lớp khác được gọi là Subclass_ 

Trong ví dụ trên, lớp ‘Người’ được coi là ‘lớp trên’ (superclass).

Định nghĩa: _Một Superclass là một lớp mà các đặc tính của nó được một lớp khác thừa hưởn_

----------


## bebannha

*D - TÍNH ĐA THỪA KẾ* 

+Một lớp thừa kế chỉ từ một lớp, mỗi lớp con chỉ có một lớp cha. Trường hợp như thế gọi là ‘thừa kế đơn’ (single inheritance).

+Trong ‘đa thừa kế’, một lớp con thừa kế từ hai hay nhiều lớp cha.
Ví Dụ :ta xây dựng lớp VẼ MỘT HÌNH BẤT KÌ.
ta có một sơ đồ như sau:

Lớp đường thẳng + Lớp đường tròn +Lớp hình ảnh... = Lớp vẽ một hình bất kỳ  
+Trong sơ đò trên, chúng ta đã xây dụng một lớp ‘Vẽ một hình bất kỳ’, lớp này thừa hưởng ba lớp: ‘Đường thẳng’, ‘Đường tròn’, ‘Hình ảnh’. Như thế lớp ‘Vẽ một hình bất kỳ’ kết hợp chức năng của ba lớp trên thêm vào chức năng được định nghĩa bên trong nó.

+Lớp ‘Vẽ một hình bất kỳ’ là một ví dụ về tính đa thừa kế.

+Có thể sử dụng tính đa thừa kế để xây dựng một lớp mới, lớp này dẫn xuất chức năng của nó từ một vài lớp khác. Như thế, xét theo góc cạnh của người sử dụng lớp mới này, chỉ cần một lớp mà cung cấp tất cả các chức năng. Như vậy, họ không cần phải sử dụng nhiều đối tượng khác nhau.

+Sự thuận lợi quan trọng nhất của tính thừa kế là nó thúc đẩy việc tái sử dụng mã chương trình.

+Trong ví dụ trên, chúng ta có ba lớp ‘Đường thẳng’, ‘Đường tròn’ và ‘Hình ảnh’. Giả thiết rằng ba người khác nhau xây dựng ba lớp này riêng biệt. Bây giờ, người sử dụng cần xây dựng một lớp để vẽ đường thẳng, vẽ đường tròn cũng như hiển thị hình ảnh. Vì thế họ tìm kiếm xem có lớp nào đáp ứng một hoặc tất cả các yêu cầu đó. Nếu có những lớp cung cấp chức năng thỏa yêu cầu thì người sử dụng sẽ thừa kế những lớp đó để tạo một lớp mới.

+Giờ đây người sử dụng chỉ còn phải viết mã chương trình cho những đặc tính chưa có sau tiến trình thừa kế. Người sử dụng có thể sử dụng chính ba lớp trên. Tuy nhiên, sự thừa kế cung cấp một bó những chức năng hỗn độn trong một lớp.

*E - TÍNH ĐA HÌNH* 

+Trong một chương trình có cấu trúc (a structured program), một phương thức chỉ ứng dụng cho một đối tượng. Chẳng hạn xét toán tử ‘Cộng’. Toán tử này chỉ tính tổng của hai số nguyên. Khi truyền hai giá trị 2 và 3 thì nó hiển thị 5. Chúng ta không thể có một loại toán tử ‘Cộng’ để tính tổng của hai giá trị văn bản (text) ‘Hello!’ và ‘How are you?’ để có được chuỗi văn bản kết quả ‘Hello! How are you?’

+Trong hệ thống hướng đối tượng thì tình huống mô tả trên là khả thể.
Định nghĩa
_Tính đa hình cho phép một phương thức có các tác động khác nhau trên nhiều loại đối tượng khác nhau._ 

+Với tính đa hình, nếu cùng một phương thức ứng dụng cho các đối tượng thuộc các lớp khác nhau thì nó đưa đến những kết quả khác nhau. Bản chất của sự việc chính là phương thức này bao gồm cùng một số lượng các tham số.

_* Tính đa hình là một trong những đặc tính quan trọng nhất của hệ thống hướng đối tượng._

----------


## nguyen_chien

*NHỮNG THUẬN LỢI CỦA PHƯƠNG PHÁP LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG - OOP* 

+Lập trình hướng đối tượng đòi hỏi một sự chuyển hướng quan trọng trong tư duy của các lập trình viên. Phương pháp này làm cho tốc độ phát triển các chương trình mới nhanh hơn, và nếu được sử dụng cách đúng đắn phương pháp này sẽ cải tiến việc duy trì, việc tái sử dụng và việc đánh giá phần mềm.

+Phương pháp này tiến hành tiến trình phân tích, thiết kế và phát triển một vấn đề trong khuôn khổ những khái niệm và thuật ngữ thuộc lãnh vực ứng dụng. Vì thế, có một sự tương hợp cao nhất giữa việc phát triển ứng dụng và vấn đề thực tế.

+Chẳng hạn như trong trường hợp bán máy tính, ở mọi giai đoạn của việc phân tích, thiết kế và phát triển ứng dụng, luôn luôn có tiếng nói của khách hàng, của nhân viên bán hàng …

+Phương pháp này hỗ trợ việc chia sẻ bên trong một ứng dụng.

+Phương pháp này hỗ trợ việc tái sử dụng các đối tượng khi các ứng dụng mới được phát triển. Đây là sự thuận lợi rất quan trọng xét trong khía cạnh giảm thiểu chi phí có ý nghĩa lâu dài.

+Chẳng hạn như hành vi của khách hàng một khi được mô hình hóa trong một ứng dụng thì có thể được sử dụng lại cho những ứng dụng liên hệ có bao gồm mô hình khách hàng.

+Phương pháp này giảm thiểu các lỗi và những vấn đề liên quan đến việc bảo trì ứng dụng do khả năng tái sử dụng các đối tượng.

+Phương pháp này tăng tốc tiến trình thiết kế và phát triển, một lần nữa đây là kết quả của việc tái sử dụng các đối tượng.

----------

