Tớnh đúng gúi th hi n b i vi c thu c tớnh mụ t đ i tể ệ ở ệ ộ ả ố ượng và hành vi c a đ i tủ ố ượng được g n ch t v i nhau. Thu c tớnh th hi n tr ng thỏi đ i tắ ặ ớ ộ ể ệ ạ ố ượng, hành vi làm thay đ i tr ngổ ạ thỏi đ i tố ượng thụng qua vi c thay đ i giỏ tr cỏc thu c tớnh.ệ ổ ị ộ
Thu c tớnh độ ược cài đ t thụng qua mó l nh Java b ng cỏc bi n thành ph n trong l p.ặ ệ ằ ế ầ ớ Hành vi được cài đ t thụng qua mó l nh Java b i cỏc phặ ệ ở ương th c.ứ
Thụng tin và hành vi đ i tố ượng được b o v b ng cỏc c p đ truy c p: public, private.ả ệ ằ ấ ộ ậ C p đ public cho phộp s truy c p t bờn ngoài l p trong khi private ch cho phộp n i b l pấ ộ ự ậ ừ ớ ỉ ộ ộ ớ truy c p.ậ
Đ i tố ượng được sinh ra b i class - m t s mụ hỡnh húa m t l p đ i tở ộ ự ộ ớ ố ượng trong th cự t .ế
object = attributes (cỏc thu c tớnh) + operations(cỏc hành vi) + name (tờn đ nh danh)ộ ị Nh v y tớnh đúng gúi th hi n vi c chuy n mụ hỡnh đ i tư ậ ể ệ ệ ể ố ượng th c t thành cỏc l pự ế ớ trong Java.
II.2 M i quan h gi a cỏc classố ệ ữ
Cỏc class trong chương trỡnh cú th quan h v i nhau theo 1 trong 3 d ng:ể ệ ớ ạ
• Ph thu c (Dependence): Class A cú quan h ph thu c v i class B n u phụ ộ ệ ụ ộ ớ ế ương th c c a class A cú s d ng đ i tứ ủ ử ụ ố ượng thu c class B.ộ
• Bao g m (Aggregation): Class A cú quan h bao g m v i class B n u đ i tồ ệ ồ ớ ế ố ượng c a class A ch a đ i tủ ứ ố ượng c a class B.ủ
• Th a k (inheritance): Class B g i là th a k class A n u class B cú cỏc phừ ế ọ ừ ế ế ương th c và thu c tớnh c a class A, ngoài ra class B cũn đ nh nghĩa cỏc phứ ộ ủ ị ương th cứ và thu c tớnh khỏc c a riờng nú.ộ ủ Vớ d :ụ Trong h th ng bỏn hàng chỳng ta cú:ệ ố • class DanhMucMatHang • class TaiKhoan • class HoaDon • class HoaDonThanhToanNhanh
M i HoaDon bao g m 1 DanhMucMatHang: Quan h aggregation.ỗ ồ ệ
Khi m t HoaDon độ ượ ạc t o ra, nú c n truy c p đ n class TaiKhoan đ ki m tra tỡnhầ ậ ế ể ể tr ng th tớn d ng: Quan h dependence.ạ ẻ ụ ệ
M i HoaDonThanhToanNhanh th a k cỏc thu c tớnh và phỗ ừ ế ộ ương th c c a HoaDon vàứ ủ cú thờm cỏc thu c tớnh, phộ ương th c khỏc: Quan h inheritance.ứ ệ
II.3 M t s g i ý khi thi t k classộ ố ợ ế ế
Khai bỏo d li u private: Đi u này trỏnh vi c truy c p tựy ý t bờn ngoài l pữ ệ ề ệ ậ ừ ớ
Kh i t o cho d li u: Cỏc thu c tớnh nờn đở ạ ữ ệ ộ ược kh i t o b ng cỏc phở ạ ằ ương th cứ constructor khi m t đ i tộ ố ượng m i đớ ượ ạc t o ra.
Khụng s d ng quỏ nhi u ki u d li u c b n trong 1 l pử ụ ề ể ữ ệ ơ ả ớ
Khụng ph i thu c tớnh nào cũng c n mutator và accesor: M i thu c tớnh bao gi cũng cúả ộ ầ ỗ ộ ờ m t phộ ương th c thi t đ t giỏ tr cho nú g i là mutator (ti n t set) và m t phứ ế ặ ị ọ ề ố ộ ương th c l y raứ ấ giỏ tr c a nú g i là accesor (ti n t get).ị ủ ọ ề ố
Tỏch cỏc class ph c t pứ ạ
Đ t tờn phặ ương th c và thu c tớnh ph n ỏnh theo tớnh ch t và nghi p v c a nú. ứ ộ ả ấ ệ ụ ủ
IV. S d ng cỏc Class xõy d ng s n trong th vi nử ụ ự ẵ ư ệ
Java h tr cho l p trỡnh viờn m t th vi n phong phỳ cỏc l p đ i tỗ ợ ậ ộ ư ệ ớ ố ượng đó được xõy d ng và thi t k c n th n. L p trỡnh viờn ch c n bi t cỏch l y chỳng ra và s d ng chỳngự ế ế ẩ ậ ậ ỉ ầ ế ấ ử ụ theo k ch b n c a ng d ng.ị ả ủ ứ ụ
Cỏc gúi th vi n quan tr ng c a Java 2 bao g m:ư ệ ọ ủ ồ
(tham kh o chi ti t t i: http://java.sun.com/j2se/1.4.2/docs/api/overview-summary.html )ả ế ạ Cỏc gúi thường dựng trong Java 2 SE
java.applet H tr cỏc class c n thi t cho vi c t o ra cỏc Applet và giao ti p gi aỗ ợ ầ ế ệ ạ ế ữ Applet v i mụi trớ ường ng c nh c a nú.ữ ả ủ
java.awt Ch a cỏc l p dựng đ t o ra cỏc giao di n ngứ ớ ể ạ ệ ười dựng và cho cỏc thao tỏc v cỏc hỡnh đ h a và nh.ẽ ồ ọ ả
java.awt.color Cung c p cỏc l p cho khụng gian màu.ấ ớ
java.awt.event Cung c p cỏc giao di n và cỏc l p cho vi c gi i quy t cỏc v n đ v xấ ệ ớ ệ ả ế ấ ề ề ử lý cỏc s ki n trờn cỏc thành ph n giao di n AWT.ự ệ ầ ệ
java.awt.font H tr cỏc giao di n và l p liờn quan đ n font ch .ỗ ợ ệ ớ ế ữ java.awt.image Cung c p cỏc l p t o và hi u ch nh hỡnh nh.ấ ớ ạ ệ ỉ ả java.awt.print Cung c p cỏc l p và giao di n cho m c đớch in n.ấ ớ ệ ụ ấ
java.beans Ch a cỏc l p liờn quan t i vi c phỏt tri n cỏc thành ph n (beans) d a trờnứ ớ ớ ệ ể ầ ự ki n trỳc c a Java.ế ủ
java.io H tr cho cỏc thao tỏc vào / ra d li u trờn h th ng file.ỗ ợ ữ ệ ệ ố java.lang Cung c p cỏc l p n n t ng đ thi t k ngụn ng l p trỡnh Java.ấ ớ ề ả ể ế ế ữ ậ
java.math H tr cỏc l p đ thao tỏc và thu t toỏn v i cỏc s nguyờn l n BigIntegerỗ ợ ớ ể ậ ớ ố ớ và BigDecimal.
java.net Cung c p cỏc l p cho vi c cài đ t cỏc ng d ng m ng.ấ ớ ệ ặ ứ ụ ạ
java.rmi Cung c p cỏc gúi cho l p trỡnh RMI – Remote Method Invocation.ấ ậ
java.security Cung c p cỏc l p và giao di n cho vi c x lý cỏc v n đ an ninh và b oấ ớ ệ ệ ử ấ ề ả m t trong Java.ậ
java.sql Cung c p cỏc hàm API cho vi c truy c p vào d li u trong m t ngu n dấ ệ ậ ữ ệ ộ ồ ữ li u – thệ ường là cỏc CSDL quan h .ệ
java.text Cung c p cỏc l p và giao di n cho vi c qu n lý text, dates, numbers và cỏcấ ớ ệ ệ ả thụng đi p.ệ
java.util Ch a đ ng cỏc l p ti n ớch thu c nhi u lo i khỏc nhau nh sinh s ng uứ ự ớ ệ ộ ề ạ ư ố ẫ nhiờn, ngày thỏng,….
javax.crypto H tr cỏc l p và giao di n cho cỏc thao tỏc mó húa d li u.ỗ ợ ớ ệ ữ ệ javax.net Cung c p cỏc l p cho l p trỡnh m ng.ấ ớ ậ ạ
javax.sql Cung c p cỏc hàm API cho vi c truy c p d li u phớa server.ấ ệ ậ ữ ệ
javax.swing Cung c p m t t p cỏc thành ph n đấ ộ ậ ầ ược ch p nh n trờn h u h t cỏc hấ ậ ầ ế ệ th ng mỏy tớnh.ố
javax.swing.event H tr cho cỏc s ki n kớch ho t b i cỏc thành ph n c a Swing.ỗ ợ ự ệ ạ ở ầ ủ javax.swing.table Cung c p cỏc l p và giao di n làm vi c v i b ng.ấ ớ ệ ệ ớ ả
javax.swing.tree Cung c p cỏc l p và giao di n làm vi c v i cõy ấ ớ ệ ệ ớ javax.swing.JTree. javax.xml.parsers H tr cỏc l p cho vi c x lý cỏc tài li u XML.ỗ ợ ớ ệ ử ệ
Sau đõy là hướng d n vớ d v s d ng l p Date cú s n trong th vi n c a Java:ẫ ụ ề ử ụ ớ ẵ ư ệ ủ Khai bỏo bi n đ i tế ố ượng v i toỏn t newớ ử
Date myDate = new Date();
Date() là phương th c contructor c a class Date. M t đ i tứ ủ ộ ố ượng luụn đượ ạc t o ra từ m t constructor c a l p đú.ộ ủ ớ
Khai bỏo:
Date myDate;
Xỏc đ nh cho ta m t bi n đ i tị ộ ế ố ượng Date nh ng khụng cho ta m t đ i tư ộ ố ượng Date th c s vỡ trong th c t , myDate ch a đự ự ự ế ư ượ ấc c p phỏt vựng nh .ớ
Cõu l nh:ệ
myDate = new Date();
Xỏc đ nh r ng myDate là m t đ i tị ằ ộ ố ượng th c s thu c class Date, ta cú th ỏp d ngự ự ộ ể ụ cỏc phương th c và thu c tớnh c a class Date cho myDate.ứ ộ ủ
System.out.println(myDate.getMonth()); // In ra thỏng hi n t iệ ạ
V. Xõy d ng Class trong Javaự
Cài đ t cỏc class là cụng vi c thặ ệ ường xuyờn c a l p trỡnh viờn Java. Cỏc v n đ c aủ ậ ấ ề ủ cụng vi c thi t k m t l p b ng ngụn ng Java s đệ ế ế ộ ớ ằ ữ ẽ ược đ c p dề ậ ưới đõy.
V.1 C u trỳc c a classấ ủ
[<Cỏch truy xu t>] class <tờn l p> [extends <tờn l p cha>] [implements <tờn giaoấ ớ ớ di n>]{ệ <cỏc thành ph n c a l p>;ầ ủ ớ } Ta s l n lẽ ầ ượt xem xột t ng thành ph n:ừ ầ <Cỏch truy xu t>: ấ public: Cú th truy c p l p t cỏc l p khỏc.ể ậ ớ ừ ớ
abstract: L p tr u tớ ừ ượng, khụng được kh i t o đ i tở ạ ố ượng c a l p này. Cỏc l p tr uủ ớ ớ ừ tượng được thi t k ch cho m c đớch k th a.ế ế ỉ ụ ế ừ
final: Khụng cho phộp k th a.ế ừ
N u <cỏch truy xu t> khụng đế ấ ược xỏc đ nh, m c đ nh là public.ị ặ ị
<tờn l p>:ớ Tờn c a l p, n u <cỏch truy xu t > là public thỡ tờn l p ph i trựng v i tờnủ ớ ế ấ ớ ả ớ file ch a l p.ứ ớ
<tờn l p cha>:ớ Tờn c a l p cha mà l p hi n t i th a k .ủ ớ ớ ệ ạ ừ ế
<tờn giao di n>:ệ Tờn c a giao di n đủ ệ ược cài đ t t i l p. Đõy cú th là m t danh sỏchặ ạ ớ ể ộ cỏc giao di n phõn tỏch b i d u “,”.ệ ở ấ
<cỏc thành ph n c a l p>:ầ ủ ớ đõy là ph n thõn c a l p ch a cỏc đ nh nghĩa cho cỏcầ ủ ớ ứ ị thu c tớnh và cỏc phộ ương th c thành ph n. Ta s l n lứ ầ ẽ ầ ượt xem xột t i cỏc thành ph n này.ớ ầ
V.2 Cỏc thu c tớnh thành ph n:ộ ầ
Khai bỏo thu c tớnh chớnh là vi c khai bỏo cỏc bi n. Khi khai bỏo trong l p chỳngộ ệ ế ớ thường được xỏc đ nh ph m vi ho t đ ng là m t trong cỏc d ng:ị ạ ạ ộ ộ ạ
• public: Bi n cú th truy c p b t c l p nào.ế ể ậ ở ấ ứ ớ • private: Ch đỉ ược truy c p trong chớnh l p đú.ậ ớ
• protected: Ch đỉ ược truy c p trong l p đú và cỏc l p k th a.ậ ớ ớ ế ừ
M c đ nh thỡ ph m vi truy c p c a bi n là public, cỏc bi n thụng thặ ị ạ ậ ủ ế ế ường cú ph m viạ private.
Vớ d : ụ
public int Tuoi;
private String HoVaTen;
Cỏch truy c p bi n r t đ n gi n, ph thu c vào bi n thu c d ng nào trong 2 d ng sau:ậ ế ấ ơ ả ụ ộ ế ộ ạ ạ 1. Bi n cú ph m vi đ i tế ạ ố ượng: Đõy là bi n t n t i cựng v i s t n t i c a đ i tế ồ ạ ớ ự ồ ạ ủ ố ượng. Mu n truy c p vào bi n, trố ậ ế ước h t ph i kh i t o m t đ i tế ả ở ạ ộ ố ượng thu c l p.ộ ớ
SinhVien sv = new SinhVien(20,”Nguyen Van A”);
Truy c p vào bi n Tuoi nh sau: sv.Tuoi, vớ d gỏn Tuoi c a sinh viờn này b ng 21:ậ ế ư ụ ủ ằ Sv.Tuoi=21;
2. Bi n cú ph m vi l p (bi n tĩnh): Đõy là bi n cú ph m vi t n t i trong m i đ i tế ạ ớ ế ế ạ ồ ạ ọ ố ượng c a l p đủ ớ ượ ạc t o ra trong chương trỡnh đang ch y. Giỏ tr c a bi n đạ ị ủ ế ược dựng chung gi a cỏcữ đ i tố ượng.
Khi khai bỏo m t bi n cú ph m vi l p, ta c n thờm t khúa static nh vớ d sau:ộ ế ạ ớ ầ ừ ư ụ public static int MaSo;
Khi truy c p, ta cú th khụng c n kh i t o đ i tậ ể ầ ở ạ ố ượng mà tr c ti p thụng qua tờn l p:ự ế ớ SinhVien.MaSo = 10;
Cỏc bi n cú ph m vi l p r t ớt khi đế ạ ớ ấ ượ ử ục s d ng, trong khi cỏc h ng static l i r t hayằ ạ ấ được dựng. Lý do là trong th c t , cỏc l p đ i tự ế ớ ố ượng thường cú cỏc thu c tớnh chung, c đ nhộ ố ị cú m i đ i tở ọ ố ượng. H n n a, khi chỳng đó khụng ph thu c vào m t đ i tơ ữ ụ ộ ộ ố ượng c th nào thỡụ ể ta cũng khụng c n kh i t o m t đ i tầ ở ạ ộ ố ượng đ truy c p. Do đú, ta s cài đ t chỳng nh là cỏcể ậ ẽ ặ ư h ng static.ằ
Vớ d :ụ
public static final String MauDa = “Vang”; // M i sinh viờn đ u cú màu da là “Vang” ọ ề ho c khỏi bỏo h ng s PI:ặ ằ ố
public static final double PI = 3.14159265358979323846; Là h ng s c a l p Math. Khi truy c p ta ch c n g i: Math.PIằ ố ủ ớ ậ ỉ ầ ọ
Chỳ ý: Cỏc bi n r t ớt khi đế ấ ược khai bỏo là public vỡ cú th thay đ i giỏ tr c a nú bờnể ổ ị ủ ngoài l p nờn khú qu n lý. Trong khi đú cỏc h ng thớ ả ằ ường luụn được khai bỏo là public vỡ chỳng được dựng chung và khụng th b thay đ i do t khúa final (h ng).ể ị ổ ừ ằ
Bi n thisế
Bi n this là bi n đ i tế ế ố ượng c a l p t n t i ng m trong m i l p.ủ ớ ồ ạ ầ ỗ ớ
Thường dựng bi n this đ truy c p đ n cỏc thu c tớnh c a l p b khai bỏo trựng trongế ể ậ ế ộ ủ ớ ị ph m vi cỏc phạ ương th c c a l p.ứ ủ ớ
Vớ d :ụ
public class TestThis {
private int number = 10; public void PrintNumber()
{ int number =20; // khai bỏo trựng v i bi n c a l pớ ế ủ ớ System.out.println(number); //in bien number = 20
System.out.println(this.number);//in bien number =10 }
}
V.3 Cỏc phương th c thành ph nứ ầ
Phương th c thành ph n là s cài đ t cỏc hành vi c a đ i tứ ầ ự ặ ủ ố ượng. Cỳ phỏp khai bỏo m tộ phương th c trong l p nh sau:ứ ớ ư
[<Cỏch truy xu t> <cỏch c p nh t>] <Ki u giỏ tr tr v > <Tờn phấ ậ ậ ể ị ả ề ương th c>([<danhứ sỏch bi n hỡnh th c>]) [<m nh đ throws>]ế ứ ệ ề
{
<N i dung c a phộ ủ ương th c>;ứ }
<Cỏch truy xu t>:ấ
• private: phương th c này ch đứ ỉ ược truy xu t bờn trong l p ch a nú.ấ ớ ứ • public: cú th truy xu t t b t kỳ l p bờn ngoài nào.ể ấ ừ ấ ớ
• protected: ch cỏc l p là d n xu t c a l p ch a phỉ ớ ẫ ấ ủ ớ ứ ương này m i truy xu t đớ ấ ược nú.
• N u khụng khai rừ cỏch truy xu t, cỏc phế ấ ương th c s cú cỏch truy xu t m cứ ẽ ấ ặ đ nh là public.ị
Cỏc phương th c khai bỏo ch ng l p d n xu t ph i cú m c đ truy c p m nh h nứ ồ ở ớ ẫ ấ ả ứ ộ ậ ạ ơ ho c gi ng v i m c đ truy c p l p cha.ặ ố ớ ứ ộ ậ ở ớ
< Cỏch c p nh t>ậ ậ
• static: phương th c tỏc đ ng khụng ph thu c vào cỏc đ i tứ ộ ụ ộ ố ượng c th , nú cúụ ể th để ược g i mà khụng c n kh i t o đ i tọ ầ ở ạ ố ượng c a l p. ủ ớ
• abstract: phương th c đ n gi n nh t, khụng cài đ t gỡ trong l p khai bỏo nú,ứ ơ ả ấ ặ ở ớ t c là nú khụng cú ph n thõn. Phứ ầ ương th c này s đứ ẽ ược phỏt tri n trong cỏc l pể ớ là d n xu t c a l p ch a nú. L p cú ch a phẫ ấ ủ ớ ứ ớ ứ ương th c abstract cũng ph i đứ ả ược khai bỏo abstract.
• final: phương th c này đứ ược b o v khụng cho cỏc l p d n xu t khai bỏo và càiả ệ ớ ẫ ấ đ t l i.ặ ạ
• native: là phương th c đứ ược vi t b ng ngụn ng khỏc java.ế ằ ữ
• synchronyzed: đ m b o d li u khụng b sai l c khi cựng m t lỳc 2 phả ả ữ ệ ị ạ ộ ương th c truy c p cựng m t d li u.ứ ậ ộ ữ ệ
<Ki u giỏ tr tr v >:ể ị ả ề
integer, String, char, float, ...: là cỏc ki u d li u mà phể ữ ệ ương th c tr v .ứ ả ề void: phương th c khụng tr v giỏ tr .ứ ả ề ị
Khi xỏc đ nh ki u giỏ tr tr v , khi k t thỳc cỏc lu ng x lý trong phị ể ị ả ề ế ồ ử ương th c nh tứ ấ thi t ph i cú cõu l nh return đ tr v m t giỏ tr thu c ki u đú.ế ả ệ ể ả ề ộ ị ộ ể
public static int max(int num1, int num2)
{ if(num1>num2) return num1; else return num2; }
V <m nh đ throws> chỳng ta s xem xột k trong ph n x lý ngo i l .ề ệ ề ẽ ỹ ầ ử ạ ệ
V.4 G i và truy n tham s cho phọ ề ố ương th cứ
• Cỏc tham s ki u c b n đố ể ơ ả ược truy n theo ki u tham tr .ề ể ị
• Cỏc tham s cú ki u đ i tố ể ố ượng được truy n theo ki u tham chi u.ề ể ế Cỏc chỳ ý khi truy n tham s cho phề ố ương th c:ứ
• Cỏc phương th c khụng th làm thay đ i giỏ tr c a cỏc tham s cú ki u nguyờnứ ể ổ ị ủ ố ể th yủ
• Phương th c cú th làm thay đ i tr ng thỏi c a tham s ki u đ i tứ ể ổ ạ ủ ố ể ố ượng
• Phương th c khụng th làm cho tham s đ i tứ ể ố ố ượng tham chi u t i m t đ iế ớ ộ ố tượng m i. ớ
G i m t phọ ộ ương th c:ứ
Cú 2 cỏch g i phọ ương th c:ứ
N u phế ương th c tr v giỏ tr , vi c g i phứ ả ề ị ệ ọ ương th c thứ ường được x lý nh m t giỏử ư ộ tr .ị
Vớ d : int larger = max(3, 5);ụ
ho c ta cú th in giỏ tr tr v c a cu c g i phặ ể ị ả ề ủ ộ ọ ương th c: System.out.println(max(3,ứ 5));
N u phế ương th c tr v void, vi c g i phứ ả ề ệ ọ ương th c là cõu l nh.ứ ệ Vớ d phụ ương th c println() tr v void: System.out.println("Hello!");ứ ả ề
V.6 Cỏc hàm và phương th c đ c bi tứ ặ ệ