Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 32 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
32
Dung lượng
1,16 MB
Nội dung
L P TRÌNHJAVA BÀI 4: L P VÀ IT NG M C TIÊU K t thúc h c b n có kh n ng Hi u rõ khái ni m i t ng l p Mơ hình hóa l p i t ng nh ngh a c l p t o i t ng nh ngh a tr ng, ph ng th c nh ngh a s d ng hàm t o Hi u s package S d ng thành th o c t truy xu t Hi u c tính che d u (encapsulation) KHÁI NI M V IT NG Bi u di n i t ng th gi i th c M i i t ng c c tr ng b i thu c tính hành vi riêng c a C c i m Hãng s n xu t Model N m Màu Hành vi (Ơ tơ có th làm gì?) Kh i ng D ng Phanh B t c n g t n c I M VÀ HÀNH VI CLASS LÀ GÌ? Nhóm Xe ơ-tơ Nhóm ng v t NH NGH A L P L p m t khuôn m u c s d ng mô t i t ng lo i L p bao g m thu c tính (tr ng d li u) ph ng th c (hàm thành viên) THU C TÍNH & PH Thu c tính (field) Ph Danh Hãng s n xu t Model N m Màu ng th c (method) Đ Kh i ng() D ng() Phanh() B t c n g t n c() NG TH C MƠ HÌNH L P VÀ IT Ơ tơ Ơ tơ c a D ng Thu c tính • N m = 2010 • Nhà SX=Honda • Model = Accord • Màu = Xanh Ph ng th c • Kh i đ ng • D ng • Phanh Thu c tính • N m • Nhà s n xu t • Model • Màu Ph ng th c • Kh i đ ng • D ng • Phanh Ơ tơ c a Mai Thu c tính • N m = 2012 • Nhà SX=BMW • Model = CS30 • Màu = B c Ph ng th c • Kh i đ ng • D ng • Phanh NG TÍNH TR U T NG (ABSTRACTION) Abstraction công vi c l a ch n thu c tính hành vi c a th c th v a mô t th c th ó m t b i c nh c th mà không ph i li t kê t t c thu c tính, hành vi c a th c th có Ví d : Mơ t m t sinh viên ngành CNTT có r t nhi u thu c tính hành vi ây ch s d ng mã, h tên, i m, ngành mà thôi, không c n thi t ph i mô t cao, n ng, hát, c i, nh y cò cò… NH NGH A CLASS class { ; … ; } Khai báo Khai báo ([parameters]) { // body of method } … ([parameters]) { // body of method } VÍ D N P CH NG PH Xét tr NG TH C ng h p overload sau class MayTinh{ int tong(int int tong(int } int b){return a + b;} int b, int {return a + b + c;} V i l p trên, b n có th s d ng ho c s nguyên MayTinh mt = new MayTinh(); int t1 = (5, 7); int t2 = (5, 7, 9); tính t ng HÀM T O (CONSTRUCTOR) Hàm t o m t ph ng th c d ng t o i t ng c i m c a hàm t o c bi t cs Tên trùng v i tên l p Khơng tr l i giá tr Ví d L public class ChuNhat{ double dai, ; C N (double dai, double ){ this.dai = dai; Đ = ; } ChuNhat cn1 = new ChuNhat(20, 15); } ChuNhat cn2 = new ChuNhat(50, 25); HÀM T O (CONSTRUCTOR) Trong m t l p có th nh ngh a nhi u hàm t o khác tham s , m i hàm t o cung c p cách t o i t ng N u không khai báo hàm t o Java t ng cung c p hàm t o m c nh (không tham s ) public class ChuNhat{ double dai, ; C N (double dai, double ){ this.dai = dai; = ; } C N (double canh){ this.dai = canh; = canh; ChuNhat cn = new ChuNhat(20, 15); } ChuNhat vu= new ChuNhat(30); } T KHÓA THIS this c s d ng i di n cho i t ng hi n t i this c s d ng l p tham chi u t i thành viên c a l p (field method) S d ng this.field phân bi t field v i bi n c c b ho c tham s c a ph ng th c public class MyClass{ int field; void method(int field){ this.field = field; } T Tham } SinhVien + hoTen S + diemTB: double + xepLoai S + xuat(): void + nhap(): void + SinhVien() + SinhVien(hoTen, diemTB) DEMO Xây mơ sinh viên mơ hình T nhap() cho phép tên bàn phím; xuat() cho phép tên, hình; xepLoai() vào S hàm sinh viên PACKAGE Package c s d ng chia class interface thành t ng gói khác Vi c làm t ng t qu n lý file class (file) package (folder) a ó Ví d sau t o l p MyClass thu c gói com.poly com.poly; public class MyClass{…} Trong Java có r t nhi u gói n ng c phân theo ch c java.util: ch a l p ti n ích java.io: ch a l p vào/ra d li u java.lang: ch a l p th ng dùng… IMPORT PACKAGE L nh import c s d ng ch l p ã c nh ngh a m t package Các l p gói java.lang l p nh ngh a m t gói v i l p s d ng s c import ng m nh com.polyhcm; import com.poly.MyClass; import java.util.Scanner; public class HelloWorld{ M C S } } S ){ obj = new MyClass(); scanner = new Scanner(System.in); CT TRUY XU T c t truy xu t c s d ng nh ngh a kh n ng cho phép truy xu t n thành viên c a l p Trong java có c t khác nhau: private: ch c phép s d ng n i b class public: công khai hoàn toàn {default}: Là public i v i l p truy xu t gói Là private v i l p truy xu t khác gói protected: t ng t {default} nh ng cho phép k th a dù l p cha khác gói M c che d u t ng d n theo chi u m i tên extends p1; public class A{ int a; int b; int c; int d; } TRUY XU T use use CT p1; public class B{ A x = new A(); void method(){ = 1; x.b = 1; = 1; x.d = 1; } } p2; public class C{ A x = new A(); void method(){ = 1; x.b = 1; x.c = 1; x.d = 1; } } p3; public class D extends A{ void method(){ b = 1; c = 1; d = 1; } } ENCAPSULATION Encapsulation tính che d u h t ng Nên che d u tr ng d li u S d ng ph ng th c truy xu t tr M c ích c a che d u B o v d li u T ng c ng kh n ng m r ng ng i ng d li u NON-ENCAPSULATION Gi s nh ngh a l p SinhVien công khai hoTen i m nh sau public class MyClass{ S ){ SinhVien sv = new SinhVien(); sv.hoTen = “N V Tèo”; sv.diem = 20.5; public class SinhVien{ S hoTen; public double diem; } } } Khi s d ng ng i dùng có th gán d li u cho tr ng m t cách tùy ti n i u s x y n u i m h p l ch t n 10 ENCAPSULATION che d u thông tin, s d ng private cho tr ng d li u private double diem; B sung ph ng th c getter setter ghi tr ng ã che d u public void setDiem(double diem){ this.diem = diem; } public String getDiem(){ return this.diem; } c ENCAPSULATION public class SinhVien{ S hoTen; Ch c n thêm double diem; mã vào hoTen){ public void setHoTen S this.hoTen = hoTen; ph ng th c } setDiem() S getHoTen(){ return this.hoTen; có nh ng x } lý d li u public void setDiem(double diem){ if(diem < || > 10){ không h p l System.out.println(“Đ ”); } public class MyClass{ else{ S ){ this.diem = diem; SinhVien sv = new SinhVien(); } } sv.setHoTen(“N V Tèo”); S getDiem(){ sv.setDiem(20); return this.diem; } } } } QUI T C T TÊN TRONG JAVA Tên (class, field, method, package, interface, variable) c t theo qui c (m m) nh sau: Tên package: toàn b ký t th ng d u ch m java.util, com.poly Tên class, interface: Các t ph i vi t hoa ký t u class Employee{}, class SinhVien{}, class HinhChuNhat() Tên field, method, variable: Các t ph i vi t hoa ký t u ngo i tr t u tiên ph i viêt th ng hoTen, diem, fullName, mark setHoTen(), input(), setDiem() Tên class, field variable s d ng danh t Tên ph ng th c s d ng ng t T NG K T N I DUNG BÀI H C Khái ni m v i t ng Khái ni m l p Mơ hình i t ng l p nh ngh a l p T o i t ng nh ngh a ph ng th c N p ch ng ph ng th c Hàm t o Package c t truy xu t Encapsulation Qui c t tên ... com.poly; public class MyClass{…} Trong Java có r t nhi u gói n ng c phân theo ch c java.util: ch a l p ti n ích java.io: ch a l p vào/ra d li u java.lang: ch a l p th ng dùng… IMPORT PACKAGE... thành viên c a l p Trong java có c t khác nhau: private: ch c phép s d ng n i b class public: công khai hoàn toàn {default}: Là public i v i l p truy xu t gói Là private v i l p truy xu t... } } } QUI T C T TÊN TRONG JAVA Tên (class, field, method, package, interface, variable) c t theo qui c (m m) nh sau: Tên package: toàn b ký t th ng d u ch m java.util, com.poly Tên class,