Вы находитесь на странице: 1из 50

Chng 3: Hng i tng trong Java

GVLT: Trn Anh Dng

Ni dung
Cc khi nim c bn v lp, i tng. Lp v i tng trong java. Tnh ng gi. Tnh k tha. Tnh a hnh. Interface.

Cc khi nim c bn
i tng (object): Trong th gii thc, khi nim i tng c th xem nh mt thc th: ngi, vt, bng d liu, i tng gip hiu r th gii thc C s cho vic ci t trn my tnh Mi i tng c nh danh, thuc tnh, hnh vi V d: i tng sinh vin MSSV: TH0701001; Tn sinh vin: Nguyn Vn A

Cc khi nim c bn
H thng cc i tng: L 1 tp hp cc i tng Mi i tng m trch 1 cng vic Cc i tng c th trao i thng tin vi nhau Cc i tng c th x l song song, hay phn tn.

Cc khi nim c bn
Lp (class): L khun mu (template) sinh ra i tng. V d: lp cc i tng Sinhvien Sinh vin Nguyn Vn A, m s TH0701001 1 i tng thuc lp Sinhvien Sinh vin Nguyn Vn B, m s TH0701002 l 1 i tng thuc lp Sinhvien i tng (object) ca lp: Mt i tng c th thuc 1 lp, 1 th hin c th ca 1 lp .

Lp v i tng trong java (1)


Khai bo lp class <ClassName> { <danh sch thuc tnh> <cc khi to> <danh sch cc phng thc> }

Lp v i tng trong java (2)


Thuc tnh: Cc c im mang gi tr ca i tng, l vng d liu c khai bo bn trong lp class <ClassName>{ <Tin t> <kiu d liu> <tn thuc tnh>; } Kim sot truy cp i vi thuc tnh public protected private
7

Lp v i tng trong java (3)


Phng thc: Chc nng x l, hnh vi ca cc i tng. class <ClassName>{
<Tin t> <kiu tr v> <tn phng thc>(<cc i s>)

{ } }
8

Lp v i tng trong java (4)


Phm vi truy xut public protected default private final: Khng c khai bo chng cc lp dn xut (khng c ghi lp con) abstract: Khng c phn source code, s c ci t trong cc lp dn xut.

Lp v i tng trong java (5)


static: Phng thc lp dng chung cho tt c cc th hin ca lp, c th c thc hin c khi khng c i tng ca lp. native: y l t kho bo cho java bit phng thc ny c vit bng mt ngn ng lp trnh no khng phi l java ( thng c vit bng C/C++) synchoronized: Dng ngn nhng tc ng ca cc i tng khc ln i tng ang xt trong khi ang ng b ha. Dng trong lp trnh multithreads.

10

Lp v i tng trong java (6)


V d 1: class Sinhvien { //Danh sch thuc tnh String maSv, tenSv, dcLienlac; int tuoi; //Danh sch cc khi to Sinhvien(){ } Sinhvien () { } //Danh sch cc phng thc public void capnhatSV () {} public void xemThongTinSV() {} }
11

Lp v i tng trong java (7)


//To i tng mi thuc lp Sinhvien Sinhvien sv = new Sinhvien(); //Gn gi tr cho thuc tnh ca i tng sv.maSv = TH0601001 ; sv.tenSv = Nguyen Van A; sv.tuoi = 20; sv.dcLienlac = KP6, Linh Trung, Thu Duc; //Gi thc hin phng thc sv.xemThongTinSV();
12

Lp v i tng trong java (8)


V d 2: class Sinhvien { //Danh sch thuc tnh private String maSv; private String tenSv, dcLienlac; private int tuoi; } Sinhvien sv = new Sinhvien(); sv.maSv = TH0601001; sv.tenSv = Nguyen Van A;

?
13

Phng thc khi to (1)


Khi to (constructor): L mt loi phng thc c bit ca lp, dng khi to mt i tng. Dng khi to gi tr cho cc thuc tnh ca i tng. Cng tn vi tn lp. Khng c gi tr tr v. C th c tham s hoc khng.

14

Phng thc khi to (2)


V d 1 class Sinhvien { // Khng c nh ngha constructor no } // Dng constructor mc nh Sinhvien sv = new Sinhvien();
15

Phng thc khi to (3)


V d 2: class Sinhvien { //khng c constructor mc nh Sinhvien(<cc i s>) {} } Sinhvien sv = new Sinhvien(); } Sinhvien sv = new Sinhvien();
16

class Sinhvien { Li ??? //khai bo constructor mc nh Sinhvien(){ } Sinhvien(<cc i s>) {}

Khi v danh
Trong java ta c th t mt khi lnh khng thuc mt phng thc no. Khi khi lnh ny c gi l khi v danh, khi v danh ny c java gi thc thi khi mt i tng c to ra, cc khi v danh c gi trc c hm to. Khi v danh phi t trong cp { } //bt u khi v danh { System.out.println ( "khoi khoi dau thu 1 "); }//kt thc khi v danh
17

Khi khi u tnh


Khi khi u tnh L mt khi lnh bn ngoi tt c cc phng thc, k c hm to Trc khi lnh ny ta t t kho static, t kho ny bo cho java bit y l khi khi u tnh, khi ny ch c gi 1 ln khi i tng u tin ca lp ny c to ra Khi khi u tnh ny cng c java gi t ng trc bt c hm to no, thng thng ta s dng khi khi u tnh khi u cc thuc tnh tnh.
18

Np chng phng thc


Phng thc khai bo chng (overloading method) V d: class Sinhvien{ public void xemThongTinSV() {//} public void xemThongTinSV(String psMaSv){ // } }
19

Tham chiu this


Tham chiu this: Mt bin n tn ti trong tt c cc lp, this c s dng trong khi chy v tham kho n bn thn lp cha n. V d: class Sinhvien { String maSv, tenSv, dcLienlac; int public void xemThongTinSV() { System.out.println(this.maSv); System.out.println(this.tenSv); } }
20

tuoi;

Tnh ng gi (1)
ng gi: Nhm nhng g c lin quan vi nhau vo thnh mt v c th s dng mt tn gi. V d: Cc phng thc ng gi cc cu lnh. i tng ng gi d liu v cc hnh vi/phng thc lin quan. i tng = D liu + Hnh vi/Phng thc

21

Tnh ng gi (2)
ng gi dng che du mt phn hoc tt c thng tin, chi tit ci t bn trong vi bn ngoi. V d: khai bo cc lp thuc cng gi trong java package <tn gi>; // khai bo trc khi khai bo lp class <tn lp> { }

22

Creating packages in Java (1)


package mypackage; public class Palindrome{ import mypackage.*; public boolean test(String str){ class Palintest char givenstring[ ]; { char reverse[ ] = new char[str.length()]; public static void args) boolean flag main(String[] = true; { int count = 0,ctr = 0; givenstring = str.toCharArray(); Palindrome objPalindrome = new Palindrome(); for (count = str.length()-1;count >= 0;count--){ System.out.println(objPalindrome.test(args[0])); reverse[ctr] = givenstring[count]; } ctr++; } } for (count = 0;count < str.length();count++){ Output if (reverse[count] != givenstring[count]) flag = false; } return flag; } }
23

Tnh k tha (1)


Tha hng cc thuc tnh v phng thc c B sung, chi tit ha cho ph hp vi mc ch s dng mi Thuc tnh: Thm mi Phng thc: Thm mi hay hiu chnh i tng hnh hc Hnh 2d Hnh 3d

Trn

E-lp

Vung Ch nht

Cu

Lp phng

Tr
24

Tnh k tha (2)


Lp dn xut/lp con (SubClass) Lp c s/lp cha (SuperClass) Lp con c th k tha tt c hay mt phn cc thnh phn d liu (thuc tnh), phng thc ca lp cha (public, protected, default) Dng t kha extends. V d: class nguoi { } class sinhvien extends nguoi { }
25

Tnh k tha (3)


Phng thc nh ngha li (Overriding Method) c nh ngha trong lp con C tn, kiu tr v & cc i s ging vi phng thc ca lp cha C kiu, phm vi truy cp ln hn phng thc trong lp cha private default protected public

26

Tnh k tha (4)


V d:
abstract class Hinhhoc { public float tinhdientich() { return 0; } } class HinhVuong extends Hinhhoc { private int canh; public float tinhdientich() { return canh*canh; } Ch c th public do phng thc } tinhdientich() ca lp cha l public
27

Tnh k tha (5)


class HinhChuNhat extends HinhVuong { private int cd; private int cr; public float tinhdientich() { return cd*cr; } } Ch c th public do phng thc tinhdientich() ca lp cha l public
28

Tnh a hnh (1)


V d: class A_Object { // void method_1() { // } }

Tnh a hnh: vic mt i tng c th c nhiu kiu hin hnh khc nhau c gi l tnh a hnh.

class B_Object extends A_Object { // void method_1() { // } }

29

Tnh a hnh (2)


class A{ public void method(){ System.out.println(method of A); } } class B extends A { public void method(){ System.out.println(method of B); } } class C extends A { public void method(){ System.out.println(method of C); } } // Cu lnh trong main A a = new A(); a.method(); a = new B(); a.method(); C c = new C(); a = c; a.method(); // Kt qu method of method of method of mn hnh A B C
30

Nhc li t kha static (1)


T kho static c dng vi phng thc v bin. Bin static? Phng thc static?

31

Lp ni (Lp trong)
Lp ni: L lp c khai bo bn trong 1 lp khc. V d: public class A { // int <field_1> class B { // int <field_2> public B(int par_1){ field_2 = par_1 + field_1; } } }
32

Lp final
Lp final: Lp khng cho php cc lp khc dn xut t n hay lp final khng th c lp con. nh ngha: t kha final public final class A { }

33

Lp tru tng (1)


Lp tru tng ch c dng lm lp cha cho cc lp khc, n khng c cc th hin (instance). Lp tru tng nh ngha cc thuc tnh chung cho cc lp con ca n. V d c th thit k lp Hnh trn, Hnh vung... k tha t lp tru tng Hnh. Lp Hnh c thuc tnh l tn hnh, cc phng thc tnh din tch, chu vi... Lp tru tng (abstract) thng c t nht mt phng thc tru tng, l phng thc khng c ci t. public abstract void draw();
34

Lp tru tng (2)


Khai bo lp tru tng public abstract class ClassName {} Cc lp con ca mt lp cha tru tng phi ci t tt c cc phng thc tru tng. Nu khng n cng s tr thnh lp tru tng. Khng th to cc i tng ca mt lp tru tng nhng c th khai bo bin thuc kiu lp tru tng tham chiu n cc i tng thuc lp con ca n.

35

Lp tru tng (3)


public abstract class Shape{ static final double PI = 3.14159; public abstract double getArea(); public abstract double getVolume(); } class Circle extends Shape{ double radius; public double getArea() { return PI*radius*radius; } public double getVolume() { return 0; } } class Cube extends Shape{ double a, b, c; public double getArea() { return 2*(a*b+b*c+c*a); } public double getVolume() { return a*b*c; } }
36

Tham chiu super


L mt bin tham chiu n i tng c kiu l lp cha ca lp hin ti. Tham chiu super c dng truy cp n cc thnh vin ca lp cha b che bi lp con v constructor ca lp cha.

37

Giao tip interface (1)


Interface c java a ra vi hai mc ch chnh: to ra lp c s thun o (khng c bt k phng thc no c ci t) Thc hin hnh vi tng t nh k tha bi. to ra mt interface, ta dng t kho interface trin khai mt interface dng t kha implements. Nu mt lp trin khai nhiu interface?

38

Giao tip interface (2)


Mt s ch : Cc trng trong interface l static v final Tt c cc thnh phn ca mt giao din t ng l public do vy ta khng cn phi thm b t ny vo. Ta khng c php thm cc b t khc nh private, protected trc cc khai bo trong interface. Mt interface c th tha k mt interface khc. Mt lp c th ci t mt hay nhiu interface nhng ch c th tha k (extends) t mt lp.

39

Giao tip interface (3)


V d: nh ngha mt interface Shape trong tp tin shape.java public interface Shape{
//Tnh din tch public abstract double area(); //Tnh th tch public abstract double volume(); //Tr v tn ca shape public abstract String getName();

40

Giao tip interface (4)


//Lp Point ci t/hin thc interface tn shape. //nh ngha lp Point trong tp tin Point.java public class Point extends Object implements Shape { protected int x, y; //Ta x, y ca 1 im //Constructor khng tham s. public Point() { setPoint( 0, 0 ); } //Constructor c tham s. public Point(int xCoordinate, int yCoordinate) { setPoint( xCoordinate, yCoordinate ); }
41

Giao tip interface (5)


//Gn ta x, y cho 1 im public void setPoint( int xCoordinate, int yCoordinate ) { x = xCoordinate; y = yCoordinate; } //Ly ta x ca 1 im public int getX() { return x; } //Ly ta y ca 1 im public int getY() { return y; }
42

Giao tip interface (6)


//Th hin ta ca 1 im di dng chui public String toString() { return "[" + x + ", " + y + "]"; } //Tnh din tch public double area() { return 0.0; } //Tnh th tch public double volume() { return 0.0; }
43

Giao tip interface (7)


//Tr v tn ca i tng shape public String getName() { return "Point"; } } //End class Point

44

Giao tip interface (8)


Mt s ch : Lp trin khai interface phi thc thi tt c cc phng thc c khai bo trong interface, nu nh lp khng trin khai, hoc trin khai khng ht th n phi c khai bo l abstract Interface cng l mt lp tru tng do vy ta khng th to th hin ca interface Mt interface c th m rng mt interface khc, bng hnh thc k tha

45

Phm vi truy cp

46

Mt s lu
Java khng c ton t phm vi (scope) :: Java khng c hy t (destructor), n ch c phng thc finalize() c gi bi Garbage Collector. Java khng c template. Java khng c qu ti ton t (operator overloading).

47

Bi tp
1. Xy dng lp Candidate (Th sinh) gm cc thuc tnh: m, tn, ngy thng nm sinh, im thi Ton, Vn, Anh v cc phng thc cn thit. Xy dng lp TestCandidate kim tra lp trn:
-

2.

Nhp vo n th sinh (n do ngi dng nhp) In ra thng tin v cc th sinh c tng im ln hn 15

48

Bi tp
3. Xt phn mm qun l nhn s. Gi s Cng ty c hai loi nhn vin: nhn vin vn phng v nhn vin sn xut. Vit chng trnh qun l v tnh lng cho tng nhn vin ca cng ty:
-

Mi nhn vin cn qun l cc thng tin sau: H tn, ngy sinh, lng Cng ty cn tnh lng cho nhn vin nh sau: - i vi nhn vin sn xut:
-

Lng=lng cn bn + s sn phm * 5.000 lng = s ngy lm vic * 100.000


49

- i vi nhn vin vn phng:


-

Hi & p

50

Вам также может понравиться