SlideShare une entreprise Scribd logo
1  sur  33
Télécharger pour lire hors ligne
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

Contenu connexe

Similaire à 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
 

Similaire à 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
 

Plus de Thai Hoc Vu

Plus de 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
 

Dernier

30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘIĐiện Lạnh Bách Khoa Hà Nội
 
sách sinh học đại cương - Textbook.pdf
sách sinh học đại cương   -   Textbook.pdfsách sinh học đại cương   -   Textbook.pdf
sách sinh học đại cương - Textbook.pdfTrnHoa46
 
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...Nguyen Thanh Tu Collection
 
Đề cương môn giải phẫu......................
Đề cương môn giải phẫu......................Đề cương môn giải phẫu......................
Đề cương môn giải phẫu......................TrnHoa46
 
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...Nguyen Thanh Tu Collection
 
GIÁO TRÌNH KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
GIÁO TRÌNH  KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘIGIÁO TRÌNH  KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
GIÁO TRÌNH KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘIĐiện Lạnh Bách Khoa Hà Nội
 
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...Nguyen Thanh Tu Collection
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
chuong-7-van-de-gia-dinh-trong-thoi-ky-qua-do-len-cnxh.pdf
chuong-7-van-de-gia-dinh-trong-thoi-ky-qua-do-len-cnxh.pdfchuong-7-van-de-gia-dinh-trong-thoi-ky-qua-do-len-cnxh.pdf
chuong-7-van-de-gia-dinh-trong-thoi-ky-qua-do-len-cnxh.pdfVyTng986513
 
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...Nguyen Thanh Tu Collection
 
1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docx
1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docx1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docx
1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docxTHAO316680
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
Campbell _2011_ - Sinh học - Tế bào - Ref.pdf
Campbell _2011_ - Sinh học - Tế bào - Ref.pdfCampbell _2011_ - Sinh học - Tế bào - Ref.pdf
Campbell _2011_ - Sinh học - Tế bào - Ref.pdfTrnHoa46
 
Các điều kiện bảo hiểm trong bảo hiểm hàng hoá
Các điều kiện bảo hiểm trong bảo hiểm hàng hoáCác điều kiện bảo hiểm trong bảo hiểm hàng hoá
Các điều kiện bảo hiểm trong bảo hiểm hàng hoámyvh40253
 
powerpoint lịch sử đảng cộng sản việt nam.pptx
powerpoint lịch sử đảng cộng sản việt nam.pptxpowerpoint lịch sử đảng cộng sản việt nam.pptx
powerpoint lịch sử đảng cộng sản việt nam.pptxAnAn97022
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
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
 

Dernier (20)

30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
 
sách sinh học đại cương - Textbook.pdf
sách sinh học đại cương   -   Textbook.pdfsách sinh học đại cương   -   Textbook.pdf
sách sinh học đại cương - Textbook.pdf
 
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
 
Đề cương môn giải phẫu......................
Đề cương môn giải phẫu......................Đề cương môn giải phẫu......................
Đề cương môn giải phẫu......................
 
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...
 
GIÁO TRÌNH KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
GIÁO TRÌNH  KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘIGIÁO TRÌNH  KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
GIÁO TRÌNH KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
 
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
1 - MÃ LỖI SỬA CHỮA BOARD MẠCH BẾP TỪ.pdf
1 - MÃ LỖI SỬA CHỮA BOARD MẠCH BẾP TỪ.pdf1 - MÃ LỖI SỬA CHỮA BOARD MẠCH BẾP TỪ.pdf
1 - MÃ LỖI SỬA CHỮA BOARD MẠCH BẾP TỪ.pdf
 
chuong-7-van-de-gia-dinh-trong-thoi-ky-qua-do-len-cnxh.pdf
chuong-7-van-de-gia-dinh-trong-thoi-ky-qua-do-len-cnxh.pdfchuong-7-van-de-gia-dinh-trong-thoi-ky-qua-do-len-cnxh.pdf
chuong-7-van-de-gia-dinh-trong-thoi-ky-qua-do-len-cnxh.pdf
 
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
 
1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docx
1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docx1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docx
1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docx
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
BỘ ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
Campbell _2011_ - Sinh học - Tế bào - Ref.pdf
Campbell _2011_ - Sinh học - Tế bào - Ref.pdfCampbell _2011_ - Sinh học - Tế bào - Ref.pdf
Campbell _2011_ - Sinh học - Tế bào - Ref.pdf
 
Các điều kiện bảo hiểm trong bảo hiểm hàng hoá
Các điều kiện bảo hiểm trong bảo hiểm hàng hoáCác điều kiện bảo hiểm trong bảo hiểm hàng hoá
Các điều kiện bảo hiểm trong bảo hiểm hàng hoá
 
powerpoint lịch sử đảng cộng sản việt nam.pptx
powerpoint lịch sử đảng cộng sản việt nam.pptxpowerpoint lịch sử đảng cộng sản việt nam.pptx
powerpoint lịch sử đảng cộng sản việt nam.pptx
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
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
 

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