Tuesday, November 22, 2016

Khái niệm hướng đối tượng OOP trong Java

Khái niệm hướng đối tượng OOP trong Java


[Khái ni?m h??ng ??i t??ng OOP trong Java]Ch??ng này, chúng ta s? tìm hi?u các khái ni?m c? b?n v? H??ng ??i t??ng (OOP). L?p trình h??ng ??i t??ng bao g?m nhi?u khái ni?m nh? tính k? th?a, g?n k?t d? li?u (Data Binding), tính ?a hình, …
Simula ???c xem nh? là ngôn ng? l?p trình h??ng ??i t??ng ??u tiên. Là m?t h? l?p trình mà ? ?ó m?i th? ???c bi?u di?n d??i d?ng m?t ??i t??ng, và ???c bi?t ??n nh? là ngôn ng? h??ng ??i t??ng th?c s?. Tuy nhiên, Smalltalk m?i ???c xem nh? là ngôn ng? l?p trình h??ng ??i t??ng th?c s? ??u tiên.

L?p trình h??ng ??i t??ng

Object (??i t??ng) ngh?a là m?t th?c th? trong th? gi?i th?c, ch?ng h?n nh? bàn, qu? bóng, con bò, … L?p trình h??ng ??i t??ng là m?t ph??ng pháp ?? thi?t k? m?t ch??ng trình b?i s? d?ng các l?p và các ??i t??ng. Nó làm ??n gi?n hóa vi?c duy trì và phát tri?n ph?n m?m b?ng vi?c cung c?p m?t s? khái ni?m:
  • ??i t??ng: M?t th?c th? có tr?ng thái và hành vi. Ví d? nh? xe ??p, bàn, gh?, … Nó có th? mang tính v?t lý ho?c logic.
  • L?p: M?t t?p h?p các ??i t??ng. Nó là m?t th?c th? logic. (Class)
  • Tính k? th?a: Khi m?t ??i t??ng ??t ???c các thu?c tính và các hành vi c?a ??i t??ng cha, thì ?ó là tính k? th?a. ?i?u này làm t?ng tính tái s? d?ng cho code. Nó ???c s? d?ng ?? ??t ???c tính ?a hình t?i runtime.(Extends và implements)
  • Tính ?a hình: Khi m?t tác v? ???c th?c hi?n theo nhi?u cách khác nhau ???c g?i là tính ?a hình. Ví d?: nh? v? hình ch? nh?t ho?c hình tam giác, … Trong Java, chúng ta s? d?ng n?p ch?ng ph??ng th?c (method overloading) và ghi ?è ph??ng th?c (method overriding) ?? có tính ?a hình. M?t ví d? khác: con mèo kêu meooo, còn chú chó thì s?a goooo.
  • Tính tr?u t??ng: ?ó là ?n các chi ti?t n?i t?i và hi?n th? tính n?ng. Ví d?, v?i cu?c g?i ?i?n tho?i, chúng ta không bi?t ti?n trình x? lý n?i t?i là nh? th? nào. Trong Java, chúng là s? d?ng l?p abstractabstract interface ?? có tính tr?u t??ng.
  • Tính bao ?óng: ?ó là g?n k?t code và d? li?u cùng v?i nhau vào trong m?t ??n v? unit ??n. Ví d?: có th? b?n ?ã bi?t ??n viên thu?c con nh?ng (hay ??n gi?n h?n là gói b?t gi?t), các viên thu?c (h?t b?t gi?t) khác nhau ???c ?óng gói.
    M?t l?p Java là m?t ví d? v? tính bao ?óng. Java Bean là l?p bao ?óng th?c s?, vì t?t c? thành viên d? li?u là private.

L?i th? c?a OOP khi so v?i ngôn ng? l?p trình h??ng th? t?c (procedure-oriented)

OOP giúp vi?c thi?t k?, phát tri?n và b?o trì d? dàng h?n trong khi v?i l?p trình h??ng th? t?c thì vi?c qu?n lý code là khá khó kh?n n?u l??ng code t?ng lên. ?i?u này làm t?ng hi?u qu? có quá trình phát tri?n ph?n m?m.
OOP cung c?p Data Hiding (?n d? li?u) trong khi ?ó trong h??ng th? t?c m?t d? li?u toàn c?c có th? ???c truy c?p t? b?t c? ?âu.
OOP cung c?p cho b?n kh? n?ng ?? mô ph?ng các s? ki?n trong th? gi?i th?c m?t cách hi?u qu? h?n. Chúng ta có th? cung c?p gi?i pháp cho các v?n ?? trong th? gi?i th?c n?u chúng ta s? d?ng L?p trình h??ng ??i t??ng.

?i?m khác nhau gi?a OOP và OBP (Object-base programming)

L?p trình d?a trên ??i t??ng có t?t c? ??c ?i?m c?a OOP ngo?i tr? tính k? th?a. JavaScript và VBScript là các ví d? v? các ngôn ng? l?p trình d?a trên ??i t??ng.


Available link for download