You are on page 1of 32

Java Lp trnh hng i tng

LOGO

Mc lc

LOGO

1. Tng quan v OOP


2. OOP vi Java 3. K tha trong Java 4. Phm vi v thuc tnh

Tng quan v OOP

LOGO

Lp trnh hng i tng l g?

Lp trnh tuyn tnh


M nh phn, c ch cng tc c kh Lot lnh gn vi Ting Anh, sau bin dch ra m my Khng c kh nng kim sot phm vi d liu

Lp trnh c cu trc
Chia nh thnh cc chng trnh con ring l

Thng tin c chuyn giao qua tham s D liu cc b S tru tng ha theo chc nng

Tng quan v OOP

LOGO

Lp trnh hng i tng l g?


S tru tng ha d liu Tng t tru tng ha chc nng, y l s
tru tng ha trn d liu

Lp trnh hng i tng


Xy dng trn nn tng lp trnh c cu trc v s tru tng ha d liu Xoay quanh d liu lm vic trn Lin kt d liu vi cc thao tc

Tng quan v OOP

LOGO

Kh nng ca OOP
M phng th gii thc mt cch t nhin Tha k m c sn mt cch d dng

Ba tnh cht quan trng ca OOP


Tnh bao ng (ng gi) Tnh k tha Tnh a hnh

Tng quan v OOP

LOGO

Tnh ng gi (Encapsulation)
y l c ch rng buc d liu v thao tc trn d liu theo mt th thng nht Trnh s truy xut t bn ngoi vo D liu c th l public hay private

Tng quan v OOP

LOGO

Tnh k tha (inheritance)


To mt lp mi t lp c c k tha Lp mi c gi l lp dn xut (derived class) hay lp con Lp c k tha gi l lp cha hay lp c s ( base class) Mi lp c th c mt s lng bt k cc lp con Dng hnh cy c hnh thnh

Tng quan v OOP

LOGO

Tnh a hnh (Polymorphism)


L kh nng cho mt thng ip c th thay i cch thc hin ca n theo lp c th Lp dn xut c to ra c th thay i cch thc hin tha hng t lp cha Phng thc np chng

OOP vi Java

LOGO

Lp (class)
L 1 tp cc i tng c cu trc d liu v cc phng thc ging nhau (tp cc i tng cng loi). L c t mt kiu d liu mi v m t cc ci t kiu d liu L mt thc th theo nhng thuc tnh v hnh ng chung. Nhng thuc tnh v hnh ng chung ca mt thc th c nhm li to nn mt n v duy nht gi l lp Mt lp l mt s xc nh cp chng loi thc th ging nhau

OOP vi Java
[public] [abstract] [final] class ClassName [extends SuperClass] [implements Interfaces] {Variables Methods } Truy xut chung Lp tru tng Lp hng Tn lp K tha t SuperClass B sung thm giao din Khai bo bin Khai bo phng thc

LOGO

C php:

[<phm vi kim sot truy cp>] class <Tn lp> [extends <Tn lp cha>] [implements <Tn giao din>] { <Cc thnh phn ca lp> }

OOP vi Java

LOGO

Phng thc - hm thnh phn (method)


Hnh vi cc i tng ca mt lp c xc nh bi cc hm thnh phn ca lp C php ca hm thnh phn:
[<phm vi hoc thuc tnh kim sot truy cp>] <Kiu tr li> <Tn phng thc> ( [<Danh sch tham bin hnh thc>] [<Mnh throws>] { <Ni dung ca phng thc> }

OOP vi Java

LOGO

i tng (Object)
i tng l mt thc th phn mm bao bc cc thuc tnh v cc phng thc lin quan. i tng l s th hin ca mt lp

OOP trong Java Phng thc khi to (constructor)

LOGO

i tng c to ra vi ton t new , thc cht y l mt li gi n phng thc khi to ca i tng Phng thc khi to l mt hm c bit, c cng tn vi lp v khng c kiu d liu tr v Tng t nh phng thc thng thng, constructor c th c i s v c th b np chng Mi lp khi c bin dch u ngm nh mt phng thc khi to sn c

LOGO

class Foo { Foo() { } // Phng thc khi to ca lp Foo. }


class Foo { int size; String name; Foo(String name, int size) { this.name = name; this.size = size; } } S dng lp Foo: Foo f = new Foo(); // Khng th bin dch c Foo f = new Foo("Fred", 43); //i s trng khp vi phng thc khi to

OOP vi Java
class Radio{

LOGO

protected double[] stationNumber = new double[5];


public void setStationNumber(int index,double freq){ stationNumber[index] = freq; }//end method setStationNumber public void playStation(int index){ System.out.println("Playing the station at " + stationNumber[index] + " Mhz"); }//end method playStation }//end class Radio

OOP trong Java

LOGO

public class Radio01{ public static void main(String[] args){ Radio myObjRef = new Radio(); myObjRef.setStationNumber(3,93.5); myObjRef.playStation(3); }//end main }//end class Radio01

www.themegallery.com

Company Name

OOP vi Java
Java

LOGO

Overloading ( Phng thc np chng)


cho php s dng cng mt tn hm nhng nh ngha nhiu ni dung thc hin khc nhau
public void aMethod(String s){} public void aMethod(){} public void aMethod(int i, String s){} public void aMethod(String s, int i){} public void aMethod(int j, String s){return j;} //sai

Danh sch cc tham bin phi khc nhau v s lng hoc v th t cc kiu ca tham bin

OOP vi Java

LOGO

V d: Lp java.lang.Math c hm np chng min()


public static double min(double a, double b) public static float min(float a, float b) public static int min(int a, int b) public static long min(long a, long b)

OOP vi Java Triu gi phng thc np chng

LOGO

Ch duy nht mt phng thc trong s cc phng thc c cng nh danh c gi


Phng thc no c kiu d liu ca i s trng vi li gi hm th s c thc thi V d: class Adder khai bo np chng phng thc addThem() class TestAdder triu gi phng thc np chng

OOP vi Java

LOGO

1.class Adder { 2. public int addThem(int x, int y) { 3. return x + y; 4. } 5. // Khai bo np chng vi phng thc addThem() vi i s l kiu double 6. public double addThem(double x, double y) { 7. return x + y; 8. } 9.}

OOP vi Java
//T mt lp khc, triu gi phng thc np chng addThem()

LOGO

public class TestAdder { public static void main (String [] args) { Adder a = new Adder(); int b = 27; int c = 3; int result = a.addThem(b,c); double doubleResult = a.addThem(22.5,89.36); } }

OOP vi Java

LOGO

K tha
Chng ta c th xy dng cc lp mi t cc lp c thng qua s k tha. Mt lp mi cn gi l lp dn xut c tha hng d liu v cc phng thc ca lp c s
C th b sung cc thnh phn d liu v cc phng thc mi vo nhng thnh phn d liu v cc phng thc m n tha hng t lp c s.

Tng quan v OOP


class Animal { float weight; ... void eat( ) { ... } ... } class Mammal extends Animal { // k tha weight int heartRate; ... // k tha phng thc eat( ) void breathe( ) { ... } }

LOGO

Tng quan v OOP


Ton t ny c s dng to ra i tng ca lp hin thi. this() c s dng truy xut n chnh bn thn lp cha n. Ta thng dng bin this trong phng thc khi to.
V d: class Animal { float weight; //this.weight ... void eat(float weight ) { this.weight = weight; } ... }

LOGO

Tng quan v OOP

LOGO

Ton t super() c s dng trong cc ton t to lp i tng ca lp con gi ti cc ton t to lp ca lp cha trc tip.
V d:

class ASillyClass{ boolean aVariable; void aMethod() { aVariable = true; } } class ASillierClass extends ASillyClass{ boolean aVariable; void aMethod() { aVariable = false; super.aMethod(); System.out.println(aVariable); System.out.println(super.aVariable); } }

Tng quan v OOP


Phng thc vit ( Overriding )
Mt lp con c th vit , thay i ni dung thc hin nhng hm c k tha t lp cha

LOGO

Nhng hm ny c gi thc hin i vi nhng i tng ca lp con


Ni dung c nh ngha mi lp con s c thc thi

Tng quan v OOP


V d: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.

LOGO

public class Animal { public void eat() { System.out.println("Generic Animal Eating Generically"); } } class Horse extends Animal { public void eat() { System.out.println("Horse eating hay, oats, and horse treats"); } }

Tng quan v OOP


Kim tra:

LOGO

1. public class TestAnimals { 2. public static void main (String [] args) { 3. Animal a = new Animal(); 4. Animal b = new Horse(); //tham chiu n Animal, i tng c kiu House 5. a.eat(); // thc thi phng thc eat() ca lp Animal 6. b.eat(); // thc thi phng thc eat() ca lp House 7. } 8. }

Tng quan v OOP


Chnh sa on m li nh sau:

LOGO

1. class Horse extends Animal { 2. public void eat() { 3. System.out.println("Horse eating hay, oats, and horse treats"); 4. } 5. public void buck() { } 6. } 7. Kim tra: 8. Animal c = new Horse(); 9. c.buck(); // ?????

Tng quan v OOP

LOGO

S khc nhau ca Overloading v Overriding


Vit yu cu cng nh danh hm v kiu tr li kt qu c nh ngha ti lp cha. Np chng th yu cu khc nhau v nh danh, nhng ging nhau v tn gi hm Hm c th np chng trong cng lp hoc nhng lp con, chu T nhng lp con khi mun gi ti cc hm lp cha m b vit th phi gi qua ton t i din ca lp cha l super() Li gi hm np chng c xc nh thng qua danh sch cc i s

Tng quan v OOP

LOGO

Np chng phng thc khi to


class Foo { Foo() { } Foo(String s) { } Foo(String s, int size){ this.name = name; this.size = size; } }

LOGO

You might also like