• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Oop 2
 

Oop 2

on

  • 1,947 views

Slide java o lop

Slide java o lop

Statistics

Views

Total Views
1,947
Views on SlideShare
1,939
Embed Views
8

Actions

Likes
0
Downloads
67
Comments
0

1 Embed 8

http://www.slideshare.net 8

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Oop 2 Oop 2 Presentation Transcript

    • Bài 2: Sử dụng đối tượng Giảng viên: Nguyễn Thị Minh Huyền nguyenthiminhhuyen@hus.edu.vn Đỗ Thanh Hà dothanhha@hus.edu.vn OOP - 2009-2010 http://mim.hus.edu.vn/elearning 1
    • Tài liệu tham khảo  BigJava - Chương 2, 4, 6, 7 2009-2010 OOP - http://mim.hus.edu.vn/elearning 2
    • Kiểu dữ liệu  Chương trình = Cấu trúc dữ liệu + giải thuật (N. Wirth)  Dữ liệu trong Java  Kiểu dữ liệu nguyên thủy: Số nguyên, số thực, kí tự và xâu kí tự, lôgic (boolean)  Đối tượng 2009-2010 OOP - http://mim.hus.edu.vn/elearning 3
    • Kiểu dữ liệu nguyên thủy (1) Tên kiểu Ý nghĩa Kích thước Miền giá trị char kí tự 2 bytes kí tự bảng mã Unicode byte số nguyên rất ngắn 1 byte -128 127 short số nguyên ngắn 2 bytes -215 215 – 1 int số nguyên 4 bytes -231 231 – 1 long số nguyên dài 8 bytes -2255 2255 – 1 float số thực (chính xác đến 4 bytes 1.4*10-45 3.4*1038 6 chữ số thập phân) double số thực (chính xác đến 8 bytes 4.9*10-324 1.7*10308 15 chữ số thập phân) boolean lôgic 1 bit true, false 2009-2010 OOP - http://mim.hus.edu.vn/elearning 4
    • Kiểu dữ liệu nguyên thủy (2)  Kiểu trống: void  Mỗi kiểu nguyên thủy đều có lớp bao (wrapper class): Character, Byte, Short, Integer, Long, Float, Double, Boolean, Void  Xâu kí tự: Lớp String  Ép kiểu (casting):  (typeName) expression  int x;  x = 1.23; // Error  x = (int) 1.23; // x = 1 2009-2010 OOP - http://mim.hus.edu.vn/elearning 5
    • Các toán tử  Số học: +, -, *, /  Gán: =, +=, -=, *=, /=  Tăng, giảm: ++, --  So sánh: ==, !=, >, >=, <, <=  Lôgic: ||, &, !  Thao tác từng bit: & (AND), | (OR), ^ (XOR)  Dịch chuyển bit: <<, >>, >>>  Thứ tự ưu tiên: như trong C 2009-2010 OOP - http://mim.hus.edu.vn/elearning 6
    • Tên  Các loại tên: tên biến, tên phương thức, tên lớp  Quy tắc đặt tên:  Không được trùng với từ khoá  Bao gồm các chữ cái, chữ số và dấu _  Không được bắt đầu bằng chữ số  Phân biệt chữ hoa chữ thường  Quy ước đặt tên:  Tên biến, tên phương thức bắt đầu bằng chữ thường, tên lớp bắt đầu bằng chữ hoa, tên hằng viết hoa hoàn toàn  Nếu tên là một chuỗi các từ thì chữ cái đầu các từ sau đều viết hoa (VD: oneVariable, oneMethod, OneClass) 2009-2010 OOP - http://mim.hus.edu.vn/elearning 7
    • Biến (1)  Lưu giữ giá trị thuộc kiểu dữ liệu nào đó  Định nghĩa biến  Khai báo:  typeName variableName; // dễ gây lỗi  Khai báo và khởi tạo giá trị biến:  typeName variableName = value;  Ví dụ:  String greeting = "Hello, World!";  PrintStream printer = System.out;  int luckyNumber = 13; 2009-2010 OOP - http://mim.hus.edu.vn/elearning 8
    • Biến (2)  Thay đổi (gán) giá trị biến:  variableName = value;  Ví dụ:  int luckyNumber = 13;  luckyNumber = 12;  Như trong C, có phép gán dạng +=, -=, *=, /=, ++, --  Khái niệm hằng trong Java: biến chỉ có thể gán giá trị một lần  final typeName CONSTNAME;  final typeName CONSTNAME = value; 2009-2010 OOP - http://mim.hus.edu.vn/elearning 9
    • Câu lệnh điều khiển (1)  Cú pháp câu lệnh điều khiển như trong C  Lệnh điều kiện  if (condition) statement1 else statement2  (condition) ? statement1 : statement2;  switch (variable){ case <value1>: statement1 break; … case < valuen>: statementn break; default: statementn+1 } 2009-2010 OOP - http://mim.hus.edu.vn/elearning 10
    • Câu lệnh điều khiển (2)  Lệnh lặp  for (initialization; condition; update) statement  while (condition) statement  do statement while (condition);  Điều khiển trong vòng lặp:  Chuyển sang bước lặp tiếp theo continue;  Thoát khỏi vòng lặp break; 2009-2010 OOP - http://mim.hus.edu.vn/elearning 11
    • Đối tượng và lớp  Đối tượng (object): Thực thể mà ta thao tác trong chương trình (bằng cách gọi các phương thức)  Mỗi đối tượng thuộc vào một lớp (class):  System.out thuộc lớp PrintStream 2009-2010 OOP - http://mim.hus.edu.vn/elearning 12
    • Phương thức (1)  Phương thức (method): Dãy lệnh thao tác trên dữ liệu của các đối tượng  Các đối tượng được xử lí trong chương trình bằng cách gọi tới các phương thức (hàm) của đối tượng đó  Tập các phương thức của một lớp gọi là giao diện của lớp đó  Đặc tả giao diện cho biết người ta có thể làm gì với đối tượng 2009-2010 OOP - http://mim.hus.edu.vn/elearning 13
    • Phương thức (2)  Khi sử dụng một phương thức, cần biết các yếu tố sau:  Tên phương thức  Tham biến ẩn (implicit parameter): phương thức đó của đối tượng nào  Các tham biến hiện (explicit parameters) và kiểu của chúng: dữ liệu đầu vào (input) của phương thức, tức là các đối của phương thức/hàm  Giá trị trả lại (return value) và kiểu của nó  Quyền truy nhập tới phương thức đó (private, public, protected) 2009-2010 OOP - http://mim.hus.edu.vn/elearning 14
    • Phương thức (3)  Một phương thức có thể không có tham biến hiện  Một phương thức cũng có thể không có tham biến ẩn, đó là trường hợp của các phương thức tĩnh (static)  Một phương thức có thể không trả lại giá trị nào, khi đó kiểu trả lại của phương thức là void  Tên phương thức là tải bội (overloaded) nếu như trong một lớp có định nghĩa 2 phương thức trùng tên nhưng danh sách các kiểu tham biến hiện khác nhau 2009-2010 OOP - http://mim.hus.edu.vn/elearning 15
    • Phương thức (4)  Phương thức đặc biệt  Mỗi lớp có một hay nhiều hàm dựng (constructor)  Được gọi khi cần tạo một đối tượng mới thuộc lớp đó  Tên hàm dựng trùng với tên lớp  Giá trị trả lại của hàm dựng là một đối tượng của lớp đó  Mục đích của hàm dựng là khởi tạo giá trị cho các thuộc tính của đối tượng đó  Trong Java không có hàm huỷ (destructor). Việc giải phóng bộ nhớ của đối tượng được thực hiện tự động 2009-2010 OOP - http://mim.hus.edu.vn/elearning 16
    • Định nghĩa phương thức  Trong một lớp, khi khai báo phương thức cần chỉ ra: Quyền truy nhập phương thức, kiểu giá trị trả lại, tên phương thức, danh sách tham biến hiện (kiểu dữ liệu, tên tham biến)  VD 1: 2 phương thức sau thuộc giao diện của lớp String  public int length() // return type: int; no explicit parameter  public String replace(String target, String replacement) // return type: String; // 2 explicit parameters of type String  VD 2: println là tên phương thức tải bội của lớp PrintStream  public void println(String output)  public void println(int output) 2009-2010 OOP - http://mim.hus.edu.vn/elearning 17
    • Lời gọi phương thức (1)  Mỗi lời gọi phương thức xác định đối tượng có phương thức (tham biến ẩn), tên phương thức và danh sách các tham biến hiện  VD: System.out.println("Hello")  System.out là tham biến ẩn tương ứng với tên đối tượng  println là tên phương thức  "Hello" là tham biến hiện - xâu cần in ra  Khi định nghĩa một phương thức trong một lớp, nếu cần gọi tới một phương thức khác của cùng lớp đó thì không cần chỉ ra tham biến ẩn của phương thức gọi đến. 2009-2010 OOP - http://mim.hus.edu.vn/elearning 18
    • Lời gọi phương thức (2)  Ví dụ  String greeting = "Hello, World!";  System.out.println(greeting.length()); 2009-2010 OOP - http://mim.hus.edu.vn/elearning 19
    • Sử dụng đối tượng (1)  Xét ví dụ thao tác với các đối tượng hình chữ nhật  Trong thư viện các lớp có sẵn trong Java, có lớp Rectangle bao gồm các đối tượng hình chữ nhật  Đây là 3 đối tượng hình chữ nhật: 2009-2010 OOP - http://mim.hus.edu.vn/elearning 20
    • Sử dụng đối tượng (2)  Các thuộc tính (dữ liệu) của các đối tượng hình chữ nhật gồm:  x, y: Toạ độ đỉnh góc trên bên trái hình chữ nhật  width, height: chiều rộng, chiều cao hình chữ nhật 2009-2010 OOP - http://mim.hus.edu.vn/elearning 21
    • Sử dụng đối tượng (3)  Giao diện (tập các phương thức) của lớp Rectangle:  Nhiều hàm dựng, trong đó có Rectangle(int x, int y, int width, int height)  Một số phương thức cho phép lấy giá trị các thuộc tính của 1 đối tượng hình chữ nhật như getX(), getWidth(), ...  Một số phương thức cho phép thay đổi giá trị các thuộc tính của 1 đối tượng hình chữ nhật như setSize(int width, int height), translate(int x, int y), ...  Một số phương thức khác cho phép thao tác với các đối tượng hình chữ nhật và các điểm 2009-2010 OOP - http://mim.hus.edu.vn/elearning 22
    • Sử dụng đối tượng (4)  Phương thức truy cập (accessor/getter method) và phương thức biến đổi (mutator/setter method) thuộc tính đối tượng  VD: truy cập - getX, getY; biến đổi - translate  Dùng để cho phép truy cập và biến đổi giá trị các thuộc tính riêng (có quyền truy nhập là private) của 1 đối tượng  Bảo đảm tính toàn vẹn (integrity) dữ liệu khi thao tác trên các thuộc tính này (VD: chiều dài hình chữ nhật không được là số âm) 2009-2010 OOP - http://mim.hus.edu.vn/elearning 23
    • Sử dụng đối tượng (5)  Tạo 1 đối tượng mới thuộc 1 lớp  new ClassName(parameters)  ClassName(parameters) là 1 hàm dựng  Trả lại tham chiếu (reference) tới đối tượng mới được tạo  VD: Tạo đối tượng hình chữ nhật  Rectangle box = new Rectangle(5, 10, 20, 30);  Cùng 1 đối tượng có thể có nhiều biến kiểu đối tượng tham chiếu (trỏ) đến  Rectangle box2 = box;  Biến kiểu đối tượng do vậy khác với biến kiểu nguyên thuỷ 2009-2010 OOP - http://mim.hus.edu.vn/elearning 24
    • int luckyNumber = 13; int luckyNumber2 = luckyNumber; luckyNumber2 = 12;
    • Rectangle box = new Rectangle(5, 10, 20, 30); Rectangle box2 = box; box2.translate(15, 25);
    • Sử dụng đối tượng (6)  Cài đặt 1 chương trình thử nghiệm  Tạo 1 tệp chứa một lớp mới  Phần chính của tên tệp phải trùng với tên lớp, phần mở rộng của tên tệp là .java  Đầu tệp, trước khi định nghĩa lớp phải khai báo các lớp cần sử dụng trong lớp này  Viết phương thức main (chương trình chính)  Tạo ra các đối tượng cần xử lí  Gọi các phương thức để xử lí các đối tượng  In ra kết quả 2009-2010 OOP - http://mim.hus.edu.vn/elearning 27
    • Sử dụng đối tượng (7)  Khai báo các lớp cần sử dụng  Thư viện các lớp trong Java được tổ chức thành các gói (package)  Khi khai báo các lớp cần sử dụng phải chỉ ra tên gói và tên lớp  import packageName.ClassName;  VD, lớp Rectangle nằm trong gói java.awt:  import java.awt.Rectangle;  Thư viện ngầm định được sử dụng trong tất cả các tệp chương trình Java là gói java.lang, dùng các lớp trong gói này không cần khai báo (VD String, System) 2009-2010 OOP - http://mim.hus.edu.vn/elearning 28
    • MoveTester.java 01: import java.awt.Rectangle; 02: 03: public class MoveTester 04: { 05: public static void main(String[] args) 06: { 07: Rectangle box = new Rectangle(5, 10, 20, 30); 08: 09: // Move the rectangle 10: box.translate(15, 25); 11: 12: // Print information about the moved rectangle 13: System.out.println("After moving, the top-left corner is:"); 14: System.out.println(box.getX()); 15: System.out.println(box.getY()); 16: } 17: } After moving, the top-left corner is: 20 35 2009-2010 OOP - http://mim.hus.edu.vn/elearning 29
    • Thử nghiệm trong môi trường tương tác BlueJ 2009-2010 OOP - http://mim.hus.edu.vn/elearning 30
    • API Documentation  API: Application Programming Interface  Tài liệu tra cứu các thư viện chương trình - liệt kê các lớp và các phương thức  Khi lập trình:  Tra cứu API doc để biết cách sử dụng, thao tác với các đối tượng thuộc các lớp đã có sẵn  Tạo API doc cho các lớp của mình để có thể sử dụng lại  Thư viện Java chuẩn:  http://java.sun.com/j2se/1.5/docs/api/index.html  Có thể tải về trên máy 2009-2010 OOP - http://mim.hus.edu.vn/elearning 31
    • API doc của lớp Rectangle 2009-2010 OOP - http://mim.hus.edu.vn/elearning 33
    • Danh sách các phương thức của lớp Rectangle 2009-2010 OOP - http://mim.hus.edu.vn/elearning 34
    • Phương thức translate 2009-2010 OOP - http://mim.hus.edu.vn/elearning 35
    • Phương thức tĩnh (static)  Ví dụ:  Phương thức main  1 số phương thức trong lớp Math  Đặc điểm:  Phương thức tĩnh không có tham biến ẩn  Lời gọi phương thức tĩnh  ClassName. methodName(parameters)  VD: Math.sqrt(4)  Nhận xét: câu lệnh java ClassName giống như lời gọi ClassName.main() 2009-2010 OOP - http://mim.hus.edu.vn/elearning 36