Professional Documents
Culture Documents
Bai3 HDTJava
Bai3 HDTJava
NHP MN JAVA
BI 3
HNG I TNG
TRONG JAVA
GING VIN:
M U
T khi ra i cho n nay lp trnh hng i tng (OOP) chng t c sc mnh, vai tr ca n trong cc n tin hc. Lp trnh OOP l mt phng php mnh m v rt hiu qu xy dng nn nhng chng trnh ng dng trn my tnh. phn ny chng ta tm hiu cc vn c bn ca lp trnh hng i tng trong Java thng qua vic to cc lp, cc i tng v cc tnh cht ca chng.
PHN 1
LP
(CLASS)
KHAI BO LP
class <ClassName> { <kiu d liu> <field_1>; <kiu d liu> <field_2>; constructor method_1 method_2 }
class: l t kha ca java ClassName: l tn chng ta t cho lp field_1, field_2: cc thuc tnh (cc bin, hay cc thnh phn d liu ca lp) constructor: l phng thc xy dng, khi to i tng ca lp. method_1, method_2: l cc phng thc (c th gi l hm) th hin cc thao tc x l, tc ng ln cc thuc tnh ca lp.
5
THUC TNH CA LP
Vng d liu (fields) hay thuc tnh (properties) ca lp c khai bo bn trong lp nh sau: class <ClassName> { // khai bo nhng thuc tnh ca lp <tin t> <kiu d liu> field1; // }
xc nh quyn truy xut ca cc i tng khc i vi vng d liu ca mt lp ngi ta thng dng 3 tin t sau:
public: c th truy xut t tt c cc i tng khc private: mt lp khng th truy xut vng private ca mt lp khc. protected: vng protected ca mt lp ch cho php bn thn lp v nhng lp dn xut t lp truy cp n.
6
THUC TNH CA LP
V d: public class xemay { public String nhasx; public String model; private float chiphisx; protected int thoigiansx; // so luong so cua xe may: 3, 4 protected int so; // sobanhxe l bin tnh c gi tr l 2 trong tt c // cc th hin to ra t lp xemay public static int sobanhxe = 2; }
Thuc tnh nhasx, model c th c truy cp n t tt c cc i tng khc. Thuc tnh chiphisx ch c th truy cp c t cc i tng c kiu xemay Thuc tnh thoigiansx, so c th truy cp c t cc i tng c kiu xemay v cc i tng ca cc lp con dn xut t lp xemay
7
THUC TNH CA LP
Lu : Thng thng an ton cho vng d liu ca cc i tng ngi ta trnh dng tin t public, m thng chn tin t private ngn cn quyn truy cp n vng d liu ca mt lp t cc phng thc bn ngoi lp .
Khai bo phng thc: <Tin t> <kiu tr v> <Tn phng thc> (<danh sch i s>) { <khi lnh>; } xc nh quyn truy xut ca cc i tng khc i vi cc phng thc ca lp ngi ta thng dng cc tin t sau: public, protected, private, static, final, abstract, synchronized
V d: public int Minus (int x, int y); <kiu tr v>: c th l kiu void, kiu c s hay mt lp. <Tn phng thc>: t theo qui c ging tn bin. <danh sch thng s>: c th rng
9
10
THUC TNH CA LP
V d: public class xemay { public String nhasx; public String model; private float chiphisx; protected int thoigiansx; // so luong so cua xe may: 3, 4 so protected int so;
// l bin tnh c gi tr l 2 trong tt c cc th hin to ra t lp xemay
public static int sobanhxe = 2; public float tinhgiaban() { return 1.5 * chiphisx; } } Lu : Thng thng trong mt lp cc phng thc nn c khai bo dng t kha public, khc vi vng d liu thng l dng tin t private v mc ch an ton. Nhng bin nm trong mt phng thc ca lp l cc bin cc b (local) v nn c khi to sau khi khai bo.
12
KHI TO MT I TNG
Constructor tht ra l mt loi phng thc c bit ca lp.
Constructor dng gi t ng khi khi to mt th hin ca lp, c th dng khi gn nhng gi tr mc nh. Cc constructor khng c gi tr tr v, v c th c tham s hoc khng c tham s. Constructor phi c cng tn vi lp v c gi n khi chng trnh to mt i tng mi thng qua t kha new. Nu mt lp khng c constructor th Java s cung cp cho lp mt constructor mc nh (default constructor). Nhng thuc tnh, bin ca lp s c khi to bi cc gi tr mc nh (s: thng l gi tr 0, kiu lun l l gi tr false, kiu i tng gi tr null, )
Lu : thng thng an ton, d kim sot v lm ch m ngun chng trnh chng ta nn khai bo mt constructor cho lp.
13
V D V CONSTRUCTOR
public class xemay { public String nhasx; public String model; private float chiphisx; protected int thoigiansx; public xemay() { } public xemay(String s_nhasx, String s_model, f_chiphisx, int i_thoigiansx, int i_so); { nhasx = s_nhasx; model = s_model; chiphisx = f_chiphisx; thoigiansx = i_thoigiansx; so = i_so; // hoc // this.nhasx = s_nhasx; // this.model = s_model; // this.chiphisx = f_chiphisx; // this.thoigiansx = i_thoigiansx; // this.so = i_so; } }
14
BIN this
Bin this l mt bin n tn ti trong tt c cc lp trong ngn ng Java. Mt class trong Java lun tn ti mt bin this. Bin this c s dng trong khi chy v tham kho n bn thn lp cha n.
V d: <tin t> class A { <tin t> int <field_1>; <tin t> String <field_2>; // Contructor ca lp A public A(int par_1, String par_2) { this.field_1 = par_1; this.field_2 = par_2; }
<tin t> <kiu tr v> <method_1>() { // } <tin t> <kiu tr v> <method_2>() { this.method_1() // } }
15
16
PHN 2
18
TNH NG GI (encapsulation)
C ch ng gi trong lp trnh hng i tng gip cho cc i tng giu i mt phn cc chi tit ci t, cng nh phn d liu cc b ca n, v ch cng b ra ngoi nhng g cn cng b trao i vi cc i tng khc. Hay chng ta c th ni i tng l mt thnh t h tr tnh ng gi. n v ng gi c bn ca ngn ng java l class. Mt class nh ngha hnh thc ca mt i tng. Mt class nh r nhng thnh phn d liu v cc on m ci t cc thao tc x l trn cc i tng d liu . Java dng class xy dng nhng i tng. Nhng i tng l nhng th hin (instances) ca mt class. Mt lp bao gm thnh phn d liu v thnh phn x l. Thnh phn d liu ca mt lp thng bao gm cc bin thnh vin v cc bin th hin ca lp. Thnh phn x l l cc thao tc trn cc thnh phn d liu, thng trong Java ngi gi l phng thc. Phng thc l mt thut ng hng i tng trong Java. Ttrong C/C++ ngi ta dng thut ng l hm hoc phng thc.
19
20
22
PHN 3
TNH K THA
public class xega extends xemay { public xega( ) { } public xega(String s_nhasx, String s_model, f_chiphisx, int i_thoigiansx); { this.nhasx = s_nhasx; this.model = s_model; this.chiphisx = f_chiphisx; this.thoigiansx = i_thoigiansx; this.so = 0; } public float tinhgiaban( ) { return 2.5 * chiphisx; } }
24
25
LP NI (INNER CLASS)
Lp ni l lp c khai bo bn trong 1 lp khc. Lp ni th hin tnh ng gi cao v c th truy xut trc tip bin ca lp cha. V d: public class A { // int <field_1> static class B { // int <field_2> public B(int par_1) { field_2 = par_1 + field_1; } } }
Trong v d trn th chng trnh dch s to ra hai lp vi hai files khc nhau: A.class v B.class
26
LP V SINH
Lp m ta khng th c lp dn xut t n (khng c lp con) gi l lp v sinh, hay ni cch khc khng th k tha c t mt lp v sinh. Lp v sinh dng hn ch, ngn nga cc lp khc dn xut t n. khai bo mt lp l lp v sinh, chng ta dng t kha final
class.
Tt c cc phng thc ca lp v sinh u v sinh, nhng cc thuc tnh ca lp v sinh th c th khng v sinh. V d: public final class A { public final int x; private int y; public final void method_1() { // } public final void method_2() { // } }
27
LP TRU TNG
Lp tru tng l lp khng c khai bo cc thuc tnh thnh phn v cc phng thc. Cc lp dn xut ca n s khai bo thuc tnh, ci t c th cc phng thc ca lp tru tng.
V d: abstract class A { abstract void method_1(); } public class B extends A { public void method_1( ) { // ci t chi tit cho phng thc method_1 // trong lp con B. // } }
public class C extends A { public void method_1() { // ci t chi tit cho //method_1 trong lp con C. // } }
Lu : Cc phng thc c khai bo dng cc tin t private v static th khng c khai bo l tru tng abstract. Tin t private th khng th truy xut t cc lp dn xut, cn tin t static th ch dng ring cho lp khai bo m thi.
28
V d: class A { // Khai bo cc thuc tnh public void method_1( ) { // } protected void finalize() { // C th dng ng tt c cc kt ni // vo c s d liu trc khi hy i tng. // } }
29
PHN 4
GI V GIAO DIN
30
GI (package)
Vic ng gi cc lp li to thnh mt th vin dng chung gi l package. Mt package c th cha mt hay nhiu lp bn trong, ng thi cng c th cha mt package khc bn trong. khai bo mt lp thuc mt gi no y ta phi dng t kha package. Dng khai bo gi phi l dng u tin trong tp tin khai bo lp. Cc tp tin khai bo lp trong cng mt gi phi c lu trong cng mt th mc. Lu : Vic khai bo import tt c cc lp trong gi s lm tn b nh. Thng thng chng ta ch nn import nhng lp cn dng trong chng trnh. V d: package phuongtiengiaothong; class xemay { // . } class xega extends xemay { // }
Khi mun s dng lp xemay vo chng trnh ta s khai bo nh sau; import phuongtiengiaothong.xemay;
31
Khai bo interface:
Interface c khai bo nh mt lp. Nhng cc thuc tnh ca interface l cc hng (khai bo dng t kha final) v cc phng thc ca giao tip l tru tng (mc d khng c t kha abstract). Trong cc lp c ci t cc interface ta phi tin hnh ci t c th cc phng thc ny.
32
34
PHN 4
MT S V D
// nh ngha lp tru tng c s tn Shape trong tp tin Shape.java public abstract class Shape extends Object { // tr v din tch ca mt i tng hnh hc shape public double area( ) { return 0.0; } // tr v th tch ca mt i tng hnh hc shape public double volume( ) { return 0.0; } // Phng thc tru tng cn phi c hin thc // trong nhng lp con tr v tn i tng // hnh hc shape thch hp public abstract String getName(); } // end class Shape
36
public class Point extends Shape { protected int x, y; // Ta x, y ca 1 im public Point( ){ setPoint( 0, 0 ); } // constructor khng tham s. public Point(int xCoordinate, int yCoordinate) // constructor c tham s. { setPoint( xCoordinate, yCoordinate ); } public void setPoint( int xCoordinate, int yCoordinate )// gn ta x, y cho 1 im { x = xCoordinate; y = yCoordinate; } public int getX( ) { return x; } // ly ta x ca 1 im public int getY( ) { return y; } // ly ta y ca 1 im public String toString() // Th hin ta ca 1 im di dng chui { return "[" + x + ", " + y + "]"; } public String getName() // tr v tn ca i tng shape { return "Point"; } } // end class Point
37
40
public class Cylinder extends Circle { protected double height; // chiu cao ca Cylinder public Cylinder() // constructor khng c tham s { // ngm gi n constructor ca lp cha setHeight( 0 ); } // constructor c tham s public Cylinder( double cylinderHeight, double cylinderRadius, int xCoordinate,int yCoordinate ) { // Gi constructor ca lp cha super( cylinderRadius, xCoordinate, yCoordinate ); setHeight( cylinderHeight ); } //cn tip slide sau
42
43
44
import java.text.DecimalFormat; public class Test { // Kim tra tnh k tha ca cc i tng hnh hc public static void main( String args[] ) { // To ra cc i tng hnhhc Point point = new Point( 7, 11 ); Circle circle = new Circle( 3.5, 22, 8 ); Cylinder cylinder = new Cylinder( 10, 3.3, 10, 10 ); // To mt mng cc i tng hnh hc Shape arrayOfShapes[] = new Shape[ 3 ]; // arrayOfShapes[ 0 ] l mt i tng Point arrayOfShapes[ 0 ] = point; // arrayOfShapes[ 1 ] l mt i tng Circle arrayOfShapes[ 1 ] = circle; // arrayOfShapes[ 2 ] l mt i tng cylinder arrayOfShapes[ 2 ] = cylinder; //cn tip slide sau
45
47
public class Point extends Object implements Shape { protected int x, y; // Ta x, y ca 1 im public Point() // constructor khng tham s. { setPoint( 0, 0 ); } public Point(int xCoordinate, int yCoordinate) // constructor c tham s. { setPoint( xCoordinate, yCoordinate ); } public void setPoint( int xCoordinate, int yCoordinate ) // gn ta x, y cho 1 im { x = xCoordinate; y = yCoordinate; } //cn tip slide sau
48
49
public class Circle extends Point { // Dn xut t lpPoint protected double radius; public Circle() // constructor khng tham s { // ngm gi n constructor ca lp cha setRadius( 0 ); } // constructor c tham s public Circle( double circleRadius, int xCoordinate, int yCoordinate ) { // gi constructorca lp cha super( xCoordinate, yCoordinate ); setRadius( circleRadius ); } //cn tip slide sau
50
public class Cylinder extends Circle { protected double height; // chiu cao ca Cylinder public Cylinder() // constructor khng c tham s { // ngm gi n constructor ca lp cha setHeight( 0 ); } // constructor c tham s public Cylinder( double cylinderHeight, double cylinderRadius, int xCoordinate,int yCoordinate ) { // Gi constructor ca lp cha super( cylinderRadius, xCoordinate,yCoordinate ); setHeight( cylinderHeight ); } public void setHeight( double cylinderHeight ) // Gn chiu cao cho Cylinder { height = ( cylinderHeight >= 0 ? cylinderHeight:0 ); } //cn tip slide sau
52
import java.text.DecimalFormat; public class Test // Kim tra tnh k tha ca cc i tng hnh hc { public static void main( String args[] ) { // To ra cc i tng hnhhc Point point = new Point( 7, 11 ); Circle circle = new Circle( 3.5, 22, 8 ); Cylinder cylinder = new Cylinder( 10, 3.3, 10, 10 ); Shape arrayOfShapes[] = new Shape[ 3 ]; // To mt mng cc i tng hnh hc // arrayOfShapes[ 0 ] l mt i tng Point arrayOfShapes[ 0 ] = point; arrayOfShapes[ 1 ] = circle; // arrayOfShapes[ 1 ] l mt i tng Circle arrayOfShapes[ 2 ] = cylinder; // arrayOfShapes[ 2 ] l mt i tng cylinder // Ly tn v biu din ca mi i tng hnh hc String output = point.getName() + ": " + point.toString() + "\n" + circle.getName() + ": " + circle.toString() + "\n + cylinder.getName() + ": " + cylinder.toString(); DecimalFormat precision2 = new DecimalFormat("0.00" ); //cn tip slide sau
54
55
HT
CHNG 3 v 4