Trường Đại học Công nghệ Sài gònKhoa Công nghệ Thông tinXây Dựng Phần Mềm Hướng Đối Tượng OOPObject Oriented Programming Th.s Hồ Đình Khả Trường Đại học Công nghệ Sài gòn Khoa Công nghệ
Trang 1Trường Đại học Công nghệ Sài gònKhoa Công nghệ Thông tin
Xây Dựng Phần Mềm Hướng Đối Tượng
OOP(Object Oriented Programming)
Th.s Hồ Đình Khả
Trường Đại học Công nghệ Sài gòn Khoa Công nghệ Thông tin
Nội dung
Chương 1: Tổng quan OOP
Chương 2: Ngôn ngữ Java và công cụ
Chương 3: Cài đặt Class và Object
Chương 4: Cấu trúc tuyển tập
Chương 5: Lưu trữ (file, DBMS)
Chương 6: Thiết kế GUI
Chương 7: Mô hình N-Layer
Chương 8: Report
Chương 9: Mô hình phân bố (Option)
Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin
Hình thức đánh giá:
Thi cuối kì: Thực hiện một ứng dụng trên máy.
Tài liệu tham khảo:
[1] Michael A.Smith, Java: an Object-Oriented Language, McGraw-Hill, 2000
[2] Prof Alfons Kemper, Ph D.: Object oriented Data modeling And programming In
java,2000
[3] Copyright by Sams Publishing :Sams Teach Yourself Object Oriented
Programming in 21 Days, 2002
Slide Bài Giảng- ĐHCNSG
Trường Đại học Công nghệ Sài gònKhoa Công nghệ Thông tin
Chương 1
(Object Oriented Programming)
Trang 2Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin
Mục tiêu
Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin
So sánh lập trình cấu trúc và Lập trình OOP
Procedural programming :Bao gồm một tập các chức năng (functions
hay algorithms) giải quyết vấn đề
Algorithms + Data Structures = Programs
OOP : đầu tiên diễn đạt dữ liệu (data), sau đó tìm kiếm các giải thuật
điều hành dữ liệu.
số giờ hay phụ cấp Ngoài ra lương còn phải khấu trừ thuế (Social
Security và Medicare)
Trường Đại học Công nghệ Sài gòn Khoa Công nghệ Thông tin
Lập trình cấu trúc
thủ tục được viết Chương trình chính được viết bằng cách sử dụng các thủ tục theo một trình tự xử lí.
Chúng ta cần viết các thủ tục tương ứng:
computePay(): cung cấp dữ liệu
computeSSTax ()
computeMedicareTax(),
Trang 3Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin
Object-Oriented Programming
Viết chương trình tính lương nhân viên Lương được trả dựa
vào : số giờ hay phục cấp Ngoài ra lương còn phải khấu trừ thuế
(Social Security và Medicare)
Trường Đại học Công nghệ Sài gòn Khoa Công nghệ Thông tin
Object-Oriented Programming
dụ : name, address, employee number, Social Security number, hours
worked variables
phải trả, mail bảng lương,… methods
Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin
Procedural Programming và Object-Oriented Programming
liệu được truyền vào thủ tục
thức có thể truy xuất dữ liệu mà không phải truyền nó vào phương
thức.
bình= (điểm lý thuyết + điểm thực hành)/2 Chương trình cho
phép nhập thông tin sv, tính điểm trung bình, in điểm sv
Ví Dụ:
Trường Đại học Công nghệ Sài gòn Khoa Công nghệ Thông tin
Data Abstraction
Cho phép quản lí tốt hơn các chương trình phức tạp
Functions & Procedures
Modules
Abstract Data Types
Class/Objects
Data Abstract cho phép
Mở rộng ngôn ngữ : Định nghĩa thêm kiểu
Chế tác các thể hiện dữ liệu khác nhau
Trang 4Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin
NameAddress
Trường Đại học Công nghệ Sài gòn Khoa Công nghệ Thông tin
Data Abstraction (tiếp )
Phát sinh hóa đơn
Chấp nhận tên người bán Người bán (saleman)
Chấp nhận kiểu xe đặt hàng Kiểu xe mua
Chấp nhận địa chỉ khách hàng Địa chỉ khách hàng
Chấp nhận tên khách hàng Tên khách hàng
Hành động Thuộc tính
Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin
Data Abstraction (tiếp…)
Data Abstraction là quá trình nhận diện và nhóm dữ liệu và
hành động có liên quan tới một thực thể riêng biệt
Thuận lợi:
Nhận diện các đặt trưng và hành động thiết yếu
Giúp lọai trừ những chi tiết không cần thiết
Trường Đại học Công nghệ Sài gòn Khoa Công nghệ Thông tin
Class
Một Class định nghĩa như là một bản mẫu hay một kiểu chung về một lọai đối tượng nào đó theo thuộc tính và hành vi.
Chấp nhận lọai xe đặt mua Chấp nhận tên người bán Phát sinh hóa đơn
Chấp nhận địa chỉ Chấp nhận tên Tên người bán Kiểu xe mua Địa chỉ khách hàng Tên khách hàng
Class Customer
Trang 5Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin
Stephen là một Object của class Customer
Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin
Tác nhân được gởi từ một object to object khác
Trường Đại học Công nghệ Sài gòn Khoa Công nghệ Thông tin
Class là một prototype của một object
Tất cả object thuộc về một class đều có đặt trưng và hành động giống nhau
Trang 6Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin
Các bài toán ví dụ
bình= (điểm lý thuyết + điểm thực hành)/2 Chương trình cho
phép nhập thông tin sv, tính điểm trung bình, xuất thông tin sv
Behaviors: Tính diện tích, tính chu vi Methods
Trường Đại học Công nghệ Sài gòn Khoa Công nghệ Thông tin
Các bài toán ví dụ
bình= (điểm lý thuyết + điểm thực hành)/2 Chương trình cho phép nhập thông tin sv, tính điểm trung bình, xuất thông tin sv
Behaviors: Tính diện tích, tính chu vi Methods
Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin
Các bài toán ví dụ
bình= (điểm lý thuyết + điểm thực hành)/2 Chương trình cho
phép nhập thông tin sv, tính điểm trung bình, in điểm
Attributes: Mã sv, họ tên, ngày sinh, nơi sinh, lớp, môn học, điểm lý thuyết,
điểm thực hành, điểm trung bình Variables
Behaviors: Nhập thông tin sinh viên, tính điểm trung bình, in điểm
Methods
Trang 7Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin
Mô hình hóa đối tượng
Behaviors: Tính diện tích, tính chu vi Methods
Hình chữ nhật
- Chiều dài
- Chiều rộng+ Tính diện tích+ Tính chu vi
Trường Đại học Công nghệ Sài gòn Khoa Công nghệ Thông tin
Mô hình hóa đối tượng
Hình tròn
- Bán kính+ Tính diện tích+ Tính chu vi
Behaviors : Tính diện tích, tính chu vi Methods
Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin
Constructor, Destructor,Persistence
Thiết lập (Constructor):
Cấp phát bộ nhớ
Khởi tạo thuộc tính
Cho phép truy xuất các thuộc tính và phương thức
Huỷ (Destructor)
Giải phóng không gian cấp phát
Cấm truy xuất các thuộc tính và phương thức
Tính bền vững (Persistence)
Tính bền vững là một khả năng của đối tượng để lưu trữ dữ liệu
trong thời gian sống của đối tượng
Trường Đại học Công nghệ Sài gòn Khoa Công nghệ Thông tin
Bao Bọc và Che Dấu Thông tin (Encapsulation and information hiding)
Quá trình che dấu sự hiện thực chi tiết của một đối tượng từ user được gọi là Encapsulation
Nguyên tắc bao bọc dữ liệu ngăn cấm truy nhập trực tiếp gọi là sựche dấu thông tin
Trang 8Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin
Tính thừa kế (Inheritance)
Cách tổ chức các Classes
Vehicle
Trường Đại học Công nghệ Sài gòn Khoa Công nghệ Thông tin
Tính thừa kế (tt)
Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin
Trang 9Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin
Tính Đa Hình (Polymorphism)
Làm thế nào?
Operation Display
khác nhau trong cùng một lớp hay trong những
Thiết kế các đối tượng
Phát triển các giải thuật cho các phương thức của đối tượng
Mô tả giải thuật, dùng pseudocode
Viết code
Kiểm tra code
Debug
Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin
Những thuận lợi.
Khả năng đối phó với những ứng dụng thuộc lọai khó
Nâng cao tính nhất quán giữa phân tích, thiết kế và lập trình
Nâng cao chia sẽ trong ứng dụng
Tính dùng lại của những kết quả phân tích thiết kế và lập
trình
Giảm bớt các lỗi
Sự thay đổi nhanh hơn
Trường Đại học Công nghệ Sài gòn Khoa Công nghệ Thông tin
Tổng kết
Phương pháp Object-oriented cho phép giải quyết hầu hết các vấn đề
Sự trừu tượng dữ liệu là quá trình nhận diện và nhóm các thuộc tính
Trang 10Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin
Câu hỏi
Các đối tượng trong thế giới thực chứa _ và _
Một trạng thái của đối tượng được lưu trữ trong _
Một hành vi của đối tượng được phơi bày thông qua _
Các dữ liệu nội tại được che đậy từ thế giới bên ngòai và chỉ truy xuất qua phương thức
được biết như dữ liệu _
Bản thiết kế cho một đối tượng phần mềm được gọi là _
Hành vi chung, phổ biến có thể được định nghĩa trong _ và được thừa kế vào _
Một tập phương thức với không hiện thực được gọi là _
Trang 11Trường Đại học Công nghệ Sài gònKhoa Công nghệ Thông tin
Chương 2
Giới Thiệu JAVA
OOP JAVA Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin Core Java / Session 3 / 2 of 19
Mục Tiêu
Hiểu biết các đặt trưng của ngôn ngữ JAVA
Phân cấp các dạng chương trình JAVA
Định nghĩa Java Virtual Machine
Hiểu biết nội dung của Java Development Kit
Phân cấp các đặc trưng mới trong JAVA2
OOP JAVA Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin Core Java / Session 3 / 3 of 19
Khoa Công nghệ Thông tin Core Java / Session 3 / 4 of 19
Cách truyền thống biên dịch chương trình
Trang 12OOP JAVA Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin Core Java / Session 3 / 5 of 19
Compiling code
OOP JAVA Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin Core Java / Session 3 / 6 of 19
Khoa Công nghệ Thông tin Core Java / Session 3 / 7 of 19
Các Thành Phần Của Môi Trường Java
OOP JAVA Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin Core Java / Session 3 / 8 of 19
Java Virtual Machine
máy tính ảo
máy tính
Trang 13OOP JAVA Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin Core Java / Session 3 / 9 of 19
Các Bước Biên Sọan Một Chương Trình Java
Compiler chuyển mã nguồn vào một tập các lệnh, không cần
đích tới cho một processor cụ thể
Interpreter chuyển một tập các lệnh cho phần cứng
JVM khởi tạo một hệ thống runtime giúp cho quá trình thực
Khoa Công nghệ Thông tin Core Java / Session 3 / 10 of 19
Xác định các tập tin class
Áp dụng cho tất cả file *.class , đảm bảo an tòan
Ba phần của file *.class :
OOP JAVA Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin Core Java / Session 3 / 11 of 19
Khoa Công nghệ Thông tin Core Java / Session 3 / 12 of 19
Java Development Kit
Java 1.0 - The first release in 1995
Java 1.1 - The 1997 release
Java 2 - The latest version
1.4
1.5
1.6
Trang 14OOP JAVA Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin Core Java / Session 3 / 13 of 19
JDK Tools
Java Compiler, 'javac':
Dịch chuyển mã nguồn sang mã byte
javac [options] sourcecodename.java
Java Interpreter, 'java'
Bộ thông dịch (thực thi)
java [options] classname
Bộ tạo lập header của C cho phép chương trình C gọi phương thức
của JAVA và ngược lại
javap [options] classname
Bộ tạo tài liệu dạng HTML từ mã nguồn cùng các chú thích bên
trong
javadoc [options] sourcecodename.java
OOP JAVA Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin Core Java / Session 3 / 14 of 19
jdb -host -password [options] sourcecodename.java
Thực thi các ứng dụng nhúng
appletviewer [options] sourcecodename.java / url
OOP JAVA Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin Core Java / Session 3 / 15 of 19
Core Java API
Khoa Công nghệ Thông tin Core Java / Session 3 / 16 of 19
Trang 15OOP JAVA Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin Core Java / Session 3 / 17 of 19
Summary
Multithreaded, Dynamic
Trang 16Trường Đại học Công nghệ Sài gònKhoa Công nghệ Thông tin
Chương 2
Ngôn Ngữ Java
OOP JAVA Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin
Mục Tiêu
Phiên dịch một chương trình Java
Hiểu biết cơ bản ngôn ngữ Java
Kiểu dữ liệu
OOP JAVA Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin
Khoa Công nghệ Thông tin
Truyền các đối số dòng lệnh
class Pass{public static void main(String parameters[]){
System.out.println("This is what the main method received");
System.out.println(parameters[0]);
System.out.println(parameters[1]);
System.out.println(parameters[2]);
}}
Trang 17OOP JAVA Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin
Truyền các đối số dòng lệnh(tt…)
OOP JAVA Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin
Cơ Sở Của Ngôn Ngữ Java
Classes & Methods
Khoa Công nghệ Thông tin
Khai báo Class
Cú pháp khai báo Class
Khoa Công nghệ Thông tin
VD class
Trang 18OOP JAVA Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin
OOP JAVA Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin
Khoa Công nghệ Thông tin
Khoa Công nghệ Thông tin
class
Phức tạp hơn
Nhóm của các dạng khác(primitive hay class)
Bao gồm data và methods
SavitchInString
Trang 19OOP JAVA Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin
Khoa Công nghệ Thông tin
Tên biếnQui định
Không bắt đầu với số.
Chứa số,kí tự, (_) và $ (tránh dùng)
Phân biệt hoa và thường (ThisName và thisName là khác nhau)
Nên
Nên đặt tên có nghĩa (eggsPerBasket hơn là count)
Bắt đầu với kí tự thường.
Hoa đầu từ (eggsPerBasket hơn là eggsperbasket)
Tránh dùng $.
OOP JAVA Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin
Từ khóa
OOP JAVA Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin
Khai báo Array
Có 3 cách:
datatype identifier [ ];
datatype identifier [ ] = new datatype[size];
datatype identifier [ ]= {value1,value2,….valueN};
Trang 20OOP JAVA Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin
Các phương thức trong Class
Định nghĩa một tác vụ trên một đối tượng
Khoa Công nghệ Thông tin
VD
class Temp {static int x = 10; // variable
public static void show( ) { // method
System.out.println(x);
}public static void main(String args[ ]) {
t.show( ); // method call
t1.x = 20;
t1.show( );
}}
OOP JAVA Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin
Phạm Vi truy cập của Method
Khoa Công nghệ Thông tin
+= Addition and assignment
-= Subtraction and assignment
*= Multiplication and assignment
/= Division and assignment
Trang 21OOP JAVA Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin
Bitwise Operators
Khoa Công nghệ Thông tin
OOP JAVA Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin
Khoa Công nghệ Thông tin
Conditional Operator
Cú phápexpression1 ? expression2 : expression3;
Trang 22OOP JAVA Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin
Khoa Công nghệ Thông tin
Độ ưu tiên Operator
OOP JAVA Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin
Định Dạng Xuất
OOP JAVA Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin
if-else statement
Cú pháp
if (condition) {
action1 statements;
} else { action2 statements;
}
Trang 23OOP JAVA Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin
Khoa Công nghệ Thông tin
while loop
while(condition) {
action statements;
: : }
OOP JAVA Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin
Khoa Công nghệ Thông tin
Trang 24OOP JAVA Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin
Khoa Công nghệ Thông tin
Tổng kết
Cấu trúc chương trình JAVA
Định danh, từ khóa ,tóan tử
Các kiểu dữ liệu - Primitive và Reference
Phạm vi truy nhập: public, …
Thiết lập - ẩn và hiện
OOP JAVA Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin
Trang 25Trường Đại học Công nghệ Sài gònKhoa Công nghệ Thông tin
Sử dụng class Scanner nhập dữ liệu từ bàn phím thông qua console
Sử dụng class JOptionPane nhập dữ liệu từ bàn phím thông qua GUI (Graphic User Interface)
HƯỚNG ĐỐI TƯỢNG Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin
Khai báo biến kiểu String chứa tạm dữ liệu nhập:
String temp = dataIn.readLine();
HƯỚNG ĐỐI TƯỢNG Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin
Trang 26HƯỚNG ĐỐI TƯỢNG Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin
Scanner datain=new Scanner(System.in);
Khai báo biến kiểu String chứa tạm dữ liệu nhập:
public class GetInputFromKeyboard { public static void main( String[] args ){
Trang 27HƯỚNG ĐỐI TƯỢNG Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin
Chuyển đổi kiểu
String s=Integer.toString(int i);
String s=Double.toString(double i);
Trang 28Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin
Khai báo Class
Chương 3
OOP JAVA Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin
Khoa Công nghệ Thông tin
StudentRecord.java
OOP JAVA Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin
Writing class HinhChuNhat
class HinhChuNhat
{double cdai, crong;
public double DienTich(){
return cdai * crong;
}public double ChuVi(){
return (cdai + crong)*2;
}}
HinhChuNhat
- cdai : double
- crong : double+ DienTich() : double+ ChuVi() : double
Trang 29OOP JAVA Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin
Writing class HinhTron
class HinhTron {
return 2 * Math.PI * bkinh;
Khoa Công nghệ Thông tin
Constructor
viện dẫn khi tạo đối tượng
được khởi tạo khi object được thể hiện
Khoa Công nghệ Thông tin
Writing class HinhChuNhat
class HinhChuNhat
{
double cdai, crong;
public HinhChuNhat (double cd, double cr) {
cdai = cd;
crong = cr;
}
public double DienTich() {
return cdai * crong;
}
public double ChuVi() {
return (cdai + crong)*2;
}
}
OOP JAVA Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin
Writing class HinhTron
class HinhTron {
double bkinh;
public HinhTron (double bk) { bkinh = bk;
} public HinhTron () { bkinh = 0.0;
} public double DienTich() { return Math.PI * bkinh * bkinh;
} public double ChuVi() { return 2 * Math.PI * bkinh;
} }
Trang 30OOP JAVA Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin
HinhChuNhat x = new HinhChuNhat(5,8);
HinhTron t = new HinhTron();
OOP JAVA Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin
Sử dụng Constructor của class HinhTron
class HinhTron {
double bkinh;
public HinhTron (double bk){
bkinh = bk;
} public HinhTron () { bkinh = 0.0;
} public double DienTich() { return Math.PI * bkinh * bkinh;
} public double ChuVi() { return 2 * Math.PI * bkinh;
} }
Ví dụ:
HinhTron t1 = new HinhTron(8.9);
HinhTron t2 = new HinhTron();
OOP JAVA Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin
Sử dụng this trong Constructor
constructor trong một khởi
double cdai, crong;
public HinhChuNhat() {
this(0,0);
} public HinhChuNhat (double cd, double cr) {
cdai = cd;
crong = cr;
} public double DienTich() {
return cdai * crong;
} public double ChuVi() {
return (cdai + crong)*2;
} }
OOP JAVA Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin
Trang 31OOP JAVA Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin
Thể hiện Object
HinhChuNhat n1 = new HinhChuNhat();
HinhChuNhat n2 = new HinhChuNhat(8,10);
Khoa Công nghệ Thông tin
Truy xuất Fields và Methodsclass HinhChuNhat
{ double cdai, crong;
public HinhChuNhat() {
this(0,0);
} public HinhChuNhat (double cd, double cr) {
cdai = cd;
crong = cr;
} public double DienTich() {
return cdai * crong;
} public double ChuVi() {
return (cdai + crong)*2;
} }
// xuat ket qua tinh n1…
HinhChuNhat n2 = new HinhChuNhat(8,10);
Khoa Công nghệ Thông tin
Khoa Công nghệ Thông tin
Overloading method
tự)
sách đối số.
gọi là overloading method
Trang 32OOP JAVA Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin
Khoa Công nghệ Thông tin
Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin
Khoa Công nghệ Thông tin
Trang 33OOP JAVA Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin
private và cung cấp các phương thức truy xuất fields bằng
các phương thức public
Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin
Encapsulation
hợp các visibility modifiers
xuất toàn cục.
xuất bởi bất kì class nào trong cùng một gói (package).
được truy xuất bởi trong class hoặc các class con.
truy xuất trong class.
OOP JAVA Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin
methods
đích là hỗ trợ các phương thức khác của class support
methods.
private final int INCREMENT = 5;
Encapsulation
Trang 34OOP JAVA Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin
return (cdai + crong)*2;
} }
OOP JAVA 26
Trường Đại học Công nghệ Sài gòn Khoa Công nghệ Thông tin
Encapsulation
bới các phương thức của đối tượng
Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin
Encapsulation
thông qua interface
qua các service của nó ( interface)
OOP JAVA Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin
Tổng kết
một biến đối tượng được xác định trong trạng thái của nó Các phương thức của đối tượng đáp ứng các hành vi của nó
encapsulation
void nếu không)
Trang 35OOP JAVA Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin
Ví dụ
public class SalesPerson
{
private String name;
private int id;
private double commissionRate;
private double sales;
public SalesPerson ( String name, int id, double commissionRate)
Khoa Công nghệ Thông tin
public double getCommissionRate() {
Khoa Công nghệ Thông tin
Trang 36Trường Đại học Công nghệ Sài gònKhoa Công nghệ Thông tin
Mở rộng class
• Object tham chiếu v định danh
Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin
Đối tượng tham chiếu
Lưu ý: biến cơ sở chỉ chứa trị, nhưng biến đối tượng chứa địa chỉ của
Trước:
num2 = num1;
num1 38 num2 38
Sau:
int num1 = 38, num2 = 96;
num2 = num1;
Trang 37OOP JAVA 5
Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin
Phép gán (tt)
Dạng đối tượng:
name2 = name1;
name1 name2
"Steve Wozniak"
name1 name2
Tình huống sử dụng: Một đối tượng có thể được truy xuất bằng cách
sử dụng nhiều biến tham khảo
Định danh thường dùng, nhưng cần quản lí cẩn thận
Thay đổi đối tượng qua một định danh là thay đổi tới tất cả định danh khác!
Khoa Công nghệ Thông tin
Truyền tham số tới Method
Truyền trị
Tạo bảng sao tham số truyền vào tham số hình thức
Bản chất tham số truyền là một phép gán
Truyền tham khảo
Tham số truyền và tham số hình thức cùng là định danh tới cùng một đối tượng
hình thức trong phương thức, chúng ta đang thay đổi đối tượng truyền.
đối tượng mà tham khảo chỉ tới!!!
Trang 38OOP JAVA Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin
Khoa Công nghệ Thông tin
Example
class myClass{
public static void main(String[] agrs) {
Date d = new Date(2008, 9,13);
System.out.println (“Before call setDay : ” + d);
setDay(d);
System.out.println (“After call setDay : ” d);
} public static void setDay(Date da) {
After setDay(d):
(2008, 9, 20)
OOP JAVA Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin
Example
class myClass{
public static void main(String[] agrs)
{
Date d = new Date(2008, 10,13);
System.out.println (“Before call setDay : ” + d);
After setDay(d):
(2008, 9, 13) (2008, 9, 20)
Trang 39OOP JAVA Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin
Static modifier
Ví dụ: Class Math là static:
result = Math.sqrt(25)
Gọi phương thức static có thể viện dẫn qua tên class
Các biến có thể khai báo static
OOP JAVA Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin
Khoa Công nghệ Thông tin
Static variables
Thông thường , một đối tượng có không gian dữ liệu của chính nó,
nhưng nếu một biến là static, chỉ có một bản sao của biến tồn tại cho
tất cả đối tượng thuộc class
private static int counter;
Không gian bộ nhớ của biến static được tạo khi class được tham
khảo đầu tiên
Tất cả đối tượng được tạo từ class sẽ chia sẽ các biến static
Thay đổi giá trị của một biến static trong một đối tượng, sẽ thay đổi
tới tất cả đối tượng
OOP JAVA Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin
StaticDemo.java
class Employee {
private String name, address;
private int SSN, number;
private static int counter;
public Employee(String name, String address, int SSN) {
return counter;
} public int getNumber() {
SSN= 123456789
number=1
e2
name=“ Wayn ” address=“ WallStreet Blvd ”
SSN= 987654321
number=2
Trang 40OOP JAVA 17
Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin
Static methods
Phương thức main là static, nó được viện dẫn bởi hệ thống mà không
cần tạo đối tượng
Static methods không thể tham khảo các biến thể hiện, bởi vì các
biến này không tồn tại cho đến khi đối tượng tồn tại
Do đó chúng có thể tham khảo static hoặc biến cục bộ
Ví dụ:
OOP JAVA Trường Đại học Công nghệ Sài gòn
Khoa Công nghệ Thông tin
Static methods
class Helper {
public static int triple (int num) {
return num * 3;
} }
Phương thức có thể được viện dẫn:
value = Helper.triple (5);
Khoa Công nghệ Thông tin