SlideShare a Scribd company logo
1 of 33
Download to read offline
Bài 3: Cài đặt lớp


    Giảng viên: Nguyễn Thị Minh Huyền
    nguyenthiminhhuyen@hus.edu.vn
               Đỗ Thanh Hà
          dothanhha@hus.edu.vn
Tài liệu tham khảo
   BigJava – chương 3, 4




    2009-2010       http://mim.hus.edu.vn   2
Trừu tượng và đóng gói dữ liệu
   Lập trình hướng đối tượng đòi hỏi thiết kế các
    lớp đối tượng như là những hộp đen (black
    box):
           Giấu đi cách hoạt động bên trong và các chi tiết
            dữ liệu không quan trọng => đóng gói dữ liệu
            (encapsulation)
           Khái niệm (concept) của mỗi hộp đen là kết quả
            của quá trình trừu tượng hoá (abstraction)
                Mô hình hoá sự vật hiện tượng
                Bỏ qua các tiểu tiết, chỉ giữ lại các đặc tính cơ bản của
                 đối tượng

2009-2010                         http://mim.hus.edu.vn                      3
Các mức trừu tượng – ví dụ
trong đời sống (1)




2009-2010   http://mim.hus.edu.vn   4
Các mức trừu tượng – ví dụ
    trong đời sống (2)
     Người dùng xe không cần biết các hộp đen hoạt động thế nào bên trong
     Tương tác của hộp đen với thế giới bên ngoài được định nghĩa chính xác
           Người lái tương tác với xe bằng cách sử dụng bàn đạp, các nút bấm, v.v.
           Thợ cơ khí có thể kiểm tra khối điều khiển động cơ có gửi tín hiệu đúng tới
            các tiếp xúc không
           Đối với nhà sản xuất động cơ, các tụ điện và bóng bán dẫn là các hộp đen
            sản xuất bởi các nhà máy linh kiện điện tử
     Đóng gói là yếu tố mang lại tính hiệu quả
           Thợ cơ khí chỉ làm việc với các bộ phận của xe hơi (như khối điều khiển điện
            tử), mà không làm việc với các bộ cảm biến và bóng bán dẫn
           Người lái xe chỉ lo việc tương tác với xe (như đổ xăng vào xe) chứ không cần
            biết hoạt động bên trong của động cơ hay của bộ điều khiển như thế nào.




    2009-2010                          http://mim.hus.edu.vn                              5
Các mức trừu tượng - Thiết kế
phần mềm (1)




2009-2010   http://mim.hus.edu.vn   6
Các mức trừu tượng - Thiết kế
    phần mềm (2)
   Trước kia, người lập trình chỉ làm việc với dữ liệu kiểu
    nguyên thuỷ: số và kí tự
         Thao tác với quá nhiều dữ liệu dễ gây lỗi
         Giải pháp: Đóng gói các tính toán thường xuyên thành các hộp
          đen phần mềm
         Trừu tượng hoá: đưa ra các kiểu dữ liệu bậc cao hơn (có cấu
          trúc)
   Lập trình hướng đối tượng: đối tượng là hộp đen
         Đóng gói: Người dùng đối tượng chỉ biết các hành vi của nó,
          không biết cấu trúc hoạt động bên trong thế nào
         Thiết kế phần mềm: mô hình hoá (trừu tượng hoá) đối tượng
               Định nghĩa các hành vi (behaviour) của lớp đối tượng
               Cài đặt lớp

    2009-2010                        http://mim.hus.edu.vn              7
Thiết kế lớp - Ví dụ
   Yêu cầu:
           Thiết kế lớp tài khoản ngân hàng
            (BankAccount) cho một ứng dụng quản lí
            tài chính




2009-2010                http://mim.hus.edu.vn   8
Thiết kế giao diện công khai
(public) của lớp (1)
   Trừu tượng hoá:
           Hành vi của đối tượng tài khoản ngân hàng
                Chuyển một số tiền vào
                Rút một số tiền ra
                Xem số tiền đang có




2009-2010                     http://mim.hus.edu.vn   9
Thiết kế giao diện công khai
    (public) của lớp (2)
    Xác định phương thức
          Các phương thức công khai cần có cho lớp
           BankAccount:
               deposit
               withdraw
               getBalance
          Lời gọi các phương thức này có dạng:
               harrysChecking.deposit(2000);
               harrysChecking.withdraw(500);
               System.out.println(harrysChecking.getBalance());




    2009-2010                  http://mim.hus.edu.vn           10
Thiết kế giao diện công khai
        (public) của lớp (3)
   Định nghĩa phương thức
        Cú pháp

accessSpecifier returnType methodName(parameterType parameterName, . . .)
{
     method body
}

        Ví dụ
              public void deposit(double amount) { . . . }
              public void withdraw(double amount) { . . . }
              public double getBalance() { . . . }

        2009-2010                     http://mim.hus.edu.vn                 11
Thiết kế giao diện công khai
(public) của lớp (4)
   Định nghĩa hàm dựng (constructor)
           Hàm dựng khởi tạo các biến (thuộc tính) của một thực thể
                Tên hàm dựng trùng tên lớp
                Các lệnh trong thân một hàm dựng được thực hiện khi tạo đối
                 tượng mới bằng hàm dựng này (với từ khoá new)
                Một lớp có thể có nhiều hàm dựng, các hàm dựng phân biệt
                 được với nhau nhờ danh sách tham biến hiện khác nhau
           Cú pháp
            accessSpecifier ClassName(parameterType parameterName, . . .)
            {
                  constructor body
            }
           Ví dụ
            public BankAccount(double initialBalance) {         . . . }



2009-2010                          http://mim.hus.edu.vn                    12
Giao diện công khai của lớp
BankAccount
public class BankAccount{
   // Constructors
   public BankAccount(){
   // body--filled in later
   }
   public BankAccount(double initialBalance) {
   // body--filled in later
   }
   // Methods
   public void deposit(double amount) {
    // body--filled in later
   }
   public void withdraw(double amount) {
    // body--filled in later
   }
   public double getBalance() {
   // body--filled in later
   }
   // private fields--filled in later
}


2009-2010                http://mim.hus.edu.vn   13
Định nghĩa lớp
 Cú pháp
accessSpecifier class ClassName {
      constructors
      methods
      fields
}
 Fields: Các trường dữ liệu (thuộc tính đối

  tượng)
2009-2010          http://mim.hus.edu.vn       14
Tài liệu chương trình
(documentation)
   Cần cho người sử dụng lớp: API
    documentation
   Nội dung tài liệu được sinh tự động (dùng
    javadoc) từ các chú thích trong chương trình
           Có cú pháp quy định cho các loại chú thích
                chú thích cho từng phương thức: mô tả phương thức,
                 danh sách tham biến, giá trị trả lại
                chú thích cho lớp: mô tả lớp, thông tin về tác giả, phiên
                 bản phần mềm
           Cần làm chú thích tài liệu cho tất cả các lớp,
            phương thức, tham biến, giá trị trả lại


2009-2010                         http://mim.hus.edu.vn                  15
Chú thích giao diện công khai
/**
   Withdraws money from the bank account.
   @param amount the amount to withdraw
*/
public void withdraw(double amount) {
   // implementation filled in later
}  
/**
   Gets the current balance of the bank account.
   @return the current balance
*/
public double getBalance() {
   // implementation filled in later
}


2009-2010             http://mim.hus.edu.vn        16
Chú thích lớp
/**
  A bank account has a balance that
  can be changed by deposits and
  withdrawals.
*/
public class BankAccount {
  . . .
}

2009-2010     http://mim.hus.edu.vn   17
Javadoc – method summary




2009-2010   http://mim.hus.edu.vn   18
Javadoc – method detail




2009-2010   http://mim.hus.edu.vn   19
Các trường dữ liệu (1)
   Các trường dữ liệu là các thuộc tính của các cá thể
    (instance) trong lớp
   Cú pháp khai báo các trường dữ liệu trong lớp như
    sau:
     accessSpecifier class ClassName {
         ...
         accessSpecifier fieldType fieldName;
         ...
     }
   Nên đặt quyền truy nhập của tất cả các trường là
    private (bảo đảm tính vẹn toàn dữ liệu)

2009-2010                   http://mim.hus.edu.vn         20
Các trường dữ liệu (2)



   Ví dụ:
    public class BankAccount
    {
        . . .
        private double balance;
        . . .
    }

          2009-2010            http://mim.hus.edu.vn   21
Truy cập trường dữ liệu
    Phương thức deposit của lớp BankAccount có thể truy cập
     trường dữ liệu balance:
     public void deposit(double amount){
        double newBalance = balance + amount;
        balance = newBalance;
     }
    Các phương thức thuộc lớp khác không truy cập được
     public class BankRobber {
        public static void main(String[] args){
          BankAccount momsSavings = new BankAccount(1000);
          . . .
          momsSavings.balance = -1000; // ERROR
        }
     }
    Đóng gói = Giấu dữ liệu, cung cấp truy cập thông qua các
     phương thức
    2009-2010                 http://mim.hus.edu.vn             22
Cài đặt hàm dựng
   Hàm dựng chứa các lệnh để khởi tạo giá trị các thuộc
    tính của một đối tượng
           Kiểu giá trị trả lại của hàm dựng là lớp tương ứng, do vậy
            khai báo hàm dựng không chứa kiểu trả lại
           Hàm dựng cũng không có lệnh trả giá trị (return)
   Ví dụ
     public BankAccount() {
        balance = 0;
     }
     public BankAccount(double initialBalance) {
        balance = initialBalance;
     }

2009-2010                       http://mim.hus.edu.vn                    23
Ví dụ gọi hàm dựng
   BankAccount harrysChecking = new BankAccount(1000);
       Tạo 1 đối tượng mới có kiểu BankAccount;
       Ở đây, hàm dựng được gọi là hàm dựng thứ 2
            Trường balance được gán giá trị của tham biến
             initialBalance = 1000;
       Hàm trả lại tham chiếu tới đối tượng mới tạo
        (địa chỉ ô nhớ), lưu vào biến harrysChecking


        2009-2010              http://mim.hus.edu.vn         24
Cài đặt phương thức
   Phương thức có thể có hoặc không trả lại giá trị
   Ví dụ
     public void withdraw(double amount) {
        double newBalance = balance - amount;
        balance = newBalance;
     }

     public double getBalance() {
        return balance;
     }


2009-2010               http://mim.hus.edu.vn          25
Ví dụ gọi phương thức
   harrysChecking.deposit(500);
      Tham biến amount có giá trị 500

      Biến newBalance của phương thức

       deposit được tính bằng giá trị thuộc tính
       balance (1000) của đối tượng
       harrysChecking cộng với giá trị tham
       biến amount
      Thuộc tính balance được gán bằng giá trị

       biến newBalance (1500).

2009-2010           http://mim.hus.edu.vn      26
Thử nghiệm 1 lớp
   Lớp BankAccount (BankAccount.java – ch3)
   Lớp thử nghiệm (VD BankAccountTester.java):
    lớp chứa hàm main, trong đó có chứa các lệnh:
           Tạo 1 hoặc nhiều đối tượng của lớp muốn thử
           Gọi các phương thức muốn thử
           In ra kết quả
   Quy trình xây dựng chương trình:
           Tạo 1 thư mục con cho chương trình, tạo 2 tệp chứa 2 lớp
            trong đó
           Biên dịch 2 tệp
           Chạy lớp thử nghiệm

2009-2010                      http://mim.hus.edu.vn                   27
Thử nghiệm 1 lớp với BlueJ
   Giá trị trả lại của
    phương thức
    getBalance sau
    khi tạo 1 đối tượng
    với giá trị khởi đầu
    của thuộc tính
    balance là 500




        2009-2010          http://mim.hus.edu.vn   28
Các loại biến
   Có 3 loại biến:
           Biến tương ứng với các trường dữ liệu (VD: balance trong
            BankAccount)
           Biến địa phương (VD: newBalance trong phương thức
            deposit)
           Tham biến của các phương thức (VD: amount trong phương
            thức deposit).
   Phạm vi biến:
           Trường dữ liệu: thuộc về đối tượng
           Biến địa phương: khối lệnh (block) chứa khai báo biến
           Tham biến của phương thức: trong toàn bộ phương thức
                Tên biến địa phương trong 1 phương thức không được trùng
                 với tên 1 tham biến của phương thức đó

2009-2010                         http://mim.hus.edu.vn                     29
Tham biến ẩn và this
   Nhắc lại: tham biến ẩn của 1 phương thức là đối tượng
    áp dụng phương thức đó
   Từ khoá this dùng để chỉ tham biến ẩn
   Trong 1 phương thức, khi dùng 1 trường dữ liệu thực ra
    là dùng trường dữ liệu của tham biến ẩn (this)
       double newBalance = balance - amount;
    tương đương với
       double newBalance = this.balance - amount;
   Nếu trong phương thức có biến địa phương hay tham
    biến trùng tên với trường dữ liệu, muốn tham chiếu tới
    trường dữ liệu cần viết tường minh tham biến ẩn this


    2009-2010             http://mim.hus.edu.vn              30
Biến tĩnh (static)
   Nếu 1 trường dữ liệu (thuộc tính các đối tượng trong
    1 lớp) được khai báo là biến tĩnh thì:
           Tất cả các đối tượng thuộc lớp đó chia sẻ 1 vùng nhớ chung
            cho biến tĩnh này
           Vùng nhớ cho biến tĩnh được cấp phát mà không cần tạo đối
            tượng mới
   Các giá trị hằng của 1 lớp thường được khai báo với
    bộ từ khoá public static final
   Ví dụ:
           Các hằng trong lớp bao kiểu số nguyên Integer
           CashRegister.java và CashRegisterTester.java (BigJava, ch4)

2009-2010                       http://mim.hus.edu.vn                31
Nhập dữ liệu
   Dữ liệu từ bàn phím được truyền cho chương trình thông
    qua đối tượng System.in dưới dạng 1 chuỗi các byte
   Từ Java 5.0, có lớp Scanner (gói java.util) cung cấp
    các phương thức nhập dữ liệu thuận tiện hơn
       VD sử dụng:
        Scanner in = new Scanner(System.in);
        System.out.print("Enter quantity: ");
        int quantity = in.nextInt();
       nextDouble cho phép đọc 1 số thực
       nextLine cho phép đọc 1 dòng văn bản (tới khi ấn phím Enter)
       nextWord cho phép đọc 1 từ (tới khi ấn phím cách)
   Chương trình ví dụ: InputTester.java
     2009-2010                 http://mim.hus.edu.vn               32
Nhập dữ liệu qua hộp thoại
   Lớp thư viện javax.swing.JOptionPane
           String input =
            JOptionPane.showInputDialog(prompt);
           Đổi xâu sang số nếu cần thiết:
               int count = Integer.parseInt(input);




2009-2010                   http://mim.hus.edu.vn      33

More Related Content

Similar to Oop 3

Tai lieu huong_dan_tu_hoc_visual_studio2010
Tai lieu huong_dan_tu_hoc_visual_studio2010Tai lieu huong_dan_tu_hoc_visual_studio2010
Tai lieu huong_dan_tu_hoc_visual_studio2010Nhat Linh Luong
 
Lap trinh huong_doi_tuong_cpp_dhct_lesson09
Lap trinh huong_doi_tuong_cpp_dhct_lesson09Lap trinh huong_doi_tuong_cpp_dhct_lesson09
Lap trinh huong_doi_tuong_cpp_dhct_lesson09xcode_esvn
 
ChuDe3_Nhom16
ChuDe3_Nhom16ChuDe3_Nhom16
ChuDe3_Nhom16Linh Dang
 
ChuDe3_Nhom16
ChuDe3_Nhom16ChuDe3_Nhom16
ChuDe3_Nhom16Linh Dang
 
Thuc hanh ado.net_bai_03
Thuc hanh ado.net_bai_03Thuc hanh ado.net_bai_03
Thuc hanh ado.net_bai_03Thanh Điền
 
Lappj trình hướng đối tượng
Lappj trình hướng đối tượngLappj trình hướng đối tượng
Lappj trình hướng đối tượngHưởng Nguyễn
 
Pplthdt c02 lop_doi_tuong_v13.09a
Pplthdt c02 lop_doi_tuong_v13.09aPplthdt c02 lop_doi_tuong_v13.09a
Pplthdt c02 lop_doi_tuong_v13.09aPix Nhox
 
LAB 4-5-6 XAY DUNG PROJECT BIGSCHOOL.pdf
LAB 4-5-6 XAY DUNG PROJECT BIGSCHOOL.pdfLAB 4-5-6 XAY DUNG PROJECT BIGSCHOOL.pdf
LAB 4-5-6 XAY DUNG PROJECT BIGSCHOOL.pdfVinhVinh58
 

Similar to Oop 3 (20)

Oop 5
Oop 5Oop 5
Oop 5
 
Oop 0
Oop 0Oop 0
Oop 0
 
Tai lieu huong_dan_tu_hoc_visual_studio2010
Tai lieu huong_dan_tu_hoc_visual_studio2010Tai lieu huong_dan_tu_hoc_visual_studio2010
Tai lieu huong_dan_tu_hoc_visual_studio2010
 
Oop 2
Oop 2Oop 2
Oop 2
 
Chapter 6
Chapter 6Chapter 6
Chapter 6
 
Lap trinh huong_doi_tuong_cpp_dhct_lesson09
Lap trinh huong_doi_tuong_cpp_dhct_lesson09Lap trinh huong_doi_tuong_cpp_dhct_lesson09
Lap trinh huong_doi_tuong_cpp_dhct_lesson09
 
Bai tap php_m123
Bai tap php_m123Bai tap php_m123
Bai tap php_m123
 
Dotnet
DotnetDotnet
Dotnet
 
Chuong5 (2)
Chuong5 (2)Chuong5 (2)
Chuong5 (2)
 
ChuDe3_Nhom16
ChuDe3_Nhom16ChuDe3_Nhom16
ChuDe3_Nhom16
 
ChuDe3_Nhom16
ChuDe3_Nhom16ChuDe3_Nhom16
ChuDe3_Nhom16
 
Thuc hanh ado.net_bai_03
Thuc hanh ado.net_bai_03Thuc hanh ado.net_bai_03
Thuc hanh ado.net_bai_03
 
Oop 4
Oop 4Oop 4
Oop 4
 
Lappj trình hướng đối tượng
Lappj trình hướng đối tượngLappj trình hướng đối tượng
Lappj trình hướng đối tượng
 
Pplthdt c02 lop_doi_tuong_v13.09a
Pplthdt c02 lop_doi_tuong_v13.09aPplthdt c02 lop_doi_tuong_v13.09a
Pplthdt c02 lop_doi_tuong_v13.09a
 
Giáo trình visual basic
Giáo trình visual basicGiáo trình visual basic
Giáo trình visual basic
 
Cơ bản về visual basic
Cơ bản về visual basicCơ bản về visual basic
Cơ bản về visual basic
 
Lập trình hướng đối tượng - p2
Lập trình hướng đối tượng - p2Lập trình hướng đối tượng - p2
Lập trình hướng đối tượng - p2
 
LAB 4-5-6 XAY DUNG PROJECT BIGSCHOOL.pdf
LAB 4-5-6 XAY DUNG PROJECT BIGSCHOOL.pdfLAB 4-5-6 XAY DUNG PROJECT BIGSCHOOL.pdf
LAB 4-5-6 XAY DUNG PROJECT BIGSCHOOL.pdf
 
Chuong 4
Chuong 4Chuong 4
Chuong 4
 

More from Thai Hoc Vu

More from Thai Hoc Vu (9)

Ngôn ngữ tiếng nhật hiện đại
Ngôn ngữ tiếng nhật hiện đạiNgôn ngữ tiếng nhật hiện đại
Ngôn ngữ tiếng nhật hiện đại
 
Bài tập ôn lập trình
Bài tập ôn lập trìnhBài tập ôn lập trình
Bài tập ôn lập trình
 
Giáo trình uốn tóc phần 1
Giáo trình uốn tóc phần 1Giáo trình uốn tóc phần 1
Giáo trình uốn tóc phần 1
 
Danh mục cable
Danh mục cableDanh mục cable
Danh mục cable
 
OOP-9
OOP-9OOP-9
OOP-9
 
Oop 7
Oop 7Oop 7
Oop 7
 
Oop 1
Oop 1Oop 1
Oop 1
 
Oop 13
Oop 13Oop 13
Oop 13
 
Oop 11
Oop 11Oop 11
Oop 11
 

Recently uploaded

50 ĐỀ ĐỀ XUẤT THI VÀO 10 THPT SỞ GIÁO DỤC THANH HÓA MÔN TIẾNG ANH 9 CÓ TỰ LUẬ...
50 ĐỀ ĐỀ XUẤT THI VÀO 10 THPT SỞ GIÁO DỤC THANH HÓA MÔN TIẾNG ANH 9 CÓ TỰ LUẬ...50 ĐỀ ĐỀ XUẤT THI VÀO 10 THPT SỞ GIÁO DỤC THANH HÓA MÔN TIẾNG ANH 9 CÓ TỰ LUẬ...
50 ĐỀ ĐỀ XUẤT THI VÀO 10 THPT SỞ GIÁO DỤC THANH HÓA MÔN TIẾNG ANH 9 CÓ TỰ LUẬ...Nguyen Thanh Tu Collection
 
SÁNG KIẾN “THIẾT KẾ VÀ SỬ DỤNG INFOGRAPHIC TRONG DẠY HỌC ĐỊA LÍ 11 (BỘ SÁCH K...
SÁNG KIẾN “THIẾT KẾ VÀ SỬ DỤNG INFOGRAPHIC TRONG DẠY HỌC ĐỊA LÍ 11 (BỘ SÁCH K...SÁNG KIẾN “THIẾT KẾ VÀ SỬ DỤNG INFOGRAPHIC TRONG DẠY HỌC ĐỊA LÍ 11 (BỘ SÁCH K...
SÁNG KIẾN “THIẾT KẾ VÀ SỬ DỤNG INFOGRAPHIC TRONG DẠY HỌC ĐỊA LÍ 11 (BỘ SÁCH K...Nguyen Thanh Tu Collection
 
CHƯƠNG VII LUẬT DÂN SỰ (2) Pháp luật đại cương.pptx
CHƯƠNG VII LUẬT DÂN SỰ (2) Pháp luật đại cương.pptxCHƯƠNG VII LUẬT DÂN SỰ (2) Pháp luật đại cương.pptx
CHƯƠNG VII LUẬT DÂN SỰ (2) Pháp luật đại cương.pptx22146042
 
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdfChuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdfhoangtuansinh1
 
Slide Webinar Hướng dẫn sử dụng ChatGPT cho người mới bắt đầ...
Slide Webinar Hướng dẫn sử dụng ChatGPT cho người mới bắt đầ...Slide Webinar Hướng dẫn sử dụng ChatGPT cho người mới bắt đầ...
Slide Webinar Hướng dẫn sử dụng ChatGPT cho người mới bắt đầ...Học viện Kstudy
 
200 câu hỏi trắc nghiệm ôn tập PLDC.pdf
200 câu hỏi trắc nghiệm ôn tập  PLDC.pdf200 câu hỏi trắc nghiệm ôn tập  PLDC.pdf
200 câu hỏi trắc nghiệm ôn tập PLDC.pdfdong92356
 
Chàm - Bệnh án (da liễu - bvdlct ctump) .pptx
Chàm - Bệnh án (da liễu - bvdlct ctump) .pptxChàm - Bệnh án (da liễu - bvdlct ctump) .pptx
Chàm - Bệnh án (da liễu - bvdlct ctump) .pptxendkay31
 
BỘ ĐỀ KIỂM TRA CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO CẤU TRÚC ĐỀ MIN...
BỘ ĐỀ KIỂM TRA CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO CẤU TRÚC ĐỀ MIN...BỘ ĐỀ KIỂM TRA CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO CẤU TRÚC ĐỀ MIN...
BỘ ĐỀ KIỂM TRA CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO CẤU TRÚC ĐỀ MIN...Nguyen Thanh Tu Collection
 
[GIẢI PHẪU BỆNH] Tổn thương cơ bản của tb bào mô
[GIẢI PHẪU BỆNH] Tổn thương cơ bản của tb bào mô[GIẢI PHẪU BỆNH] Tổn thương cơ bản của tb bào mô
[GIẢI PHẪU BỆNH] Tổn thương cơ bản của tb bào môBryan Williams
 
Hệ phương trình tuyến tính và các ứng dụng trong kinh tế
Hệ phương trình tuyến tính và các ứng dụng trong kinh tếHệ phương trình tuyến tính và các ứng dụng trong kinh tế
Hệ phương trình tuyến tính và các ứng dụng trong kinh tếngTonH1
 
Ma trận - định thức và các ứng dụng trong kinh tế
Ma trận - định thức và các ứng dụng trong kinh tếMa trận - định thức và các ứng dụng trong kinh tế
Ma trận - định thức và các ứng dụng trong kinh tếngTonH1
 
Sơ đồ tư duy môn sinh học bậc THPT.pdf
Sơ đồ tư duy môn sinh học bậc THPT.pdfSơ đồ tư duy môn sinh học bậc THPT.pdf
Sơ đồ tư duy môn sinh học bậc THPT.pdftohoanggiabao81
 
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh lí
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh líKiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh lí
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh líDr K-OGN
 
ôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhh
ôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhhôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhh
ôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhhvanhathvc
 
Trích dẫn trắc nghiệm tư tưởng HCM5.docx
Trích dẫn trắc nghiệm tư tưởng HCM5.docxTrích dẫn trắc nghiệm tư tưởng HCM5.docx
Trích dẫn trắc nghiệm tư tưởng HCM5.docxnhungdt08102004
 
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...Nguyen Thanh Tu Collection
 
Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...
Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...
Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...Nguyen Thanh Tu Collection
 
Bai 1 cong bo mot cong trinh nghien cuu khoa hoc
Bai 1 cong bo mot cong trinh nghien cuu khoa hocBai 1 cong bo mot cong trinh nghien cuu khoa hoc
Bai 1 cong bo mot cong trinh nghien cuu khoa hocVnPhan58
 
Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...
Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...
Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...hoangtuansinh1
 
10 ĐỀ KIỂM TRA + 6 ĐỀ ÔN TẬP CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO C...
10 ĐỀ KIỂM TRA + 6 ĐỀ ÔN TẬP CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO C...10 ĐỀ KIỂM TRA + 6 ĐỀ ÔN TẬP CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO C...
10 ĐỀ KIỂM TRA + 6 ĐỀ ÔN TẬP CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO C...Nguyen Thanh Tu Collection
 

Recently uploaded (20)

50 ĐỀ ĐỀ XUẤT THI VÀO 10 THPT SỞ GIÁO DỤC THANH HÓA MÔN TIẾNG ANH 9 CÓ TỰ LUẬ...
50 ĐỀ ĐỀ XUẤT THI VÀO 10 THPT SỞ GIÁO DỤC THANH HÓA MÔN TIẾNG ANH 9 CÓ TỰ LUẬ...50 ĐỀ ĐỀ XUẤT THI VÀO 10 THPT SỞ GIÁO DỤC THANH HÓA MÔN TIẾNG ANH 9 CÓ TỰ LUẬ...
50 ĐỀ ĐỀ XUẤT THI VÀO 10 THPT SỞ GIÁO DỤC THANH HÓA MÔN TIẾNG ANH 9 CÓ TỰ LUẬ...
 
SÁNG KIẾN “THIẾT KẾ VÀ SỬ DỤNG INFOGRAPHIC TRONG DẠY HỌC ĐỊA LÍ 11 (BỘ SÁCH K...
SÁNG KIẾN “THIẾT KẾ VÀ SỬ DỤNG INFOGRAPHIC TRONG DẠY HỌC ĐỊA LÍ 11 (BỘ SÁCH K...SÁNG KIẾN “THIẾT KẾ VÀ SỬ DỤNG INFOGRAPHIC TRONG DẠY HỌC ĐỊA LÍ 11 (BỘ SÁCH K...
SÁNG KIẾN “THIẾT KẾ VÀ SỬ DỤNG INFOGRAPHIC TRONG DẠY HỌC ĐỊA LÍ 11 (BỘ SÁCH K...
 
CHƯƠNG VII LUẬT DÂN SỰ (2) Pháp luật đại cương.pptx
CHƯƠNG VII LUẬT DÂN SỰ (2) Pháp luật đại cương.pptxCHƯƠNG VII LUẬT DÂN SỰ (2) Pháp luật đại cương.pptx
CHƯƠNG VII LUẬT DÂN SỰ (2) Pháp luật đại cương.pptx
 
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdfChuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
 
Slide Webinar Hướng dẫn sử dụng ChatGPT cho người mới bắt đầ...
Slide Webinar Hướng dẫn sử dụng ChatGPT cho người mới bắt đầ...Slide Webinar Hướng dẫn sử dụng ChatGPT cho người mới bắt đầ...
Slide Webinar Hướng dẫn sử dụng ChatGPT cho người mới bắt đầ...
 
200 câu hỏi trắc nghiệm ôn tập PLDC.pdf
200 câu hỏi trắc nghiệm ôn tập  PLDC.pdf200 câu hỏi trắc nghiệm ôn tập  PLDC.pdf
200 câu hỏi trắc nghiệm ôn tập PLDC.pdf
 
Chàm - Bệnh án (da liễu - bvdlct ctump) .pptx
Chàm - Bệnh án (da liễu - bvdlct ctump) .pptxChàm - Bệnh án (da liễu - bvdlct ctump) .pptx
Chàm - Bệnh án (da liễu - bvdlct ctump) .pptx
 
BỘ ĐỀ KIỂM TRA CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO CẤU TRÚC ĐỀ MIN...
BỘ ĐỀ KIỂM TRA CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO CẤU TRÚC ĐỀ MIN...BỘ ĐỀ KIỂM TRA CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO CẤU TRÚC ĐỀ MIN...
BỘ ĐỀ KIỂM TRA CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO CẤU TRÚC ĐỀ MIN...
 
[GIẢI PHẪU BỆNH] Tổn thương cơ bản của tb bào mô
[GIẢI PHẪU BỆNH] Tổn thương cơ bản của tb bào mô[GIẢI PHẪU BỆNH] Tổn thương cơ bản của tb bào mô
[GIẢI PHẪU BỆNH] Tổn thương cơ bản của tb bào mô
 
Hệ phương trình tuyến tính và các ứng dụng trong kinh tế
Hệ phương trình tuyến tính và các ứng dụng trong kinh tếHệ phương trình tuyến tính và các ứng dụng trong kinh tế
Hệ phương trình tuyến tính và các ứng dụng trong kinh tế
 
Ma trận - định thức và các ứng dụng trong kinh tế
Ma trận - định thức và các ứng dụng trong kinh tếMa trận - định thức và các ứng dụng trong kinh tế
Ma trận - định thức và các ứng dụng trong kinh tế
 
Sơ đồ tư duy môn sinh học bậc THPT.pdf
Sơ đồ tư duy môn sinh học bậc THPT.pdfSơ đồ tư duy môn sinh học bậc THPT.pdf
Sơ đồ tư duy môn sinh học bậc THPT.pdf
 
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh lí
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh líKiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh lí
Kiểm tra chạy trạm lí thuyết giữa kì giải phẫu sinh lí
 
ôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhh
ôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhhôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhh
ôn tập lịch sử hhhhhhhhhhhhhhhhhhhhhhhhhh
 
Trích dẫn trắc nghiệm tư tưởng HCM5.docx
Trích dẫn trắc nghiệm tư tưởng HCM5.docxTrích dẫn trắc nghiệm tư tưởng HCM5.docx
Trích dẫn trắc nghiệm tư tưởng HCM5.docx
 
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...
Sáng kiến “Sử dụng ứng dụng Quizizz nhằm nâng cao chất lượng ôn thi tốt nghiệ...
 
Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...
Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...
Sáng kiến Dạy học theo định hướng STEM một số chủ đề phần “vật sống”, Khoa họ...
 
Bai 1 cong bo mot cong trinh nghien cuu khoa hoc
Bai 1 cong bo mot cong trinh nghien cuu khoa hocBai 1 cong bo mot cong trinh nghien cuu khoa hoc
Bai 1 cong bo mot cong trinh nghien cuu khoa hoc
 
Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...
Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...
Thong bao 337-DHPY (24.4.2024) thi sat hach Ngoai ngu dap ung Chuan dau ra do...
 
10 ĐỀ KIỂM TRA + 6 ĐỀ ÔN TẬP CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO C...
10 ĐỀ KIỂM TRA + 6 ĐỀ ÔN TẬP CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO C...10 ĐỀ KIỂM TRA + 6 ĐỀ ÔN TẬP CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO C...
10 ĐỀ KIỂM TRA + 6 ĐỀ ÔN TẬP CUỐI KÌ 2 VẬT LÝ 11 - KẾT NỐI TRI THỨC - THEO C...
 

Oop 3

  • 1. Bài 3: Cài đặt lớp Giảng viên: Nguyễn Thị Minh Huyền nguyenthiminhhuyen@hus.edu.vn Đỗ Thanh Hà dothanhha@hus.edu.vn
  • 2. Tài liệu tham khảo  BigJava – chương 3, 4 2009-2010 http://mim.hus.edu.vn 2
  • 3. Trừu tượng và đóng gói dữ liệu  Lập trình hướng đối tượng đòi hỏi thiết kế các lớp đối tượng như là những hộp đen (black box):  Giấu đi cách hoạt động bên trong và các chi tiết dữ liệu không quan trọng => đóng gói dữ liệu (encapsulation)  Khái niệm (concept) của mỗi hộp đen là kết quả của quá trình trừu tượng hoá (abstraction)  Mô hình hoá sự vật hiện tượng  Bỏ qua các tiểu tiết, chỉ giữ lại các đặc tính cơ bản của đối tượng 2009-2010 http://mim.hus.edu.vn 3
  • 4. Các mức trừu tượng – ví dụ trong đời sống (1) 2009-2010 http://mim.hus.edu.vn 4
  • 5. Các mức trừu tượng – ví dụ trong đời sống (2)  Người dùng xe không cần biết các hộp đen hoạt động thế nào bên trong  Tương tác của hộp đen với thế giới bên ngoài được định nghĩa chính xác  Người lái tương tác với xe bằng cách sử dụng bàn đạp, các nút bấm, v.v.  Thợ cơ khí có thể kiểm tra khối điều khiển động cơ có gửi tín hiệu đúng tới các tiếp xúc không  Đối với nhà sản xuất động cơ, các tụ điện và bóng bán dẫn là các hộp đen sản xuất bởi các nhà máy linh kiện điện tử  Đóng gói là yếu tố mang lại tính hiệu quả  Thợ cơ khí chỉ làm việc với các bộ phận của xe hơi (như khối điều khiển điện tử), mà không làm việc với các bộ cảm biến và bóng bán dẫn  Người lái xe chỉ lo việc tương tác với xe (như đổ xăng vào xe) chứ không cần biết hoạt động bên trong của động cơ hay của bộ điều khiển như thế nào. 2009-2010 http://mim.hus.edu.vn 5
  • 6. Các mức trừu tượng - Thiết kế phần mềm (1) 2009-2010 http://mim.hus.edu.vn 6
  • 7. Các mức trừu tượng - Thiết kế phần mềm (2)  Trước kia, người lập trình chỉ làm việc với dữ liệu kiểu nguyên thuỷ: số và kí tự  Thao tác với quá nhiều dữ liệu dễ gây lỗi  Giải pháp: Đóng gói các tính toán thường xuyên thành các hộp đen phần mềm  Trừu tượng hoá: đưa ra các kiểu dữ liệu bậc cao hơn (có cấu trúc)  Lập trình hướng đối tượng: đối tượng là hộp đen  Đóng gói: Người dùng đối tượng chỉ biết các hành vi của nó, không biết cấu trúc hoạt động bên trong thế nào  Thiết kế phần mềm: mô hình hoá (trừu tượng hoá) đối tượng  Định nghĩa các hành vi (behaviour) của lớp đối tượng  Cài đặt lớp 2009-2010 http://mim.hus.edu.vn 7
  • 8. Thiết kế lớp - Ví dụ  Yêu cầu:  Thiết kế lớp tài khoản ngân hàng (BankAccount) cho một ứng dụng quản lí tài chính 2009-2010 http://mim.hus.edu.vn 8
  • 9. Thiết kế giao diện công khai (public) của lớp (1)  Trừu tượng hoá:  Hành vi của đối tượng tài khoản ngân hàng  Chuyển một số tiền vào  Rút một số tiền ra  Xem số tiền đang có 2009-2010 http://mim.hus.edu.vn 9
  • 10. Thiết kế giao diện công khai (public) của lớp (2)  Xác định phương thức  Các phương thức công khai cần có cho lớp BankAccount:  deposit  withdraw  getBalance  Lời gọi các phương thức này có dạng:  harrysChecking.deposit(2000);  harrysChecking.withdraw(500);  System.out.println(harrysChecking.getBalance()); 2009-2010 http://mim.hus.edu.vn 10
  • 11. Thiết kế giao diện công khai (public) của lớp (3)  Định nghĩa phương thức  Cú pháp accessSpecifier returnType methodName(parameterType parameterName, . . .) { method body }  Ví dụ  public void deposit(double amount) { . . . }  public void withdraw(double amount) { . . . }  public double getBalance() { . . . } 2009-2010 http://mim.hus.edu.vn 11
  • 12. Thiết kế giao diện công khai (public) của lớp (4)  Định nghĩa hàm dựng (constructor)  Hàm dựng khởi tạo các biến (thuộc tính) của một thực thể  Tên hàm dựng trùng tên lớp  Các lệnh trong thân một hàm dựng được thực hiện khi tạo đối tượng mới bằng hàm dựng này (với từ khoá new)  Một lớp có thể có nhiều hàm dựng, các hàm dựng phân biệt được với nhau nhờ danh sách tham biến hiện khác nhau  Cú pháp accessSpecifier ClassName(parameterType parameterName, . . .) { constructor body }  Ví dụ public BankAccount(double initialBalance) { . . . } 2009-2010 http://mim.hus.edu.vn 12
  • 13. Giao diện công khai của lớp BankAccount public class BankAccount{ // Constructors public BankAccount(){ // body--filled in later } public BankAccount(double initialBalance) { // body--filled in later } // Methods public void deposit(double amount) { // body--filled in later } public void withdraw(double amount) { // body--filled in later } public double getBalance() { // body--filled in later } // private fields--filled in later } 2009-2010 http://mim.hus.edu.vn 13
  • 14. Định nghĩa lớp  Cú pháp accessSpecifier class ClassName { constructors methods fields }  Fields: Các trường dữ liệu (thuộc tính đối tượng) 2009-2010 http://mim.hus.edu.vn 14
  • 15. Tài liệu chương trình (documentation)  Cần cho người sử dụng lớp: API documentation  Nội dung tài liệu được sinh tự động (dùng javadoc) từ các chú thích trong chương trình  Có cú pháp quy định cho các loại chú thích  chú thích cho từng phương thức: mô tả phương thức, danh sách tham biến, giá trị trả lại  chú thích cho lớp: mô tả lớp, thông tin về tác giả, phiên bản phần mềm  Cần làm chú thích tài liệu cho tất cả các lớp, phương thức, tham biến, giá trị trả lại 2009-2010 http://mim.hus.edu.vn 15
  • 16. Chú thích giao diện công khai /** Withdraws money from the bank account. @param amount the amount to withdraw */ public void withdraw(double amount) { // implementation filled in later }   /** Gets the current balance of the bank account. @return the current balance */ public double getBalance() { // implementation filled in later } 2009-2010 http://mim.hus.edu.vn 16
  • 17. Chú thích lớp /** A bank account has a balance that can be changed by deposits and withdrawals. */ public class BankAccount { . . . } 2009-2010 http://mim.hus.edu.vn 17
  • 18. Javadoc – method summary 2009-2010 http://mim.hus.edu.vn 18
  • 19. Javadoc – method detail 2009-2010 http://mim.hus.edu.vn 19
  • 20. Các trường dữ liệu (1)  Các trường dữ liệu là các thuộc tính của các cá thể (instance) trong lớp  Cú pháp khai báo các trường dữ liệu trong lớp như sau: accessSpecifier class ClassName { ... accessSpecifier fieldType fieldName; ... }  Nên đặt quyền truy nhập của tất cả các trường là private (bảo đảm tính vẹn toàn dữ liệu) 2009-2010 http://mim.hus.edu.vn 20
  • 21. Các trường dữ liệu (2)  Ví dụ: public class BankAccount { . . . private double balance; . . . } 2009-2010 http://mim.hus.edu.vn 21
  • 22. Truy cập trường dữ liệu  Phương thức deposit của lớp BankAccount có thể truy cập trường dữ liệu balance: public void deposit(double amount){    double newBalance = balance + amount;    balance = newBalance; }  Các phương thức thuộc lớp khác không truy cập được public class BankRobber {    public static void main(String[] args){      BankAccount momsSavings = new BankAccount(1000);      . . .      momsSavings.balance = -1000; // ERROR    } }  Đóng gói = Giấu dữ liệu, cung cấp truy cập thông qua các phương thức 2009-2010 http://mim.hus.edu.vn 22
  • 23. Cài đặt hàm dựng  Hàm dựng chứa các lệnh để khởi tạo giá trị các thuộc tính của một đối tượng  Kiểu giá trị trả lại của hàm dựng là lớp tương ứng, do vậy khai báo hàm dựng không chứa kiểu trả lại  Hàm dựng cũng không có lệnh trả giá trị (return)  Ví dụ public BankAccount() { balance = 0; } public BankAccount(double initialBalance) { balance = initialBalance; } 2009-2010 http://mim.hus.edu.vn 23
  • 24. Ví dụ gọi hàm dựng  BankAccount harrysChecking = new BankAccount(1000);  Tạo 1 đối tượng mới có kiểu BankAccount;  Ở đây, hàm dựng được gọi là hàm dựng thứ 2  Trường balance được gán giá trị của tham biến initialBalance = 1000;  Hàm trả lại tham chiếu tới đối tượng mới tạo (địa chỉ ô nhớ), lưu vào biến harrysChecking 2009-2010 http://mim.hus.edu.vn 24
  • 25. Cài đặt phương thức  Phương thức có thể có hoặc không trả lại giá trị  Ví dụ public void withdraw(double amount) { double newBalance = balance - amount; balance = newBalance; } public double getBalance() { return balance; } 2009-2010 http://mim.hus.edu.vn 25
  • 26. Ví dụ gọi phương thức  harrysChecking.deposit(500);  Tham biến amount có giá trị 500  Biến newBalance của phương thức deposit được tính bằng giá trị thuộc tính balance (1000) của đối tượng harrysChecking cộng với giá trị tham biến amount  Thuộc tính balance được gán bằng giá trị biến newBalance (1500). 2009-2010 http://mim.hus.edu.vn 26
  • 27. Thử nghiệm 1 lớp  Lớp BankAccount (BankAccount.java – ch3)  Lớp thử nghiệm (VD BankAccountTester.java): lớp chứa hàm main, trong đó có chứa các lệnh:  Tạo 1 hoặc nhiều đối tượng của lớp muốn thử  Gọi các phương thức muốn thử  In ra kết quả  Quy trình xây dựng chương trình:  Tạo 1 thư mục con cho chương trình, tạo 2 tệp chứa 2 lớp trong đó  Biên dịch 2 tệp  Chạy lớp thử nghiệm 2009-2010 http://mim.hus.edu.vn 27
  • 28. Thử nghiệm 1 lớp với BlueJ  Giá trị trả lại của phương thức getBalance sau khi tạo 1 đối tượng với giá trị khởi đầu của thuộc tính balance là 500 2009-2010 http://mim.hus.edu.vn 28
  • 29. Các loại biến  Có 3 loại biến:  Biến tương ứng với các trường dữ liệu (VD: balance trong BankAccount)  Biến địa phương (VD: newBalance trong phương thức deposit)  Tham biến của các phương thức (VD: amount trong phương thức deposit).  Phạm vi biến:  Trường dữ liệu: thuộc về đối tượng  Biến địa phương: khối lệnh (block) chứa khai báo biến  Tham biến của phương thức: trong toàn bộ phương thức  Tên biến địa phương trong 1 phương thức không được trùng với tên 1 tham biến của phương thức đó 2009-2010 http://mim.hus.edu.vn 29
  • 30. Tham biến ẩn và this  Nhắc lại: tham biến ẩn của 1 phương thức là đối tượng áp dụng phương thức đó  Từ khoá this dùng để chỉ tham biến ẩn  Trong 1 phương thức, khi dùng 1 trường dữ liệu thực ra là dùng trường dữ liệu của tham biến ẩn (this)  double newBalance = balance - amount; tương đương với  double newBalance = this.balance - amount;  Nếu trong phương thức có biến địa phương hay tham biến trùng tên với trường dữ liệu, muốn tham chiếu tới trường dữ liệu cần viết tường minh tham biến ẩn this 2009-2010 http://mim.hus.edu.vn 30
  • 31. Biến tĩnh (static)  Nếu 1 trường dữ liệu (thuộc tính các đối tượng trong 1 lớp) được khai báo là biến tĩnh thì:  Tất cả các đối tượng thuộc lớp đó chia sẻ 1 vùng nhớ chung cho biến tĩnh này  Vùng nhớ cho biến tĩnh được cấp phát mà không cần tạo đối tượng mới  Các giá trị hằng của 1 lớp thường được khai báo với bộ từ khoá public static final  Ví dụ:  Các hằng trong lớp bao kiểu số nguyên Integer  CashRegister.java và CashRegisterTester.java (BigJava, ch4) 2009-2010 http://mim.hus.edu.vn 31
  • 32. Nhập dữ liệu  Dữ liệu từ bàn phím được truyền cho chương trình thông qua đối tượng System.in dưới dạng 1 chuỗi các byte  Từ Java 5.0, có lớp Scanner (gói java.util) cung cấp các phương thức nhập dữ liệu thuận tiện hơn  VD sử dụng: Scanner in = new Scanner(System.in); System.out.print("Enter quantity: "); int quantity = in.nextInt();  nextDouble cho phép đọc 1 số thực  nextLine cho phép đọc 1 dòng văn bản (tới khi ấn phím Enter)  nextWord cho phép đọc 1 từ (tới khi ấn phím cách)  Chương trình ví dụ: InputTester.java 2009-2010 http://mim.hus.edu.vn 32
  • 33. Nhập dữ liệu qua hộp thoại  Lớp thư viện javax.swing.JOptionPane  String input = JOptionPane.showInputDialog(prompt);  Đổi xâu sang số nếu cần thiết:  int count = Integer.parseInt(input); 2009-2010 http://mim.hus.edu.vn 33