ươ

Ch

ng 2

Ơ NH NG KHÁI NI M C

Ậ B N C A L P TRÌNH HĐT

M c tiêu

ố ượ

• Phân bi

ệ ố ượ t đ i t

ớ ng, l p đ i t

ng

ố ượ

• Mô hình hóa l p đ i t

ng

ừ ượ

ế ừ

• Mô t

ả ượ  đ

c tính tr u t

ng hóa, k  th a, đóng gói, đa hình

ớ • So sánh l p và c u trúc

• Phân bi

t private, public

ộ ớ

ữ ậ

• T o ra m t l p b ng ngôn ng  l p trình Java

N i dung

ơ ả

2.1. Các khái ni m c  b n

2.2. So sánh l p (classes) và c u trúc (structures)

ế ớ

2.3. Cách vi

t l p trong Java

3

ơ ả 2.1. Các khái ni m c  b n

ố ượ

• Đ i t

ng

ố ượ

• L p đ i t

ng

ừ ượ

ố ượ

ữ ệ

• Tr u t

ng hoá đ i t

ứ ng theo d  li u, ch c năng (Abstraction)

• Khái ni m đóng gói (Encapsulation)

ế ừ • Khái ni m k  th a (Inheritance)

• Khái ni m đa hình (Polymorphism)

4

ơ ả ệ 2.1. Các khái ni m c  b n ố ượ ng

Đ i t

ồ ạ

ượ

là m t th c th  đang t n t

ệ ố i trong h  th ng và đ

c xác đ nh

ng

ố ượ • Đ i t ằ

ế ố

b ng ba y u t

ộ :

o Đ nh danh c a đ i t

ố ượ ủ ị ng

ố ượ ủ ạ ộ o Tr ng thái/thu c tính c a đ i t ng

o Hành vi c a đ i t

• Ví d :ụ

ố ượ ủ ng

o Đ i t

ố ượ ệ ắ ng xe A có hi u “Ford”, màu tr ng, giá 50.000$

o Đ i t

5

ố ượ ổ ở ng nhân viên X tên là “Vinh”, 25 tu i, làm phòng hành chính

ơ ả 2.1. Các khái ni m c  b n

ệ ố ượ

L p đ i t

ng

ừ ượ

ỉ ộ ậ

ng, dùng đ  ch  m t t p h p các

ộ →

ớ • L p đ i t ố ượ đ i t

ố ượ ng  ạ ng cùng lo i

là m t khái ni m tr u t  cùng mô t

, cùng hành vi

• Ví d :ụ

o

o

ộ ớ ố ượ ơ ỉ ấ ả ử ể “Xe h i” là m t l p đ i t ng dùng đ  ch  t ơ ủ t c  các xe h i c a c a hàng

6

ộ ớ ố ượ ể ỉ “Nhân viên” là m t l p đ i t ng dùng đ  ch  các nhân viên trong văn phòng

ơ ả 2.1. Các khái ni m c  b n

ệ ố ượ

L p đ i t

ng

ố ượ

• L p và đ i t

ng

o L pớ  là s  tr u t

ự ừ ượ ố ượ ủ ng hoá c a các đ i t ng

ộ ệ i

ạ ở ạ ủ ộ ừ ượ ỉ ồ ng,  ch   t n  t   d ng  ặ ả  các đ c tính chung c a m t

là  m t  khái  ni m  tr u  t ể ệ khái ni m đ  mô t ố ố ượ ng s  đ i t

o Đ i t

ố ượ ủ ớ ộ ể ệ là m t th  hi n c a l p ng

ồ ạ ự ự ệ i  trong  h

ể ụ ể ộ là  m t th c  th  c   th ,  có th c, t n t th ngố

ơ ả 2.1. Các khái ni m c  b n

ệ ố ượ

L p đ i t

ng

ươ

ộ • L p có thu c tính và ph

ng th c:

o Thu c tính c a l p t

ủ ớ ươ ộ ố ượ ứ ủ ớ ộ ng  ng v i thu c tính c a các đ i t ng

o Ph

ươ ủ ớ ươ ứ ố ượ ứ ủ ớ ng th c c a l p t ng  ng v i các hành vi c a đ i t ng

ố ượ

ộ ớ

• T t c  các đ i t

ng thu c v  cùng m t l p có cùng các thu c tính và các

ấ ả ươ

ph

ứ ng th c

ư

ườ

ế ế ộ ớ

• L u ý trong tr

ợ ng h p thi

t k  m t l p

→ ế ề ố ượ ữ ữ ệ ầ ả ầ o C n bi t nh ng thông tin gì v  đ i t ộ ớ ng thu c l p này D  li u c n mô t ộ  (thu c tính)

o C n x  lý gì trên đ i t

8

→ ố ượ ử ầ ế ươ ứ ng Hành vi giao ti p (ph ng th c)

ơ ả ệ 2.1. Các khái ni m c  b n ứ ữ ệ TTH ĐT theo d  li u, ch c năng

ố ượ

ố ượ

• Mô hình hóa đ i t

ng d a vào thu c tính, hành vi c a các đ i t

ng

ừ ượ

ố ượ

ữ ệ

• Quá trình tr u t

ng hóa đ i t

ng theo d  li u, ch c năng:

o Mô t

ả ấ ả ố ượ ủ ể ộ t c  các thu c tính, hành vi có th  có c a đ i t t ng

o Gom các đ i t

ố ượ ươ ự ạ ỏ ộ ệ ộ ng có các thu c tính, hành vi t ng t thành nhóm, lo i b  các thu c tính, hành vi riêng bi t

o Xây d ng l p cho t ng nhóm

ự ừ ớ

ỗ ộ • Khai báo các thu c tính cho m i nhóm

• Xây d ng ph

9

ự ươ ứ ủ ỗ ng th c cho hành vi chung c a m i nhóm

ệ ữ ệ

ơ ả 2.1. Các khái ni m c  b n ứ TTH ĐT theo d  li u, ch c năng

• Ví d  1: Bài toán qu n lí c a hàng bán ô tô. M i ô tô có m t trong c a hàng

ụ ộ ố ượ là m t đ i t

ng

o Tr u t

ừ ượ ữ ệ ng hóa theo d  li u

• Các xe đ u có:

ề ấ ộ ệ ắ ơ nhãn hi u, màu s c, giá bán, công su t đ ng c

• Ngoài ra, m t s  ít xe có th  có thêm các thu c tính:

ộ ố ể ộ ạ ố có dàn nghe nh c, màn hình xem ti vi, khóa ch ng

ắ ắ ạ ộ ố ố tr m, l p kính ch ng n ng, ch ng đ n…

o Tr u t

ừ ượ ứ ng hóa theo ch c năng

ở ộ ừ ạ ể kh i đ ng máy, ch y, d ng l ạ ắ i, t t máy ề • Các xe đ u có th :

ộ ố ệ ộ ệ ấ ự ậ ư gi u đèn pha, t b t đèn pha, t ự ể ự • Ngoài ra, m t s  ít xe có th  th c hi n m t s  hành đ ng cá bi t nh :

ộ ộ ộ ố ệ đ ng phát tín hi u báo đ ng

ệ ữ ệ

ơ ả 2.1. Các khái ni m c  b n ứ TTH ĐT theo d  li u, ch c năng

ả • Ví d  1: Bài toán qu n lí c a hàng bán ô tô

Tên lớp

ớ o L p Xe

Xe

ộ • Thu c tính:

o Nhãn hi u xe

Thuộc tính

o Màu xe

o Giá xe

Nhãn hiệu Màu sắc Giá Công suất

o Công su t  xe

• Ph

ươ ứ ng th c:

ở ộ o Kh i đ ng xe

Hành vi

ạ o Ch y xe

ừ o D ng xe

Khởi động Chạy Dừng Tắt

ắ o T t máy

ệ ữ ệ

ơ ả 2.1. Các khái ni m c  b n ứ TTH ĐT theo d  li u, ch c năng

ế ế ớ

ể ự

• Ví d  2: Hãy thi

t k  l p Phân s  (Rational) đ  th c hi n các ch c năng

sau:

PhanSo

o T i gi n phân s  (reduce)

ả ố ố

o Ngh ch đ o phân s  (reciprocal)

Tu Mau

ả ố ị

o C ng 2 phân s  (add)

ố ộ

o Tr  2 phân s  (subtract)

ừ ố

o Nhân 2 phân s  (multiply)

o Chia 2 phân s  (divide)

Toi gian Nghich dao Cong Tru Nhan Chia

ệ ữ ệ

ơ ả 2.1. Các khái ni m c  b n ứ TTH ĐT theo d  li u, ch c năng

ườ

• Ví d  3: S  giao thông c n theo dõi vi c đăng ký xe c a ng

ự i dân. D a vào

ở ị

ủ ư

ướ

ế

ệ thông tin tr  giá xe và dung tích xylanh c a xe, s  giao thông cũng tính m c  ả thu  ph i đóng tr

c b  khi mua xe nh  sau:

o D i 100cc, 1% tr  giá xe.

Xe

ướ ị

o T  100 đ n 200cc, 3% tr  giá xe.

ừ ế ị

o Trên 200cc, 5% tr  giá xe.

ế ế

ặ ớ

ươ

Hãy thi

ớ t k  và cài đ t l p xe v i các thu c tính và ph

So Chu Hieu ứ ng th c phù h p.  Gia Dung tich

TinhThue

ơ ả 2.1. Các khái ni m c  b n Tính đóng gói

Nhân viên

ươ

• Xét bài toán tính l

ng nhân viên

o Ti n l

ề ươ ệ ố ươ ươ ỉ ệ ầ ng = H  s  l ng*L ơ ả ng c  b n*T  l ph n trăm

o Trong đó, t  l

ỉ ệ ầ ỗ ph n trăm là khác nhau cho m i phòng ban

• Phòng k  ho ch là 105%

• Phòng hành chính là 100%

Tên  Ngày sinh i tính Gi Phòng ban ệ ố ươ H  s  l

ng

ế ạ

• Phòng nhân s  là 110%

Tính l

ngươ

ố ượ

ề • S  gi ng nhau v  cách s  d ng ph

ươ ng th c cho các đ i t ứ

ng c a cùng  ớ ng th c có các cách tính toán khác nhau v i  ọ

ữ ệ

ự ố ử ụ ộ ớ m t l p, m c dù bên trong ph ượ các đ i t

ặ ố ươ ng khác nhau, đ

ươ c g i là tính

đóng gói d  li u

ơ ả 2.1. Các khái ni m c  b n Tính đóng gói

ữ ệ ấ Ẩ • Che d u/ n d  li u  (private/protected)

o

o

Ẩ ữ ệ ươ n d  li u bên trong ph ứ ng th c

• Bên ngoài ch  t

Ẩ ữ ệ ố ượ n d  li u bên trong đ i t ng

ộ ố

ượ ươ

ỉ ươ ng tác đ ng qua m t s  ph

ớ c v i  ứ ng th c

ố ượ đ i t (public)

15

ơ ả 2.1. Các khái ni m c  b n Tính đóng gói

ủ ậ

ư ậ

ữ ệ

ướ

ố ượ

• Nh  v y, tính đóng gói d  li u c a l p trình h

ng đ i t

ng:

o Cho phép che d u cài đ t chi ti

ấ ử ụ ỉ ầ ứ ế  bên trong c a ph ng th c. Khi s  d ng ch  c n g i các ph ứ ng th c theo t

ố ộ ươ ườ ứ ặ ươ ợ ặ ặ ấ m t cách th ng nh t, m c dù các ph ươ ủ ể ượ ng th c có th  đ ọ c cài đ t khác nhau cho các tr ng h p khác nhau

ử ụ ự ự ố ế ượ t đ c th c s  bên trong đ i

ữ ệ ỉ ấ ố ượ ố ượ ượ ữ ậ ấ o Cho phép che d u d  li u bên trong  ữ ng có nh ng gì, ch  th y đ ủ c a đ i t c nh ng gì đ i t ượ t ng. Khi s  d ng, không bi ng cho phép truy nh p vào

ạ ế ố ứ ả i mã

ươ ch ủ ng trình. Khi ph i thay đ i công th c tính toán c a m t  ả ươ ươ ứ ổ ọ ổ ng th c, mà không ph i thay đ i các ch ộ ủ ng trình g i

ươ ứ ệ ử ạ o Cho phép h n ch  t i đa vi c s a l ổ ỉ ầ ứ ng th c, ch  c n thay đ i mã bên trong c a ph ổ ị ng th c b  thay đ i ươ ph ế đ n ph

ệ ế ừ

ơ ả 2.1. Các khái ni m c  b n Tính k  th a

ườ

ộ ườ

ng h p bài toán qu n lí nhân s  và sinh viên c a m t tr

ng

ụ • Ví d  xét tr ạ ọ đ i h c

Nhân viên

Sinh viên

Tên Ngày sinh Giới tính Lương

Tên Ngày sinh Giới tính Lớp

Nhập/xem tên Nhập/xem ngày sinh Nhập/xem giới tính Nhập/xem lương

Nhập/xem tên Nhập/xem ngày sinh Nhập/xem giới tính Nhập/xem lớp

ệ ế ừ

ơ ả 2.1. Các khái ni m c  b n Tính k  th a

ề ả • V n đ  n y sinh:

o Ph i vi

ế ầ ươ ứ ậ ậ ậ ớ ng th c: nh p/xem tên, nh p/xem ngày sinh, nh p/xem gi i

ả ế t mã trùng nhau đ n hai l n cho các ph ố tính  t n công s c ứ

o N u khi có s  thay đ i v  ki u d  li u, ch ng h n ki u ngày sinh đ

ổ ề ể ữ ệ ể ạ ẳ ượ ả ử ạ ệ ố ả c qu n lí trong h  th ng, ph i s a l i

ầ ế ươ ch ự ng trình hai l n

ế

ố ầ ế ừ ạ ớ

ử ụ ộ ớ

ượ ạ

ậ ế ừ : nhóm các ph n gi ng nhau c a các  c t o

i l p đ

i quy t: s  d ng  • Gi k  thu t k  th a ớ ớ l p thành m t l p m i, sau đó cho các l p ban đ u k  th a l ra này

ế ớ

ỗ ớ

• Nh  v y, m i l p th a k  (l p d n xu t, l p con) đ u có các thu c tính và

ấ ớ ơ ở ớ

ẫ ế ớ

ư ậ ươ

ủ ớ

ị ừ

ề ng th c c a l p b  th a k  (l p c  s , l p cha)

ph

ệ ế ừ

ơ ả 2.1. Các khái ni m c  b n Tính k  th a

• Ví d :ụ

Người

Lớp cơ sở/ Lớp cha

Tên Ngày sinh Giới tính

Nhập/xem tên Nhập/xem ngày sinh Nhập/xem giới tính

Nhân viên

Sinh viên

Lớp dẫn xuất/Lớp con

Lương

Lớp

Nhập/xem lương

Nhập/xem lớp

ệ ế ừ

ơ ả 2.1. Các khái ni m c  b n Tính k  th a

ế ừ

ướ

ố ượ

• K  th a trong l p trình h

ng đ i t

ng:

ẫ ộ ớ ươ ơ ở ươ ứ ự ủ ớ ng th c c a l p c  s  t ng t ư ử ụ  nh  s  d ng

ấ ươ ộ ể ử ụ o Cho phép l p d n xu t có th  s  d ng các thu c tính và ph ủ ứ ng th c c a mình các thu c tính và ph

o Cho phép ch  c n cài đ t ph

ỉ ầ ặ ươ ứ ở ộ ớ ể ử ụ ơ ở ẫ ng th c m t l p c  s , có th  s  d ng đ ượ ở ấ ả  t ấ ớ t c  các l p d n xu t c

o Cho phép ch  ph i thay đ i m t l n khi c n ph i thay đ i d  li u c a các l p

ổ ữ ệ ộ ầ ủ ả ả ầ ổ ớ ỉ

ự ủ ặ ồ ươ ặ o Cho phép tránh s  cài đ t trùng l p mã ngu n c a ch ng trình

ơ ả ệ 2.1. Các khái ni m c  b n ế ừ Tính k  th a

ạ ế ừ

• Các lo i k  th a:

o Th a k  đ n (single inheritance): M t l p ch  có th  có t

ế ơ ộ ớ ừ ể ỉ ố ộ ớ i đa m t l p cha

o Th a k  b i ­ đa th a k  (multi­inheritance): M t l p có th  có nhi u l p cha

ề ớ ế ộ ộ ớ ừ ừ ể ế

ơ ả 2.1. Các khái ni m c  b n Tính đa hình

Người

• Ví d :ụ

Tên Ngày sinh Giới tính

Khi gọi các phương thức trùng tên, dựa vào đối tượng đang gọi mà chương trình sẽ thực hiện phương thức của lớp tương ứng, và do đó, sẽ cho các kết quả khác nhau

Nhập/xem tên Nhập/xem ngày sinh Nhập/xem giới tính Hiện thông tin

Nhân viên

Sinh viên

Lương

Lớp

Nhập/xem lương Hiện thông tin

Nhập/xem lớp Hiện thông tin

ơ ả 2.1. Các khái ni m c  b n Tính đa hình

ố ượ

• Tính đa hình giúp cho các đ i t

ư

ộ ủ

ệ ề

ượ

ự ng thu c các ki u khác nhau th c hi n  c truy n

ể t) c a chúng trong khi đ

nh ng hành vi đ c tr ng (và khác bi ệ cùng m t thông đi p

ể ệ

ướ

• Tính đa hình th  hi n d

i nhi u hình th c:

o K t n i tr  ­ Late Binding

ế ố ễ

o N p ch ng – Overloading (trong cùng 1 l p)

ạ ớ ồ

o Ghi ch ng – Overriding (trong k  th a l p cha và con)

23

ế ừ ớ ồ

ơ ả 2.1. Các khái ni m c  b n Tính đa hình

ế ố ễ

• K t n i tr  ­ Late Binding

o Là kh  năng cho phép ng ọ

ườ ậ ọ ướ ươ ố ượ ứ ủ ố ượ ư ị i l p trình g i tr ộ c m t ph ng th c c a đ i t ng, tuy ch a xác đ nh đ i t ng

ả ươ ứ ố có ph ng th c mu n g i hay không

ệ ươ ị ượ ố ượ ọ ươ ứ ươ ố ượ ủ ứ ự o Khi th c hi n, ch ớ ng trình m i xác đ nh đ c đ i t ng và g i ph ng th c t ng  ng c a đ i t ng đó

o K t n i tr  giúp ch

ươ ượ ố ượ ể ể ầ ơ ỉ ươ ầ ng trình đ c uy n chuy n h n, ch  yêu c u đ i t ấ ng cung c p đúng ph ứ ng th c c n

24

ế ố ễ tế thi

ơ ả 2.1. Các khái ni m c  b n Tính đa hình

• N p ch ng – Overloading (trong cùng 1 l p)

o Là kh  năng cho phép m t l p có nhi u thu c tính, ph

ề ộ ươ ứ ư ố ớ ng th c cùng tên nh ng v i các tham s  khác nhau

ư ề ố ượ ả ề ạ v  lo i cũng nh  v  s  l ộ ớ ng

o Khi đ

ượ ự ề ọ ố ươ ứ ươ ẽ ượ ứ ự ệ c g i, d a vào tham s  truy n vào, ph ng th c t ng  ng s  đ c th c hi n

ế ừ ớ

• Ghi ch ng – Overriding (trong k  th a l p cha và con)

o Hình th c này áp d ng cho l p con đ i v i l p cha

ố ớ ớ ứ ụ ớ

o L p con đ

ớ ữ ệ ư ứ ể ố ố ươ ủ ớ ứ ng th c cùng tên, cùng s  tham s  có ki u d  li u nh  ph ng th c c a l p

ươ ữ ướ ặ ặ ớ ớ ớ ượ c phép có m t ph ữ cha ho c nh ng l p tr ộ ớ c đó n a (l p phát sinh ra l p cha…) v i cài đ t khác đi

ươ ứ ươ ẽ ượ ứ ượ ạ ế ng th c riêng, ph ủ ớ ng th c c a l p cha s  đ ọ c g i, ng i n u c l

25

ự ươ ượ ế ớ o Lúc th c thi, n u l p con không có ph ọ ứ c g i ủ ớ ng th c c a l p con đ có, ph

2.2. So sánh classes và structures

Structures (cấu trúc)

Classes (lớp)

Khái niệm

Mô tả dữ liệu theo hướng lập trình cấu trúc

Mô tả dữ liệu và hành vi của đối tượng theo hướng OOP

• Nhóm các dữ liệu có liên quan thành một lớp, có phương thức để thực hiện hành của đối tượng

Mục đích và chức năng

• Nhóm các dữ liệu có liên quan thành một đơn vị thống nhất • Có thể gắn hàm đi kèm trong cấu trúc để xử lý dữ liệu

• Làm cho chương trình dễ đọc theo hướng thuật toán • Không hạn chế truy cập

Ưu và Khuyết

• Làm cho chương trình gọn gàng, xử lý đồng bộ và thống nhất • Hạn chế truy cập • Đóng gói • Thừa kế

ế ớ

2.3. Cách vi

t l p trong Java

ị • Khai báo đ nh nghĩa l p

ể ệ

• Th  hi n tính đóng gói

ươ

ủ ớ

• Ph

ng th c c a l p

ố ượ

ủ ớ

• T o đ i t

ng c a l p

this

ừ • T  khóa

ươ

• Ph

ng th c ch ng (Overloading)

27

2.3. Cách vi

ế ớ t l p trong Java  ớ ị Khai báo đ nh nghĩa l p

• UML (Unified Model Language) là m t ngôn ng  dùng cho phân tích thi

ế ế t k

ướ

ố ượ

h

ng đ i t

ng (OOAD – Object Oriented Analysis and Design)

ướ

ố ượ

• UML th  hi n ph

ng pháp phân tích h

ng đ i t

ng nên không l

ộ  thu c

ể ệ ươ ữ ậ ngôn ng  l p trình

ể ể

• Dùng UML đ  bi u di n 1 l p trong Java

ễ ở ứ ể o Bi u di n m c phân tích (analysis)

28

ễ ở ứ ế ế ế ể o Bi u di n m c thi t k  chi ti t (design)

2.3. Cách vi

ế ớ t l p trong Java  ớ ị Khai báo đ nh nghĩa l p

ể ể

• Ví d  UML đ  bi u di n 1 l p trong Java

Tên l pớ

ộ Thu c tính

ươ

Ph

ứ ng th c

Bỏ qua các chi tiết không cần thiết

29

Phải đầy đủ & chi tiết các thành phần

2.3. Cách vi

ế ớ t l p trong Java ớ ị Khai báo đ nh nghĩa l p

ữ ệ

ồ • Trong l p bao g m d  li u c a đ i t

ng

ủ ươ ọ

ứ methods) tác đ ng ộ ứ

ủ ớ

ươ

ố ượ (fields/properties) và các ph ng th c ( ữ ệ ầ lên thành ph n d  li u đó g i là các ph

ng th c c a l p

ượ

• Các đ i t

c t o ra b i các l p nên đ

ng đ

ọ c g i là

ố ượ ể ệ

ượ ạ các th  hi n c a l p (

ớ ủ ớ class instance)

Xe - S  xeố - Ch  xeủ ệ - Hi u xe - Giá xe - Dung tích

ượ

• Trong Java, các l p đ

c gom nhóm l

i thành

package

+ Đóng thuế

30

2.3. Cách vi

ế ớ t l p trong Java ớ ị Khai báo đ nh nghĩa l p

// phương thức của lớp

class { ; // thuộc tính của lớp ; method_1 method_2 }

• class: là t

ủ  khóa c a Java

ủ ớ

• ClassName: là tên c a l p

ủ ớ

ế

ể field_1, field_2: là các bi n bi u di n các thu c tính c a l p

31

ươ

ể ệ

• method_1, method_2: là các ph

ng th c/hàm th  hi n các hành vi tác đ ng

ủ ớ

ữ ệ

lên các thành ph n d  li u c a l p

2.3. Cách vi

ế ớ t l p trong Java  ớ ị Khai báo đ nh nghĩa l p

• Các quy n truy xu t trong Java: public, private, protected, default

ủ ượ ẽ ượ ậ ở ấ ứ ầ o Thành ph n c a class đ c khai báo public s  đ c truy c p b t c  đâu

ủ ượ ỉ ượ ấ ậ ớ ầ o Thành ph n c a class đ c khai báo private ch  đ c truy c p bên trong class, bên ngoài l p không truy xu t

đ cượ

ượ ẽ ượ ở ấ ứ ậ ộ ầ o Thành ph n c a class đ protected s  đ c truy c p b i b t c  class nào bên trong cùng m t gói

c khai báo  ủ ể ủ ặ ở ớ (package) ho c l p con c a nó (có th  khác gói)

ầ ặ ị ẽ ượ ở ấ ứ ậ m c đ nh c khai báo (không có visibility modifier) s  đ c truy c p b i b t c  class nào bên

32

ượ o Thành ph n đ ộ trong cùng m t gói (package)

t l p trong Java

2.3. Cách vi ể ệ

ế ớ Th  hi n tính đóng gói

ữ ệ

ượ

• D  li u nên đ

c đ nh nghĩa v i b  t

ớ ổ ừ private

o D  li u private ch  có th  đ

ữ ệ ể ượ ỉ ậ ở ươ ứ ủ c truy c p b i các ph ng th c c a class

o Có th  cung c p các ph

ể ấ ươ ứ ể ậ ng th c public đ  truy c p

ể ượ

• Các method có th  đ

c đ nh nghĩa

public ho c ặ private

o public method: cung c p d ch v  cho l p khác dùng class này (

ụ ấ ớ ị service methods)

o private method: không th  đ

ể ượ ọ ừ ể c g i t

ụ ệ ươ ươ ủ ứ ọ ấ ủ  bên ngoài class. M c đích duy nh t c a private method là đ  giúp cho  ộ ng  ng th c khác trong cùng m t class làm công vi c c a nó, các ph ng th c này còn g i là ph

33

ữ ứ ươ nh ng ph th c h  tr  ( ứ ỗ ợ support methods)

t l p trong Java

2.3. Cách vi ể ệ

ế ớ Th  hi n tính đóng gói

ụ ớ • Ví d : L p Xe

Rectangle

class Xe

-

{

length - width

+ area

Xe - S  xeố - Ch  xeủ ệ - Hi u xe - Giá xe - Dung tích

private String soXe; private String chuXe; private String hieuXe; private double giaXe; private int dungTich;

+ Đóng thuế

//…

}

34

ế ớ

ươ

2.3. Cách vi Ph

t l p trong Java  ứ ủ ớ ng th c c a l p

ươ

• Có hai lo i ph

ng th c:

o Ph

ươ ở ạ ứ ng th c kh i t o (constructor)

o Các ph

ươ ứ ng th c khác

• Ph

ươ ể ệ ứ ng th c th  hi n (instance method)

• Ph

35

ươ ứ ng th c tĩnh (static methods)

ế ớ

ươ

2.3. Cách vi Ph

t l p trong Java  ứ ủ ớ ng th c c a l p

ươ

ở ạ

• Ph

ng th c kh i t o (constructor)

o Là ph

ươ ượ ố ượ ạ ọ ứ ng th c đ c g i khi t o đ i t ng (object)

o M c đích: Dùng đ  gán giá tr  ban đ u cho các thu c tính c a l p

ủ ớ ụ ể ầ ộ ị

o Ph i th a 2 đi u ki n:

• cùng tên class

ệ ề ả ỏ

• không giá tr  tr  v , cũng không ph i void

ị ả ề ả

o M t l p có th  có nhi u constructor

ộ ớ ể ề

o N u không vi

ế ế ặ ạ ị ị t constructor, trình biên d ch t o constructor m c đ nh

• constructor m c đ nh không có tham s  và t

36

ặ ố ị ự ị ặ ị gán các giá tr  m c đ nh

ế ớ

ươ

2.3. Cách vi Ph

t l p trong Java  ứ ủ ớ ng th c c a l p

ươ

ể ệ

• Ph

ng th c th  hi n (instance method)

o Dùng đ :ể

• Đ nh nghĩa hành vi c a đ i t

ố ượ ủ ị ng

• Cung c p cách th c truy xu t t

ấ ớ ứ ấ ủ ộ ố i các thu c tính riêng c a đ i

ngượ t

o Đ c truy xu t thông qua m t đ i t

37

ộ ố ượ ượ ấ ụ ể ng c  th

ế ớ

ươ

2.3. Cách vi Ph

t l p trong Java  ứ ủ ớ ng th c c a l p

ươ

• Ph

ng th c tĩnh (static methods)

o Là nh ng ph

ữ ươ ượ ầ ạ ố ượ ọ ứ ng th c đ ớ c g i thông qua tên l p (không c n t o đ i t ng)

o Khai báo ph

ươ ứ ừ static ng th c thêm t khóa

o Ch  có th  truy xu t 1 cách tr c ti p t

ế ớ ự ể ấ ỉ ế ươ ủ ớ ứ i các bi n tĩnh (static) và các ph ng th c tĩnh khác c a l p

o Không th  truy xu t đ n các ph

38

ấ ế ể ươ ứ ế ng th c và bi n không tĩnh (non­static)

ế ớ

ố ượ

2.3. Cách vi ạ T o đ i t

t l p trong Java  ủ ớ ng c a l p

ố ượ

• T o đ i t

ng: dùng toán t

ử new, cú pháp:

// gọi tới contructor mặc định ClassName objectName = new ClassName(); // hoặc gọi tới constructor có tham số ClassName objectName1 = new ClassName( ts1, ts2, … );

o Khi t o object b ng toán t

ằ ạ ớ ượ ấ ộ ươ ố ượ ủ ứ ỗ c c p phát cho m i thu c tính và ph ng th c c a đ i t ng ử new, vùng nh  đ

ươ

• Truy xu t các thu c tính và ph

ủ ớ ng th c c a l p: dùng

toán t

ch m

ấ (dot

ấ operator)

39

ế ớ

ố ượ

2.3. Cách vi ạ T o đ i t

t l p trong Java  ủ ớ ng c a l p

• N u  m t class không có constructor, trình biên d ch t o ra constructor m c

ế ị

đ nh không có tham s

ố ể

• N u class có m t ho c nhi u constructor, b t k  tham s  ki u gì, trình biên

ề ị

ấ ể ữ

ế ị

ặ d ch s  không thêm m c đ nh constructor n a

40

2.3. Cách vi

t l p trong Java

ế ớ Ví dụ

• L p không có constructor m c đ nh

HinhChuNhat n; // khai báo đối tượng

// khởi tạo, cấp vùng nhớ bằng toán tử new

n = new HinhChuNhat( 3, 6 );

41

2.3. Cách vi

t l p trong Java

ế ớ Ví dụ

• L p có đ y đ  constructor

HinhTron n1, n2; // khai báo đối tượng

// khởi tạo, cấp vùng nhớ bằng toán tử new

// khởi tạo dùng constructor 1 tham số

n1 = new HinhTron(3);

// khởi tạo dùng constructor không tham số

n2 = new HinhTron();

42

2.3. Cách vi

t l p trong Java

ế ớ Ví dụ

43

t l p trong Java

2.3. Cách vi ừ

this

ế ớ T  khóa

ượ

ể ọ

ừ • T  khóa

this đ

c dùng đ  g i constructor:

o Đ  tránh l p l

ặ ạ ể ể ọ ộ ớ ộ ộ i mã, m t constructor có th  g i m t constructor khác trong cùng m t l p

o N u dùng t

ế ể ọ ừ ế ệ ầ ả khóa this đ  g i constructor, thì t khóa this ph i là dòng l nh đ u tiên trong constructor đó (n u

ị ừ ẽ ị ỗ không, s  b  l i biên d ch)

ượ

ư ế

ố ượ

ệ ạ

ừ • T  khóa

this đ

c dùng nh  bi n đ i di n cho đ i t

ng hi n t

i:

ố ượ ủ ể ấ ầ ộ o Dùng đ  truy xu t m t thành ph n c a đ i t ng this.tênThànhPh nầ

44

ờ ừ ố ộ ể ệ ớ ộ ố ớ o Khi tham s  trùng v i tên thu c tính thì nh  t khóa this đ  phân bi t rõ thu c tính v i tham s

t l p trong Java

2.3. Cách vi ừ

this

ế ớ T  khóa

• Dùng this trong contructor

45

t l p trong Java

2.3. Cách vi ừ

ế ớ T  khóa this

ế

• Dùng this nh  ư ạ ệ bi n đ i di n  ố ượ ng cho đ i t

46

t l p trong Java

2.3. Cách vi ừ

ế ớ T  khóa this

ế

• Dùng this nh  ư ạ ệ bi n đ i di n  ố ượ ng cho đ i t

Truy cập thành phần không qua từ khóa this

Truy cập thành phần qua từ khóa this

47

ươ

t l p trong Java  ồ

ế ớ ứ

2.3. Cách vi Ph

ng th c ch ng

ươ

• Ph

ng th c ch ng là:

o Các ph

ươ ộ ớ ứ ng th c trong cùng m t l p có cùng tên

ố ượ ả ể ố ố o Danh sách các tham s  ph i khác nhau (khác s  l ố ặ ng tham s  ho c ki u tham s )

ố ự

ế ị

ươ

• Trình biên d ch so sánh danh sách thông s  th c đ  quy t đ nh g i ph

ng

th c nào

ế

• Các constructor cũng có th  đ

t ch ng

ồ  cho ta nhi u cách khác

ộ ố ượ

ể ạ

nhau đ  t o ra m t đ i t

ể ượ c vi ớ ng m i

48

ươ

t l p trong Java  ồ

ế ớ ứ

2.3. Cách vi Ph

ng th c ch ng

Version 1

Version 2

float tryMe (int x, float y) { return x*y; }

float tryMe (int x) { return x + .375; }

Invocation

Version 1

Version 2

result = tryMe (25, 4.32)

int tryMe (int k) { return k*k; }

float tryMe (int x) { return x + .375; }

Not Overloading method

49

50