Thursday, December 29, 2016

Bà i 12 Class lớp và đối tượng trong Java!

Bà i 12 Class lớp và đối tượng trong Java!


Bài 12: Class (l?p) và ??i t??ng trong Java!

?? có ki?n th?c t?ng quan và m?t vài khái ni?m m?i trong l?p trình h??ng ??i t??ng
Tr??c tiên, b?n hãy ??c th?t k? bài này:
L?p trình h??ng ??i t??ng v?i công ngh? Java?
R?i xem video anh Vi?t bên blog StudyAndShare:

?

? bài này, mình s? ch? vi?t v? class trong Java và chúng ta b?t ??u th?c hành, làm bài t?p nh? ?? làm quen v?i class.

1. Khái ni?m class (l?p):

Chúng ta có th? xem l?p nh? m?t khuôn m?u (template) c?a ??i t??ng (Object). Trong ?ó bao g?m d? li?u c?a ??i t??ng (fields hay properties) và các ph??ng th?c (methods) tác ??ng lên thành ph?n d? li?u ?ó g?i là các ph??ng th?c c?a l?p.
Các ??i t??ng ???c xây d?ng b?i các l?p nên ???c g?i là các th? hi?n c?a l?p (class instance).
L?p trong java g?n gi?ng nh? b?n ghi trong l?p trình C ho?c pascal, nh?ng t?t nhiên nó cao c?p h?n.
Ví d? 1: Ta khai báo 1 l?p SinhVien g?m các thu?c tính:
- hoTen
- namSinh
- lopHoc.
L?p này chính là 1 khuôn m?u. Khi ta t?o ra các ??i t??ng d?a trên l?p này, các ??i t??ng ??u t??ng t? nh? m?u trên.
Vd :
T?o ??i t??ng a, khi ?ó a s? có 3 thu?c tính, và ta có th? thao tác gán giá tr? các thu?c tính ?ó nh? sau:
- hoTen là "Nguy?n V?n A";
- namSinh là "1992";
- lopHoc là "At7a";
??i t??ng b, c, ... c?ng t??ng t? nh?ng giá tr? c?a chúng s? ??c tr?ng cho t?ng ??i t??ng riêng. Có l?, các b?n s? th?y nó có v? gi?ng v?i các b?n ghi n?u nh? b?n ?ã ???c h?c l?p trình C ho?c Pascal.

2. Khai báo/??nh ngh?a l?p:

PHP:
class <ClassName> {
    <
ki?u d? li?u> <field_1>;
    <
ki?u d? li?u> <field_2>;
    
constructor
    method_1
    method_2
}
- class: là t? khóa c?a java
- ClassName: là tên chúng ta ??t cho l?p
- field_1, field_2: các thu?c tính, các bi?n, hay các thành ph?n d? li?u c?a l?p.
- constructor: là s? xây d?ng, kh?i t?o ??i t??ng l?p.
- method_1, method_2: là các ph??ng th?c/hàm th? hi?n các thao tác x? lý, tác ??ng lên các thành ph?n d? li?u c?a l?p.

? bài này, t?m th?i chúng ta s? ch?a quan tâm t?i constructor và method nhé, nh?ng bài sau mình s? vi?t rõ v? nh?ng khái ni?m ?ó.

Các b?n hãy xem vd2 code v? l?p ?? ??nh ngh?a nh?ng gì ?ã vi?t trong ví d? 1
Ví d? 2: (? ?ây, t?m th?i ch?a c?n hi?u public là gì nhé, xu?ng ph?n d??i s? nói k? h?n)
PHP:
class SinhVien {
    public 
String hoTen;
    public 
int namSinh;
    public 
String lopHoc;
}
3. T?o ??i t??ng c?a l?p:

ClassName objectName = new ClassName();

Ví d? 3: T?o 2 ??i t??ng sinh viên a và sinh viên b d?a trên class ?ã ??nh ngh?a ? ví d? 2:
PHP:
SinhVien a = new SinhVien();SinhVien b = new SinhVien();
4. Thu?c tính c?a l?p

Vùng d? li?u (fields) hay thu?c tính (properties) c?a l?p ???c khai báo bên trong l?p nh? sau:

PHP:
class <ClassName>{// khai báo nh?ng thu?c tính c?a l?p<ti?n t?> <ki?u d? li?ufield1;// …}
?? xác ??nh quy?n truy xu?t c?a các ??i t??ng khác ??i v?i vùng d? li?u c?a l?p ng??i ta th??ng dùng 3 ti?n t? sau:
public: có th? truy xu?t t? t?t c? các ??i t??ng khác
private: m?t l?p không th? truy xu?t vùng private c?a 1 l?p khác.
protected: vùng protected c?a 1 l?p ch? cho phép b?n thân l?p ?ó và nh?ng l?p d?n xu?t t? l?p ?ó truy c?p ??n.
Xem thêm video Blog StudyAndShare v? các thu?c tính này:

?

Ví d? 4:
PHP:
class SinhVien{
    public    
String hoTen;
    private    
int    namSinh;
    protected 
String lopHoc;
    public static 
String tenTruong "HV KT M?t Mã";
}
- Thu?c tính "hoTen" có th? ???c truy c?p ??n t? t?t c? các ??i t??ng khác. (public)
- Thu?c tính "namSinh" ch? có th? truy c?p ???c t? các ??i t??ng có ki?u "SinhVien"(private)
- Thu?c tính "lopHoc", so có th? truy c?p ???c t? các ??i t??ng có ki?u "SinhVien" và các ??i t??ng c?a các l?p con d?n xu?t t? l?p "SinhVien" (protected)
- "tenTruong" là bi?n t?nh có giá tr? là "HV KT M?t Mã"trong t?t c? các th? hi?n t?o ra t? l?p "SinhVien" (public static)

L?u ý: Thông th??ng ?? an toàn cho vùng d? li?u c?a các ??i t??ng ng??i ta tránh dùng ti?n t? public, mà th??ng ch?n ti?n t? private ?? ng?n c?n quy?n truy c?p ??n vùng d? li?u c?a m?t l?p t? các ph??ng th?c bên ngoài l?p ?ó.

V?y class ???c ??nh ngh?a, ???c vi?t ? v? trí nào trong 1 bài l?p trình Java h??ng ??i t??ng. Vi?c t?o ??i t??ng, truy c?p d? li?u c?a các ??i t??ng ???c t?o t?o nh?ng class ?ó ra sao! ? bài sau mình s? vi?t rõ và k? h?n ?? các b?n có cái nhìn c? th?!

K?t thúc bài này, mình s? vi?t 1 ví d? ??n gi?n:

Ví D? 5: T?o class sinh viên g?m các thu?c tính: hoTen, namSinh, lopHoc
T?o 2 ??i t??ng là sinh viên a và sinh viên b. Gán giá tr? cho các thu?c tính và in giá tr? các thu?c tính t?ng sinh viên ra màn hình!
PHP:
package javademoandroidvn;//Vd5class SinhVien {

    public 
String hoTen;
    public 
int namSinh;
  &nb

Available link for download