Tớnh đúng gúi trong Java

Một phần của tài liệu Bài giảng về Java (Trang 48)

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ứ

Một phần của tài liệu Bài giảng về Java (Trang 48)

Tải bản đầy đủ (PDF)

(151 trang)