CORE JAVA tài liệu dành cho các bạn mới học java. tài liệu gồm 10 chương, cung cấp đầy đủ kiến thức cơ bản java.
Chng 1 LP TRÌNH HNG I TNG Mc tiêu Kt thúc chng, hc viên có th: nh ngha Lp trình hng i tng (Object-oriented Programming). Nhn thc v Tru tng hóa D liu (Data Abstraction). nh ngha mt Lp (Class). nh ngha mt i tng (Object). Nhn thc đc s khác bit gia Lp và i tng. Nhn thc đc s cn thit đi vi Thit lp (Construction) và Hy (Destruction). nh ngha tính Bn vng (Persistence). Hiu bit v tính Tha k (Inheritance). nh ngha tính a hình (Polymorphism). Lit kê nhng thun li ca phng pháp hng i tng. 1.1 Gii thiu v Lp trình hng i tng (Object-oriented Programming) Lp trình hng i tng (OOP) là mt phng pháp thit k và phát trin phn mm. Nhng ngôn ng OOP không ch bao gm cú pháp và mt trình biên dch (compiler) mà còn có mt môi trng phát trin toàn din. Môi trng này bao gm mt th vin đc thit k tt, thun li cho vic s dng các đi tng. i vi mt ngôn ng lp trình h tr OOP thì vic trin khai k thut lp trình hng đi tng s d dàng hn. K thut lp trình hng đi tng ci tin vic phát trin các h thng phn mm. K thut y đ cao nhân t chc nng (fucntionality) và các mi quan h d liu. OOP là phng thc t duy mi đ gii quyt vn đ bng máy tính. đt kt qu, lp trình viên phi nn vn đ thành mt thc th quen thuc vi máy tính. Cách tip cn hng đi tng cung cp mt gii pháp toàn vn đ gii quyt vn đ. Hãy xem xét mt tình hung cn đc trin khai thành mt h thng trên máy vi tính: vic mua bán xe hi. Vn đ vi tính hóa vic mua bán xe hi bao gm nhng gì? Nhng yu t rõ ràng nht liên quan đn vic mua bán xe hi là: 1) Các kiu xe hi (model). 2) Nhân viên bán hàng. 3) Khách hàng. Nhng hot đng liên quan đn vic mua bán: 1) Nhân viên bán hàng đa khách hàng tham quan phòng trng bày. 2) Khách hàng chn la mt xe hi. 3) Khách hàng đt hóa đn. 4) Khách hàng tr tin. 5) Chic xe đc trao cho khách hàng. Mi vn đ đc chia ra thành nhiu yu t, đc gi là các i tng (Objects) hoc các Thc th (Entities). Chng hn nh ví d trên, khách hàng, xe hi và nhân viên bán hàng là nhng đi tng hoc thc th. Lp trình viên luôn luôn c gng to ra nhng kch bn (scenarios) tht quen thuc vi nhng tình hung đi sng thc. Bc th nht trong đng hng này là làm cho máy tính liên kt vi nhng đi tng th gii thc. Tuy nhiên, máy tính ch là mt c máy. Nó ch thc hin nhng công vic đc lp trình mà thôi. Vì th, trách nhim ca lp trình viên là cung cp cho máy tính nhng thông tin theo cách thc mà nó cng nhn thc đc cùng nhng thc th nh chúng ta nhn thc. ó chính là lãnh vc ca k thut hng đi tng. Chúng ta s dng k thut hng đi tng đ ánh x nhng thc th chúng ta gp phi trong đi sng thc thành nhng thc th tng t trong máy tính. Phát trin phn mm theo k thut lp trình hng đi tng có kh nng gim thiu s ln ln thng xy ra gia h thng và lãnh vc ng dng. Lp trình hng đi tng đ cp đn d liu và th tc x lý d liu theo quan đim là mt đi tng duy nht. Lp trình hng đi tng xem xét d liu nh là mt thc th hay là mt đn v đc lp, vi bn cht riêng và nhng đc tính ca thc th y. Bây gi chúng ta hãy kho sát nhng hn t ‘đi tng’ (object), ‘d liu’ (data) và ‘phng thc’ (method). Có nhiu loi đi tng khác nhau. Chúng ta có th xem các b phn khác nhau trong mt c quan là các đi tng. in hình là mt c quan có nhng b phn liên quan đn vic qun tr, đn vic kinh doanh, đn vic k toán, đn vic tip th … Mi b phn có nhân s riêng, các nhân s đc trao cho nhng trách nhim rõ ràng. Mi b phn cng có nhng d liu riêng chng hn nh thông tin cá nhân, bng kim kê, nhng th thc kinh doanh, hoc bt k d liu nào liên quan đn chc nng ca b phn đó. Rõ ràng là mt c quan đc chia thành nhiu b phn thì vic qun tr nhân s và nhng hot đng doanh nghip d dàng hn. Nhân s ca c quan điu khin và x lý d liu liên quan đn b phn ca mình. Chng hn nh b phn k toán chu trách nhim v lng bng đi vi c quan. Nu mt ngi đn v tip th cn nhng chi tit liên quan đn lng bng ca đn v mình, ngi y ch cn liên h vi b phn k toán. Mt ngi có thm quyn trong b phn k toán s cung cp thông tin cn bit, nu nh thông tin y có th chia s đc. Mt ngi không có thm quyn t mt b phn khác thì không th truy cp d liu, hoc không th thay đi làm h hng d liu. Ví d này minh chng các đi tng là hu dng trong vic phân cp và t chc d liu. Hình 1.1 Minh ha cu trúc ca mt c quan đin hình. Khái nim v đi tng có th đc m rng đn hu ht các lãnh vc đi sng, và hn na, đn th gii lp trình. Bt k ng dng nào đu có th đc đnh ngha theo hn t thc th hoc đi tng đ to ra tin trình x lý mô phng theo tin trình x lý mà con ngi ngh ra. Phng pháp gii quyt ‘top-down’ (t trên xung) cng còn đc gi là ‘lp trình hng cu trúc’ (structured programming). Nó xác đnh nhng chc nng chính ca mt chng trình và nhng chc nng này đc phân thành nhng đn v nh hn cho đn mc đ thp nht. Bng k thut này, các chng trình đc cu trúc theo h thng phân cp các module. Mi mt module có mt đu vào riêng và mt đu ra riêng. Trong mi module, s điu khin có chiu hng đi xung theo cu trúc ch không có chiu hng đi lên. Phng pháp OOP c gng qun lý vic tha k phc tp trong nhng vn đ đi thc. làm đc vic này, phng thc OOP che giu mt vài thông tin bên trong các đi tng. OOP tp trung trc ht trên d liu. Ri gn kt các phng thc thao tác trên d liu, vic này đc xem nh là phn tha k ca vic đnh ngha d liu. Bng 1.1 minh ha s khác bit gia hai phng pháp: Phng pháp Top-Down OOP Chúng ta s xây dng mt khách sn. Chúng ta s xây dng mt tòa nhà 10 tng vi nhng dãy phòng trung bình, sang trng, và mt phòng hp ln. Chúng ta s thit k các tng lu, các phòng và phòng hp. Chúng ta s xây dng mt khách sn vi nhng thành phn trên. Bng 1.1 Mt ví d v hai phng pháp gii quyt OOP và Structured Phòng Nhân s Phòng K toán Phòng Kinh doanh Hình 1.1 1.2 Tru tng hóa d liu (Data Abstraction) Khi mt lp trình viên phi phát trin mt chng trình ng dng thì không có ngha là ngi y lp tc vit mã cho ng dng y. Trc ht, ngi y phi nghiên cu ng dng và xác đnh nhng thành phn to nên ng dng. K tip, ngi y phi xác đnh nhng thông tin cn thit v mi thành phn. Hãy kho sát chng trình ng dng cho vic mua bán xe hi nói trên. Chng trình phi xut hóa đn cho nhng xe hi đã bán cho khách hàng. xut mt hóa đn, chúng ta cn nhng thông tin chi tit v khách hàng. Vy bc th nht là xác đnh nhng đc tính ca khách hàng. Mt vài đc tính gn kt vi khách hàng là: Tên. a ch. Tui. Chiu cao. Màu tóc. T danh sách k trên, chúng ta xác đnh nhng đc tính thit yu đi vi ng dng. Bi vì chúng ta đang đ cp đn nhng khách hàng mua xe, vì th nhng chi tit thit yu là: Tên. a ch. Còn nhng chi tit khác (chiu cao, màu tóc …) là không quan trng đi vi ng dng. Tuy nhiên, nu chúng ta phát trin mt ng dng h tr cho vic điu tra ti phm thì nhng thông tin chng hn nh màu tóc là thit yu. Bên cnh nhng chi tit v khách hàng, nhng thông tin sau cng cn thit: Kiu xe đc bán. Nhân viên nào bán xe. Bên cnh nhng đc tính ca khách hàng, xe hi và nhân viên bán hàng, chúng ta cng cn lit kê nhng hành đng đc thc hin. Công vic xut hóa đn đòi hi nhng hành đng sau: Nhp tên ca khách hàng. Nhp đa ch ca khách hàng. Nhp kiu xe. Nhp tên ca nhân viên bán xe. Xut hóa đn vi đnh dng đòi hi. Khung thông tin bên di cho thy nhng thuc tính và nhng hành đng liên quan đn mt hóa đn: Các thuc tính Tên ca khách hàng a ch ca khách hàng Kiu xe bán Nhân viên bán xe Các hành đng Nhp tên Nhp đa ch Nhp kiu xe Nhp tên nhân viên bán xe Xut hóa đn Tip theo, chúng ta mun ng dng tính toán tin hoa hng cho nhân viên bán hàng. Nhng thuc tính liên kt vi nhân viên bán hàng có tng quan vi ng dng này là: Tên. S lng xe bán đc. Tin hoa hng. Nhng hành đng đòi buc đi vi công vic này là: Nhp tên nhân viên bán xe. Nhp s lng xe bán đc. Tính tin hoa hng kim đc. Nhng thuc tính Tên S lng xe bán đc Tin hoa hng Nhng hành đng Nhp tên Nhp s lng xe bán đc nh ngha S tru tng hóa d liu là tin trình xác đnh và nhóm các thuc tính và các hành đng liên quan đn mt thc th đc thù, xét trong mi tng quan vi ng dng đang phát trin. Tính tin hoa hng Nh th, vic tru tng hóa d liu tra đt ra câu hi ‘âu là nhng thuc tính và nhng hành đng cn thit cho mt vn đ đt ra?’ 1.2.1 Nhng thun li ca vic Tru tng hóa Nhng thun li ca vic Tru tng hóa là: Tp trung vào vn đ. Xác đnh nhng đc tính thit yu và nhng hành đng đòi hi. Gim thiu nhng chi tit không cn thit. Vic tru tng hóa d liu là cn thit, bi vì không th mô phng tt c các hành đng và các thuc tính ca mt thc th. Vn đ mu cht là tp trung đn nhng hành vi ct yu và áp dng chúng trong ng dng. Chng hn nh khách hàng hoc nhân viên bán hàng cng có th thc hin nhng hành đng sau: Ngi y đi li. Ngi y nói chuyn. Tuy nhiên, nhng hành đng này không liên quan đn ng dng. Vic tru tng hóa d liu s loi b chúng. 1.3 Lp (Class) Trong ng dng mua bán xe, chúng ta đã xác đnh các thuc tính và các hành đng cn có đ xut mt hóa đn cho mt khách hàng. Các hành đng và các thuc tính này là chung cho mi khách hàng mua xe. Ví th, chúng có th đc nhóm li trong mt thc th đn nht gi là mt ‘lp’. Hãy kho sát lp có tên là ‘khách hàng’ di đây. Lp này bao gm mi thuc tính và hành đng đòi hi đi vi mt khách hàng. Lp Khách hàng Tên khách hàng a ch khách hàng Kiu xe đc bán Nhân viên bán xe Nhp tên Nhp đa ch Nhp kiu xe đc bán Nhp tên nhân viên bán xe Xut hóa đn Mt lp là mt mô hình khái nim v mt thc th. Nó mang tính cách tng quát ch không mang tính cách đc thù. Khi đnh ngha mt lp, chúng ta mun phát biu rng mt lp s phi có mt tp hp các thuc tính và các hành đng riêng. Chng hn nh mt đnh ngha lp di đây: Lp Con ngi Tên Chiu cao Màu tóc Vit Nói Lp này đnh ngha thc th ‘Con ngi’. Mi thc th thuc kiu ‘Con ngi’ s đu có nhng đc tính và nhng hành đng nh đã đc đnh ngha. Mt khi mt lp đã đc đnh ngha, chúng ta bit đc nhng thuc tính và nhng hành đng ca nhng thc th ‘trông ging’ nh lp này. Vì th, t bn cht mt lp là mt nguyên mu (prototype). Mt ví d khác v mt lp liên quan đn vic mua bán xe hi nh sau: Lp Nhân viên bán hàng Tên S lng xe bán đc Tin hoa hng Nhp tên Nhp s lng xe bán đc Tính tin hoa hng Lp trên đnh ngha các thuc tính và các hành đng đc trng cho mi nhân viên bán xe hi. nh ngha Mt lp đnh ngha mt thc th theo nhng thuc tính và nhng hành đng chung. Hoc Nhng thuc tính và nhng hành đng chung ca mt thc th đc nhóm li đ to nên mt đn v duy nht gi là mt lp. Hoc Mt lp là mt s xác đnh cp chng loi ca các thc th ging nhau. 1.4 i tng (Object) Mt lp là mt nguyên mu phác ha nhng thuc tính và nhng hành đng kh th ca mt thc th. có th s dng thc th mà lp đnh ngha, chúng ta phi to mt ‘đi tng’ t lp đó. Lp là mt khái nim, còn đi tng là mt mu thc đc đnh ngha bi lp. Hãy kho sát lp ‘Khách hàng’ đc đnh ngha trên. Lp này đnh ngha mi thuc tính và hành đng gn lin vi mt khách hàng. Khi mt ngi mua mt xe hi mt ca hàng, ca hàng y có mt khách hàng mi. Vào thi đim y, mt đi tng ging nh lp ‘Khách hàng’ đc to ra. i tng này s phi có nhng giá tr thc đi vi các thuc tính ‘Tên’, ‘a ch’, ‘Kiu xe’ … Chng hn nh mt khách hàng có tên là ‘Mark’, sng ‘London’ đã mua mt xe kiu ‘Honda Civic’ t nhân viên bán hàng tên là ‘Tom’. Nh th, ‘Mark’ là mt đi tng ca kiu ‘Khách hàng’. Mt đi tng là mt thc th c th (thông thng bn có th s chm, xem thy và cm nhn). K t lúc mt đi tng hin hu, nhng thuc tính ca nó là nhng giá tr xác đnh, và nhng hành đng đc đnh ngha cho đi tng này đc thc thi. Trong mi mt đi tng, các khía cnh sau đây đc xác đnh rõ: Tình trng (state). Thái đ (behavior). Chân tính (identity). nh ngha Mt đi tng là mt trng hp ca mt lp. Hình 1.2 trình bày hai đi tng đi thc. Mi đi tng có nhng đc tính riêng mô t đi tng y là gì, hoc hành đng ra sao. Chng hn nh nhng thuc tính ca mt đi tng ‘Con ngi’ s là: Tên. Tui. Trng lng. Nhng thuc tính ca mt đi tng ‘Xe hi’ s là: Màu sc. Kiu xe. Nm. Mt đi tng cng thc hin mt s hành đng. Mt xe hi có kh nng thc hin nhng hành đng sau: Khi đng. Ngng. Chuyn đng. chuyn đi gia các đi tng lp trình và các đi tng đi thc, cn phi kt hp các thuc tính và các hành đng ca mt đi tng. Con ngi Tên: Jack Tui: 28 Trng lng: 65 kgs Hành đng: i Nói Suy ngh Xe hi Kiu: Ferrari Màu: Nm: 1995 Hành đng: Khi đng Ngng Chuyn đng Hình 1.2: Mt đi tng Con ngi và mt đi tng Xe hi 1.4.1 Thuc tính Chúng ta xác đnh các thuc tính và các hành đng đ đnh ngha mt lp. Mt khi các thuc tính đc gán cho các giá tr, chúng mô t mt đi tng. Hãy kho sát lp sau: Các thuc tính ca lp Khách hàng Tên ca khách hàng a ch ca khách hàng Kiu xe đc bán Nhân viên đã bán xe Khi thuc tính ‘Tên’ đc gán cho giá tr ‘Mark’ thì nó mô t mt đi tng xác đnh đc to t lp ‘Khách hàng’. Nh th, các thuc tính nm gi các giá tr d liu trong mt đi tng, chúng đnh ngha mt đi tng đc thù. Bi vì mt lp là mt nguyên mu cho nên các thuc tính trong mt lp không th nm gi các giá tr. Mt thuc tính có th đc gán mt giá tr ch sau khi mt đi tng da trên lp y đc to ra. có th lu gi nhng chi tit ca mt khách hàng, mt trng hp (đi tng) ca lp ‘Khách hàng’ phi đc to ra. Các thuc tính ca mt đi tng hin hu ch khi đi tng y đc to ra. Mi đi tng ca mt lp phi có cùng các thuc tính. Kho sát ví d sau: nh ngha Mt thuc tính là mt đc tính mô t mt đi tng. Các thuc tính ca lp Con ngi Tên Chiu cao Màu tóc i tng đc to t lp Con ngi Mark 6 ft. 1 in. Blac k = = = [...]... Hình 1. 5: L p ‘Hình th ’ và các l p con Hình trên cho th y r ng ‘V ’ là m t ph ‘Hình th ’ Tuy nhiên, ph ng th c V êlip ng th c c chia s gi a các l p con c a l p c ng d ng cho hình h p s khác v i hình Tính a hình h tr tính óng gói Xét trên m c ng i s d ng, h ch c n m t ph ng th c ‘V ’ c a l p ‘Hình th ’ Còn cách th c mà ph ng th c ‘V ’ c th c thi cho các tr ng h p khác nhau thì h không c n bi t 1. 11 Nh... các thu c tính và các ph M t l p là m t nguyên m u c a m t i t ng Nó xác nh các hành thu c tính c n thi t cho m t nhóm các i t ng c thù nh ngh a t t ng th c ng kh thi và các 1. 6 Thi t l p (Construction) và H y (Destruction) 1. 6 .1 Thi t l p M t l p ch cung c p nh ng nh ngh a v các thu c tính và các ph Các thu c tính và các ph ng th c có th c truy c p ch khi m t m tl p c t o ra ng th c kh thi i t ng d... ‘Con ng i’ và ‘Khác con ng i’ th a k Nh th , các l p ‘Con ng i’ và ‘Khác con ng i’ là các l p con c a l p trên ‘H u nh ’ Các Côn trùng ng v t H u nh Con ng i Khác con ng Bò sát L ng c i Hình 1. 4 Tính th a k 1. 9 .1 Tính a Th a k Trong t t c các ví d trên, m t l p th a k ch t m t l p Ngay c trong ví d th a k v các lo i ph ng ti n di chuy n, 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’... hàm trong m t ch ng trình M cl ng? Phòng Kinh doanh Phòng K toán $2000 Hình 1. 3 Các it ng g i thông i p cho nhau Trong hình 1. 3, ‘Kinh doanh’ và ‘K toán’ là hai b ph n khác nhau trong m t công ty Hai b ph n này c coi là hai i t ng khác nhau Thông tin c truy n i và c ón nh n gi a các b ph n t o nên các thông i p gi a các i t ng 1. 4.5 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... 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 1. 10 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á... 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 1. 9 Tính th a k Hãy kh o sát các l p sau: L p Sinh viên Tên a ch i m môn 1 i m môn 2 Nh p tên Nh p a ch Nh p i m Tính t ng i m L p Nhân viên Tên a ch L ng Ch c v Nh p tên Nh p a ch Nh p ch c v Tính l ng L p Khách hàng Tên a ch Ki u xe ã... 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 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 ng t 1. 6.2 H y Khi m t it 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 t i m t khi nó không còn c n thi t cho m t it ng t n nh ngh a Hàm H y là m t... 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 iv im t it ng 1. 7 Tính B n v ng (Persistence) Hãy kh o sát tr ng h p bán xe h i Nh ng chi ti t c a khách hàng c l u tr ngay khi xe h i ã c phân ph i.Vi c duy trì d li u v n c n thi t cho n khi d li u c ch nh s a ho... 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 1. 8 Tính óng gói d li u Ti n trình tr u t ng hóa d li u h tr cho vi c xác ph ng th c thi t y u Thông th ng, các c òi h i b i ng nh nh ng thu c tính và nh ng i t ng s d ng nh ng thu c tính và nh ng ph i... 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 ó là m t giá tr ó là m t giá tr c c x lý theo m t trong nh ng cách sau: c tính toán - Ch ng h n, 15 ngày k t ngày t hàng nh – Xe h i 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